diff --git a/src/libCom/misc/adjustment.c b/src/libCom/misc/adjustment.c index 0698ad361..ac10e28c9 100644 --- a/src/libCom/misc/adjustment.c +++ b/src/libCom/misc/adjustment.c @@ -23,7 +23,7 @@ #define epicsExportSharedSymbols #include "adjustment.h" -epicsShareFunc size_t epicsShareAPI adjustToWorstCaseAlignment(size_t size) +epicsShareFunc size_t adjustToWorstCaseAlignment(size_t size) { int align_size, adjust; struct test_long_word { char c; long lw; }; diff --git a/src/libCom/misc/adjustment.h b/src/libCom/misc/adjustment.h index da383a550..3f152039f 100644 --- a/src/libCom/misc/adjustment.h +++ b/src/libCom/misc/adjustment.h @@ -17,7 +17,7 @@ extern "C" { #endif -epicsShareFunc size_t epicsShareAPI adjustToWorstCaseAlignment(size_t size); +epicsShareFunc size_t adjustToWorstCaseAlignment(size_t size); #ifdef __cplusplus } diff --git a/src/libCom/misc/cantProceed.c b/src/libCom/misc/cantProceed.c index 63749baa4..4ef75efa2 100644 --- a/src/libCom/misc/cantProceed.c +++ b/src/libCom/misc/cantProceed.c @@ -22,7 +22,7 @@ #include "cantProceed.h" #include "epicsThread.h" -epicsShareFunc void * epicsShareAPI callocMustSucceed(size_t count, size_t size, const char *errorMessage) +epicsShareFunc void * callocMustSucceed(size_t count, size_t size, const char *errorMessage) { void *mem = calloc(count,size); if(mem==0) { @@ -33,7 +33,7 @@ epicsShareFunc void * epicsShareAPI callocMustSucceed(size_t count, size_t size, return(mem); } -epicsShareFunc void * epicsShareAPI mallocMustSucceed(size_t size, const char *errorMessage) +epicsShareFunc void * mallocMustSucceed(size_t size, const char *errorMessage) { void *mem = malloc(size); if(mem==0) { @@ -44,7 +44,7 @@ epicsShareFunc void * epicsShareAPI mallocMustSucceed(size_t size, const char *e return(mem); } -epicsShareFunc void epicsShareAPI cantProceed(const char *errorMessage) +epicsShareFunc void cantProceed(const char *errorMessage) { if(errorMessage) errlogPrintf("fatal error: %s\n",errorMessage); else errlogPrintf("fatal error\n"); diff --git a/src/libCom/misc/cantProceed.h b/src/libCom/misc/cantProceed.h index 5004f15bb..5ec268c72 100644 --- a/src/libCom/misc/cantProceed.h +++ b/src/libCom/misc/cantProceed.h @@ -18,9 +18,9 @@ extern "C" { #endif -epicsShareFunc void epicsShareAPI cantProceed(const char *errorMessage); -epicsShareFunc void * epicsShareAPI callocMustSucceed(size_t count, size_t size, const char *errorMessage); -epicsShareFunc void * epicsShareAPI mallocMustSucceed(size_t size, const char *errorMessage); +epicsShareFunc void cantProceed(const char *errorMessage); +epicsShareFunc void * callocMustSucceed(size_t count, size_t size, const char *errorMessage); +epicsShareFunc void * mallocMustSucceed(size_t size, const char *errorMessage); #ifdef __cplusplus } diff --git a/src/libCom/misc/epicsConvert.c b/src/libCom/misc/epicsConvert.c index 7ea645a5e..a48c4693f 100644 --- a/src/libCom/misc/epicsConvert.c +++ b/src/libCom/misc/epicsConvert.c @@ -17,7 +17,7 @@ #include "epicsConvert.h" #include "cantProceed.h" -epicsShareFunc float epicsShareAPI epicsConvertDoubleToFloat(double value) +epicsShareFunc float epicsConvertDoubleToFloat(double value) { float rtnvalue; diff --git a/src/libCom/misc/epicsConvert.h b/src/libCom/misc/epicsConvert.h index 068da271d..9674db0ef 100644 --- a/src/libCom/misc/epicsConvert.h +++ b/src/libCom/misc/epicsConvert.h @@ -15,7 +15,7 @@ extern "C" { #endif -epicsShareFunc float epicsShareAPI epicsConvertDoubleToFloat(double value); +epicsShareFunc float epicsConvertDoubleToFloat(double value); #ifdef __cplusplus } diff --git a/src/libCom/misc/epicsScanReal.c b/src/libCom/misc/epicsScanReal.c deleted file mode 100644 index c288a9b4b..000000000 --- a/src/libCom/misc/epicsScanReal.c +++ /dev/null @@ -1,41 +0,0 @@ -/*************************************************************************\ -* Copyright (c) 2002 The University of Chicago, as Operator of Argonne -* National Laboratory. -* Copyright (c) 2002 The Regents of the University of California, as -* Operator of Los Alamos National Laboratory. -* EPICS BASE Versions 3.13.7 -* and higher are distributed subject to a Software License Agreement found -* in file LICENSE that is included with this distribution. -\*************************************************************************/ -/*epicsScanReal.c*/ -/*Author: Eric Norum */ - - -#define epicsExportSharedSymbols -#include -#include "epicsStdio.h" - - -epicsShareFunc int epicsShareAPI epicsScanDouble(const char *str, double *dest) -{ - char *endp; - double dtmp; - - dtmp = epicsStrtod(str, &endp); - if (endp == str) - return 0; - *dest = dtmp; - return 1; -} - -epicsShareFunc int epicsShareAPI epicsScanFloat(const char *str, float *dest) -{ - char *endp; - double dtmp; - - dtmp = epicsStrtod(str, &endp); - if (endp == str) - return 0; - *dest = dtmp; - return 1; -} diff --git a/src/libCom/misc/epicsStrtod.c b/src/libCom/misc/epicsStdlib.c similarity index 76% rename from src/libCom/misc/epicsStrtod.c rename to src/libCom/misc/epicsStdlib.c index 7a44df754..1a14d3995 100644 --- a/src/libCom/misc/epicsStrtod.c +++ b/src/libCom/misc/epicsStdlib.c @@ -7,7 +7,7 @@ * and higher are distributed subject to a Software License Agreement found * in file LICENSE that is included with this distribution. \*************************************************************************/ -/*epicsStrtod.c*/ +/*epicsStdlib.c*/ /*Author: Eric Norum */ #include @@ -15,14 +15,35 @@ #include #define epicsExportSharedSymbols -#include "epicsString.h" #include "epicsStdlib.h" +#include "epicsString.h" -#ifdef epicsStrtod -# undef epicsStrtod -#endif -epicsShareFunc double epicsShareAPI epicsStrtod( +epicsShareFunc int epicsScanDouble(const char *str, double *dest) +{ + char *endp; + double dtmp; + + dtmp = epicsStrtod(str, &endp); + if (endp == str) + return 0; + *dest = dtmp; + return 1; +} + +epicsShareFunc int epicsScanFloat(const char *str, float *dest) +{ + char *endp; + double dtmp; + + dtmp = epicsStrtod(str, &endp); + if (endp == str) + return 0; + *dest = dtmp; + return 1; +} + +epicsShareFunc double epicsStrtod( const char *str, char **endp) { const char *cp = str; diff --git a/src/libCom/misc/epicsStdlib.h b/src/libCom/misc/epicsStdlib.h index 29f642d07..391550404 100644 --- a/src/libCom/misc/epicsStdlib.h +++ b/src/libCom/misc/epicsStdlib.h @@ -16,8 +16,9 @@ extern "C" { #endif -epicsShareFunc int epicsShareAPI epicsScanDouble(const char *str, double *dest); -epicsShareFunc int epicsShareAPI epicsScanFloat(const char *str, float *dest); +epicsShareFunc int epicsScanDouble(const char *str, double *dest); +epicsShareFunc int epicsScanFloat(const char *str, float *dest); +epicsShareFunc double epicsStrtod(const char *str, char **endp); #include #include diff --git a/src/libCom/misc/epicsString.c b/src/libCom/misc/epicsString.c index e143ce980..e8fecc857 100644 --- a/src/libCom/misc/epicsString.c +++ b/src/libCom/misc/epicsString.c @@ -8,7 +8,7 @@ * in file LICENSE that is included with this distribution. \*************************************************************************/ /*epicsString.c*/ -/*Authors: Jun-ichi Odagiri and Marty Kraimer*/ +/*Authors: Jun-ichi Odagiri, Marty Kraimer, Eric Norum, Mark Rivers*/ #include #include @@ -22,7 +22,7 @@ #include "cantProceed.h" #include "epicsString.h" -epicsShareFunc int epicsShareAPI dbTranslateEscape(char *to, const char *from) +epicsShareFunc int dbTranslateEscape(char *to, const char *from) { const char *pfrom = from; char *pto = to; @@ -88,7 +88,7 @@ epicsShareFunc int epicsShareAPI dbTranslateEscape(char *to, const char *from) return(nto); } -epicsShareFunc int epicsShareAPI epicsStrCaseCmp( +epicsShareFunc int epicsStrCaseCmp( const char *s1, const char *s2) { int nexts1,nexts2; @@ -106,7 +106,7 @@ epicsShareFunc int epicsShareAPI epicsStrCaseCmp( } } -epicsShareFunc int epicsShareAPI epicsStrnCaseCmp( +epicsShareFunc int epicsStrnCaseCmp( const char *s1, const char *s2, int n) { size_t ind = 0; @@ -127,12 +127,12 @@ epicsShareFunc int epicsShareAPI epicsStrnCaseCmp( return(0); } -epicsShareFunc char * epicsShareAPI epicsStrDup(const char *s) +epicsShareFunc char * epicsStrDup(const char *s) { return strcpy(mallocMustSucceed(strlen(s)+1,"epicsStrDup"),s); } -epicsShareFunc int epicsShareAPI epicsStrPrintEscaped( +epicsShareFunc int epicsStrPrintEscaped( FILE *fp, const char *s, int n) { int nout=0; @@ -162,7 +162,7 @@ epicsShareFunc int epicsShareAPI epicsStrPrintEscaped( return nout; } -epicsShareFunc int epicsShareAPI epicsStrSnPrintEscaped( +epicsShareFunc int epicsStrSnPrintEscaped( char *outbuf, int outsize, const char *inbuf, int inlen) { int maxout = outsize; @@ -205,7 +205,7 @@ epicsShareFunc int epicsShareAPI epicsStrSnPrintEscaped( return nout; } -epicsShareFunc int epicsShareAPI epicsStrGlobMatch( +epicsShareFunc int epicsStrGlobMatch( const char *str, const char *pattern) { const char *cp=NULL, *mp=NULL; @@ -236,3 +236,49 @@ epicsShareFunc int epicsShareAPI epicsStrGlobMatch( pattern++; return !*pattern; } + +epicsShareFunc char * epicsStrtok_r(char *s, const char *delim, char **lasts) +{ + char *spanp; + int c, sc; + char *tok; + + + if (s == NULL && (s = *lasts) == NULL) + return (NULL); + + /* + * Skip (span) leading delimiters (s += strspn(s, delim), sort of). + */ +cont: + c = *s++; + for (spanp = (char *)delim; (sc = *spanp++) != 0;) { + if (c == sc) + goto cont; + } + + if (c == 0) { /* no non-delimiter characters */ + *lasts = NULL; + return (NULL); + } + tok = s - 1; + + /* + * Scan token (scan for delimiters: s += strcspn(s, delim), sort of). + * Note that delim must have one NUL; we stop if we see that, too. + */ + for (;;) { + c = *s++; + spanp = (char *)delim; + do { + if ((sc = *spanp++) == c) { + if (c == 0) + s = NULL; + else + s[-1] = 0; + *lasts = s; + return (tok); + } + } while (sc != 0); + } +} diff --git a/src/libCom/misc/epicsString.h b/src/libCom/misc/epicsString.h index aa694bacf..09480906e 100644 --- a/src/libCom/misc/epicsString.h +++ b/src/libCom/misc/epicsString.h @@ -8,7 +8,7 @@ * in file LICENSE that is included with this distribution. \*************************************************************************/ /*epicsString.h*/ -/*Authors: Jun-ichi Odagiri and Marty Kraimer*/ +/*Authors: Jun-ichi Odagiri, Marty Kraimer, Eric Norum, Mark Rivers*/ /* int dbTranslateEscape(char *s,const char *ct); * @@ -22,16 +22,18 @@ extern "C" { #endif -epicsShareFunc int epicsShareAPI dbTranslateEscape(char *s,const char *ct); -epicsShareFunc int epicsShareAPI epicsStrCaseCmp(const char *s1,const char *s2); -epicsShareFunc int epicsShareAPI epicsStrnCaseCmp(const char *s1,const char *s2, int n); -epicsShareFunc char * epicsShareAPI epicsStrDup(const char *s); -epicsShareFunc int epicsShareAPI epicsStrPrintEscaped( +epicsShareFunc int dbTranslateEscape(char *s,const char *ct); +epicsShareFunc int epicsStrCaseCmp(const char *s1,const char *s2); +epicsShareFunc int epicsStrnCaseCmp(const char *s1,const char *s2, int n); +epicsShareFunc char * epicsStrDup(const char *s); +epicsShareFunc int epicsStrPrintEscaped( FILE *fp, const char *s, int n); -epicsShareFunc int epicsShareAPI epicsStrSnPrintEscaped( +epicsShareFunc int epicsStrSnPrintEscaped( char *outbuf, int outsize, const char *inbuf, int inlen); -epicsShareFunc int epicsShareAPI epicsStrGlobMatch( +epicsShareFunc int epicsStrGlobMatch( const char *str, const char *pattern); +epicsShareFunc char * epicsStrtok_r( + char *s, const char *delim, char **lasts); #ifdef __cplusplus } diff --git a/src/libCom/misc/truncateFile.c b/src/libCom/misc/truncateFile.c index 2e65e80e1..9ff2455ec 100644 --- a/src/libCom/misc/truncateFile.c +++ b/src/libCom/misc/truncateFile.c @@ -25,7 +25,7 @@ * truncate to specified size (we dont use truncate() * because it is not portable) */ -epicsShareFunc enum TF_RETURN epicsShareAPI truncateFile (const char *pFileName, unsigned size) +epicsShareFunc enum TF_RETURN truncateFile (const char *pFileName, unsigned size) { char tmpName[256>L_tmpnam?256:L_tmpnam]; long filePos;