text: /*
   * $Source: /afs/andrew/system/cvs/src/sasl/mac/kerberos_includes/kparse.h,v $
   * $Author: rjs3 $
   * $Header: /afs/andrew/system/cvs/src/sasl/mac/kerberos_includes/kparse.h,v 1.2 2001/12/04 02:06:05 rjs3 Exp $
   *
   * Copyright 1988 by the Massachusetts Institute of Technology.
   *
   * For copying and distribution information, please see the file
   * <mit-copyright.h>.
   *
   * Include file for kparse routines.
   */
  
  #ifndef	_KERBEROS_KPARSE_H
  #define	_KERBEROS_KPARSE_H
  
  #pragma ident	"@(#)kparse.h	1.4	93/11/01 SMI"
  
  #include <kerberos/mit-copyright.h>
  
  #ifdef	__cplusplus
  extern "C" {
  #endif
  
  /*
   * values returned by fGetParameterSet()
   */
  
  #define	PS_BAD_KEYWORD	  -2	/* unknown or duplicate keyword */
  #define	PS_SYNTAX	  -1	/* syntax error */
  #define	PS_OKAY		   0	/* got a complete parameter set */
  #define	PS_EOF		   1	/* nothing more in the file */
  
  /*
   * values returned by fGetKeywordValue()
   */
  
  #define	KV_SYNTAX	 -2	/* syntax error */
  #define	KV_EOF		 -1	/* nothing more in the file */
  #define	KV_OKAY		  0	/* got a keyword/value pair */
  #define	KV_EOL		  1	/* nothing more on this line */
  
  /*
   * values returned by fGetToken()
   */
  
  #define	GTOK_BAD_QSTRING -1	/* newline found in quoted string */
  #define	GTOK_EOF	  0	/* end of file encountered */
  #define	GTOK_QSTRING	  1	/* quoted string */
  #define	GTOK_STRING	  2	/* unquoted string */
  #define	GTOK_NUMBER	  3	/* one or more digits */
  #define	GTOK_PUNK	  4	/* punks are punctuation, newline, etc. */
  #define	GTOK_WHITE	  5	/* one or more whitespace chars */
  
  /*
   * extended character classification macros
   */
  
  #define	ISOCTAL(CH)	((CH >= '0') && (CH <= '7'))
  #define	ISQUOTE(CH)	((CH == '\"') || (CH == '\'') || (CH == '`'))
  #define	ISWHITESPACE(C)	((C == ' ') || (C == '\t'))
  #define	ISLINEFEED(C)	((C == '\n') || (C == '\r') || (C == '\f'))
  
  /*
   * tokens consist of any printable charcacter except comma, equal, or
   * whitespace
   */
  
  #define	ISTOKENCHAR(C) ((C > 040) && (C < 0177) && (C != ',') && (C != '='))
  
  /*
   * the parameter table defines the keywords that will be recognized by
   * fGetParameterSet, and their default values if not specified.
   */
  
  typedef struct {
  	char *keyword;
  	char *defvalue;
  	char *value;
  } parmtable;
  
  #define	PARMCOUNT(P) (sizeof (P)/sizeof (P[0]))
  
  extern int LineNbr;		/* current line # in parameter file */
  
  extern char ErrorMsg[];		/* meaningful only when KV_SYNTAX, */
  				/* PS_SYNTAX,  or PS_BAD_KEYWORD is */
  				/* returned by fGetKeywordValue or */
  				/* fGetParameterSet */
  
  extern char *strsave();		/* defined in this module */
  extern char *strutol();		/* defined in this module */
  
  #ifdef	__cplusplus
  }
  #endif
  
  #endif	/* _KERBEROS_KPARSE_H */
  