summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMichael Jennings <mej@kainx.org>2006-02-24 21:46:12 +0000
committerMichael Jennings <mej@kainx.org>2006-02-24 21:46:12 +0000
commit8b56abf863d4bc8c5c542df80a7eaf236ca8dc9a (patch)
tree9268217353894cf5730bfb27a24e2465b42a63f2 /src
parent5d208fe25b4ae86c10a4ea0af31c5980c33b2afd (diff)
downloadlibast-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.c10
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];