00001 #include <string.h>
00002 #include <utilstr.h>
00003 #include <ctype.h>
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 char *stdstr(char **ipstr, const char *istr) {
00016 if (istr) {
00017 if (*ipstr)
00018 delete [] *ipstr;
00019 int len = strlen(istr) + 1;
00020 *ipstr = new char [ len ];
00021 memcpy(*ipstr, istr, len);
00022 }
00023 return *ipstr;
00024 }
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 char *strstrip(char *istr) {
00036 char *tmp = istr;
00037 char *rtmp;
00038
00039 int len = strlen(istr);
00040 if (len < 1)
00041 return istr;
00042 rtmp = istr + (len - 1);
00043
00044 while ((*rtmp == ' ')||(*rtmp == '\t')||(*rtmp == 10)||(*rtmp == 13)) *(rtmp--) = 0;
00045 while ((*tmp == ' ')||(*tmp == '\t')||(*tmp == 10)||(*tmp == 13)) tmp++;
00046 memmove(istr, tmp, (rtmp - tmp) + 1);
00047 istr[(rtmp - tmp) + 1] = 0;
00048
00049 return istr;
00050 }
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062 const char *stristr(const char *s1, const char *s2) {
00063 int tLen = strlen(s2);
00064 int cLen = strlen(s1);
00065 char *target = new char [ tLen + 1 ];
00066 int i, j;
00067 const char *retVal = 0;
00068
00069 strcpy(target, s2);
00070 for (i = 0; i < tLen; i++)
00071 target[i] = SW_toupper(target[i]);
00072
00073 for (i = 0; i < (cLen - tLen)+1; i++) {
00074 if (SW_toupper(s1[i]) == (unsigned char)*target) {
00075 for (j = 1; j < tLen; j++) {
00076 if (SW_toupper(s1[i+j]) != (unsigned char)target[j])
00077 break;
00078 }
00079 if (j == tLen) {
00080 retVal = s1+i;
00081 break;
00082 }
00083 }
00084 }
00085 delete [] target;
00086 return retVal;
00087 }
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097 const char strnicmp(const char *s1, const char *s2, int len) {
00098
00099 int tLen = strlen(s2);
00100 int cLen = strlen(s1);
00101 char diff;
00102 int i;
00103 for (i = 0; ((i < len) && (i < tLen) && (i < cLen)); i++) {
00104 if ((diff = SW_toupper(*s1) - SW_toupper(*s2)))
00105 return diff;
00106 s1++;
00107 s2++;
00108 }
00109 return (i < len) ? cLen - tLen : 0;
00110 }
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 unsigned int strlenw(const char *s1) {
00122 return strlen(s1);
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 }
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146 char *toupperstr(char *buf) {
00147 char *ret = buf;
00148 while (*buf)
00149 *buf = SW_toupper(*buf++);
00150
00151 return ret;
00152 }