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