static char * read_data(char *buffer, FILE *fp) { char *result; if (feof(fp)) { result = 0; } else if ((result = fgets(buffer, MY_LEN, fp)) != 0) { dlg_trim_string(result); } return result; }
static int read_data(char *buffer, FILE *fp) { int result; if (feof(fp)) { result = 0; } else if (fgets(buffer, MY_LEN, fp) != 0) { DLG_TRACE(("read_data:%s", buffer)); dlg_trim_string(buffer); result = 1; } else { result = -1; } return result; }
int main(int argc, char *argv[]) { FILE *output = stderr; char temp[80]; const char *separate_str = DEFAULT_SEPARATE_STR; bool esc_pressed = FALSE; int offset = 1; int offset_add; int retval = DLG_EXIT_OK; int done; int j; eOptions code; const Mode *modePtr; #ifndef HAVE_COLOR int use_shadow = FALSE; /* ignore corresponding option */ #endif #if defined(ENABLE_NLS) /* initialize locale support */ setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); #elif defined(HAVE_SETLOCALE) (void) setlocale(LC_ALL, ""); #endif program = argv[0]; dialog_vars.output = output; if (argc == 2) { /* if we don't want clear screen */ switch (lookupOption(argv[1], 7)) { case o_print_maxsize: (void) initscr(); fprintf(output, "MaxSize: %d, %d\n", SLINES, SCOLS); end_dialog(); break; case o_print_version: fprintf(output, "Version: %s\n", VERSION); break; default: case o_help: Help(); break; } return 0; } if (argc < 2) { Help(); } init_dialog(); #ifdef HAVE_RC_FILE if (!strcmp(argv[1], "--create-rc")) { if (argc != 3) { sprintf(temp, "Expected a filename for %s", argv[1]); Usage(temp); } end_dialog(); create_rc(argv[2]); return 0; } #endif while (offset < argc && !esc_pressed) { memset(&dialog_vars, 0, sizeof(dialog_vars)); dialog_vars.aspect_ratio = DEFAULT_ASPECT_RATIO; dialog_vars.tab_len = TAB_LEN; dialog_vars.output = output; done = FALSE; while (offset < argc && !done) { /* Common options */ switch (lookupOption(argv[offset], 1)) { case o_title: dialog_vars.title = optionString(argv, &offset); break; case o_backtitle: dialog_vars.backtitle = optionString(argv, &offset); break; case o_separate_widget: separate_str = optionString(argv, &offset); break; case o_separate_output: dialog_vars.separate_output = TRUE; break; case o_cr_wrap: dialog_vars.cr_wrap = TRUE; break; case o_no_kill: dialog_vars.cant_kill = TRUE; break; case o_nocancel: dialog_vars.nocancel = TRUE; break; case o_size_err: dialog_vars.size_err = TRUE; break; case o_beep: dialog_vars.beep_signal = TRUE; break; case o_beep_after: dialog_vars.beep_after_signal = TRUE; break; case o_shadow: use_shadow = TRUE; break; case o_defaultno: defaultno = TRUE; break; case o_default_item: dialog_vars.default_item = optionString(argv, &offset); break; case o_item_help: dialog_vars.item_help = TRUE; break; case o_no_shadow: use_shadow = FALSE; break; case o_print_size: dialog_vars.print_siz = TRUE; break; case o_print_maxsize: fprintf(output, "MaxSize: %d, %d\n", SLINES, SCOLS); break; case o_print_version: fprintf(output, "Version: %s\n", VERSION); break; case o_tab_correct: dialog_vars.tab_correct = TRUE; break; case o_sleep: dialog_vars.sleep_secs = optionValue(argv, &offset); break; case o_stderr: dialog_vars.output = output = stderr; break; case o_stdout: dialog_vars.output = output = stdout; break; case o_tab_len: dialog_vars.tab_len = optionValue(argv, &offset); break; case o_aspect: dialog_vars.aspect_ratio = optionValue(argv, &offset); break; case o_begin: dialog_vars.begin_set = TRUE; dialog_vars.begin_y = optionValue(argv, &offset); dialog_vars.begin_x = optionValue(argv, &offset); break; case o_clear: if (argc == 2) { /* we only want to clear the screen */ killall_bg(&retval); (void) refresh(); end_dialog(); return 0; } dialog_vars.dlg_clear_screen = TRUE; break; case o_noitem: case o_fullbutton: /* ignore */ break; default: /* no more common options */ done = TRUE; break; } if (!done) offset++; } for (j = 1; j < argc; j++) { if (strncmp(argv[j - 1], "--", 2) == 0 && strcmp(argv[j - 1], "--backtitle") != 0 && strcmp(argv[j - 1], "--title") != 0) { dlg_trim_string(argv[j]); } } if (argv[offset] == NULL) { Usage("Expected a box option"); } if (lookupOption(argv[offset], 2) != o_checklist && dialog_vars.separate_output) { sprintf(temp, "Expected --checklist, not %.20s", argv[offset]); Usage(temp); } if (dialog_vars.aspect_ratio == 0) dialog_vars.aspect_ratio = DEFAULT_ASPECT_RATIO; put_backtitle(); /* use a table to look for the requested mode, to avoid code duplication */ modePtr = 0; if ((code = lookupOption(argv[offset], 2)) != o_unknown) modePtr = lookupMode(code); if (modePtr == 0) { sprintf(temp, "Unknown option %.20s", argv[offset]); Usage(temp); } if (arg_rest(&argv[offset]) < modePtr->argmin) { sprintf(temp, "Expected at least %d tokens for %.20s, have %d", modePtr->argmin - 1, argv[offset], arg_rest(&argv[offset]) - 1); Usage(temp); } if (modePtr->argmax && arg_rest(&argv[offset]) > modePtr->argmax) { sprintf(temp, "Expected no more than %d tokens for %.20s, have %d", modePtr->argmax - 1, argv[offset], arg_rest(&argv[offset]) - 1); Usage(temp); } retval = (*(modePtr->jumper)) (dialog_vars.title, argv + offset, &offset_add); offset += offset_add; if (retval == DLG_EXIT_ESC) { esc_pressed = TRUE; } else { if (dialog_vars.beep_after_signal) (void) beep(); if (dialog_vars.sleep_secs) (void) napms(dialog_vars.sleep_secs * 1000); if (offset < argc) { switch (lookupOption(argv[offset], 7)) { case o_and_widget: (void) fputs(separate_str, output); offset++; break; case o_unknown: sprintf(temp, "Expected --and-widget, not %.20s", argv[offset]); Usage(temp); break; default: /* if we got a cancel, etc., stop chaining */ if (retval != DLG_EXIT_OK) esc_pressed = TRUE; else dialog_vars.dlg_clear_screen = TRUE; break; } } if (dialog_vars.dlg_clear_screen) dialog_clear(); } } killall_bg(&retval); (void) refresh(); end_dialog(); return retval; /* assume this is the same as exit(retval) */ }