char *mod_get_params(module_t *mod) { char *buf = NULL, *buf2 = NULL; slist_t *sl; int err; strprintf(&buf, "Enter parameters for \"%s\".", mod->name); if(mod->param) { strprintf(&buf, "%s\n\nExample: %s", buf, mod->param); if(mod->autoload) str_copy(&buf2, mod->param); } sl = slist_getentry(config.module.input_params, mod->name); if(sl && sl->value) str_copy(&buf2, sl->value); err = dia_input2(buf, &buf2, 30, 0); str_copy(&buf, NULL); if(err) return NULL; if(!sl) { sl = slist_add(&config.module.input_params, slist_new()); sl->key = strdup(mod->name); } if(sl->value) free(sl->value); sl->value = buf2; return sl->value; }
/* * return values: * -1 : abort (aka ESC) * 0 : ok * other: stay in menu */ int set_expert_cb(dia_item_t di) { int i; file_t *f; di_set_expert_last = di; switch(di) { case di_expert_info: info_menu(); break; case di_expert_modules: mod_menu(); break; case di_expert_eject: util_eject_cdrom(config.cdrom); break; case di_extras_info: util_status_info(0); break; case di_extras_change: i = dia_input2("Change config", &config.change_config, 35, 0); if(!i) { f = file_parse_buffer(config.change_config, kf_cfg + kf_cmd + kf_cmd_early); file_do_info(f, kf_cfg + kf_cmd + kf_cmd_early); file_free_file(f); net_update_ifcfg(IFCFG_IFUP); } break; case di_extras_shell: util_run_debugshell(); break; default: break; } return 1; }
/* * return values: * -1 : abort (aka ESC) * 0 : ok * other: stay in menu */ int set_expert_cb(dia_item_t di) { int i; char *dev = NULL; file_t *f; di_set_expert_last = di; switch(di) { case di_expert_info: info_menu(); break; case di_expert_modules: mod_menu(); break; case di_expert_verify: util_choose_disk_device(&dev, 2, "Please choose the device to check.", "Enter the device to check."); if(dev) digest_media_verify(dev); break; case di_expert_eject: util_eject_cdrom(config.cdrom); break; case di_extras_info: util_status_info(0); break; case di_extras_change: i = dia_input2("Change config", &config.change_config, 35, 0); if(!i) { f = file_parse_buffer(config.change_config, kf_cfg + kf_cmd + kf_cmd_early); file_do_info(f, kf_cfg + kf_cmd + kf_cmd_early); file_free_file(f); net_update_ifcfg(IFCFG_IFUP); } break; case di_extras_shell: kbd_end(0); if(config.win) { disp_cursor_on(); } if(!config.linemode) { printf("\033c"); if(config.utf8) printf("\033%%G"); fflush(stdout); } char *cmd = NULL; strprintf(&cmd, "PS1='\\w # ' %s 2>&1", config.debugshell ?: "/bin/sh"); system(cmd); free(cmd); kbd_init(0); if(config.win) { disp_cursor_off(); if(!config.linemode) disp_restore_screen(); } break; default: break; } return 1; }
/* * return values: * -1 : abort (aka ESC) * 0 : ok * other: stay in menu */ int set_settings_cb (dia_item_t di) { int rc = 0; char *s; url_t *url; di_set_settings_last = di; switch(di) { case di_set_lang: set_choose_language(); break; case di_set_display: set_choose_display(); util_print_banner(); break; case di_set_keymap: set_choose_keytable(1); rc = 1; break; case di_set_animate: rc = dia_yesno("Use animated windows?", config.explode_win ? YES : NO); if(rc == YES) config.explode_win = 1; else if(rc == NO) config.explode_win = 0; rc = 1; break; case di_set_forceroot: rc = dia_yesno("Should the root image be loaded into the RAM disk?", config.download.instsys ? YES : NO); config.download.instsys_set = 1; if(rc == YES) config.download.instsys = 1; else if(rc == NO) config.download.instsys = 0; rc = 1; break; case di_set_rootimage: (void) dia_input2("Enter the path and name of the file to load into the RAM disk as the root file system.", &config.rootimage, 30, 0); rc = 1; break; case di_set_vnc: rc = dia_yesno("Use VNC for install?", config.vnc ? YES : NO); if(rc != ESCAPE) { if((config.vnc = rc == YES ? 1 : 0)) { config.net.do_setup |= DS_VNC; } else { config.net.do_setup &= ~DS_VNC; } } rc = 1; break; case di_set_usessh: rc = dia_yesno("Start SSH for Text Install?", config.usessh ? YES : NO); if(rc != ESCAPE) { if((config.usessh = rc == YES ? 1 : 0)) { config.net.do_setup |= DS_SSH; } else { config.net.do_setup &= ~DS_SSH; } } rc = 1; break; case di_set_startshell: rc = dia_yesno("Start shell before and after YaST?", config.startshell ? YES : NO); if(rc != ESCAPE) config.startshell = rc == YES ? 1 : 0; rc = 1; break; case di_set_slp: if(net_config_needed(1) && net_config()) { rc = 1; break; } url = url_set("slp:"); s = slp_get_install(url); url_free(url); rc = 1; if(s) { url = url_set(s); if(url->scheme) { url_free(config.url.install); config.url.install = url; rc = 0; } else { url_free(url); } } if(rc) dia_message("SLP failed", MSGTYPE_ERROR); rc = 1; break; case di_inst_net_config: net_config(); rc = 1; break; default: break; } return rc; }