]> git.gsnw.org Git - fping.git/commitdiff
Handling optparse long option
authorGerman Service Network <support@gsnw.de>
Sun, 19 May 2024 19:22:03 +0000 (21:22 +0200)
committerErik Auerswald <auerswal@unix-ag.uni-kl.de>
Sat, 22 Jun 2024 11:37:05 +0000 (13:37 +0200)
src/fping.c
src/optparse.c
src/optparse.h

index c58e20c5993678cfcc5bd48d2be77b71628c6802..1c65cbde9631d481acf96a04d0241be2a0c15011 100644 (file)
@@ -561,6 +561,16 @@ int main(int argc, char **argv)
     float opt_value_float;
     while ((c = optparse_long(&optparse_state, longopts, NULL)) != EOF) {
         switch (c) {
+        case '0':
+            /*
+             * Use long-option example
+             * Define "struct optparse_long longopts": { "long-option-name", '0', OPTPARSE_NONE }
+             * 
+             * if(strstr(optparse_state.optlongname, "long-option-name") != NULL) {
+             *  long_option_flag = 1;
+             * }
+             */
+            break;
         case '4':
 #ifdef IPV6
             if (hints_ai_family != AF_UNSPEC && hints_ai_family != AF_INET) {
index 4242bff69b4120ffaed85a85fa9d1f109b67f615..63a9f40aad8841cf4abeb1711933901251b6c70f 100644 (file)
@@ -238,12 +238,14 @@ optparse_long(struct optparse *options,
     /* Parse as long option. */
     options->errmsg[0] = '\0';
     options->optopt = 0;
+    options->optlongname = 0;
     options->optarg = 0;
     option += 2; /* skip "--" */
     options->optind++;
     for (int i = 0; !longopts_end(longopts, i); i++) {
         const char *name = longopts[i].longname;
         if (longopts_match(name, option)) {
+            options->optlongname = option;
             if (longindex)
                 *longindex = i;
             options->optopt = longopts[i].shortname;
index f124b75fb45edfaeb059e1b17019aaf33832e26e..7a555edbeec078ac8c09bb91840d077349aa90f8 100644 (file)
@@ -48,6 +48,7 @@ struct optparse {
     int permute;
     int optind;
     int optopt;
+    char *optlongname;
     char *optarg;
     char errmsg[64];
     int subopt;