make_xftmpl: Avoid using getopt().

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2021-10-05 11:52:57 +02:00
parent e0ef12241b
commit 5f921c7f1b
1 changed files with 25 additions and 33 deletions

View File

@ -25,9 +25,6 @@
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#ifdef HAVE_GETOPT_H
# include <getopt.h>
#endif
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
@ -91,8 +88,6 @@ static const struct keyword reserved_words[] = {
{"WORD", TOKEN_WORD}
};
extern int getopt(int argc, char *const *argv, const char *optstring);
static BOOL option_header;
static char *option_inc_var_name = NULL;
static char *option_inc_size_name = NULL;
@ -419,50 +414,47 @@ static void usage(void)
program_name);
}
static char **parse_options(int argc, char **argv)
static void option_callback( int optc, char *optarg )
{
int optc;
while ((optc = getopt(argc, argv, "hHi:o:s:")) != -1)
switch (optc)
{
switch (optc)
{
case 'h':
usage();
exit(0);
case 'H':
option_header = TRUE;
break;
case 'i':
option_header = TRUE;
option_inc_var_name = xstrdup(optarg);
break;
case 'o':
option_outfile_name = xstrdup(optarg);
break;
case 's':
option_inc_size_name = xstrdup(optarg);
break;
}
case 'h':
usage();
exit(0);
case 'H':
option_header = TRUE;
break;
case 'i':
option_header = TRUE;
option_inc_var_name = xstrdup(optarg);
break;
case 'o':
option_outfile_name = xstrdup(optarg);
break;
case 's':
option_inc_size_name = xstrdup(optarg);
break;
case '?':
fprintf( stderr, "%s: %s\n", program_name, optarg );
exit(1);
}
return &argv[optind];
}
int main(int argc, char **argv)
{
char header[16];
char **args;
struct strarray args;
char *header_name = NULL;
program_name = argv[0];
args = parse_options(argc, argv);
infile_name = *args++;
if (!infile_name || *args)
args = parse_options(argc, argv, "hHi:o:s:", NULL, 0, option_callback );
if (!args.count)
{
usage();
return 1;
}
infile_name = args.str[0];
infile = stdin;
outfile = NULL;