Ignore:
Timestamp:
Nov 28, 2012 3:02:01 AM (11 years ago)
Author:
riza
Message:

Re #1098: Modify help screen, change backspace input character, fix static and dynamic choice type argument handling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/cli/pjlib-util/src/pjlib-util/cli.c

    r4299 r4302  
    561561            } else if (!pj_stricmp2(&choice_attr->name, "desc")) { 
    562562                pj_strassign(&choice_val->desc, &choice_attr->value); 
    563             }                            
     563            } 
     564            choice_attr = choice_attr->next; 
    564565        }                            
    565566        ++(arg->stat_choice_cnt); 
     
    609610            } else if (!pj_stricmp2(&attr->value, "int")) { 
    610611                arg->type = PJ_CLI_ARG_INT; 
    611             } else if (!pj_stricmp2(&attr->value, "CHOICE")) { 
     612            } else if (!pj_stricmp2(&attr->value, "choice")) { 
    612613                /* Get choice value */ 
    613614                pj_cli_add_choice_node(cli, xml_node, arg, get_choice); 
     
    733734        cmd->arg = (pj_cli_arg_spec *)pj_pool_zalloc(cli->pool, cmd->arg_cnt * 
    734735                                                     sizeof(pj_cli_arg_spec)); 
     736         
    735737        for (i = 0; i < cmd->arg_cnt; i++) { 
     738            unsigned j; 
     739 
    736740            pj_strdup(cli->pool, &cmd->arg[i].name, &args[i].name); 
    737741            pj_strdup(cli->pool, &cmd->arg[i].desc, &args[i].desc); 
     742            cmd->arg[i].id = args[i].id; 
    738743            cmd->arg[i].type = args[i].type; 
    739744            cmd->arg[i].optional = args[i].optional; 
     745            cmd->arg[i].get_dyn_choice = args[i].get_dyn_choice; 
     746            cmd->arg[i].stat_choice_cnt = args[i].stat_choice_cnt; 
     747            cmd->arg[i].stat_choice_val = args[i].stat_choice_val; 
    740748        } 
    741749    } 
     
    10641072        PJ_ASSERT_RETURN(arg, PJ_EINVAL); 
    10651073        if (arg->type == PJ_CLI_ARG_CHOICE) {        
    1066             unsigned j;      
    1067             pj_cli_dyn_choice_param dyn_choice_param;        
     1074            unsigned j;              
    10681075 
    10691076            for (j=0; j < arg->stat_choice_cnt; ++j) { 
     
    10811088                } 
    10821089            } 
    1083             /* Get the dynamic choice values */      
    1084             dyn_choice_param.sess = sess; 
    1085             dyn_choice_param.cmd = cmd; 
    1086             dyn_choice_param.arg_id = arg->id; 
    1087             dyn_choice_param.max_cnt = PJ_CLI_MAX_CHOICE_VAL; 
    1088             dyn_choice_param.pool = pool; 
    1089             dyn_choice_param.cnt = 0;        
    1090  
    1091             (*arg->get_dyn_choice)(&dyn_choice_param); 
    1092             for (j=0; j < dyn_choice_param.cnt; ++j) { 
    1093                 pj_cli_arg_choice_val *choice = &dyn_choice_param.choice[j]; 
    1094                 pj_strassign(&info->hint[info->hint_cnt].name, &choice->value); 
    1095                 pj_strassign(&info->hint[info->hint_cnt].desc, &choice->desc); 
    1096                 ++info->hint_cnt; 
     1090            if (arg->get_dyn_choice) { 
     1091                pj_cli_dyn_choice_param dyn_choice_param; 
     1092                static const pj_str_t choice_str = {"choice", 6}; 
     1093 
     1094                /* Get the dynamic choice values */          
     1095                dyn_choice_param.sess = sess; 
     1096                dyn_choice_param.cmd = cmd; 
     1097                dyn_choice_param.arg_id = arg->id; 
     1098                dyn_choice_param.max_cnt = PJ_CLI_MAX_CHOICE_VAL; 
     1099                dyn_choice_param.pool = pool; 
     1100                dyn_choice_param.cnt = 0;            
     1101 
     1102                (*arg->get_dyn_choice)(&dyn_choice_param); 
     1103                for (j=0; j < dyn_choice_param.cnt; ++j) { 
     1104                    pj_cli_arg_choice_val *choice = &dyn_choice_param.choice[j]; 
     1105                    if (!pj_strnicmp(&choice->value, cmd_val, cmd_val->slen)) { 
     1106                        pj_strassign(&info->hint[info->hint_cnt].name, &choice->value); 
     1107                        pj_strassign(&info->hint[info->hint_cnt].type, &choice_str); 
     1108                        pj_strassign(&info->hint[info->hint_cnt].desc, &choice->desc); 
     1109                        ++info->hint_cnt; 
     1110                    } 
     1111                } 
    10971112            } 
    10981113        } else { 
Note: See TracChangeset for help on using the changeset viewer.