IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jul 8, 2007, 1:01:39 PM (19 years ago)
Author:
eugene
Message:

allow npages to restrict by key

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/cmd.data/book_commands.c

    r14068 r14070  
    8383int book_npages (int argc, char **argv) {
    8484
    85   int N;
     85  int i, N, Npages;
    8686  Book *book;
    8787  char *varName;
     88  char *Key, *Value, *value;
    8889
    8990  varName = NULL;
     
    9394    remove_argument (N, &argc, argv);
    9495  }
    95 
    96   if (argc != 2) {
    97     gprint (GP_ERR, "USAGE: book npages (book)\n");
    98     FREE (varName);
    99     return FALSE;
    100   }
    101 
    102   book = FindBook (argv[1]);
    103   if (book == NULL) {
    104     gprint (GP_ERR, "book %s not found\n", argv[1]);
    105     FREE (varName);
    106     return FALSE;
    107   }
    108 
    109   if (varName) {
    110     set_int_variable (varName, book[0].Npages);
    111   } else {
    112     gprint (GP_ERR, "%d pages\n", book[0].Npages);
    113   }
    114   FREE (varName);
    115   return TRUE;
    116 }
    117 
    118 int book_getbook (int argc, char **argv) {
    119 
    120   int where, N;
    121   char *varName;
    122   Book *book;
    123 
    124   varName = NULL;
    125   if ((N = get_argument (argc, argv, "-var"))) {
    126     remove_argument (N, &argc, argv);
    127     varName = strcreate (argv[N]);
    128     remove_argument (N, &argc, argv);
    129   }
    130 
    131   if (argc != 2) {
    132     gprint (GP_ERR, "USAGE: book getbook (where) [-var var]\n");
    133     FREE (varName);
    134     return FALSE;
    135   }
    136 
    137   where = atoi (argv[1]);
    138   book = GetBook (where);
    139   if (book == NULL) {
    140     gprint (GP_ERR, "book %s not found\n", argv[1]);
    141     FREE (varName);
    142     return FALSE;
    143   }
    144 
    145   if (varName) {
    146     set_str_variable (varName, book[0].name);
    147   } else {
    148     gprint (GP_ERR, "%s\n", book[0].name);
    149   }
    150   FREE (varName);
    151   return TRUE;
    152 }
    153 
    154 int book_newpage (int argc, char **argv) {
    155 
    156   Book *book;
    157 
    158   if (argc != 3) {
    159     gprint (GP_ERR, "USAGE: book newpage (book) (page)\n");
    160     return FALSE;
    161   }
    162 
    163   book = FindBook (argv[1]);
    164   if (book == NULL) {
    165     gprint (GP_ERR, "book %s not found\n", argv[1]);
    166     return FALSE;
    167   }
    168  
    169   CreatePage (book, argv[2]);
    170   return TRUE;
    171 }
    172 
    173 int book_delpage (int argc, char **argv) {
    174 
    175   int i, N;
    176   Page *page;
    177   Book *book;
    178   char *Key, *Value, *value;
    17996
    18097  Key = NULL;
     
    185102    remove_argument (N, &argc, argv);
    186103    Value = strcreate (argv[N]);
     104    remove_argument (N, &argc, argv);
     105  }
     106
     107  if (argc != 2) {
     108    gprint (GP_ERR, "USAGE: book npages (book) [-var result] [-key name value]\n");
     109    gprint (GP_ERR, "  reports the number of pages (optionally limited to those matching the key)\n");
     110    FREE (varName);
     111    return FALSE;
     112  }
     113
     114  book = FindBook (argv[1]);
     115  if (book == NULL) {
     116    gprint (GP_ERR, "book %s not found\n", argv[1]);
     117    FREE (varName);
     118    return FALSE;
     119  }
     120
     121  Npages = book[0].Npages;
     122  if (Key) {
     123    /* count only matching key */
     124    Npages = 0;
     125    for (i = 0; i < book[0].Npages; i++) {
     126      value = BookGetWord (book[0].pages[i], Key);
     127      if (value == NULL) continue;
     128      if (!strcmp(value, Value)) Npages ++;
     129    }
     130  }
     131
     132  if (varName) {
     133    set_int_variable (varName, Npages);
     134  } else {
     135    gprint (GP_ERR, "%d pages\n", Npages);
     136  }
     137  FREE (Key);
     138  FREE (Value);
     139  FREE (varName);
     140  return TRUE;
     141}
     142
     143int book_getbook (int argc, char **argv) {
     144
     145  int where, N;
     146  char *varName;
     147  Book *book;
     148
     149  varName = NULL;
     150  if ((N = get_argument (argc, argv, "-var"))) {
     151    remove_argument (N, &argc, argv);
     152    varName = strcreate (argv[N]);
     153    remove_argument (N, &argc, argv);
     154  }
     155
     156  if (argc != 2) {
     157    gprint (GP_ERR, "USAGE: book getbook (where) [-var var]\n");
     158    FREE (varName);
     159    return FALSE;
     160  }
     161
     162  where = atoi (argv[1]);
     163  book = GetBook (where);
     164  if (book == NULL) {
     165    gprint (GP_ERR, "book %s not found\n", argv[1]);
     166    FREE (varName);
     167    return FALSE;
     168  }
     169
     170  if (varName) {
     171    set_str_variable (varName, book[0].name);
     172  } else {
     173    gprint (GP_ERR, "%s\n", book[0].name);
     174  }
     175  FREE (varName);
     176  return TRUE;
     177}
     178
     179int book_newpage (int argc, char **argv) {
     180
     181  Book *book;
     182
     183  if (argc != 3) {
     184    gprint (GP_ERR, "USAGE: book newpage (book) (page)\n");
     185    return FALSE;
     186  }
     187
     188  book = FindBook (argv[1]);
     189  if (book == NULL) {
     190    gprint (GP_ERR, "book %s not found\n", argv[1]);
     191    return FALSE;
     192  }
     193 
     194  CreatePage (book, argv[2]);
     195  return TRUE;
     196}
     197
     198int book_delpage (int argc, char **argv) {
     199
     200  int i, N;
     201  Page *page;
     202  Book *book;
     203  char *Key, *Value, *value;
     204
     205  Key = NULL;
     206  Value = NULL;
     207  if ((N = get_argument (argc, argv, "-key"))) {
     208    remove_argument (N, &argc, argv);
     209    Key = strcreate (argv[N]);
     210    remove_argument (N, &argc, argv);
     211    Value = strcreate (argv[N]);
     212    remove_argument (N, &argc, argv);
    187213  }
    188214
Note: See TracChangeset for help on using the changeset viewer.