xref: /aosp_15_r20/external/gptfdisk/popt.h (revision 57696d54d05c64fd1b1787f8371dbcf104911cfb)
1*57696d54SAkhilesh Sanikop /*
2*57696d54SAkhilesh Sanikop  * Copyright (C) 2015 The Android Open Source Project
3*57696d54SAkhilesh Sanikop  *
4*57696d54SAkhilesh Sanikop  * This software is licensed under the terms of the GNU General Public
5*57696d54SAkhilesh Sanikop  * License version 2, as published by the Free Software Foundation, and
6*57696d54SAkhilesh Sanikop  * may be copied, distributed, and modified under those terms.
7*57696d54SAkhilesh Sanikop  *
8*57696d54SAkhilesh Sanikop  * This program is distributed in the hope that it will be useful,
9*57696d54SAkhilesh Sanikop  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10*57696d54SAkhilesh Sanikop  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11*57696d54SAkhilesh Sanikop  * GNU General Public License for more details.
12*57696d54SAkhilesh Sanikop  */
13*57696d54SAkhilesh Sanikop 
14*57696d54SAkhilesh Sanikop #ifndef ANDROID_POPT_H
15*57696d54SAkhilesh Sanikop #define ANDROID_POPT_H
16*57696d54SAkhilesh Sanikop 
17*57696d54SAkhilesh Sanikop /*
18*57696d54SAkhilesh Sanikop  * popt has been deprecated for some time, and is replaced by GNOME's glib
19*57696d54SAkhilesh Sanikop  * option parser. Instead of pulling in either of those dependencies, this
20*57696d54SAkhilesh Sanikop  * stub implements just enough of popt to get things working.
21*57696d54SAkhilesh Sanikop  */
22*57696d54SAkhilesh Sanikop 
23*57696d54SAkhilesh Sanikop #include <stdio.h>
24*57696d54SAkhilesh Sanikop #include <stdlib.h>
25*57696d54SAkhilesh Sanikop #include <string.h>
26*57696d54SAkhilesh Sanikop #include <getopt.h>
27*57696d54SAkhilesh Sanikop 
28*57696d54SAkhilesh Sanikop #define POPT_ARG_NONE		 0U
29*57696d54SAkhilesh Sanikop #define POPT_ARG_STRING		 1U
30*57696d54SAkhilesh Sanikop #define POPT_ARG_INT		 2U
31*57696d54SAkhilesh Sanikop 
32*57696d54SAkhilesh Sanikop #define POPT_AUTOHELP
33*57696d54SAkhilesh Sanikop 
34*57696d54SAkhilesh Sanikop #pragma pack(push)
35*57696d54SAkhilesh Sanikop #pragma pack(0)
36*57696d54SAkhilesh Sanikop 
37*57696d54SAkhilesh Sanikop struct poptOption {
38*57696d54SAkhilesh Sanikop     const char *longName;
39*57696d54SAkhilesh Sanikop     char shortName;
40*57696d54SAkhilesh Sanikop     unsigned int argInfo;
41*57696d54SAkhilesh Sanikop     void *arg;
42*57696d54SAkhilesh Sanikop     int val;
43*57696d54SAkhilesh Sanikop     const char *descrip;
44*57696d54SAkhilesh Sanikop     const char *argDescrip;
45*57696d54SAkhilesh Sanikop };
46*57696d54SAkhilesh Sanikop 
47*57696d54SAkhilesh Sanikop struct _poptContext {
48*57696d54SAkhilesh Sanikop     int argc;
49*57696d54SAkhilesh Sanikop     const char **argv;
50*57696d54SAkhilesh Sanikop     const struct poptOption *options;
51*57696d54SAkhilesh Sanikop     struct option *long_options;
52*57696d54SAkhilesh Sanikop     const char *otherHelp;
53*57696d54SAkhilesh Sanikop };
54*57696d54SAkhilesh Sanikop 
55*57696d54SAkhilesh Sanikop typedef struct _poptContext *poptContext;
56*57696d54SAkhilesh Sanikop 
57*57696d54SAkhilesh Sanikop #pragma pack(pop)
58*57696d54SAkhilesh Sanikop 
59*57696d54SAkhilesh Sanikop poptContext poptGetContext(const char *name, int argc, const char **argv,
60*57696d54SAkhilesh Sanikop         const struct poptOption *options, unsigned int flags);
61*57696d54SAkhilesh Sanikop poptContext poptFreeContext(poptContext con);
62*57696d54SAkhilesh Sanikop void poptResetContext(poptContext con);
63*57696d54SAkhilesh Sanikop 
64*57696d54SAkhilesh Sanikop void poptSetOtherOptionHelp(poptContext con, const char *text);
65*57696d54SAkhilesh Sanikop void poptPrintUsage(poptContext con, FILE *fp, int flags);
66*57696d54SAkhilesh Sanikop 
67*57696d54SAkhilesh Sanikop int poptGetNextOpt(poptContext con);
68*57696d54SAkhilesh Sanikop const char *poptGetArg(poptContext con);
69*57696d54SAkhilesh Sanikop 
70*57696d54SAkhilesh Sanikop #endif
71