/* The strcasecmp() and strncasecmp() functions return an integer less than, equal to, or greater than zero if s1 (or the first n bytes thereof) is found, respectively, to be less than, to match, or be greater than s2. */ // this function returns -1, 0 or 1 static int CompareStringsWithLeadingJunk(const char * p_s1, int p_len1, const char * p_s2, int p_len2, char pStopChar) { static char junk[] = " \t\r\n0"; int ret = 0; int done = 0; int bix; char * signif1 = (char*)p_s1; char * signif2 = (char*)p_s2; if (signif2) { for(bix=0; bix= p_len2) { signif2 = NULL; } } } if (!signif2) { done = 1; if (signif1) ret = 1; else ret = 0; } if (!done) { if (signif1) { for(bix=0; bix= p_len1) { signif1 = NULL; } } } if (!signif1) { // no need to retest signif2 here done = 1; ret = -1; } } if (!done) { int len1 = strlen(signif1); int len2 = strlen(signif2); if (len1 < len2) { ret = -1; done = 1; } else if (len1 > len2) { ret = 1; done = 1; } } if (!done) { ret = strcasecmp(signif1, signif2); } if (ret < 0) { ret = -1; } else if (ret > 0) { ret = 1; } return ret; }