view include/getopt.h @ 10:55420dceb8e0

Initial entry of mikmod into the CVS tree.
author darius
date Fri, 23 Jan 1998 16:05:11 +0000
parents
children
line wrap: on
line source


#ifndef _GETOPT_H_
#define _GETOPT_H_

#ifdef __cplusplus
extern "C" {
#endif

// ================
// GETOPT.C Defines
// ================

/*
 Types:

  P_BOOLEAN  : Looks for a + or - immidiately after the option.
               If none found (space or other option), -1 is passed.

  P_NUMVALUE : Grabs the value after the option (whitespace ignored).
               If no value is given, -1 is passed.

  P_STRING   : Grabs the string after the option (leading whitespace
               is ignored).  If no string was present, NULL is returned.

 Notes:

   A filename or string is normally terminated by a space (always a single
   word long).  If a filename or string is enclosed in quotations ("blah
   blah"), then the string is not terminated until the closing quote is
   encountered.
               
*/

typedef struct FILESTACK
{   struct  FILESTACK *prev,*next;
    CHAR    *path;            // full path, including filename
    ULONG   size;             // Size of the file
} FILESTACK;


typedef struct P_OPTION
{   CHAR  *token;             // option token (string)
    UBYTE type;               // type of option
} P_OPTION;


typedef struct P_PARSE
{   int   num;                    // number of options
    struct P_OPTION *option;      // array of options
} P_PARSE;


typedef union P_VALUE
{   SLONG number;            // numeric return value
    CHAR  *text;             // string return value
} P_VALUE;

#define P_STRING        32
#define P_BOOLEAN       64
#define P_NUMVALUE     128

#define EX_FULLSORT  0
#define EX_FILESORT  1          

int  ngetopt(CHAR *token, P_PARSE *parse, int argc, CHAR *argv[], void (*post)(int, P_VALUE *));
BOOL ex_init(CHAR *dir, CHAR *filemask, int sort);
void ex_exit(void);

extern FILESTACK *filestack;
extern BOOL sortbydir;       // set this to have getopt to catagorize filenames
                             // by the way they are given on the command line.

#ifdef __cplusplus
}
#endif

#endif