--- cmdline.c	2012-03-05 16:26:03.000000000 +0100
+++ cmdline_fixed.c	2012-03-05 16:45:37.000000000 +0100
@@ -16,6 +16,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <limits.h>
 
 #ifndef FIX_UNUSED
 #define FIX_UNUSED(X) (void) (X) /* avoid warnings for unused params */
@@ -379,6 +380,15 @@ int update_arg(void *field, char **orig_
 }
 
 
+/* For long options that have no equivalent short option, use a
+   non-character as a pseudo short option, starting with CHAR_MAX + 1.  */
+enum
+{
+  pseudo_shortopt_koma = CHAR_MAX + 1,
+  pseudo_shortopt_komb
+};
+
+
 int
 cmdline_parser_internal (
   int argc, char **argv, struct gengetopt_args_info *args_info,
@@ -418,8 +428,8 @@ cmdline_parser_internal (
       static struct option long_options[] = {
         { "help",	0, NULL, 'h' },
         { "version",	0, NULL, 'V' },
-        { "koma",	0, NULL, 0 },
-        { "komb",	0, NULL, 0 },
+        { "koma",	0, NULL, pseudo_shortopt_koma },
+        { "komb",	0, NULL, pseudo_shortopt_komb },
         { 0,  0, 0, 0 }
       };
 
@@ -440,7 +450,7 @@ cmdline_parser_internal (
           exit (EXIT_SUCCESS);
 
 
-        case 0:	/* Long option with no short option */
+        case pseudo_shortopt_koma:
           /* help text koma.  */
           if (strcmp (long_options[option_index].name, "koma") == 0)
           {
@@ -455,8 +465,11 @@ cmdline_parser_internal (
               goto failure;
           
           }
+          break;
+
+        case pseudo_shortopt_komb:
           /* help text komb.  */
-          else if (strcmp (long_options[option_index].name, "komb") == 0)
+          if (strcmp (long_options[option_index].name, "komb") == 0)
           {
           
           
@@ -469,8 +482,8 @@ cmdline_parser_internal (
               goto failure;
           
           }
-          
           break;
+
         case '?':	/* Invalid option.  */
           /* `getopt_long' already printed an error message.  */
           goto failure;
