static int search_cmd_sub(int cmd_id, int *pmatch_sub_id, char *sub_name, int is_print) { int cmd_sub_no, pmatch_sub_nr = 0, fmatch_sub_save = GCMD_DESC_NO_MATCH; *pmatch_sub_id = GCMD_DESC_NO_MATCH; /*search for full matched */ for (cmd_sub_no = 0; GCMD_SUB_DESC_VALID(cmd_id, cmd_sub_no); cmd_sub_no++) { if (!GCMD_SUB_NAME(cmd_id, cmd_sub_no)) continue; if (!strcasecmp(sub_name, GCMD_SUB_NAME(cmd_id, cmd_sub_no))) { /*full matched */ printc(is_print, "%-10s\t%s\n", GCMD_SUB_ACT(cmd_id, cmd_sub_no), GCMD_SUB_MEMO(cmd_id, cmd_sub_no)); //*pmatch_sub_id = cmd_sub_no; if(fmatch_sub_save == GCMD_DESC_NO_MATCH) { *pmatch_sub_id = fmatch_sub_save = cmd_sub_no; } } else if (!strncasecmp(sub_name, GCMD_SUB_NAME(cmd_id, cmd_sub_no), strlen(sub_name))) { if(fmatch_sub_save != GCMD_DESC_NO_MATCH) continue; /*partly matched */ if (*pmatch_sub_id == GCMD_DESC_NO_MATCH || (GCMD_SUB_NAME(cmd_id, cmd_sub_no-1) && strcasecmp(GCMD_SUB_NAME(cmd_id, cmd_sub_no), GCMD_SUB_NAME(cmd_id, cmd_sub_no-1)))) { printc(is_print, "%-10s\t", GCMD_SUB_NAME(cmd_id, cmd_sub_no)); pmatch_sub_nr++; *pmatch_sub_id = cmd_sub_no; } } } if (pmatch_sub_nr > 1) printc(is_print, "\n"); return pmatch_sub_nr; }
static void print_sub_all (int cmd_id) { int cmd_sub_no = 0, cmd_sub_nr = 0; for (cmd_sub_no = 0; GCMD_SUB_DESC_VALID(cmd_id, cmd_sub_no); cmd_sub_no++) { if (!GCMD_SUB_NAME(cmd_id, cmd_sub_no)) continue; if(cmd_sub_no == 0 || strcasecmp(GCMD_SUB_NAME(cmd_id, cmd_sub_no), GCMD_SUB_NAME(cmd_id, cmd_sub_no-1))) { printf("%-10s\t", GCMD_SUB_NAME(cmd_id, cmd_sub_no)); if(cmd_sub_nr && !((cmd_sub_nr+1) %5)){ printf("\n"); } cmd_sub_nr++; } } printf("\n"); }
static int search_cmd_action(int cmd_id, int *pmatch_act_id, char *sub_name, char *action, int is_print) { int cmd_act_no = 0, pmatch_act_nr = 0; *pmatch_act_id = GCMD_DESC_NO_MATCH; /*search for full matched */ for (cmd_act_no = 0; GCMD_SUB_DESC_VALID(cmd_id, cmd_act_no); cmd_act_no++) { if (strcasecmp(sub_name, GCMD_SUB_NAME(cmd_id, cmd_act_no))) continue; if (!GCMD_SUB_ACT(cmd_id, cmd_act_no)) continue; if (!strcasecmp(action, GCMD_SUB_ACT(cmd_id, cmd_act_no))) { /*full matched */ if (*pmatch_act_id == GCMD_DESC_NO_MATCH) { printc(is_print, "%-10s\n", GCMD_SUB_USAGE(cmd_id, cmd_act_no)); } *pmatch_act_id = cmd_act_no; break; } else if (!strncasecmp(action, GCMD_SUB_ACT(cmd_id, cmd_act_no), strlen(action))) { /*partly matched */ if (*pmatch_act_id == GCMD_DESC_NO_MATCH ||( GCMD_SUB_ACT(cmd_id, cmd_act_no-1) && strcasecmp(GCMD_SUB_ACT(cmd_id, cmd_act_no), GCMD_SUB_ACT(cmd_id, cmd_act_no-1)))) { printc(is_print, "%-10s\t%s\n", GCMD_SUB_ACT(cmd_id, cmd_act_no), GCMD_SUB_MEMO(cmd_id, cmd_act_no)); pmatch_act_nr++; *pmatch_act_id = cmd_act_no; } } } return pmatch_act_nr; }