IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 40653


Ignore:
Timestamp:
Mar 29, 2019, 5:05:51 AM (7 years ago)
Author:
eugene
Message:

add list -file option

File:
1 edited

Legend:

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

    r39953 r40653  
    88int GlobToList (char *listname, char *Glob, int EXCEL_STYLE);
    99int CommandToList (char *listname, char *Command, int EXCEL_STYLE);
     10int FileToList (char *listname, char *Filename, int EXCEL_STYLE);
    1011
    1112int list (int argc, char **argv) {
     
    3132    remove_argument (N, &argc, argv);
    3233    Glob = strcreate (argv[N]);
     34    remove_argument (N, &argc, argv);
     35  }
     36
     37  char *Filename = NULL;
     38  if ((N = get_argument (argc, argv, "-file"))) {
     39    remove_argument (N, &argc, argv);
     40    Filename = strcreate (argv[N]);
    3341    remove_argument (N, &argc, argv);
    3442  }
     
    8088    }
    8189    int status = GlobToList (argv[1], Glob, EXCEL_STYLE); // <-- generate the list
     90    return status;
     91  }
     92
     93  if (Filename) {
     94    if (argc != 2) {
     95      gprint (GP_ERR, "USAGE: list (root) -file (filename)\n");
     96      return (FALSE);
     97    }
     98    int status = FileToList (argv[1], Filename, EXCEL_STYLE); // <-- generate the list
    8299    return status;
    83100  }
     
    384401}
    385402
     403int FileToList (char *listname, char *Filename, int EXCEL_STYLE) {
     404
     405  char line[MAX_LINE_LENGTH], varname[MAX_LINE_LENGTH];
     406
     407  FILE *f = fopen (Filename, "r");
     408  if (!f) {
     409    gprint (GP_ERR, "cannot open file %s for list\n", Filename);
     410    return FALSE;
     411  }
     412
     413  int Nline = 0;
     414  while (scan_line_maxlen (f, line, MAX_LINE_LENGTH) != EOF) {
     415    set_list_varname (varname, listname, Nline, EXCEL_STYLE);
     416    set_str_variable (varname, line);
     417    Nline ++;
     418  }
     419  snprintf (varname, MAX_LINE_LENGTH, "%s:n", listname);
     420  set_int_variable (varname, Nline);
     421  return TRUE;
     422}
     423
    386424int SplitByCharToList (int argc, char **argv, int EXCEL_STYLE) {
    387425
Note: See TracChangeset for help on using the changeset viewer.