From e41f8bf518fa4d1730ce6620b495e9328defbabf Mon Sep 17 00:00:00 2001 From: Andrew Johnson Date: Sat, 24 Feb 2018 19:11:54 -0600 Subject: [PATCH] Translate and escape chars in info tag strings Fixes LP: #1716998 --- src/ioc/dbStatic/dbLexRoutines.c | 1 + src/ioc/dbStatic/dbStaticLib.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/ioc/dbStatic/dbLexRoutines.c b/src/ioc/dbStatic/dbLexRoutines.c index 6654fdfbb..f36ace933 100644 --- a/src/ioc/dbStatic/dbLexRoutines.c +++ b/src/ioc/dbStatic/dbLexRoutines.c @@ -1069,6 +1069,7 @@ static void dbRecordInfo(char *name, char *value) if(duplicate) return; ptempListNode = (tempListNode *)ellFirst(&tempList); pdbentry = ptempListNode->item; + dbTranslateEscape(value, value); /* yuck: in-place, but safe */ status = dbPutInfo(pdbentry,name,value); if(status) { epicsPrintf("Can't set \"%s\" info \"%s\" to \"%s\"\n", diff --git a/src/ioc/dbStatic/dbStaticLib.c b/src/ioc/dbStatic/dbStaticLib.c index dc2fbe62f..96868eded 100644 --- a/src/ioc/dbStatic/dbStaticLib.c +++ b/src/ioc/dbStatic/dbStaticLib.c @@ -851,10 +851,14 @@ long dbWriteRecordFP( status=dbNextField(pdbentry,dctonly); } status = dbFirstInfo(pdbentry); - while(!status) { - fprintf(fp,"\tinfo(\"%s\",\"%s\")\n", - dbGetInfoName(pdbentry), dbGetInfoString(pdbentry)); - status=dbNextInfo(pdbentry); + while (!status) { + const char *pinfostr = dbGetInfoString(pdbentry); + + fprintf(fp, "\tinfo(\"%s\",\"", + dbGetInfoName(pdbentry)); + epicsStrPrintEscaped(fp, pinfostr, strlen(pinfostr)); + fprintf(fp, "\")\n"); + status = dbNextInfo(pdbentry); } fprintf(fp,"}\n"); status = dbNextRecord(pdbentry);