diff options
author | Michael Jennings <mej@kainx.org> | 2006-02-24 21:46:12 +0000 |
---|---|---|
committer | Michael Jennings <mej@kainx.org> | 2006-02-24 21:46:12 +0000 |
commit | 8b56abf863d4bc8c5c542df80a7eaf236ca8dc9a (patch) | |
tree | 9268217353894cf5730bfb27a24e2465b42a63f2 /src | |
parent | 5d208fe25b4ae86c10a4ea0af31c5980c33b2afd (diff) | |
download | libast-8b56abf863d4bc8c5c542df80a7eaf236ca8dc9a.tar.gz |
Fri Feb 24 16:45:38 2006 Michael Jennings (mej)
Make removal of options from argv[] optional and off by default.
Fixes Eterm problem with WM_COMMAND entries being empty.
----------------------------------------------------------------------
SVN revision: 20765
Diffstat (limited to 'src')
-rw-r--r-- | src/options.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/options.c b/src/options.c index 05173f6..0a8b4b9 100644 --- a/src/options.c +++ b/src/options.c @@ -498,7 +498,9 @@ handle_arglist(spif_int32_t n, spif_charptr_t val_ptr, unsigned char hasequal, for (k = 0; k < len; k++) { tmp[k] = SPIF_CAST(charptr) STRDUP(argv[k + i]); D_OPTIONS(("tmp[%d] == %s\n", k, tmp[k])); - argv[k + i] = NULL; + if (SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_REMOVE_ARGS)) { + argv[k + i] = NULL; + } } tmp[k] = SPIF_NULL_TYPE(charptr); *(SPIF_CAST_C(spif_charptr_t **) SPIFOPT_OPT_VALUE(n)) = tmp; @@ -560,7 +562,7 @@ spifopt_parse(int argc, char *argv[]) NEXT_LETTER(); } } - if (!SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_PREPARSE)) { + if (!SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_PREPARSE) && SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_REMOVE_ARGS)) { argv[i] = NULL; } @@ -663,7 +665,7 @@ spifopt_parse(int argc, char *argv[]) ((spifopt_abstract_handler_t) SPIFOPT_OPT_VALUE(j))(val_ptr); } } - if (!SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_PREPARSE)) { + if (!SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_PREPARSE) && SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_REMOVE_ARGS)) { argv[i] = NULL; } NEXT_LOOP(); @@ -671,7 +673,7 @@ spifopt_parse(int argc, char *argv[]) if (SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_PREPARSE)) { SPIFOPT_FLAGS_CLEAR(SPIFOPT_SETTING_PREPARSE); - } else { + } else if (SPIFOPT_FLAGS_IS_SET(SPIFOPT_SETTING_REMOVE_ARGS)) { for (i = 1, j = 1; i < argc; i++) { if (argv[i]) { argv[j] = argv[i]; |