Home | History | Annotate | Download | only in libutil
      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 
     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