char * STrindex_SB( const char *str, const char *mstr, register size_t len) { char *where = NULL; if (len <= 0) len = MAXI2; while (len > 0 && *str != '\0') { if (CMcmpcase_SB(str, mstr) == 0) where = (char *)str; CMbytedec_SB(len, str); CMnext_SB(str); } if (where != NULL && *where != '\0') return (where); else return (NULL); }
char * STindex_SB( const char *str, const char *mstr, size_t len) { if (str == NULL || mstr == NULL) return (NULL); if (len <= 0) len = 32767; while (len > 0 && *str != '\0') { if (CMcmpcase_SB(str, mstr) == 0) return ((char *)str); CMbytedec_SB(len, str); CMnext_SB(str); } return (NULL); }
i4 STxcompare( char *a_ptr, size_t a_len, char *b_ptr, size_t b_len, bool ic, bool sb) { unsigned char *ap; unsigned char *bp; register size_t al; register size_t bl; i4 ret_val = -2; i4 cmp; ap = (unsigned char *) a_ptr; bp = (unsigned char *) b_ptr; al = a_len; if (al == 0) al = MAXI2; bl = b_len; if (bl == 0) bl = MAXI2; if (CMGETDBL) { while (ret_val == -2) { /* supress blanks in both strings */ if (sb) { while (al > 0 && CMspace(ap)) { al -= CMbytecnt(ap); CMnext(ap); } while (bl > 0 && CMspace(bp)) { bl -= CMbytecnt(bp); CMnext(bp); } } if (al <= 0) ap = (unsigned char *) ""; if (bl <= 0) bp = (unsigned char *) ""; /* do inequality tests */ if (ic) cmp = CMcmpnocase(ap,bp); else cmp = CMcmpcase(ap,bp); if (cmp < 0) ret_val = -1; else if (cmp > 0) ret_val = 1; else if (*ap == '\0') ret_val = 0; else { /* go on to the next character */ al -= CMbytecnt(ap); CMnext(ap); bl -= CMbytecnt(bp); CMnext(bp); } } } else { while (ret_val == -2) { /* supress blanks in both strings */ if (sb) { while (al > 0 && CMspace_SB(ap)) { al -= CMbytecnt_SB(ap); CMnext_SB(ap); } while (bl > 0 && CMspace_SB(bp)) { bl -= CMbytecnt_SB(bp); CMnext_SB(bp); } } if (al <= 0) ap = (unsigned char *) ""; if (bl <= 0) bp = (unsigned char *) ""; /* do inequality tests */ if (ic) cmp = CMcmpnocase_SB(ap,bp); else cmp = CMcmpcase_SB(ap,bp); if (cmp < 0) ret_val = -1; else if (cmp > 0) ret_val = 1; else if (*ap == '\0') ret_val = 0; else { /* go on to the next character */ al -= CMbytecnt_SB(ap); CMnext_SB(ap); bl -= CMbytecnt_SB(bp); CMnext_SB(bp); } } } return(ret_val); }