void Shell::run(void) { int argc = 0; int bytes = _read(str, sizeof(str)); if (bytes) { //_write(str, strlen(str)); argc = cmd_prepare(str, bytes); cmd_parse(argc, argv); memset(str, 0, sizeof(str)); uart_prompt(); } }
error_t parse_opt (int key, char *arg, struct argp_state *state) { struct arguments *args = state->input; switch(key) { case ARGP_KEY_ARG: if (strcmp(arg, "info") == 0) args->cmdtype = LNVM_INFO; else if (strcmp(arg, "dev") == 0) args->cmdtype = LNVM_DEV; else if (strcmp(arg, "new") == 0){ args->cmdtype = LNVM_NEW; cmd_prepare(state, args, "new", &argp_new); } else if (strcmp(arg, "rm") == 0){ args->cmdtype = LNVM_RM; cmd_prepare(state, args, "rm", &argp_rm); } else if (strcmp(arg, "tgt") == 0){ args->cmdtype = LNVM_TGT; cmd_prepare(state, args, "tgt", &argp_tgt); } else if (strcmp(arg, "getblock") == 0){ args->cmdtype = LNVM_GETBLK; cmd_prepare(state, args, "getblock", &argp_getblk); } else if (strcmp(arg, "putblock") == 0){ args->cmdtype = LNVM_PUTBLK; cmd_prepare(state, args, "putblock", &argp_putblk); } else if (strcmp(arg, "write") == 0){ args->cmdtype = LNVM_WRITE; cmd_prepare(state, args, "write", &argp_write); } else if (strcmp(arg, "read") == 0){ args->cmdtype = LNVM_READ; cmd_prepare(state, args, "read", &argp_read); } break; default: return ARGP_ERR_UNKNOWN; } return 0; }