From 4dc47cc3c77c9137150076294d29fde33e93fabb Mon Sep 17 00:00:00 2001 From: "W. Eric Norum" Date: Tue, 13 Jan 2004 23:07:11 +0000 Subject: [PATCH] Add epicsStrnCaseCmp(). --- documentation/RELEASE_NOTES.html | 3 +++ src/libCom/misc/epicsString.c | 16 +++++++++++++ src/libCom/misc/epicsString.h | 4 ++-- src/libCom/test/epicsStringTest.c | 38 +++++++++++++++++++------------ 4 files changed, 44 insertions(+), 17 deletions(-) diff --git a/documentation/RELEASE_NOTES.html b/documentation/RELEASE_NOTES.html index a85a5c2f7..919ae5891 100644 --- a/documentation/RELEASE_NOTES.html +++ b/documentation/RELEASE_NOTES.html @@ -16,6 +16,9 @@

Changes since 3.14.4

+

New epicsString.h function

+

A new function epicsStrnCaseCmp has been added. It is like strncmp except +that it ignores case.

R3.13 compatability files

diff --git a/src/libCom/misc/epicsString.c b/src/libCom/misc/epicsString.c index 728dbdb06..69250bec0 100644 --- a/src/libCom/misc/epicsString.c +++ b/src/libCom/misc/epicsString.c @@ -88,6 +88,22 @@ epicsShareFunc int epicsShareAPI dbTranslateEscape(char *to, const char *from) } epicsShareFunc int epicsShareAPI epicsStrCaseCmp( + const char *s1, const char *s2) +{ + int nexts1,nexts2; + + while(1) { + nexts1 = toupper(*s1++); + nexts2 = toupper(*s2++); + if(nexts1==0) return( (nexts2==0) ? 0 : 1 ); + if(nexts2==0) return(-1); + if(nexts1nexts2) return(1); + } + return(0); +} + +epicsShareFunc int epicsShareAPI epicsStrnCaseCmp( const char *s1, const char *s2, int n) { size_t ind = 0; diff --git a/src/libCom/misc/epicsString.h b/src/libCom/misc/epicsString.h index 775b23532..d4bd54eee 100644 --- a/src/libCom/misc/epicsString.h +++ b/src/libCom/misc/epicsString.h @@ -23,8 +23,8 @@ extern "C" { #endif epicsShareFunc int epicsShareAPI dbTranslateEscape(char *s,const char *ct); -epicsShareFunc int epicsShareAPI epicsStrCaseCmp( - const char *s1, const char *s2, int n); +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( FILE *fp, const char *s, int n); diff --git a/src/libCom/test/epicsStringTest.c b/src/libCom/test/epicsStringTest.c index 17a96851e..17066a6f2 100644 --- a/src/libCom/test/epicsStringTest.c +++ b/src/libCom/test/epicsStringTest.c @@ -23,20 +23,28 @@ int epicsStringTest() { - if(epicsStrCaseCmp("","",0)!=0) printf("case 1 failed\n"); - if(epicsStrCaseCmp("","",1)!=0) printf("case 2 failed\n"); - if(epicsStrCaseCmp(" ","",1)!=-1) printf("case 3 failed\n"); - if(epicsStrCaseCmp(""," ",1)!=1) printf("case 4 failed\n"); - if(epicsStrCaseCmp("a","A",1)!=0) printf("case 5 failed\n"); - if(epicsStrCaseCmp("a","A",2)!=0) printf("case 6 failed\n"); - if(epicsStrCaseCmp("abcd","ABCD",2)!=0) printf("case 7 failed\n"); - if(epicsStrCaseCmp("abcd","ABCD",4)!=0) printf("case 8 failed\n"); - if(epicsStrCaseCmp("abcd","ABCD",1000)!=0) printf("case 9 failed\n"); - if(epicsStrCaseCmp("abcd","ABCDE",2)!=0) printf("case 10 failed\n"); - if(epicsStrCaseCmp("abcd","ABCDE",4)!=0) printf("case 11 failed\n"); - if(epicsStrCaseCmp("abcd","ABCDE",1000)!=1) printf("case 12 failed\n"); - if(epicsStrCaseCmp("abcde","ABCD",2)!=0) printf("case 13 failed\n"); - if(epicsStrCaseCmp("abcde","ABCD",4)!=0) printf("case 14 failed\n"); - if(epicsStrCaseCmp("abcde","ABCD",1000)!=-1) printf("case 15 failed\n"); + if(epicsStrnCaseCmp("","",0)!=0) printf("case 1 failed\n"); + if(epicsStrnCaseCmp("","",1)!=0) printf("case 2 failed\n"); + if(epicsStrnCaseCmp(" ","",1)!=-1) printf("case 3 failed\n"); + if(epicsStrnCaseCmp(""," ",1)!=1) printf("case 4 failed\n"); + if(epicsStrnCaseCmp("a","A",1)!=0) printf("case 5 failed\n"); + if(epicsStrnCaseCmp("a","A",2)!=0) printf("case 6 failed\n"); + if(epicsStrnCaseCmp("abcd","ABCD",2)!=0) printf("case 7 failed\n"); + if(epicsStrnCaseCmp("abcd","ABCD",4)!=0) printf("case 8 failed\n"); + if(epicsStrnCaseCmp("abcd","ABCD",1000)!=0) printf("case 9 failed\n"); + if(epicsStrnCaseCmp("abcd","ABCDE",2)!=0) printf("case 10 failed\n"); + if(epicsStrnCaseCmp("abcd","ABCDE",4)!=0) printf("case 11 failed\n"); + if(epicsStrnCaseCmp("abcd","ABCDE",1000)!=1) printf("case 12 failed\n"); + if(epicsStrnCaseCmp("abcde","ABCD",2)!=0) printf("case 13 failed\n"); + if(epicsStrnCaseCmp("abcde","ABCD",4)!=0) printf("case 14 failed\n"); + if(epicsStrnCaseCmp("abcde","ABCD",1000)!=-1) printf("case 15 failed\n"); + + if(epicsStrCaseCmp("","")!=0) printf("case 16 failed\n"); + if(epicsStrCaseCmp("a","A")!=0) printf("case 17 failed\n"); + if(epicsStrCaseCmp("abcd","ABCD")!=0) printf("case 18 failed\n"); + if(epicsStrCaseCmp("abcd","ABCDE")==0) printf("case 19 failed\n"); + if(epicsStrCaseCmp("abcde","ABCD")==0) printf("case 20 failed\n"); + if(epicsStrCaseCmp("abcde","ABCDF")==0) printf("case 21 failed\n"); + return(0); }