be: Replace generate_emitter.pl by generate_emitter_new.pl.
[libfirm] / ir / libcore / lc_opts.c
index b7b0e30..5d34a93 100644 (file)
@@ -28,6 +28,7 @@
 #include "lc_opts_enum.h"
 #include "hashptr.h"
 #include "lc_printf.h"
+#include "util.h"
 #include "xmalloc.h"
 #include "obst.h"
 
@@ -43,7 +44,7 @@ static struct obstack obst;
 static void set_name(lc_opt_entry_t *ent, const char *name)
 {
        ent->name = name;
-       ent->hash = HASH_STR(name, strlen(name));
+       ent->hash = hash_str(name);
 }
 
 #define entry_matches(ent,hash_val,str) \
@@ -231,9 +232,9 @@ lc_opt_entry_t *lc_opt_add_opt(lc_opt_entry_t *parent,
 static lc_opt_entry_t *lc_opt_find_ent(const struct list_head *head, const char *name,
                int error_to_use, lc_opt_err_info_t *err)
 {
-       lc_opt_entry_t *ent, *found = NULL;
+       lc_opt_entry_t *found = NULL;
        int error = error_to_use;
-       unsigned hash = HASH_STR(name, strlen(name));
+       unsigned hash = hash_str(name);
 
        if (!list_empty(head)) {
                list_for_each_entry(lc_opt_entry_t, ent, head, list) {
@@ -335,7 +336,7 @@ static char *strtolower(char *buf, size_t n, const char *str)
 {
        unsigned i;
        for (i = 0; i < n; ++i)
-               buf[i] = tolower(str[i]);
+               buf[i] = tolower((unsigned char)str[i]);
        return buf;
 }
 
@@ -354,17 +355,17 @@ int lc_opt_std_cb(const char *name, lc_opt_type_t type, void *data, size_t lengt
                case lc_opt_type_bit:
                        integer = va_arg(args, int);
                        if (integer)
-                               *((int *) data) |= length;
+                               *(unsigned*)data |= length;
                        else
-                               *((int *) data) &= ~length;
+                               *(unsigned*)data &= ~length;
                        break;
 
                case lc_opt_type_negbit:
                        integer = va_arg(args, int);
                        if (integer)
-                               *((int *) data) &= ~length;
+                               *(unsigned*)data &= ~length;
                        else
-                               *((int *) data) |= length;
+                               *(unsigned*)data |= length;
                        break;
 
                case lc_opt_type_boolean:
@@ -504,7 +505,7 @@ int lc_opt_occurs(lc_opt_entry_t *opt, const char *value, lc_opt_err_info_t *err
                case lc_opt_type_bit:
                case lc_opt_type_negbit:
                                strtolower(buf, sizeof(buf), value);
-                               for (i = 0; i < LC_ARRSIZE(bool_strings); ++i) {
+                               for (i = 0; i < ARRAY_SIZE(bool_strings); ++i) {
                                        if (strcmp(buf, bool_strings[i].str) == 0) {
                                                val->integer = bool_strings[i].val;
                                                error = lc_opt_err_none;
@@ -610,7 +611,6 @@ static void lc_opt_print_help_rec(lc_opt_entry_t *ent, char separator, lc_opt_en
        char grp_name[512];
        char value[256];
        char values[512];
-       lc_opt_entry_t *e;
 
        if (!list_empty(&s->opts)) {
                lc_opt_print_grp_path(grp_name, sizeof(grp_name), ent, separator, stop_ent);
@@ -668,8 +668,6 @@ static void lc_opt_print_tree_grp_indent(lc_opt_entry_t *ent, FILE *f, int level
        lc_grp_special_t *s;
 
        if (ent->is_grp) {
-               lc_opt_entry_t *e;
-
                s = lc_get_grp_special(ent);
                indent(f, level);
                fprintf(f, "/%s\n", ent->name);
@@ -701,14 +699,14 @@ int lc_opt_from_single_arg(const lc_opt_entry_t *root,
 {
        const lc_opt_entry_t *grp = root;
        size_t n                  = strlen(arg);
-       size_t n_prefix           = opt_prefix ? strlen(opt_prefix) : 0;
+       size_t n_prefix           = opt_prefix != NULL ? strlen(opt_prefix) : 0;
        int error                 = 0;
        int ret                   = 0;
 
        lc_opt_err_info_t err;
        const char *end, *eqsign;
 
-       if (n >= n_prefix && strncmp(opt_prefix, arg, n_prefix) == 0) {
+       if (n >= n_prefix && (n_prefix == 0 || strncmp(opt_prefix, arg, n_prefix) == 0)) {
                arg = arg + n_prefix;
 
                /* find the next delimiter (the -) and extract the string up to