int           strcasecmp     ( const char*, const char* );
int           strncasecmp    ( const char*, const char*, int );
int           strncmp        ( const char*, const char*, int );
int           rstrcasecmp    ( const char*, const char* );
int           rstrncasecmp   ( const char*, const char*, int );
//char*         strcat         ( char*, const char* );
bool          matches        ( const char*&, const char* );
bool          exact_match    ( const char*&, const char* );
bool          fmatches       ( const char*, const char*, int = 0 );
bool          number_arg     ( const char*&, int& );
bool          contains_word  ( const char*&, const char*, char* );
bool          two_argument   ( const char*&, const char*, char* );
char*         one_argument   ( const char*, char* );
int           subset         ( const char*, const char*, bool = FALSE );
int           member         ( const char*, const char*, bool = FALSE );
int           compare        ( const char*, const char*, bool = FALSE,
                               int = 3 );
bool          isvowel           ( char letter );
bool          is_name           ( char*, const char*, bool = FALSE );
const char*   break_line        ( const char*, char*, int );
const char*   word_list         ( const char**, int, bool = TRUE );
void          smash_spaces      ( char* );
char*         capitalize        ( char* );
char*         capitalize_words  ( const char* );
void          add_spaces        ( char*, int );
char*         seperate          ( char*, bool );
/*
 *  INLINE UTILITY ROUTINES
 */
inline int count( char* s )
{
  int i;
  for( ; *s == ' '; s++ );
  for( i = 0; *s != '\0'; i++ ) {
    for( ; *s != '\0' && *s != ' '; s++ );
    for( ; *s == ' '; s++ );
    }
  return i;
}
/*
inline int count( char* s )
{
  return count( (const char*) s );
}
*/
inline char* truncate( char* string, int length )
{
  if( strlen( string ) > length ) 
    strcpy( string+length-3, "..." );
  return string;
}
inline void skip_spaces( char*& arg )
{
  for( ; isspace( *arg ); arg++ );
  return;
}
inline void skip_spaces( const char*& arg )
{
  for( ; isspace( *arg ); arg++ );
  return;
}
inline bool matches( const char*& argument, const char* word, bool exact )
{
  return( exact ? exact_match( argument, word )
    : matches( argument, word ) );
}
/*
 *   STATIC STRINGS
 */
extern char  static_storage  [ 10*THREE_LINES ]; 
extern int       store_pntr;
inline char* static_string( void )
{
  store_pntr = ( store_pntr+1 )%10;
  return &static_storage[store_pntr*THREE_LINES];
}
inline char* static_string( const char* msg )
{
  char* tmp  = static_string( );
  strcpy( tmp, msg );
  return tmp;
}