Correct type inconsistency in LC_OPT machinery.
[libfirm] / ir / libcore / lc_opts.c
index a1470b9..d68318f 100644 (file)
 #include <string.h>
 #include <ctype.h>
 
-#ifdef _WIN32
-#include <malloc.h>
-#endif
-#ifdef HAVE_ALLOCA_H
-#include <alloca.h>
-#endif
-
-/* Includes to determine user's home directory */
-#ifdef _WIN32
-#include <shlobj.h>
-#else
-#include <sys/types.h>
-#include <unistd.h>
-#include <pwd.h>
-#endif
-
-/* maximum length of a path. */
-#ifndef MAX_PATH
-#define MAX_PATH 2048
-#endif
-
-
-#include "lc_common_t.h"
 #include "lc_opts_t.h"
 #include "lc_opts_enum.h"
-#include "lc_parser_t.h"
 #include "hashptr.h"
 #include "lc_printf.h"
 #include "xmalloc.h"
+#include "obst.h"
 
 #define ERR_STRING "In argument \"%s\": "
 
@@ -362,11 +339,12 @@ static char *strtolower(char *buf, size_t n, const char *str)
        return buf;
 }
 
-int lc_opt_std_cb(UNUSED(const char *name), lc_opt_type_t type, void *data, size_t length, ...)
+int lc_opt_std_cb(const char *name, lc_opt_type_t type, void *data, size_t length, ...)
 {
        va_list args;
        int res = 0;
        int integer;
+       (void) name;
 
        va_start(args, length);
 
@@ -376,17 +354,17 @@ int lc_opt_std_cb(UNUSED(const char *name), lc_opt_type_t type, void *data, size
                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:
@@ -417,9 +395,11 @@ int lc_opt_std_cb(UNUSED(const char *name), lc_opt_type_t type, void *data, size
        return res;
 }
 
-int lc_opt_std_dump(char *buf, size_t n, UNUSED(const char *name), lc_opt_type_t type, void *data, UNUSED(size_t length))
+int lc_opt_std_dump(char *buf, size_t n, const char *name, lc_opt_type_t type, void *data, size_t length)
 {
        int res;
+       (void) name;
+       (void) length;
 
        if (data) {
                switch (type) {
@@ -455,8 +435,12 @@ int lc_opt_std_dump(char *buf, size_t n, UNUSED(const char *name), lc_opt_type_t
        return res;
 }
 
-int lc_opt_bool_dump_vals(char *buf, size_t n, UNUSED(const char *name), UNUSED(lc_opt_type_t type), UNUSED(void *data), UNUSED(size_t length))
+int lc_opt_bool_dump_vals(char *buf, size_t n, const char *name, lc_opt_type_t type, void *data, size_t length)
 {
+       (void) name;
+       (void) type;
+       (void) data;
+       (void) length;
        strncpy(buf, "true, false", n);
        return n;
 }
@@ -711,22 +695,13 @@ static int lc_opts_default_error_handler(const char *prefix, const lc_opt_err_in
        return 0;
 }
 
-void lc_opt_from_file(const char *filename, FILE *f, lc_opt_error_handler_t *handler)
-{
-       if (handler == NULL)
-               handler = lc_opts_default_error_handler;
-       PMANGLE(in) = f;
-       lc_opt_init_parser(filename, handler);
-       PMANGLE(parse)();
-}
-
 int lc_opt_from_single_arg(const lc_opt_entry_t *root,
                                                   const char *opt_prefix,
                                                   const char *arg, lc_opt_error_handler_t *handler)
 {
        const lc_opt_entry_t *grp = root;
-       int n                     = strlen(arg);
-       int n_prefix              = opt_prefix ? strlen(opt_prefix) : 0;
+       size_t n                  = strlen(arg);
+       size_t n_prefix           = opt_prefix ? strlen(opt_prefix) : 0;
        int error                 = 0;
        int ret                   = 0;
 
@@ -736,29 +711,6 @@ int lc_opt_from_single_arg(const lc_opt_entry_t *root,
        if (n >= n_prefix && strncmp(opt_prefix, arg, n_prefix) == 0) {
                arg = arg + n_prefix;
 
-               /*
-                * check, if the next character is a @.
-                * This means, that we want to read options
-                * from a file.
-                */
-               if (arg[0] == '@') {
-                       size_t n    = strcspn(&arg[1], " \t\n");
-                       char *fname = (char*)alloca(n + 1);
-                       FILE *f;
-
-                       strncpy(fname, &arg[1], n);
-                       if ((f = fopen(fname, "rt")) != NULL) {
-                               lc_opt_from_file(fname, f, handler);
-                               fclose(f);
-                               set_error(&err, lc_opt_err_none, NULL);
-                       }
-
-                       else
-                               set_error(&err, lc_opt_err_file_not_found, arg);
-
-                       return !lc_opt_raise_error(&err, handler, "Unable to open file: %s", fname);
-               }
-
                /* find the next delimiter (the -) and extract the string up to
                 * there. */
                end    = strchr(arg, OPT_DELIM);
@@ -838,8 +790,9 @@ int lc_opt_from_argv(const lc_opt_entry_t *root,
        return options_set;
 }
 
-static int opt_arg_type(UNUSED(const lc_arg_occ_t *occ))
+static int opt_arg_type(const lc_arg_occ_t *occ)
 {
+       (void) occ;
        return lc_arg_type_ptr;
 }
 
@@ -897,58 +850,3 @@ const lc_arg_env_t *lc_opt_get_arg_env(void)
 
        return env;
 }
-
-void lc_opt_default_configs(const char *ini_name)
-{
-       FILE *f;
-       char path[MAX_PATH];
-       char local_ini_file[MAX_PATH];
-       char home_dir_ini_file[MAX_PATH];
-
-       /* <cmnt>.ini */
-       strncpy(local_ini_file, ini_name, sizeof(local_ini_file));
-       strncat(local_ini_file, ".ini", sizeof(local_ini_file)-1);
-       local_ini_file[sizeof(local_ini_file) - 1] = '\0';
-       path[0] = '\0';
-
-#ifdef _WIN32
-#if _MSC_VER > 1200
-       /* ARG: need newer SDK to compile this */
-       SHGetFolderPath(NULL, CSIDL_LOCAL_APPDATA, NULL, 0, path);
-       strncat(path, "\\", sizeof(path)-1);
-#endif
-       strncpy(home_dir_ini_file, local_ini_file, sizeof(home_dir_ini_file));
-       home_dir_ini_file[sizeof(home_dir_ini_file) - 1] = '\0';
-#else
-       {
-               struct passwd *entry = getpwuid(getuid());
-               if (entry != NULL) {
-                       strcpy(path, entry->pw_dir);
-                       strncat(path, "/", sizeof(path)-1);
-                       /* .<cmnt>rc */
-                       snprintf(home_dir_ini_file, sizeof(home_dir_ini_file), ".%src", ini_name);
-                       home_dir_ini_file[sizeof(home_dir_ini_file) - 1] = '\0';
-               } else {
-                       /* FIXME: some error occurred */
-                       home_dir_ini_file[0] = '\0';
-               }
-       }
-#endif
-
-       strncat(path, home_dir_ini_file, sizeof(path)-1);
-       path[sizeof(path) - 1] = '\0';
-
-       /* Process ini file in user's home. */
-       f = fopen(path, "rt");
-       if (f) {
-               lc_opt_from_file(path, f, lc_opts_default_error_handler);
-               fclose(f);
-       }
-
-       /* Process ini file in current directory. */
-       f = fopen(local_ini_file, "rt");
-       if (f) {
-               lc_opt_from_file(local_ini_file, f, lc_opts_default_error_handler);
-               fclose(f);
-       }
-}