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
17poptContext 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