diff options
Diffstat (limited to 'WWW/Library/Implementation/HTString.c')
-rw-r--r-- | WWW/Library/Implementation/HTString.c | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/WWW/Library/Implementation/HTString.c b/WWW/Library/Implementation/HTString.c index 039c0e64..7ab09c78 100644 --- a/WWW/Library/Implementation/HTString.c +++ b/WWW/Library/Implementation/HTString.c @@ -19,7 +19,11 @@ PUBLIC int WWW_TraceFlag = 0; /* Global trace flag for ALL W3 code */ #define VC "unknown" #endif /* !VC */ +#ifdef _WINDOWS +CONST char * HTLibraryVersion = "2.14FM"; /* String for help screen etc */ +#else PUBLIC CONST char * HTLibraryVersion = VC; /* String for help screen etc */ +#endif /* ** strcasecomp8 is a variant of strcasecomp (below) @@ -73,8 +77,82 @@ PUBLIC int strncasecomp8 ARGS3( } /*NOTREACHED*/ } + #ifndef VM /* VM has these already it seems */ +#ifdef SH_EX /* 1997/12/23 (Tue) 16:40:31 */ + +/* + * This array is designed for mapping upper and lower case letter + * together for a case independent comparison. The mappings are + * based upon ascii character sequences. + */ +static unsigned char charmap[] = { + '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', + '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', + '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', + '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', + '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', + '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', + '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', + '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', + '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', + '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', + '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', + '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', + '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', + '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', + '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\327', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\337', + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', +}; + +PUBLIC int strcasecomp ARGS2( + CONST char*, s1, + CONST char*, s2) +{ + register unsigned char *cm = charmap; + register unsigned char *us1 = (unsigned char *)s1; + register unsigned char *us2 = (unsigned char *)s2; + + while (cm[*us1] == cm[*us2++]) + if (*us1++ == '\0') + return(0); + return (cm[*us1] - cm[*--us2]); +} + +PUBLIC int strncasecomp ARGS3( + CONST char*, a, + CONST char*, b, + int, n) +{ + register unsigned char *cm = charmap; + register unsigned char *us1 = (unsigned char *)a; + register unsigned char *us2 = (unsigned char *)b; + + while ((long)(--n) >= 0 && cm[*us1] == cm[*us2++]) + if (*us1++ == '\0') + return(0); + return ((long)n < 0 ? 0 : cm[*us1] - cm[*--us2]); +} + +#else + /* Strings of any length ** --------------------- */ @@ -120,6 +198,8 @@ PUBLIC int strncasecomp ARGS3( } /*NOTREACHED*/ } + +#endif /* SH_EX */ #endif /* VM */ #ifdef NOT_ASCII @@ -683,6 +763,8 @@ PUBLIC char * HTSprintf0 (va_alist) char ** pstr = va_arg(ap, char **); CONST char * fmt = va_arg(ap, CONST char *); #endif + if (pstr != 0) + *pstr = 0; result = StrAllocVsprintf(pstr, 0, fmt, &ap); } va_end(ap); |