isl_tab_basic_set_non_neg_lexmin: handle NULL input
[platform/upstream/isl.git] / isl_arg.c
index 6961a07..f2025ee 100644 (file)
--- a/isl_arg.c
+++ b/isl_arg.c
@@ -1,7 +1,7 @@
 /*
  * Copyright 2008-2009 Katholieke Universiteit Leuven
  *
- * Use of this software is governed by the GNU LGPLv2.1 license
+ * Use of this software is governed by the MIT license
  *
  * Written by Sven Verdoolaege, K.U.Leuven, Departement
  * Computerwetenschappen, Celestijnenlaan 200A, B-3001 Leuven, Belgium
@@ -779,7 +779,7 @@ static int parse_flags_option(struct isl_arg *decl, char **arg,
        if (!has_argument)
                flags = arg[1];
 
-       val = *(unsigned *)(((char *)opt) + decl->offset);
+       val = 0;
 
        while ((comma = strchr(flags, ',')) != NULL) {
                if (!set_flag(decl, &val, flags, comma - flags))
@@ -1144,6 +1144,23 @@ static int next_arg(struct isl_arg *arg, int a)
        return -1;
 }
 
+/* Unless ISL_ARG_SKIP_HELP is set, check if any of the arguments is
+ * equal to "--help" and if so call print_help_and_exit.
+ */
+static void check_help(struct isl_args *args, int argc, char **argv, void *opt,
+       unsigned flags)
+{
+       int i;
+
+       if (ISL_FL_ISSET(flags, ISL_ARG_SKIP_HELP))
+               return;
+
+       for (i = 1; i < argc; ++i) {
+               if (strcmp(argv[i], "--help") == 0)
+                       print_help_and_exit(args->args, argv[0], opt);
+       }
+}
+
 int isl_args_parse(struct isl_args *args, int argc, char **argv, void *opt,
        unsigned flags)
 {
@@ -1154,10 +1171,7 @@ int isl_args_parse(struct isl_args *args, int argc, char **argv, void *opt,
 
        n = n_arg(args->args);
 
-       for (i = 1; i < argc; ++i) {
-               if (strcmp(argv[i], "--help") == 0)
-                       print_help_and_exit(args->args, argv[0], opt);
-       }
+       check_help(args, argc, argv, opt, flags);
 
        for (i = 1; i < argc; ++i) {
                if ((strcmp(argv[i], "--version") == 0 ||