|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T a
Length: 3425 (0xd61)
Types: TextFile
Names: »argh.h«
└─⟦2d1937cfd⟧ Bits:30007241 EUUGD22: P.P 5.0
└─⟦dc59850a2⟧ »EurOpenD22/pp5.0/pp-5.tar.Z«
└─⟦e5a54fb17⟧
└─⟦this⟧ »pp-5.0/h/argh.h«
/* argh.h: Used by the mu program */
/*
* @(#) $Header: /cs/research/pp/hubris/pp-beta/h/RCS/argh.h,v 5.0 90/09/20 16:49:40 pp Exp Locker: pp $
*
* $Log: argh.h,v $
* Revision 5.0 90/09/20 16:49:40 pp
* rcsforce : 5.0 public release
*
*
*/
#ifndef _H_ARGH
#define _H_ARGH
#define ARGHVER "argh v. 1.1" /* Version number */
#define MAXARGS 100 /* Maximum argument instances provided for */
#define MAXFLAGS 50 /* Maximum number of flags
needed to size sorting array argsort[] */
#define FLAGCHAR '-' /* introduces a flag on command line */
#define EQUCHAR '=' /* to separate a partial but
unambiguous flag from its value */
#define MAXFLAGLEN 30 /* max flag length */
#define VALIDTYPES "0123456789amnz?" /* allowed flag types */
#define ADJARGS TRUE /* allow adjacent args */
#define ONECHARARGS FALSE /* allow unambiguous one-byte flags without EQUCHAR */
#define ZEROCHECK FALSE /* test type '0' against next arg */
int flagcount; /* Count from calling-program-specific table */
int argcpi; /* Current parameter index */
int argsource; /* Current argument source */
void add_link();
void take_next();
void arg_error();
void show_args();
void call_args();
void list_args();
void quick_string();
void qs_string();
int scan_args();
int prep_args();
int count_to_flag();
char *next_arg();
char *nextc_arg();
char *digit_word();
struct arginst { /* instance of one argument type */
char *argcp; /* character pointer */
int argci; /* argument counter e.g. argv[ai->argci] */
int argoi; /* offset e.g. argv[ai->argci][ai->argoi] */
int argn; /* instance in this run */
int argof; /* ... of total instances in this run */
int argsrc; /* source - i.e. which call to scan_args */
int argused; /* used marker TRUE -> has been used */
struct arginst *next; /* linked list */
};
struct argdef { /* user supplied flag list */
char *flag; /* see below */
void (*function)();
char type;
int match;
};
struct argfull { /* argument ( flag ) definitions */
/* char flag[MAXFLAGLEN]; character(s) to follow '-' */
char *flag; /* character(s) to follow '-' */
void (*function)(); /* to hold pointer to function */
char type; /* a : valued : adjacent to flag
n : valued : next argument
0 : lone ( no assoc. value )
1 : valued : adjacent or next
2 : as v but takes 2 args
3 : as v but takes 3 args
... etc. (up to 9)
m : 1 or more ( up to next flag )
z : as m but zero args allowed */
int match; /* Minimum length for unambiguous
matching. These can be calculated
>0 indicates length to use
0 indicates calculation reqd.
-1 indicates exact match reqd.
If matching allowed, type a is not.
nor v(adjacent) less than
strlen(flag) unless EQUCHAR used */
int length; /* length of flag */
int count; /* how many instances */
struct arginst *first,*last; /* pointers to first, last instance */
};
#endif