mirror of
				https://github.com/samba-team/samba.git
				synced 2025-10-31 12:23:52 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* (C) 1998 Red Hat Software, Inc. -- Licensing details are in the COPYING
 | |
|    file accompanying popt source distributions, available from 
 | |
|    ftp://ftp.redhat.com/pub/code/popt */
 | |
| 
 | |
| #ifndef H_POPT
 | |
| #define H_POPT
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| #include <stdio.h>			/* for FILE * */
 | |
| 
 | |
| #define POPT_OPTION_DEPTH	10
 | |
| 
 | |
| #define POPT_ARG_NONE		0
 | |
| #define POPT_ARG_STRING		1
 | |
| #define POPT_ARG_INT		2
 | |
| #define POPT_ARG_LONG		3
 | |
| #define POPT_ARG_INCLUDE_TABLE	4	/* arg points to table */
 | |
| #define POPT_ARG_CALLBACK	5	/* table-wide callback... must be
 | |
| 					   set first in table; arg points 
 | |
| 					   to callback, descrip points to 
 | |
| 					   callback data to pass */
 | |
| #define POPT_ARG_INTL_DOMAIN    6       /* set the translation domain
 | |
| 					   for this table and any
 | |
| 					   included tables; arg points
 | |
| 					   to the domain string */
 | |
| #define POPT_ARG_VAL		7	/* arg should take value val */
 | |
| #define POPT_ARG_MASK		0x0000FFFF
 | |
| #define POPT_ARGFLAG_ONEDASH	0x80000000  /* allow -longoption */
 | |
| #define POPT_ARGFLAG_DOC_HIDDEN 0x40000000  /* don't show in help/usage */
 | |
| #define POPT_ARGFLAG_STRIP	0x20000000  /* strip this arg from argv (only applies to long args) */
 | |
| #define POPT_CBFLAG_PRE		0x80000000  /* call the callback before parse */
 | |
| #define POPT_CBFLAG_POST	0x40000000  /* call the callback after parse */
 | |
| #define POPT_CBFLAG_INC_DATA	0x20000000  /* use data from the include line,
 | |
| 					       not the subtable */
 | |
| 
 | |
| #define POPT_ERROR_NOARG	-10
 | |
| #define POPT_ERROR_BADOPT	-11
 | |
| #define POPT_ERROR_OPTSTOODEEP	-13
 | |
| #define POPT_ERROR_BADQUOTE	-15	/* only from poptParseArgString() */
 | |
| #define POPT_ERROR_ERRNO	-16	/* only from poptParseArgString() */
 | |
| #define POPT_ERROR_BADNUMBER	-17
 | |
| #define POPT_ERROR_OVERFLOW	-18
 | |
| 
 | |
| /* poptBadOption() flags */
 | |
| #define POPT_BADOPTION_NOALIAS  (1 << 0)  /* don't go into an alias */
 | |
| 
 | |
| /* poptGetContext() flags */
 | |
| #define POPT_CONTEXT_NO_EXEC	(1 << 0)  /* ignore exec expansions */
 | |
| #define POPT_CONTEXT_KEEP_FIRST	(1 << 1)  /* pay attention to argv[0] */
 | |
| #define POPT_CONTEXT_POSIXMEHARDER (1 << 2) /* options can't follow args */
 | |
| 
 | |
| struct poptOption {
 | |
|     /*@observer@*/ /*@null@*/ const char * longName;	/* may be NULL */
 | |
|     char shortName;		/* may be '\0' */
 | |
|     int argInfo;
 | |
|     /*@shared@*/ /*@null@*/ void * arg;		/* depends on argInfo */
 | |
|     int val;			/* 0 means don't return, just update flag */
 | |
|     /*@shared@*/ /*@null@*/ const char * descrip;	/* description for autohelp -- may be NULL */
 | |
|     /*@shared@*/ /*@null@*/ const char * argDescrip;	/* argument description for autohelp */
 | |
| };
 | |
| 
 | |
