muse1.7b4/
muse1.7b4/config/
muse1.7b4/doc/
muse1.7b4/run/
muse1.7b4/run/db/
muse1.7b4/src/
muse1.7b4/src/db/
muse1.7b4/src/files/
muse1.7b4/src/io/
muse1.7b4/src/prog/
muse1.7b4/src/util/
/* stringutil.c */
/* $Id: stringutil.c,v 1.3 1993/01/30 03:39:49 nils Exp $ */

/* String utilities */
#include <ctype.h>

#include "db.h"
#include "config.h"
#include "externs.h"

#define DOWNCASE(x) to_lower(x)
int string_compare(s1,s2)
 char *s1;
 char *s2;
{
  while(*s1 && *s2 && DOWNCASE(*s1) == DOWNCASE(*s2)) s1++, s2++;
  
  return(DOWNCASE(*s1) - DOWNCASE(*s2));
}

int string_prefix(string,prefix)
 char *string;
 char *prefix;
{
  while(*string && *prefix && DOWNCASE(*string) == DOWNCASE(*prefix))
    string++, prefix++;
  return *prefix == '\0';
}

/* accepts only nonempty matches starting at the beginning of a word */
 char *string_match(src,sub)
 char *src;
 char *sub;
{
  if(*sub != '\0') {
    while(*src) {
      if(string_prefix(src, sub)) return src;
      /* else scan to beginning of next word */
      while(*src && isalnum(*src)) src++;
      while(*src && !isalnum(*src)) src++;
    }
  }
  
  return 0;
}

char to_upper(x)
     int x;
{
  if(x<'a' || x>'z') return x;
  return 'A'+(x-'a');
}
char to_lower(x)
     int x;
{
  if(x<'A' || x>'Z') return x;
  return 'a'+(x-'A');
}
char *str_index(what,chr)
     char *what;
     int chr;
{
  char *x;
  for(x=what;*x;x++)
    if(chr==*x)      
      return x;
  return (char *)0;
}
char *int_to_str(a)
     int a;
{
  static char buf[100];
  if(a!=0)
    sprintf(buf,"%d",a);
  else
    *buf='\0';
  return buf;
}