void exec_command(char cmd, char *param) { switch(cmd){ case'Q':cmd_quit(); break; case'C':cmd_check(); break; case'P':cmd_print(atoi(param)); break; case'R':cmd_read(param); break; case'W':cmd_write(param); break; case'F':cmd_find(param); break; case'S':cmd_sort(atoi(param)); break; case'E':cmd_edit(); break; case'H':cmd_help(); break; default:fprintf(stderr,"error\n\n"); } printf(":"); }
static quik_err_t get_params(char **kernel, char **initrd, char **params, env_dev_t *cur_dev) { char *p; char *q; int n; char *buf; char *endp; key_t lastkey; char *label = NULL; int timeout = DEFAULT_TIMEOUT; if ((bi->flags & TRIED_AUTO) == 0) { bi->flags ^= TRIED_AUTO; *params = bi->bootargs; *kernel = *params; word_split(kernel, params); if (!*kernel) { *kernel = cfg_get_default(); /* * Timeout only makes sense * if we don't have an image name already * passed. */ if ((bi->flags & CONFIG_VALID) && (q = cfg_get_strg(0, "timeout")) != 0 && *q != 0) { timeout = strtol(q, NULL, 0); } } else { /* * We have something, boot immediately. */ timeout = 0; } } printk(PROMPT); lastkey = KEY_NONE; if (timeout != -1) { lastkey = wait_for_key(timeout, '\n'); } if (lastkey == '\n') { printk("%s", *kernel); if (*params) { printk(" %s", *params); } printk("\n"); } else { *kernel = NULL; buf = cmd_edit(maintabfunc, lastkey); if (buf == NULL) { return ERR_NOT_READY; } *kernel = buf; word_split(kernel, params); } if (bi->flags & CONFIG_VALID) { *initrd = cfg_get_strg(0, "initrd"); p = cfg_get_strg(*kernel, "image"); if (p && *p) { label = *kernel; *kernel = p; p = cfg_get_strg(label, "device"); if (p) { cur_dev->device = p; } p = cfg_get_strg(label, "partition"); if (p) { n = strtol(p, &endp, 10); if (endp != p && *endp == 0) { env_dev_set_part(cur_dev, n); } } p = cfg_get_strg(label, "initrd"); if (p) { *initrd = p; } if (cfg_get_strg(label, "old-kernel")) { bi->flags |= BOOT_PRE_2_4; } else { bi->flags &= ~BOOT_PRE_2_4; } *params = make_params(label, *params); if (*params == NULL) { return ERR_NO_MEM; } } } if (*kernel == NULL) { printk("<TAB> for list of bootable images, or !help\n"); return ERR_NOT_READY; } /* * If we manually entered kernel path, the initrd could * be following in the param list... */ if (label == NULL) { *params = chomp(*params); if (memcmp(*params, "-- ", 3) != 0) { *initrd = *params; word_split(initrd, params); } else { /* * No initrd, just kernel args. */ *params = *params + 3; } } return ERR_NONE; }