I am doomed to work on old machines, which never have strcasecmp or strncasecmp. Each time I re-implement them, as I never remember where I last put them in. No more:

/* YR 19APR 2007 -- use at own risk */
int strncasecmp(const char *s1, const char *s2, size_t n)
{
   int c1, c2;
   while (n--) {
      c1 = toupper(*s1++);
      c2 = toupper(*s2++);

      if ((!c1 || !c2) || (c1 != c2))
         return c1 - c2;
   }
   return 0;
}

/* YR 19APR 2007 -- use at own risk */
int strcasecmp(const char *s1, const char *s2)
{
   int c1, c2;
   while (1) {
      c1 = toupper(*s1++);
      c2 = toupper(*s2++);

      if ((!c1 || !c2) || (c1 != c2))
         return c1 - c2;
   }
}