IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 33215


Ignore:
Timestamp:
Feb 8, 2012, 8:04:55 AM (14 years ago)
Author:
eugene
Message:

add HOSTS to SkyTable.dat PHU, carry in SkyTable.hosts field; check for HOSTS in existing SkyTable files -- if it does not exist, zero out the new fields hostFlags, hostID, backupID; use SkyTableFilename to define the name of catdir/SkyTable.fits; avoid segfault when loading MEF files if no averages have been loaded

Location:
branches/eam_branches/ipp-20111122/Ohana/src/libdvo
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20111122/Ohana/src/libdvo/include/dvo.h

    r33129 r33215  
    197197  char **filename;
    198198  SkyRegion *regions;
     199  char hosts[80];
    199200} SkyTable;
    200201
     
    506507int        SkyTableSave            PROTO((SkyTable *table, char *filename));
    507508SkyTable  *SkyTableLoad            PROTO((char *filename, int VERBOSE));
     509char      *SkyTableFilename        PROTO((char *catdir));
    508510SkyTable  *SkyTableFromGSC         PROTO((char *filename, int depth, int VERBOSE));
    509511SkyTable  *SkyTableLoadOptimal     PROTO((char *catdir, char *SKYFILE, char *GSCFILE, int readwrite, int depth, int VERBOSE));
  • branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/dvo_catalog_mef.c

    r29938 r33215  
    1010  Matrix matrix;
    1111  FTable ftable;
    12   SecFilt *primary;
     12
     13  SecFilt *primary = NULL;
    1314
    1415  f = catalog[0].f;
  • branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/skyregion_gsc.c

    r20936 r33215  
    9191  L0.regions[0].childS  =  0;
    9292  L0.regions[0].childE  =  NDECBANDS;
     93  L0.regions[0].hostFlags = 0;
     94  L0.regions[0].hostID    = 0;
     95  L0.regions[0].backupID  = 0;
    9396  strcpy (L0.regions[0].name, "fullsky");
    9497  if (DEBUG) SkyRegionPrint (&L0.regions[0]);
     
    117120    L1.regions[i].child    = TRUE;
    118121    L1.regions[i].table    = -1;
     122    L1.regions[i].hostFlags = 0;
     123    L1.regions[i].hostID    = 0;
     124    L1.regions[i].backupID  = 0;
    119125    strcpy (L1.regions[i].name, DecNames[i]);
    120126    if (DEBUG) SkyRegionPrint (&L1.regions[i]);
     
    152158  ALLOCATE (skytable[0].regions, SkyRegion, 1);
    153159  skytable[0].Nregions = 0;
     160
     161  // define the host table filename
     162  strcpy (skytable->hosts, "HostTable.dat");
    154163
    155164  // L0, L1, L2, L3, L4 all have index ranges of 0 -> Nregions and parent values pointing
     
    417426    L2[0].regions[Nr].childS   =  0;
    418427    L2[0].regions[Nr].childE   =  0;
     428    L2[0].regions[Nr].hostFlags = 0;
     429    L2[0].regions[Nr].hostID    = 0;
     430    L2[0].regions[Nr].backupID  = 0;
    419431
    420432    /* define names for L2 regions */
     
    464476    L3[0].regions[Nr].childS   =  0;
    465477    L3[0].regions[Nr].childE   =  0;
     478    L3[0].regions[Nr].hostFlags = 0;
     479    L3[0].regions[Nr].hostID    = 0;
     480    L3[0].regions[Nr].backupID  = 0;
    466481
    467482    if (DEBUG >= 3) SkyRegionPrint (&L3[0].regions[Nr]);
     
    514529      L4[0].regions[Nr].childS   =  0;
    515530      L4[0].regions[Nr].childE   =  0;
     531      L4[0].regions[Nr].hostFlags = 0;
     532      L4[0].regions[Nr].hostID    = 0;
     533      L4[0].regions[Nr].backupID  = 0;
    516534
    517535      sprintf (name, "%s.%02d", L3[0].name, Nbox);
  • branches/eam_branches/ipp-20111122/Ohana/src/libdvo/src/skyregion_io.c

    r29001 r33215  
    3939
    4040  ALLOCATE (skytable, SkyTable, 1);
     41  memset (skytable->hosts, 0, 80);
    4142  skytable[0].regions = gfits_table_get_SkyRegion (&ftable, &skytable[0].Nregions, NULL);
    4243  if (!skytable[0].regions) {
     
    5051  }
    5152 
     53  // 2012.02.08 : I updated the schema for SkyTable.dat to add 3 fields by stealing the
     54  // last 3 bytes of the 'name' field (going from 21 bytes to 18 bytes).  This was safe
     55  // because no files had yet been defined with more than 16 bytes in the names, leave
     56  // room for 1 more byte includig the EOF char.
     57
     58  // When we load old tables, we need to zero out the values of those 3 new fields (they
     59  // may have garbage left over).  To distinguish old and new tables, I add the field
     60  // 'HOSTS' to the PHU header (which also tells the location of the host table, if used).
     61
     62  int haveHosts = gfits_scan (&header, "HOSTS", "%s", 1, skytable->hosts);
     63  if (!haveHosts) {
     64    strcpy (skytable->hosts, "HostTable.dat");
     65    for (i = 0; i < skytable[0].Nregions; i++) {
     66      if (strlen(skytable[0].regions[i].name) > 17) {
     67        fprintf (stderr, "WARNING : this skytable has some names longer than the adjusted size of 17 bytes.\n");
     68        fprintf (stderr, "  This is not compatible with the current SkyTable definition\n");
     69        exit (1);
     70      }
     71      skytable[0].regions[i].hostFlags = 0;
     72      skytable[0].regions[i].hostID    = 0;
     73      skytable[0].regions[i].backupID  = 0;
     74    }
     75  }
     76
    5277  gfits_free_header (&header);
    5378  gfits_free_matrix (&matrix);
     
    7196  gfits_create_header (&header);
    7297  gfits_create_matrix (&header, &matrix);
     98  gfits_print (&header, "HOSTS", "%s", 1, skytable->hosts);
    7399
    74100  gfits_table_set_SkyRegion (&ftable, skytable[0].regions, skytable[0].Nregions);
     
    91117SkyTable *SkyTableLoadOptimal (char *catdir, char *skyfile, char *gscfile, int readwrite, int depth, int verbose) {
    92118
    93   char filename[256];
     119  char *filename;
    94120  struct stat filestat;
    95121  SkyTable *sky;
    96122
    97   /* first option: CATDIR/SkyTable.fits */
    98   sprintf (filename, "%s/SkyTable.fits", catdir);
     123  /* first option: in CATDIR */
     124  filename = SkyTableFilename (catdir);
    99125  if (stat (filename, &filestat)) goto SKYFILE;
    100126  if (!check_file_access (filename, FALSE, readwrite, verbose)) goto SKYFILE;
     
    115141  if (sky == NULL) {
    116142    fprintf (stderr, "error loading sky table\n");
     143    free (filename);
    117144    return (NULL);
    118145  }
     
    121148
    122149  /* create CATDIR copy */
    123   sprintf (filename, "%s/SkyTable.fits", catdir);
    124150  check_file_access (filename, FALSE, readwrite, verbose);
    125   if (!SkyTableSave (sky, filename)) return NULL;
     151  if (!SkyTableSave (sky, filename)) {
     152    free (filename);
     153    return NULL;
     154  }
    126155
    127156  gfits_convert_SkyRegion (sky[0].regions, sizeof (SkyTable), sky[0].Nregions);
     157  free (filename);
    128158  return (sky);
    129159
     
    134164  if (gscfile == NULL) {
    135165    fprintf (stderr, "error loading sky table from existing db (%s)\n", catdir);
     166    free (filename);
    136167    return (NULL);
    137168  }
     
    140171  if (sky == NULL) {
    141172    fprintf (stderr, "error loading sky table\n");
     173    free (filename);
    142174    return (NULL);
    143175  }
    144176
    145177  /* create CATDIR copy */
    146   sprintf (filename, "%s/SkyTable.fits", catdir);
    147178  check_file_access (filename, FALSE, readwrite, verbose);
    148   if (!SkyTableSave (sky, filename)) return NULL;
     179  if (!SkyTableSave (sky, filename)) {
     180    free (filename);
     181    return NULL;
     182  }
    149183
    150184  gfits_convert_SkyRegion (sky[0].regions, sizeof (SkyRegion), sky[0].Nregions);
     185  free (filename);
    151186  return (sky);
    152187}
     
    180215}
    181216
     217// given a CATDIR, return an allocated string with the full skytable name
     218char *SkyTableFilename (char *catdir) {
     219
     220  if (!catdir) return NULL;
     221 
     222  char *skyfile;
     223  ALLOCATE (skyfile, char, strlen(catdir) + strlen("/SkyTable.fits") + 1);
     224  sprintf (skyfile, "%s/SkyTable.fits", catdir);
     225
     226  return skyfile;
     227}
Note: See TracChangeset for help on using the changeset viewer.