25 if(str1==NULL || str2==NULL || strlen(str1)==0 || strlen(str2)==0)
return(0);
30 i=strspn(cptr, str2); cptr+=i;
32 i=strcspn(cptr, str2); cptr+=i;
if(i>0) n++;
59 if(str1==NULL || str2==NULL || strlen(str1)==0 || strlen(str2)==0)
return(0);
60 if(i<1 || str3==NULL || count<2)
return(0);
65 j=strspn(cptr, str2); cptr+=j;
67 j=strcspn(cptr, str2);
if(j>0) n++;
70 if(j>count-1) j=count-1;
76 if(n>i) {str3[0]=(char)0;
return(0);}
97 if(next!=NULL) *next=0;
98 if(s1==NULL)
return NULL;
100 char *s3=NULL, *cptr;
104 if(s2==NULL || strlen(s2)<1) {
105 s3=strdup(s1);
if(next!=NULL) *next=strlen(s1);
109 cptr=(
char*)s1; j=strspn(cptr, s2); cptr+=j;
if(next!=NULL) *next=j;
111 j=strcspn(cptr, s2);
if(j==0) {
return NULL;}
112 if(next!=NULL) *next+=j;
114 s3=calloc(j+1,
sizeof(
char));
if(s3==NULL)
return NULL;
132 unsigned int n=0, i, j;
133 if(str1==NULL || str2==NULL || strlen(str1)==0 || strlen(str2)==0)
return n;
134 for(i=0; i<strlen(str1); i++)
135 for(j=0; j<strlen(str2); j++)
136 if(str1[i]==str2[j]) n++;
151 if(s==NULL || strlen(s)==0)
return (
int)n;
152 for(i=0; i<strlen(s); i++)
if(isupper(s[i])) n++;
168 if(strlen(str)==0)
return;
169 while((cptr=strchr(str, c1))!=NULL) *cptr=c2;
188 if(s==NULL)
return(0);
191 while(i<n && *ps!=
'\0') {i++; ps++;}
221 if(s==NULL)
return(dlen);
223 if(n==0)
return(dlen+strlen(s));
226 if(n!=1) {*d=*s; d++; n--;}
230 return(dlen+(s-src));
254 if(dstsize>0) dst[0]=
'\0';
255 if(strlen(src)==0)
return(0);
263 if(n!=0)
while(--n!=0) {*d=*s;
if(*d==
'\0') {d++; s++;
break;} d++; s++;}
265 if(dstsize!=0) *d=
'\0';
275#ifndef HAVE_STRCASESTR
281 const char *haystack,
285 if(!haystack || !*haystack || !needle || !*needle)
return 0;
287 const char *s=haystack, *p=needle;
289 if(!*p)
return(
char*)haystack;
290 if((*p==*s) || (tolower(*p)==tolower(*s))) {
293 p=needle;
if(!*s)
return(NULL);
297 return *p ? NULL : (
char*)haystack;
317 if(s1==NULL)
return(0);
318 s1[0]=(char)0;
if(maxlen<1)
return(0);
319 if(maxlen<2) {strcpy(s1,
"");
return(0);}
320 if(s2==NULL || strlen(s2)<1)
return(0);
325 cptr=(
char*)s2; cptr+=strspn(s2,
"\t\n\r ");
326 strlcpy(s1, cptr, maxlen); i=strlen(s1);
if(i<1)
return(0);
329 if(*cptr!=
'\t' && *cptr!=
'\n' && *cptr!=
'\r' && *cptr!=
' ')
break;
330 i--; s1[i]=(char)0; cptr--;
347 if(s==NULL)
return 0;
348 int len=strlen(s);
if(len<0)
return 0;
349 char *s2; s2=strdup(s);
if(s2==NULL)
return(1);
351 if(n<1) strcpy(s,
"");
else strcpy(s, s2);
368 if(s==NULL)
return(NULL);
371 for(
size_t i=0; i<strlen(s); i++) {
372 if(s[i]==
'&') {n++;
continue;}
373 if(s[i]==
'\'') {n++;
continue;}
374 if(s[i]==
'\"') {n++;
continue;}
375 if(s[i]==
'<') {n++;
continue;}
376 if(s[i]==
'>') {n++;
continue;}
378 if(n==0)
return(NULL);
380 n*=5; n+=strlen(s)+1;
381 char *ns=(
char*)malloc(n*
sizeof(
char));
382 if(ns==NULL)
return(NULL);
384 for(
int i=0; i<n; i++) ns[i]=(
char)0;
385 for(
size_t i=0; i<strlen(s); i++) {
386 if(s[i]==
'&') {strcat(ns,
"&");
continue;}
387 if(s[i]==
'\'') {strcat(ns,
"'");
continue;}
388 if(s[i]==
'\"') {strcat(ns,
""");
continue;}
389 if(s[i]==
'<') {strcat(ns,
"<");
continue;}
390 if(s[i]==
'>') {strcat(ns,
">");
continue;}
406 if(s==NULL || *s==
'\0')
return;
Header file for libtpcmisc.
void strCleanForXML(char *s)
int strCleanSpaces(char *s)
char * strEncodeForXML(const char *s)
int strChrCount(const char *str1, const char *str2)
void strReplaceChar(char *str, char c1, char c2)
size_t strnlen(const char *s, size_t n)
int strTokenNCpy(const char *str1, const char *str2, int i, char *str3, int count)
int strncpyCleanSpaces(char *s1, const char *s2, int maxlen)
int strTokenNr(const char *str1, const char *str2)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
char * strTokenDup(const char *s1, const char *s2, int *next)
int strUppercaseCount(const char *s)
char * strcasestr(const char *haystack, const char *needle)
size_t strlcat(char *dst, const char *src, size_t dstsize)