IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 4, 2016, 5:04:49 PM (10 years ago)
Author:
eugene
Message:

add features to get table columns; add help; add -join option to list (opposite of -split)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.basic/list.c

    r38972 r39328  
    9393      set_str_variable (line, argv[i+3]);
    9494    }
    95     sprintf (line, "%s:n", argv[1]);
     95    snprintf (line, 1024, "%s:n", argv[1]);
    9696    set_int_variable (line, i);
     97
     98    return (TRUE);
     99  }
     100
     101  // return an error if -add is given with no other args
     102  if ((argc > 2) && (!strcmp (argv[2], "-join"))) {
     103    if (argc != 4) {
     104      gprint (GP_ERR, "USAGE: list (root) -join (variable)\n");
     105      return (FALSE);
     106    }
     107   
     108    int isFound;
     109
     110    snprintf (line, 1024, "%s:n", argv[1]);
     111    int nList = get_int_variable (line, &isFound);
     112    if (!isFound) {
     113      gprint (GP_ERR, "list %s not found\n", argv[1]);
     114      return FALSE;
     115    }
     116
     117    char tmpline[1024], output[1024];
     118    memset (tmpline, 0, 1024);
     119    memset (output, 0, 1024);
     120
     121    for (i = 0; i < nList; i++) {
     122      snprintf (line, 1024, "%s:%d", argv[1], i);
     123      char *word = get_variable (line);
     124      if (!word) break;
     125      if (i > 0) {
     126        snprintf (output, 1024, "%s %s", tmpline, word);
     127      } else {
     128        snprintf (output, 1024, "%s", word);
     129      }
     130      strcpy (tmpline, output);
     131    }
     132    set_str_variable (argv[3], output);
    97133
    98134    return (TRUE);
     
    118154   
    119155    // old list must exist, or give an error
    120     sprintf (line, "%s:n", argv[3]);
     156    snprintf (line, 1024, "%s:n", argv[3]);
    121157    N = get_int_variable (line, &found);
    122158    if (!found) {
     
    127163     
    128164
    129     sprintf (line, "%s:n", argv[1]);
     165    snprintf (line, 1024, "%s:n", argv[1]);
    130166    set_int_variable (line, N);
    131167    for (i = 0; i < N; i++) {
    132       sprintf (line, "%s:%d", argv[3], i);
     168      snprintf (line, 1024, "%s:%d", argv[3], i);
    133169      value = get_variable (line);
    134       // sprintf (line, "%s:%d", argv[1], i);
     170      // snprintf (line, 1024, "%s:%d", argv[1], i);
    135171      set_list_varname (line, argv[1], i, EXCEL_STYLE);
    136172      set_str_variable (line, value);
     
    146182    }
    147183   
    148     sprintf (line, "%s:n", argv[1]);
     184    snprintf (line, 1024, "%s:n", argv[1]);
    149185    N = get_int_variable (line, &found);
    150186    for (i = 0; i < argc - 3; i++) {
    151       // sprintf (line, "%s:%d", argv[1], N + i);
     187      // snprintf (line, 1024, "%s:%d", argv[1], N + i);
    152188      set_list_varname (line, argv[1], N + i, EXCEL_STYLE);
    153189      set_str_variable (line, argv[i+3]);
    154190    }
    155     sprintf (line, "%s:n", argv[1]);
     191    snprintf (line, 1024, "%s:n", argv[1]);
    156192    set_int_variable (line, N + i);
    157193
     
    170206    char line2[1024];
    171207
    172     sprintf (line, "%s:n", argv[1]);
     208    snprintf (line, 1024, "%s:n", argv[1]);
    173209    N = get_int_variable (line, &found);
    174210    for (i = 0; i < N; i++) {
    175       // sprintf (line, "%s:%d", argv[1], i);
     211      // snprintf (line, 1024, "%s:%d", argv[1], i);
    176212      set_list_varname (line, argv[1], i, EXCEL_STYLE);
    177213      value = get_variable (line);
     
    180216        free (value);
    181217        for (j = i + 1; j < N; j++) {
    182           // sprintf (line2, "%s:%d", argv[1], j);
     218          // snprintf (line, 10242, "%s:%d", argv[1], j);
    183219          set_list_varname (line2, argv[1], j, EXCEL_STYLE);
    184220          next_value = get_variable (line2);
     
    187223        }
    188224        DeleteNamedScalar (line);
    189         sprintf (line2, "%s:n", argv[1]);
     225        snprintf (line, 10242, "%s:n", argv[1]);
    190226        set_int_variable (line2, N - 1);
    191227        return (TRUE);
     
    238274      depth --;
    239275      if (depth < 0) { /* we hit the last "END", loop is done */
    240         sprintf (line, "%s:n", argv[1]);
     276        snprintf (line, 1024, "%s:n", argv[1]);
    241277        set_int_variable (line, i);
    242278        free (input);
     
    246282
    247283    if (*input) {
    248       // sprintf (line, "%s:%d", argv[1], i);
     284      // snprintf (line, 1024, "%s:%d", argv[1], i);
    249285      set_list_varname (line, argv[1], i, EXCEL_STYLE);
    250286      set_str_variable (line, input);
     
    310346  free (val);
    311347   
    312   sprintf (line, "%s:n", listname);
     348  snprintf (line, 1024, "%s:n", listname);
    313349  set_int_variable (line, i);
    314350  return (TRUE);
     
    328364  // otherwise save all glob matches
    329365  if (globList.gl_pathc == 0) {
    330     sprintf (line, "%s:n", listname);
     366    snprintf (line, 1024, "%s:n", listname);
    331367    set_int_variable (line, 0);
    332368    return TRUE;
     
    338374    set_str_variable (line, globList.gl_pathv[i]);
    339375  }
    340   sprintf (line, "%s:n", listname);
     376  snprintf (line, 1024, "%s:n", listname);
    341377  set_int_variable (line, Nfile);
    342378  return (TRUE);
     
    371407    FREE (new);
    372408  }
    373   sprintf (line, "%s:n", argv[1]);
     409  snprintf (line, 1024, "%s:n", argv[1]);
    374410  set_int_variable (line, nWords);
    375411
Note: See TracChangeset for help on using the changeset viewer.