5#include "tpcclibConfig.h"
33 if(s1==NULL || s2==NULL ||
strnlen(s1, 1)==0 ||
strnlen(s2, 1)==0)
return(0);
38 i=strspn(cptr, s2); cptr+=i;
40 i=strcspn(cptr, s2); cptr+=i;
if(i>0) n++;
67 if(s3!=NULL && count>0) s3[0]=(char)0;
68 if(s1==NULL || s2==NULL || strlen(s1)==0 || strlen(s2)==0)
return(0);
69 if(i<1 || s3==NULL || count<2)
return(0);
74 j=strspn(cptr, s2); cptr+=j;
76 j=strcspn(cptr, s2);
if(j>0) n++;
79 if(j>count-1) j=count-1;
85 if(n>i) {s3[0]=(char)0;
return(0);}
104 unsigned int n=0, i, j;
105 if(s1==NULL || s2==NULL || strlen(s1)==0 || strlen(s2)==0)
return (
int)n;
106 for(i=0; i<strlen(s1); i++)
107 for(j=0; j<strlen(s2); j++)
108 if(s1[i]==s2[j]) n++;
123 if(s==NULL || strlen(s)==0)
return (
int)n;
124 for(i=0; i<strlen(s); i++)
if(isupper(s[i])) n++;
143 if(s==NULL || strlen(s)==0)
return;
144 while((cptr=strchr(s, c1))!=NULL) *cptr=c2;
150#ifndef HAVE_STRCASESTR
157 const char *haystack,
161 if(!*haystack || !*needle)
return(0);
163 const char *s=haystack, *p=needle;
165 if(!*p)
return(
char*)haystack;
166 if((*p==*s) || (tolower(*p)==tolower(*s))) {
169 p=needle;
if(!*s)
return(NULL);
173 return *p ? NULL : (
char*)haystack;
189 size_t length=strlen(s)+1;
191 r=calloc(length,
sizeof(
char));
if(r==NULL)
return NULL;
192 return (
char*)memcpy(r, s, length);
211 void *r; r=calloc(length+1,
sizeof(
char));
if(r==NULL)
return NULL;
212 return (
char*)memcpy(r, s, length);
226 const char *haystack,
230 if(haystack==NULL)
return((
char*)NULL);
231 if(needle==NULL)
return((
char*)haystack);
234 int single_quotation=0;
235 int double_quotation=0;
238 test_len=strlen(needle);
if(test_len<1)
return((
char*)haystack);
239 for(i=0, cptr=(
char*)haystack; i<strlen(haystack); i++, cptr++) {
241 if(single_quotation==0 && strchr(cptr+1,
'\'')!=NULL) single_quotation=1;
242 else single_quotation=0;
246 if(double_quotation==0 && strchr(cptr+1,
'\"')!=NULL) double_quotation=1;
247 else double_quotation=0;
250 if(single_quotation==1 || double_quotation==1)
continue;
251 if(strncmp(cptr, needle, test_len)==0)
return(cptr);
273 if(s1==NULL)
return(0);
274 s1[0]=(char)0;
if(maxlen<1)
return(0);
275 if(maxlen<2) {strcpy(s1,
"");
return(0);}
276 if(s2==NULL || strlen(s2)<1)
return(0);
281 cptr=(
char*)s2; cptr+=strspn(s2,
"\t\n\r ");
282 strlcpy(s1, cptr, maxlen); i=strlen(s1);
if(i<1)
return(0);
285 if(*cptr!=
'\t' && *cptr!=
'\n' && *cptr!=
'\r' && *cptr!=
' ')
break;
286 i--; s1[i]=(char)0; cptr--;
303 if(s==NULL)
return 0;
304 int len=strlen(s);
if(len<0)
return 0;
305 char *s2; s2=
strdup(s);
if(s2==NULL)
return(1);
307 if(n<1) strcpy(s,
"");
else strcpy(s, s2);
329 if(s1==NULL)
return(0);
330 s1[0]=(char)0;
if(maxlen<1)
return(0);
331 if(maxlen<2) {strcpy(s1,
"");
return(0);}
332 if(s2==NULL || strlen(s2)<1)
return(0);
338 tmp=calloc(strlen(s2)+1,
sizeof(
char));
342 if(i<1) {strcpy(s1,
""); free(tmp);
return(0);}
351 if(sqn==0 && dqn==0) {i=0;
break;}
353 if(dqn>=2 && tmp[0]==
'\"' && tmp[strlen(tmp)-1]==
'\"') {
354 tmp[0]=
' '; tmp[strlen(tmp)-1]=(char)0; dqn-=2; m+=2;
356 if(sqn>=2 && tmp[0]==
'\'' && tmp[strlen(tmp)-1]==
'\'') {
357 tmp[0]=
' '; tmp[strlen(tmp)-1]=(char)0; sqn-=2; m+=2;
361 if(tmp[0]==
'\'') {tmp[0]=
' '; sqn--; m++;}
362 else if(tmp[strlen(tmp)-1]==
'\'') {tmp[strlen(tmp)-1]=(char)0; sqn--; m++;}
365 if(tmp[0]==
'\"') {tmp[0]=
' '; dqn--; m++;}
366 else if(tmp[strlen(tmp)-1]==
'\"') {tmp[strlen(tmp)-1]=(char)0; dqn--; m++;}
369 if(m==0) {i=0;
break;}
392 if(s==NULL)
return 0;
393 int len=strlen(s);
if(len<0)
return 0;
394 char *s2; s2=calloc(len+1,
sizeof(
char));
if(s2==NULL)
return(1);
396 if(n<1) strcpy(s,
"");
else strcpy(s, s2);
420 if(next!=NULL) *next=0;
421 if(s1==NULL)
return NULL;
423 char *s3=NULL, *cptr;
427 if(s2==NULL || strlen(s2)<1) {
428 s3=
strdup(s1);
if(next!=NULL) *next=strlen(s1);
432 cptr=(
char*)s1; j=strspn(cptr, s2); cptr+=j;
if(next!=NULL) *next=j;
434 j=strcspn(cptr, s2);
if(j==0) {
return NULL;}
435 if(next!=NULL) *next+=j;
437 s3=calloc(j+1,
sizeof(
char));
if(s3==NULL)
return NULL;
456 if(s==NULL)
return 0;
457 int len=strlen(s);
if(len<2)
return 0;
458 if(s[0]==
'(' && s[len-1]==
')')
return 1;
459 if(s[0]==
'{' && s[len-1]==
'}')
return 1;
460 if(s[0]==
'[' && s[len-1]==
']')
return 1;
482 for(
int i=1; i<=len; i++) s[i-1]=s[i];
504 char tmp[128]; sprintf(tmp,
"%d", n);
505 return strncat(str1, tmp, count);
526 char tmp[128]; sprintf(tmp,
"%g", d);
527 return strncat(str1, tmp, count);
550 if(n<0) strncat(str1,
"-", count);
551 char tmp[128]; sprintf(tmp,
"%d", abs(maxn));
553 sprintf(tmp,
"%0*d", len, abs(n));
554 return strncat(str1, tmp, count);
574 while(i<n && *ps!=
'\0') {i++; ps++;}
606 if(s==NULL)
return(dlen);
608 if(n==0)
return(dlen+strlen(s));
611 if(n!=1) {*d=*s; d++; n--;}
615 return(dlen+(s-src));
640 if(dstsize>0) dst[0]=
'\0';
641 if(strlen(src)==0)
return(0);
649 if(n!=0)
while(--n!=0) {*d=*s;
if(*d==
'\0') {d++; s++;
break;} d++; s++;}
651 if(dstsize!=0) *d=
'\0';
673 if(s==NULL)
return(1);
674 int len=strlen(s);
if(len<1)
return(1);
675 for(
int i=0; i<len; i++)
if(!isspace(s[i]))
return(0);
692 if(s1==NULL || s2==NULL)
return(s1);
693 int n=strlen(s2);
if(n<1)
return(s1);
696 if(cptr==NULL || *cptr==(
char)0)
return(s1);
698 while(*cptr) {*cptr=cptr[n]; cptr++;}
714 if(s==NULL || t==0)
return(s);
715 size_t len=strlen(s);
if(len<1)
return(s);
716 if(t>=len) {s[0]=(char)0;
return(s);}
717 memmove(s, s+t, 1+len-t);
733 if(s==NULL)
return(NULL);
736 for(
size_t i=0; i<strlen(s); i++) {
737 if(s[i]==
'&') {n++;
continue;}
738 if(s[i]==
'\'') {n++;
continue;}
739 if(s[i]==
'\"') {n++;
continue;}
740 if(s[i]==
'<') {n++;
continue;}
741 if(s[i]==
'>') {n++;
continue;}
743 if(n==0)
return(NULL);
745 n*=5; n+=strlen(s)+1;
746 char *ns=(
char*)malloc(n*
sizeof(
char));
747 if(ns==NULL)
return(NULL);
749 for(
int i=0; i<n; i++) ns[i]=(
char)0;
750 for(
size_t i=0; i<strlen(s); i++) {
751 if(s[i]==
'&') {strcat(ns,
"&");
continue;}
752 if(s[i]==
'\'') {strcat(ns,
"'");
continue;}
753 if(s[i]==
'\"') {strcat(ns,
""");
continue;}
754 if(s[i]==
'<') {strcat(ns,
"<");
continue;}
755 if(s[i]==
'>') {strcat(ns,
">");
continue;}
771 if(s==NULL || *s==
'\0')
return;
int strTokenNr(const char *s1, const char *s2)
void strReplaceChar(char *s, char c1, char c2)
void strCleanForXML(char *s)
char * strstrNoQuotation(const char *haystack, const char *needle)
char * strdup(const char *s)
char * strncatIntZ(char *str1, const int n, const int maxn, size_t count)
int strCleanSpaces(char *s)
char * strncatDouble(char *str1, const double d, size_t count)
void strCleanPars(char *s)
char * strEncodeForXML(const char *s)
char * strTrimLeft(char *s, const size_t t)
size_t strnlen(const char *s, size_t n)
int strncpyCleanSpaces(char *s1, const char *s2, int maxlen)
char * strncatInt(char *str1, const int n, size_t count)
int strTokenNCpy(const char *s1, const char *s2, int i, char *s3, int count)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
int strncpyClean(char *s1, const char *s2, int maxlen)
int strIsSpaceOnly(char *s)
int strChrCount(const char *s1, const char *s2)
char * strTokenDup(const char *s1, const char *s2, int *next)
char * strdelstr(char *s1, const char *s2)
int strUppercaseCount(const char *s)
char * strcasestr(const char *haystack, const char *needle)
size_t strlcat(char *dst, const char *src, size_t dstsize)
char * strndup(const char *s, size_t n)
Header file for library libtpcextensions.