int x_strncasecmp(const char *s1, const char *s2, unsigned n) { while (n-- != 0) { char c1 = x_toupper(*s1); char c2 = x_toupper(*s2); if (c1 != c2) return 1; if (c1 == 0) break; s1++, s2++; } return 0; }
/* * assume that b is alphabetic and allow plural */ static int CompareWidths(const char *a, const char *b, int *modifier) { int result; char ca, cb; *modifier = 0; if (!a || !b) return 0; for (;;) { ca = x_toupper(*a); cb = x_toupper(*b); if (ca != cb || ca == '\0') break; /* if not eq else both nul */ a++, b++; } if (cb != '\0') return 0; if (ca == 'S') ca = *++a; switch (ca) { case '+': case '-': *modifier = (ca == '-' ? -1 : 1) * atoi(a + 1); result = 1; break; case '\0': result = 1; break; default: result = 0; break; } return result; }