summaryrefslogtreecommitdiffstats
path: root/contrib/dialog/dialog.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/dialog/dialog.c')
-rw-r--r--contrib/dialog/dialog.c136
1 files changed, 16 insertions, 120 deletions
diff --git a/contrib/dialog/dialog.c b/contrib/dialog/dialog.c
index 249eaac..44a16db 100644
--- a/contrib/dialog/dialog.c
+++ b/contrib/dialog/dialog.c
@@ -1,9 +1,9 @@
/*
- * $Id: dialog.c,v 1.202 2012/07/01 20:20:39 tom Exp $
+ * $Id: dialog.c,v 1.193 2011/06/29 09:10:56 tom Exp $
*
* cdialog - Display simple dialog boxes from shell scripts
*
- * Copyright 2000-2011,2012 Thomas E. Dickey
+ * Copyright 2000-2010,2011 Thomas E. Dickey
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License, version 2.1
@@ -57,7 +57,6 @@ typedef enum {
,o_cr_wrap
,o_create_rc
,o_date_format
- ,o_default_button
,o_default_item
,o_defaultno
,o_dselect
@@ -202,7 +201,6 @@ static const Options options[] = {
{ "cr-wrap", o_cr_wrap, 1, "" },
{ "create-rc", o_create_rc, 1, NULL },
{ "date-format", o_date_format, 1, "<str>" },
- { "default-button", o_default_button, 1, "<str>" },
{ "default-item", o_default_item, 1, "<str>" },
{ "defaultno", o_defaultno, 1, "" },
{ "dselect", o_dselect, 2, "<directory> <height> <width>" },
@@ -433,12 +431,6 @@ unescape_argv(int *argcp, char ***argvp)
dialog_argv = (*argvp);
}
-#define OptionChars "\
-0123456789\
--\
-abcdefghijklmnopqrstuvwxyz\
-"
-
/*
* Check if the given string from main's argv is an option.
*/
@@ -457,11 +449,7 @@ isOption(const char *arg)
}
}
} else if (!strncmp(arg, "--", (size_t) 2) && isalpha(UCH(arg[2]))) {
- if (strlen(arg) == strspn(arg, OptionChars)) {
- result = TRUE;
- } else {
- dlg_exiterr("Invalid option \"%s\"", arg);
- }
+ result = TRUE;
}
}
return result;
@@ -471,19 +459,17 @@ static eOptions
lookupOption(const char *name, int pass)
{
unsigned n;
- eOptions result = o_unknown;
if (isOption(name)) {
name += 2;
for (n = 0; n < sizeof(options) / sizeof(options[0]); n++) {
if ((pass & options[n].pass) != 0
&& !strcmp(name, options[n].name)) {
- result = options[n].code;
- break;
+ return options[n].code;
}
}
}
- return result;
+ return o_unknown;
}
static void
@@ -699,7 +685,9 @@ call_checklist(CALLARGS)
{
int tags = howmany_tags(av + 5, CHECKBOX_TAGS);
int code;
+ bool save_quoted = dialog_vars.quoted;
+ dialog_vars.quoted = !dialog_vars.separate_output;
*offset_add = 5 + tags * CHECKBOX_TAGS;
code = dialog_checklist(t,
av[1],
@@ -707,6 +695,7 @@ call_checklist(CALLARGS)
numeric_arg(av, 3),
numeric_arg(av, 4),
tags, av + 5, FLAG_CHECK);
+ dialog_vars.quoted = save_quoted;
return code;
}
@@ -1063,43 +1052,6 @@ optionValue(char **argv, int *num)
return result;
}
-/* Return exit-code for a named button */
-static int
-button_code(const char *name)
-{
- /* *INDENT-OFF* */
- static struct {
- const char *name;
- int code;
- } table[] = {
- { "ok", DLG_EXIT_OK },
- { "yes", DLG_EXIT_OK },
- { "cancel", DLG_EXIT_CANCEL },
- { "no", DLG_EXIT_CANCEL },
- { "help", DLG_EXIT_HELP },
- { "extra", DLG_EXIT_EXTRA },
- };
- /* *INDENT-ON* */
-
- int code = DLG_EXIT_ERROR;
- size_t i;
-
- for (i = 0; i < (sizeof(table) / sizeof(table[0])); i++) {
- if (!dlg_strcmp(name, table[i].name)) {
- code = table[i].code;
- break;
- }
- }
-
- if (code == DLG_EXIT_ERROR) {
- char temp[80];
- sprintf(temp, "Button name \"%.20s\" unknown", name);
- Usage(temp);
- }
-
- return code;
-}
-
/*
* Print parts of a message
*/
@@ -1163,7 +1115,7 @@ Help(void)
static const char *const tbl_1[] =
{
"cdialog (ComeOn Dialog!) version %s",
- "Copyright 2000-2011,2012 Thomas E. Dickey",
+ "Copyright 2000-2008,2011 Thomas E. Dickey",
"This is free software; see the source for copying conditions. There is NO",
"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.",
"",
@@ -1227,29 +1179,6 @@ Help(void)
dlg_exit(DLG_EXIT_OK);
}
-#ifdef HAVE_DLG_TRACE
-/*
- * Only the first call to dlg_trace will open a trace file. But each time
- * --trace is parsed, we show the whole parameter list as it is at that moment,
- * counting discarded parameters. The only way to capture the whole parameter
- * list is if --trace is the first option.
- */
-static void
-process_trace_option(char **argv, int *offset)
-{
- int j;
-
- if (dialog_state.trace_output == 0)
- dlg_trace(optionString(argv, offset));
-
- dlg_trace_msg("# Parameters:\n");
- for (j = 0; argv[j] != 0; ++j) {
- dlg_trace_msg("# argv[%d] = %s\n", j, argv[j]);
- }
- *offset += 1;
-}
-#endif
-
/*
* "Common" options apply to all widgets more/less. Most of the common options
* set values in dialog_vars, a few set dialog_state and a couple write to the
@@ -1258,12 +1187,12 @@ process_trace_option(char **argv, int *offset)
static int
process_common_options(int argc, char **argv, int offset, bool output)
{
+#ifdef HAVE_DLG_TRACE
+ int n;
+#endif
bool done = FALSE;
- dlg_trace_msg("# process_common_options, offset %d\n", offset);
-
while (offset < argc && !done) { /* Common options */
- dlg_trace_msg("#\targv[%d] = %s\n", offset, argv[offset]);
switch (lookupOption(argv[offset], 1)) {
case o_title:
dialog_vars.title = optionString(argv, &offset);
@@ -1321,11 +1250,6 @@ process_common_options(int argc, char **argv, int offset, bool output)
break;
case o_defaultno:
dialog_vars.defaultno = TRUE;
- dialog_vars.default_button = DLG_EXIT_CANCEL;
- break;
- case o_default_button:
- dialog_vars.default_button = button_code(optionString(argv, &offset));
- dialog_vars.defaultno = dialog_vars.default_button == DLG_EXIT_CANCEL;
break;
case o_default_item:
dialog_vars.default_item = optionString(argv, &offset);
@@ -1492,7 +1416,10 @@ process_common_options(int argc, char **argv, int offset, bool output)
break;
#ifdef HAVE_DLG_TRACE
case o_trace:
- process_trace_option(argv, &offset);
+ dlg_trace(optionString(argv, &offset));
+ for (n = 0; argv[n] != 0; ++n) {
+ dlg_trace_msg("argv[%d] = %s\n", n, argv[n]);
+ }
break;
#endif
}
@@ -1513,16 +1440,12 @@ init_result(char *buffer)
static char **special_argv = 0;
static int special_argc = 0;
- dlg_trace_msg("# init_result\n");
-
/* clear everything we do not save for the next widget */
memset(&dialog_vars, 0, sizeof(dialog_vars));
dialog_vars.input_result = buffer;
dialog_vars.input_result[0] = '\0';
- dialog_vars.default_button = -1;
-
/*
* The first time this is called, check for common options given by an
* environment variable.
@@ -1535,20 +1458,12 @@ init_result(char *buffer)
special_argv = dlg_string_to_argv(env);
special_argc = dlg_count_argv(special_argv);
}
- first = FALSE;
}
-
- /*
- * If we are not checking memory leaks, just do the parse of the
- * environment once.
- */
if (special_argv != 0) {
process_common_options(special_argc, special_argv, 0, FALSE);
#ifdef NO_LEAKS
free(special_argv[0]);
free(special_argv);
- special_argv = 0;
- special_argc = 0;
first = TRUE;
#endif
}
@@ -1624,28 +1539,10 @@ main(int argc, char *argv[])
case o_help:
Help();
break;
-#ifdef HAVE_DLG_TRACE
- case o_trace:
- /*
- * Process/remove the --trace option if it is the first option.
- * Otherwise, process it in more/less expected order as a
- * "common" option.
- */
- if (base == 1) {
- process_trace_option(argv, &offset);
- break;
- } else {
- ++offset;
- continue;
- }
-#endif
default:
++offset;
continue;
}
- dlg_trace_msg("# discarding %d parameters starting with argv[%d] (%s)\n",
- 1 + offset - base, base,
- argv[base]);
for (j = base; j < argc; ++j) {
dialog_argv[j] = dialog_argv[j + 1 + (offset - base)];
if (dialog_opts != 0)
@@ -1782,7 +1679,6 @@ main(int argc, char *argv[])
retval = show_result((*(modePtr->jumper)) (dialog_vars.title,
argv + offset,
&offset_add));
- dlg_trace_msg("# widget returns %d\n", retval);
offset += offset_add;
if (dialog_vars.input_result != my_buffer) {
OpenPOWER on IntegriCloud