| struct poptAlias {
 | |
|     /*@owned@*/ /*@null@*/ const char * longName;	/* may be NULL */
 | |
|     char shortName;		/* may be '\0' */
 | |
|     int argc;
 | |
|     /*@owned@*/ const char ** argv;		/* must be free()able */
 | |
| };
 | |
| 
 | |
| extern struct poptOption poptHelpOptions[];
 | |
| #define POPT_AUTOHELP { NULL, '\0', POPT_ARG_INCLUDE_TABLE, poptHelpOptions, \
 | |
| 			0, "Help options", NULL },
 | |
| 
 | |
| typedef struct poptContext_s * poptContext;
 | |
| #ifndef __cplusplus
 | |
| typedef struct poptOption * poptOption;
 | |
| #endif
 | |
| 
 | |
| enum poptCallbackReason { POPT_CALLBACK_REASON_PRE, 
 | |
| 			  POPT_CALLBACK_REASON_POST,
 | |
| 			  POPT_CALLBACK_REASON_OPTION };
 | |
| typedef void (*poptCallbackType)(poptContext con, 
 | |
| 				 enum poptCallbackReason reason,
 | |
| 			         const struct poptOption * opt,
 | |
| 				 const char * arg, const void * data);
 | |
| 
 | |
| /*@only@*/ poptContext poptGetContext(/*@keep@*/ const char * name,
 | |
| 		int argc, /*@keep@*/ const char ** argv,
 | |
| 		/*@keep@*/ const struct poptOption * options, int flags);
 | |
| void poptResetContext(poptContext con);
 | |
| 
 | |
| /* returns 'val' element, -1 on last item, POPT_ERROR_* on error */
 | |
| int poptGetNextOpt(poptContext con);
 | |
| /* returns NULL if no argument is available */
 | |
| /*@observer@*/ /*@null@*/ const char * poptGetOptArg(poptContext con);
 | |
| /* returns NULL if no more options are available */
 | |
| /*@observer@*/ /*@null@*/ const char * poptGetArg(poptContext con);
 | |
| /*@observer@*/ /*@null@*/ const char * poptPeekArg(poptContext con);
 | |
| /*@observer@*/ /*@null@*/ const char ** poptGetArgs(poptContext con);
 | |
| /* returns the option which caused the most recent error */
 | |
| /*@observer@*/ const char * poptBadOption(poptContext con, int flags);
 | |
| void poptFreeContext( /*@only@*/ poptContext con);
 | |
| int poptStuffArgs(poptContext con, /*@keep@*/ const char ** argv);
 | |
| int poptAddAlias(poptContext con, struct poptAlias alias, int flags);
 | |
| int poptReadConfigFile(poptContext con, const char * fn);
 | |
| /* like above, but reads /etc/popt and $HOME/.popt along with environment 
 | |
|    vars */
 | |
| int poptReadDefaultConfig(poptContext con, int useEnv);
 | |
| /* argv should be freed -- this allows ', ", and \ quoting, but ' is treated
 | |
|    the same as " and both may include \ quotes */
 | |
| int poptDupArgv(int argc, const char **argv,
 | |
| 		/*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
 | |
| int poptParseArgvString(const char * s,
 | |
| 		/*@out@*/ int * argcPtr, /*@out@*/ const char *** argvPtr);
 | |
| /*@observer@*/ const char *poptStrerror(const int error);
 | |
| void poptSetExecPath(poptContext con, const char * path, int allowAbsolute);
 | |
| void poptPrintHelp(poptContext con, FILE * f, int flags);
 | |
| void poptPrintUsage(poptContext con, FILE * f, int flags);
 | |
| void poptSetOtherOptionHelp(poptContext con, const char * text);
 | |
| /*@observer@*/ const char * poptGetInvocationName(poptContext con);
 | |
| /* shuffles argv pointers to remove stripped args, returns new argc */
 | |
| int poptStrippedArgv(poptContext con, int argc, char **argv);
 | |
| 
 | |
| #ifdef  __cplusplus
 | |
| }
 | |
| #endif
 | |
| 
 | |
| #endif
 |