From 519aae7b91454e45b0528809e94c5008cdf0c060 Mon Sep 17 00:00:00 2001 From: Zahari Doychev Date: Thu, 8 Dec 2022 17:40:17 +0100 Subject: [PATCH] mausezahn: use getopt_long instead of getopt The musl getopt stops processing the options at the first non-option argument comapared to the glibc variant. Using getopt_long fixes this problem. Signed-off-by: Zahari Doychev --- staging/mausezahn.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) --- a/staging/mausezahn.c +++ b/staging/mausezahn.c @@ -23,7 +23,8 @@ #include #include #include - +#include + #include "mz.h" #include "cli.h" #include "mops.h" @@ -447,9 +448,7 @@ int getopts (int argc, char *argv[]) char unit; opterr = 1; // let getopt print error message if necessary - - - while ((c = getopt(argc, argv, short_options)) != -1) + while ((c = getopt_long(argc, argv, short_options, NULL, NULL)) != -1) { switch (c) { case '4': tx.eth_type = 0x0800; @@ -646,7 +645,7 @@ int getopts (int argc, char *argv[]) fprintf (stderr," mz/getopts: Could not handle arguments properly!\n"); return 1; } - + } // ******************************************** // Handle additional arguments // ******************************************** @@ -660,8 +659,8 @@ int getopts (int argc, char *argv[]) "-- Verbose mode --\n" "\n"); } - - if (argc<2) { + + if (optind+2 < argc) { help(); }