Annotation of libwww/Library/src/HTString.c, revision 1.1
1.1 ! timbl 1: /* Case-independent string comparison HTString.c
! 2: **
! 3: ** Original version came with listserv implementation.
! 4: ** Version TBL Oct 91 replaces one which modified the strings.
! 5: ** 02-Dec-91 (JFG) Added stralloccopy and stralloccat
! 6: ** 23 Jan 92 (TBL) Changed strallocc* to 8 char HTSAC* for VM and suchlike
! 7: ** 6 Oct 92 (TBL) Moved WWW_TraceFlag in here to be in library
! 8: */
! 9: #include <ctype.h>
! 10: #include "HTUtils.h"
! 11: #include "tcp.h"
! 12:
! 13: PUBLIC int WWW_TraceFlag = 0; /* Global trace flag for ALL W3 code */
! 14:
! 15: #ifndef VC
! 16: #define VC "unknown"
! 17: #endif
! 18:
! 19: PUBLIC CONST char * HTLibraryVersion = VC; /* String for help screen etc */
! 20:
! 21: #ifndef VM /* VM has these already it seems */
! 22:
! 23: /* Strings of any length
! 24: ** ---------------------
! 25: */
! 26: PUBLIC int strcasecomp ARGS2 (CONST char*,a, CONST char *,b)
! 27: {
! 28: CONST char *p =a;
! 29: CONST char *q =b;
! 30: for(p=a, q=b; *p && *q; p++, q++) {
! 31: int diff = TOLOWER(*p) - TOLOWER(*q);
! 32: if (diff) return diff;
! 33: }
! 34: if (*p) return 1; /* p was longer than q */
! 35: if (*q) return -1; /* p was shorter than q */
! 36: return 0; /* Exact match */
! 37: }
! 38:
! 39:
! 40: /* With count limit
! 41: ** ----------------
! 42: */
! 43: PUBLIC int strncasecomp ARGS3(CONST char*,a, CONST char *,b, int,n)
! 44: {
! 45: CONST char *p =a;
! 46: CONST char *q =b;
! 47:
! 48: for(p=a, q=b;; p++, q++) {
! 49: int diff;
! 50: if (p == a+n) return 0; /* Match up to n characters */
! 51: if (!(*p && *q)) return *p - *q;
! 52: diff = TOLOWER(*p) - TOLOWER(*q);
! 53: if (diff) return diff;
! 54: }
! 55: /*NOTREACHED*/
! 56: }
! 57: #endif
! 58:
! 59: /* Allocate a new copy of a string, and returns it
! 60: */
! 61: PUBLIC char * HTSACopy
! 62: ARGS2 (char **,dest, CONST char *,src)
! 63: {
! 64: if (*dest) free(*dest);
! 65: if (! src)
! 66: *dest = NULL;
! 67: else {
! 68: *dest = (char *) malloc (strlen(src) + 1);
! 69: if (*dest == NULL) outofmem(__FILE__, "HTSACopy");
! 70: strcpy (*dest, src);
! 71: }
! 72: return *dest;
! 73: }
! 74:
! 75: PUBLIC char * HTSACat
! 76: ARGS2 (char **,dest, CONST char *,src)
! 77: {
! 78: if (src && *src) {
! 79: if (*dest) {
! 80: int length = strlen (*dest);
! 81: *dest = (char *) realloc (*dest, length + strlen(src) + 1);
! 82: if (*dest == NULL) outofmem(__FILE__, "HTSACat");
! 83: strcpy (*dest + length, src);
! 84: } else {
! 85: *dest = (char *) malloc (strlen(src) + 1);
! 86: if (*dest == NULL) outofmem(__FILE__, "HTSACat");
! 87: strcpy (*dest, src);
! 88: }
! 89: }
! 90: return *dest;
! 91: }
Webmaster