From 10fa0e0eb2314918e88b691611e269bcaff0a762 Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Mon, 1 Dec 2003 16:04:23 +0000 Subject: [PATCH] add epicsStrPrintEscaped --- src/libCom/misc/epicsString.c | 29 +++++++++++++++++++++++++++++ src/libCom/misc/epicsString.h | 2 ++ 2 files changed, 31 insertions(+) diff --git a/src/libCom/misc/epicsString.c b/src/libCom/misc/epicsString.c index e693e0c2e..728dbdb06 100644 --- a/src/libCom/misc/epicsString.c +++ b/src/libCom/misc/epicsString.c @@ -109,3 +109,32 @@ epicsShareFunc char * epicsShareAPI epicsStrDup(const char *s) { return strcpy(mallocMustSucceed(strlen(s)+1,"epicsStrDup"),s); } + +epicsShareFunc int epicsShareAPI epicsStrPrintEscaped( + FILE *fp, const char *s, int n) +{ + int nout=0; + while (n--) { + char c = *s++; + switch (c) { + case '\a': nout += fprintf(fp, "\\a"); break; + case '\b': nout += fprintf(fp, "\\b"); break; + case '\f': nout += fprintf(fp, "\\f"); break; + case '\n': nout += fprintf(fp, "\\n"); break; + case '\r': nout += fprintf(fp, "\\r"); break; + case '\t': nout += fprintf(fp, "\\t"); break; + case '\v': nout += fprintf(fp, "\\v"); break; + case '\\': nout += fprintf(fp, "\\\\"); break; + case '\?': nout += fprintf(fp, "\\?"); break; + case '\'': nout += fprintf(fp, "\\'"); break; + case '\"': nout += fprintf(fp, "\\\""); break; + default: + if (isprint(c)) + nout += fprintf(fp, "%c", c);/* putchar(c) doesn't work on vxWorks */ + else + nout += fprintf(fp, "\\%03o", (unsigned char)c); + break; + } + } + return nout; +} diff --git a/src/libCom/misc/epicsString.h b/src/libCom/misc/epicsString.h index 7ff4a5055..775b23532 100644 --- a/src/libCom/misc/epicsString.h +++ b/src/libCom/misc/epicsString.h @@ -26,6 +26,8 @@ epicsShareFunc int epicsShareAPI dbTranslateEscape(char *s,const char *ct); epicsShareFunc int epicsShareAPI epicsStrCaseCmp( const char *s1, const char *s2, int n); epicsShareFunc char * epicsShareAPI epicsStrDup(const char *s); +epicsShareFunc int epicsShareAPI epicsStrPrintEscaped( + FILE *fp, const char *s, int n); #ifdef __cplusplus }