/* * Copyright (C) 2015 The Android Open Source Project * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ #ifndef ANDROID_POPT_H #define ANDROID_POPT_H /* * popt has been deprecated for some time, and is replaced by GNOME's glib * option parser. Instead of pulling in either of those dependencies, this * stub implements just enough of popt to get things working. */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <getopt.h> #define POPT_ARG_NONE 0U #define POPT_ARG_STRING 1U #define POPT_ARG_INT 2U #define POPT_AUTOHELP #pragma pack(push) #pragma pack(0) struct poptOption { const char *longName; char shortName; unsigned int argInfo; void *arg; int val; const char *descrip; const char *argDescrip; }; struct _poptContext { int argc; const char **argv; const struct poptOption *options; struct option *long_options; const char *otherHelp; }; typedef struct _poptContext *poptContext; #pragma pack(pop) poptContext poptGetContext(const char *name, int argc, const char **argv, const struct poptOption *options, unsigned int flags); poptContext poptFreeContext(poptContext con); void poptResetContext(poptContext con); void poptSetOtherOptionHelp(poptContext con, const char *text); void poptPrintUsage(poptContext con, FILE *fp, int flags); int poptGetNextOpt(poptContext con); const char *poptGetArg(poptContext con); #endif