• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /**
2  * @file op_popt.c
3  * Wrapper for libpopt - always use this rather
4  * than popt.h
5  *
6  * @remark Copyright 2002 OProfile authors
7  * @remark Read the file COPYING
8  *
9  * @author John Levon
10  * @author Philippe Elie
11  */
12 
13 #include <stdlib.h>
14 #include "op_libiberty.h"
15 #include "op_popt.h"
16 
op_poptGetContext(char const * name,int argc,char const ** argv,struct poptOption const * options,int flags)17 poptContext op_poptGetContext(char const * name,
18 		int argc, char const ** argv,
19 		struct poptOption const * options, int flags)
20 {
21 	poptContext optcon;
22 	int c;
23 
24 	xmalloc_set_program_name(argv[0]);
25 
26 #ifdef CONST_POPT
27 	optcon = poptGetContext(name, argc, argv, options, flags);
28 #else
29 	optcon = poptGetContext((char *)name, argc, (char **)argv, options, flags);
30 #endif
31 
32 	c = poptGetNextOpt(optcon);
33 
34 	if (c < -1) {
35 		fprintf(stderr, "%s: %s: %s\n", argv[0],
36 			poptBadOption(optcon, POPT_BADOPTION_NOALIAS),
37 			poptStrerror(c));
38 		poptPrintHelp(optcon, stderr, 0);
39 		exit(EXIT_FAILURE);
40 	}
41 
42 	return optcon;
43 }
44