Пример #1
0
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();
    }
}
Пример #2
0
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;
}