1*b30d1939SAndy Fiddaman /*********************************************************************** 2*b30d1939SAndy Fiddaman * * 3*b30d1939SAndy Fiddaman * This software is part of the ast package * 4*b30d1939SAndy Fiddaman * Copyright (c) 1985-2011 AT&T Intellectual Property * 5*b30d1939SAndy Fiddaman * and is licensed under the * 6*b30d1939SAndy Fiddaman * Eclipse Public License, Version 1.0 * 7*b30d1939SAndy Fiddaman * by AT&T Intellectual Property * 8*b30d1939SAndy Fiddaman * * 9*b30d1939SAndy Fiddaman * A copy of the License is available at * 10*b30d1939SAndy Fiddaman * http://www.eclipse.org/org/documents/epl-v10.html * 11*b30d1939SAndy Fiddaman * (with md5 checksum b35adb5213ca9657e911e9befb180842) * 12*b30d1939SAndy Fiddaman * * 13*b30d1939SAndy Fiddaman * Information and Software Systems Research * 14*b30d1939SAndy Fiddaman * AT&T Research * 15*b30d1939SAndy Fiddaman * Florham Park NJ * 16*b30d1939SAndy Fiddaman * * 17*b30d1939SAndy Fiddaman * Glenn Fowler <gsf@research.att.com> * 18*b30d1939SAndy Fiddaman * David Korn <dgk@research.att.com> * 19*b30d1939SAndy Fiddaman * Phong Vo <kpv@research.att.com> * 20*b30d1939SAndy Fiddaman * * 21*b30d1939SAndy Fiddaman ***********************************************************************/ 22*b30d1939SAndy Fiddaman #pragma prototyped 23*b30d1939SAndy Fiddaman /* 24*b30d1939SAndy Fiddaman * Glenn Fowler 25*b30d1939SAndy Fiddaman * AT&T Research 26*b30d1939SAndy Fiddaman * 27*b30d1939SAndy Fiddaman * command line option parser and usage formatter private definitions 28*b30d1939SAndy Fiddaman */ 29*b30d1939SAndy Fiddaman 30*b30d1939SAndy Fiddaman #ifndef _OPTLIB_H 31*b30d1939SAndy Fiddaman #define _OPTLIB_H 32*b30d1939SAndy Fiddaman 33*b30d1939SAndy Fiddaman #include <ast.h> 34*b30d1939SAndy Fiddaman #include <cdt.h> 35*b30d1939SAndy Fiddaman 36*b30d1939SAndy Fiddaman #define OPT_append 0x001 37*b30d1939SAndy Fiddaman #define OPT_cache 0x002 38*b30d1939SAndy Fiddaman #define OPT_functions 0x004 39*b30d1939SAndy Fiddaman #define OPT_ignore 0x008 40*b30d1939SAndy Fiddaman #define OPT_long 0x010 41*b30d1939SAndy Fiddaman #define OPT_minus 0x020 42*b30d1939SAndy Fiddaman #define OPT_module 0x040 43*b30d1939SAndy Fiddaman #define OPT_numeric 0x080 44*b30d1939SAndy Fiddaman #define OPT_old 0x100 45*b30d1939SAndy Fiddaman #define OPT_plus 0x200 46*b30d1939SAndy Fiddaman 47*b30d1939SAndy Fiddaman #define OPT_cache_flag 0x001 48*b30d1939SAndy Fiddaman #define OPT_cache_invert 0x002 49*b30d1939SAndy Fiddaman #define OPT_cache_numeric 0x004 50*b30d1939SAndy Fiddaman #define OPT_cache_optional 0x008 51*b30d1939SAndy Fiddaman #define OPT_cache_string 0x010 52*b30d1939SAndy Fiddaman 53*b30d1939SAndy Fiddaman #define OPT_CACHE 128 54*b30d1939SAndy Fiddaman #define OPT_FLAGS "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 55*b30d1939SAndy Fiddaman 56*b30d1939SAndy Fiddaman struct Optdisc_s; 57*b30d1939SAndy Fiddaman 58*b30d1939SAndy Fiddaman typedef struct Optpass_s 59*b30d1939SAndy Fiddaman { 60*b30d1939SAndy Fiddaman char* opts; 61*b30d1939SAndy Fiddaman char* oopts; 62*b30d1939SAndy Fiddaman char* id; 63*b30d1939SAndy Fiddaman char* catalog; 64*b30d1939SAndy Fiddaman char* release; 65*b30d1939SAndy Fiddaman char section[4]; 66*b30d1939SAndy Fiddaman unsigned char version; 67*b30d1939SAndy Fiddaman unsigned char prefix; 68*b30d1939SAndy Fiddaman unsigned short flags; 69*b30d1939SAndy Fiddaman } Optpass_t; 70*b30d1939SAndy Fiddaman 71*b30d1939SAndy Fiddaman typedef struct Optcache_s 72*b30d1939SAndy Fiddaman { 73*b30d1939SAndy Fiddaman struct Optcache_s* next; 74*b30d1939SAndy Fiddaman Optpass_t pass; 75*b30d1939SAndy Fiddaman int caching; 76*b30d1939SAndy Fiddaman unsigned char flags[sizeof(OPT_FLAGS)]; 77*b30d1939SAndy Fiddaman } Optcache_t; 78*b30d1939SAndy Fiddaman 79*b30d1939SAndy Fiddaman typedef struct Optstate_s 80*b30d1939SAndy Fiddaman { 81*b30d1939SAndy Fiddaman Sfio_t* mp; /* opt_info.msg string stream */ 82*b30d1939SAndy Fiddaman Sfio_t* vp; /* translation string stream */ 83*b30d1939SAndy Fiddaman Sfio_t* xp; /* translation string stream */ 84*b30d1939SAndy Fiddaman Sfio_t* cp; /* compatibility string stream */ 85*b30d1939SAndy Fiddaman Optpass_t pass[8]; /* optjoin() list */ 86*b30d1939SAndy Fiddaman char* argv[2]; /* initial argv copy */ 87*b30d1939SAndy Fiddaman char* strv[3]; /* optstr() argv */ 88*b30d1939SAndy Fiddaman char* str; /* optstr() string */ 89*b30d1939SAndy Fiddaman Sfio_t* strp; /* optstr() stream */ 90*b30d1939SAndy Fiddaman int force; /* force this style */ 91*b30d1939SAndy Fiddaman int pindex; /* prev index for backup */ 92*b30d1939SAndy Fiddaman int poffset; /* prev offset for backup */ 93*b30d1939SAndy Fiddaman int npass; /* # optjoin() passes */ 94*b30d1939SAndy Fiddaman int join; /* optjoin() pass # */ 95*b30d1939SAndy Fiddaman int plus; /* + ok */ 96*b30d1939SAndy Fiddaman int style; /* default opthelp() style */ 97*b30d1939SAndy Fiddaman int width; /* format line width */ 98*b30d1939SAndy Fiddaman int flags; /* display flags */ 99*b30d1939SAndy Fiddaman int emphasis; /* ansi term emphasis ok */ 100*b30d1939SAndy Fiddaman int localized; /* locale initialized */ 101*b30d1939SAndy Fiddaman Dtdisc_t msgdisc; /* msgdict discipline */ 102*b30d1939SAndy Fiddaman Dt_t* msgdict; /* default ast.id catalog msgs */ 103*b30d1939SAndy Fiddaman Optcache_t* cache; /* OPT_cache cache */ 104*b30d1939SAndy Fiddaman char** conformance; /* conformance id vector */ 105*b30d1939SAndy Fiddaman } Optstate_t; 106*b30d1939SAndy Fiddaman 107*b30d1939SAndy Fiddaman #define _OPT_PRIVATE_ \ 108*b30d1939SAndy Fiddaman char pad[2*sizeof(void*)]; \ 109*b30d1939SAndy Fiddaman Optstate_t* state; 110*b30d1939SAndy Fiddaman 111*b30d1939SAndy Fiddaman #include <error.h> 112*b30d1939SAndy Fiddaman 113*b30d1939SAndy Fiddaman extern Optstate_t* optstate(Opt_t*); 114*b30d1939SAndy Fiddaman 115*b30d1939SAndy Fiddaman #endif 116