IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 17042


Ignore:
Timestamp:
Mar 18, 2008, 8:48:16 AM (18 years ago)
Author:
eugene
Message:

better error messaging

File:
1 edited

Legend:

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

    r15869 r17042  
    148148}
    149149
     150# define ESCAPE(MSG) \
     151  gprint (GP_ERR, "%s\n", MSG); \
     152  if (CCDKeyword != NULL) free (CCDKeyword); \
     153  gfits_free_table  (&table); \
     154  gfits_free_header (&header); \
     155  return (FALSE);
     156
    150157int read_table_vectors (int argc, char **argv, char *extname) {
    151158
     
    172179  }
    173180
    174   if (argc < 2) {
    175     gprint (GP_ERR, "USAGE: read -fits extension [-extnum] [-keyword key] name name ...\n");
    176     gprint (GP_ERR, "  ('extension' may be a name or number)\n");
    177     goto escape;
    178   }
    179 
    180   if (f == (FILE *) NULL) goto escape;
     181  if (argc < 2) ESCAPE ("USAGE: read -fits extension [-extnum] [-keyword key] name name ...");
     182
     183  if (f == NULL) ESCAPE ("file not found");
    181184  fseek (f, 0, SEEK_SET);
    182185  table.header = &header;
     
    186189    // first extension is PHU, cannot be a table.
    187190    // Nextend counts from 0 for first extension
    188     if (!gfits_load_header (f, &header)) goto escape;
     191    if (!gfits_load_header (f, &header)) ESCAPE ("error reading primary header for file");
    189192    Nbytes = gfits_data_size (&header);
    190193    fseek (f, Nbytes, SEEK_CUR);
     
    192195
    193196    for (i = 0; i < Nextend; i++) {
    194       if (!gfits_load_header (f, &header)) goto escape;
     197      if (!gfits_load_header (f, &header)) ESCAPE ("extension not found");
    195198      Nbytes = gfits_data_size (&header);
    196199      /* skip the prior data buffers */
     
    198201      gfits_free_header (&header);
    199202    }
    200     if (!gfits_load_header (f, &header)) goto escape;
    201     if (!gfits_fread_ftable_data (f, &table)) goto escape;
     203    if (!gfits_load_header (f, &header)) ESCAPE ("error reading header for extension");
     204    if (!gfits_fread_ftable_data (f, &table)) ESCAPE ("error reading table for extension");
    202205
    203206  } else {
     
    210213
    211214    while (1) {
    212       if (!gfits_load_header (f, &header)) goto escape;
     215      if (!gfits_load_header (f, &header)) ESCAPE ("extensio not found in file");
    213216      Nbytes = gfits_data_size (&header);
    214217
     
    223226        continue;
    224227      }
    225       if (!gfits_fread_ftable_data (f, &table)) goto escape;
     228      if (!gfits_fread_ftable_data (f, &table)) ESCAPE ("error reading table for extension");
    226229      break;
    227230    }
     
    232235  gfits_scan (&header, "XTENSION", "%s", 1, type);
    233236  if (strcmp (type, "BINTABLE") && strcmp (type, "TABLE")) {
    234     gprint (GP_ERR, "specified extension (%s) is not a table\n", extname);
    235     goto escape;
     237    ESCAPE ("specified extension is not a table\n");
    236238  }
    237239  Binary = !strcmp (type, "BINTABLE");
     
    251253    Nval = 0;
    252254    if (Binary) {
    253       if (!gfits_get_bintable_column_type (&header, argv[i], type, &Nval)) goto escape;
    254       if (!gfits_get_bintable_column (&header, &table, argv[i], &data)) goto escape;
     255      if (!gfits_get_bintable_column_type (&header, argv[i], type, &Nval)) ESCAPE ("requested field not found");
     256      if (!gfits_get_bintable_column (&header, &table, argv[i], &data)) ESCAPE ("error reading data from specified field");
    255257    } else {
    256       if (!gfits_get_table_column_type (&header, argv[i], type)) goto escape;
    257       if (!gfits_get_table_column (&header, &table, argv[i], &data)) goto escape;
    258     }
    259     if (Nval == 0) goto escape;
     258      if (!gfits_get_table_column_type (&header, argv[i], type)) ESCAPE ("requested field not found");
     259      if (!gfits_get_table_column (&header, &table, argv[i], &data)) ESCAPE ("error reading data from specified field");
     260    }
     261    if (Nval == 0) ESCAPE ("no data for field in table");
    260262
    261263    ALLOCATE (vec, Vector *, Nval);
     
    265267      else
    266268        sprintf (name, "%s:%d", argv[i], j);
    267       if ((vec[j] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) goto escape;
     269      if ((vec[j] = SelectVector (name, ANYVECTOR, TRUE)) == NULL) ESCAPE ("bad vector name");
    268270      REALLOCATE (vec[j][0].elements, float, MAX (Ny,1));
    269271      vec[j][0].Nelements = Ny;
     
    317319  gfits_free_header (&header);
    318320  return (TRUE);
    319 
    320 escape:
    321   if (CCDKeyword != NULL) free (CCDKeyword);
    322   gfits_free_table  (&table);
    323   gfits_free_header (&header);
    324   return (FALSE);
    325321}
Note: See TracChangeset for help on using the changeset viewer.