Commit 1de2f174c2dceefeff6886f84c0a6b658c3665f0

Peter Hutterer 2019-11-13T13:42:11

test: let rmlvo-to-kccgst take long options like rmlvo-to-keymap The short options were left for backwards compatibility. Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>

diff --git a/test/rmlvo-to-kccgst.c b/test/rmlvo-to-kccgst.c
index f3c8076..99e5064 100644
--- a/test/rmlvo-to-kccgst.c
+++ b/test/rmlvo-to-kccgst.c
@@ -22,6 +22,7 @@
  */
 
 #include <unistd.h>
+#include <getopt.h>
 
 #include "test.h"
 #include "xkbcomp/xkbcomp-priv.h"
@@ -30,13 +31,29 @@
 int
 main(int argc, char *argv[])
 {
-    int opt;
     struct xkb_rule_names rmlvo = { NULL };
     struct xkb_context *ctx;
     struct xkb_component_names kccgst;
 
-    while ((opt = getopt(argc, argv, "r:m:l:v:o:h")) != -1) {
-        switch (opt) {
+    static struct option opts[] = {
+        {"help",        no_argument,            0, 'h'},
+        {"rules",       required_argument,      0, 'r'},
+        {"model",       required_argument,      0, 'm'},
+        {"layout",      required_argument,      0, 'l'},
+        {"variant",     required_argument,      0, 'v'},
+        {"options",     required_argument,      0, 'o'},
+        {0, 0, 0, 0},
+    };
+
+    while (1) {
+        int c;
+        int option_index = 0;
+
+        c = getopt_long(argc, argv, "r:m:l:v:o:h", opts, &option_index);
+        if (c == -1)
+            break;
+
+        switch (c) {
         case 'r':
             rmlvo.rules = optarg;
             break;