IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 25, 2015, 10:41:05 PM (11 years ago)
Author:
eugene
Message:

merge changes from branches/eam_branches/ipp-20150616

Location:
trunk/Ohana/src/libdvo
Files:
23 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libdvo/include/cmf-ps1-v5-r2-lensing.h

    r37993 r38553  
    9595
    9696CMF_PS1_V5_R2_Lensing *gfits_table_get_CMF_PS1_V5_R2_Lensing (FTable *table, off_t *Ndata, char *swapped);
     97CMF_PS1_V5_R2_Lensing *gfits_table_get_CMF_PS1_V5_R2x_Lensing (FTable *ftable, off_t *Ndata, char *swapped);
     98
    9799int      gfits_table_set_CMF_PS1_V5_R2_Lensing (FTable *ftable, CMF_PS1_V5_R2_Lensing *data, off_t Ndata);
    98100int      gfits_table_mkheader_CMF_PS1_V5_R2_Lensing (Header *header);
  • trunk/Ohana/src/libdvo/include/convert.h

    r31635 r38553  
    1313int           hh_hms                PROTO((double hh, int *hr, int *mn, double *sc));
    1414int           dd_dms                PROTO((double dd, int *dg, int *mn, double *sc));
    15 int           hms_format            PROTO((char *line, double value));
    16 int           dms_format            PROTO((char *line, double value));
     15int           hms_format            PROTO((char *line, int length, double value));
     16int           dms_format            PROTO((char *line, int length, double value));
    1717int           hh_hm                 PROTO((double hh, int *hr, double *mn));
    1818int           day_to_sec            PROTO((char *string, time_t *second));
  • trunk/Ohana/src/libdvo/include/dvo.h

    r38472 r38553  
    259259typedef struct {
    260260  off_t Nregions;
     261  off_t Nalloc;
    261262  char **filename;
    262263  SkyRegion *regions;
     
    920921PhotCodeData *GetPhotcodeTable (void);
    921922void SetPhotcodeTable (PhotCodeData *);
     923void FreePhotcodeData (PhotCodeData *myPhotcodes);
     924void FreePhotcodeTable (void);
    922925
    923926int *GetSecFiltMap(PhotCodeData *ouput, PhotCodeData* input);
  • trunk/Ohana/src/libdvo/src/HostTable.c

    r38441 r38553  
    6262  char *filename = NULL;
    6363
    64   ALLOCATE (filename, char, strlen(catdir) + strlen(rootname) + 2); // one slash and one EOL
    65   sprintf (filename, "%s/%s", catdir, rootname);
     64  int Nchar = strlen(catdir) + strlen(rootname) + 16;
     65  ALLOCATE (filename, char, Nchar); // one slash and one EOL
     66  snprintf (filename, Nchar, "%s/%s", catdir, rootname);
    6667
    6768  FILE *f = fopen (filename, "r");
  • trunk/Ohana/src/libdvo/src/LoadImages.c

    r38441 r38553  
    2323
    2424  catdir = dvo_get_catdir ();
    25   sprintf (filename, "%s/Images.dat", catdir);
     25  snprintf (filename, 256, "%s/Images.dat", catdir);
    2626
    2727  if (lastFilename) {
  • trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c

    r38441 r38553  
    5151    }                                                                   \
    5252    photcode = PhotCode_##FORMAT##_To_Internal (photcode_input, Ncode); \
    53     free (photcode_input);                                              \
    5453  }
    5554
     
    6564  CONVERT_FORMAT("DVO_PHOTCODE_PS1_V4",    PS1_V4);
    6665  CONVERT_FORMAT("DVO_PHOTCODE_PS1_V5",    PS1_V5);
     66
     67  gfits_db_free (&db);
    6768
    6869  table = GetPhotcodeTable ();
  • trunk/Ohana/src/libdvo/src/RegionHostTable.c

    r37807 r38553  
    6464  char *filename = NULL;
    6565
    66   ALLOCATE (filename, char, strlen(catdir) + strlen(rootname) + 2); // one slash and one EOL
    67   sprintf (filename, "%s/%s", catdir, rootname);
     66  int Nchar = strlen(catdir) + strlen(rootname) + 16;
     67
     68  ALLOCATE (filename, char, Nchar); // one slash and one EOL
     69  snprintf (filename, Nchar, "%s/%s", catdir, rootname);
    6870
    6971  FILE *f = fopen (filename, "r");
  • trunk/Ohana/src/libdvo/src/SavePhotcodesFITS.c

    r38441 r38553  
    3737  if (!gfits_db_save (&db)) return (FALSE);
    3838  if (!gfits_db_close (&db)) return (FALSE);
     39  if (!gfits_db_free (&db)) return (FALSE);
    3940
    4041  free (photcode_output);
  • trunk/Ohana/src/libdvo/src/cmf-ps1-v5-r2-lensing.c

    r37992 r38553  
    480480}
    481481
     482/** ****/
     483int fix_lensing (char *data, int Nrows) {
     484
     485  off_t i;
     486
     487  int Nbytes = sizeof (CMF_PS1_V5_R2_Lensing);
     488
     489  char buffer[64];
     490
     491  char *ptr = data;
     492  for (i = 0; i < Nrows; i++, ptr += Nbytes) {
     493    // bytes 184 - 224 (exclusive) are now at 288 - 328 (exclusive)
     494    memcpy (buffer, &ptr[288], 40);
     495    memmove (&ptr[224], &ptr[184], 104);
     496    memcpy (&ptr[184], buffer, 40);
     497  }
     498  return TRUE;
     499}
     500
     501/**************************************/
     502CMF_PS1_V5_R2_Lensing *gfits_table_get_CMF_PS1_V5_R2x_Lensing (FTable *ftable, off_t *Ndata, char *swapped) {
     503
     504  int Ncols;
     505  CMF_PS1_V5_R2_Lensing *data;
     506
     507  Ncols = ftable[0].header[0].Naxis[0];
     508  if (Ncols != ST_SIZE) {
     509    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, ST_SIZE);
     510    return NULL;
     511  }
     512
     513  *Ndata = ftable[0].header[0].Naxis[1];
     514
     515  fix_lensing (ftable[0].buffer, *Ndata);
     516  data = (CMF_PS1_V5_R2_Lensing *) ftable[0].buffer;
     517  if ((swapped == NULL) || (*swapped == FALSE)) {
     518    if (!gfits_convert_CMF_PS1_V5_R2_Lensing ((unsigned char *) data, sizeof (CMF_PS1_V5_R2_Lensing), *Ndata, TRUE)) {
     519      return NULL;
     520    }
     521    off_t i;
     522    for (i = 0; i < *Ndata; i++) {
     523      data[i].detID   += 0x80000000;
     524      data[i].flags   += 0x80000000;
     525      data[i].flags2  += 0x80000000;
     526      data[i].nFrames += 0x8000;
     527    }
     528    // gfits_table_scale_data (ftable);
     529    if (swapped != NULL) *swapped = TRUE;
     530  }
     531  return (data);
     532}
     533
  • trunk/Ohana/src/libdvo/src/convert.c

    r31635 r38553  
    4646}
    4747 
    48 int hms_format (char *line, double value) {
     48int hms_format (char *line, int length, double value) {
    4949
    5050  int hr, mn;
     
    5454  hr = (int) value;
    5555  if (isnan (value))
    56     sprintf (line, "xx:xx:xx.xx");
     56    snprintf (line, length, "xx:xx:xx.xx");
    5757  else {
    5858    if (value < 0) {
    59       sprintf (line, "-%02d:%02d:%05.2f", abs(hr), mn, sc);
     59      snprintf (line, length, "-%02d:%02d:%05.2f", abs(hr), mn, sc);
    6060    } else {
    61       sprintf (line, "+%02d:%02d:%05.2f", hr, mn, sc);
     61      snprintf (line, length, "+%02d:%02d:%05.2f", hr, mn, sc);
    6262    }
    6363  }     
     
    6565}
    6666
    67 int dms_format (char *line, double value) {
     67int dms_format (char *line, int length, double value) {
    6868
    6969  int dg, mn;
     
    7272  dd_dms (value, &dg, &mn, &sc);
    7373  if (value < 0) {
    74     sprintf (line, "-%02d:%02d:%05.2f", abs(dg), mn, sc);
     74    snprintf (line, length, "-%02d:%02d:%05.2f", abs(dg), mn, sc);
    7575  } else {
    76     sprintf (line, "+%02d:%02d:%05.2f", dg, mn, sc);
     76    snprintf (line, length, "+%02d:%02d:%05.2f", dg, mn, sc);
    7777  }
    7878  return (TRUE);
     
    134134  ALLOCATE (line, char, 64);
    135135  gmt   = gmtime (&second);
    136   sprintf (line, "%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     136  snprintf (line, 64, "%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    137137  return (line);
    138138}
     
    148148  switch (gmt[0].tm_wday) {
    149149    case 0:
    150       sprintf (line, "Sun@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     150      snprintf (line, 64, "Sun@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    151151      break;
    152152    case 1:
    153       sprintf (line, "Mon@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     153      snprintf (line, 64, "Mon@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    154154      break;
    155155    case 2:
    156       sprintf (line, "Tue@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     156      snprintf (line, 64, "Tue@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    157157      break;
    158158    case 3:
    159       sprintf (line, "Wed@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     159      snprintf (line, 64, "Wed@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    160160      break;
    161161    case 4:
    162       sprintf (line, "Thu@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     162      snprintf (line, 64, "Thu@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    163163      break;
    164164    case 5:
    165       sprintf (line, "Fri@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     165      snprintf (line, 64, "Fri@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    166166      break;
    167167    case 6:
    168       sprintf (line, "Sat@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
     168      snprintf (line, 64, "Sat@%02d:%02d:%02d", gmt[0].tm_hour, gmt[0].tm_min, gmt[0].tm_sec);
    169169      break;
    170170  }
     
    195195  hh_hm (deg, &hr, &mn);
    196196
    197   sprintf (line, "%03d:%04.1f", abs(hr), mn);
     197  snprintf (line, 16, "%03d:%04.1f", abs(hr), mn);
    198198  return (line);
    199199}
     
    209209  hh_hm (deg/15.0, &hr, &mn);
    210210
    211   sprintf (line, "%02d:%04.1f", abs(hr), mn);
     211  snprintf (line, 16, "%02d:%04.1f", abs(hr), mn);
    212212  return (line);
    213213}
     
    224224
    225225  if (deg < 0) {
    226     sprintf (line, "-%02d:%04.1f", abs(hr), mn);
     226    snprintf (line, 16, "-%02d:%04.1f", abs(hr), mn);
    227227  } else {
    228     sprintf (line, "+%02d:%04.1f", hr, mn);
     228    snprintf (line, 16, "+%02d:%04.1f", hr, mn);
    229229  }     
    230230  return (line);
  • trunk/Ohana/src/libdvo/src/coordops.c

    r38462 r38553  
    740740        for (i = 0; i < 14; i++) {
    741741          char name[64];
    742           sprintf (name, "PV2_%d", i);
     742          snprintf (name, 64, "PV2_%d", i);
    743743          if (i < 7) {
    744744            found = gfits_scan (header, name, "%f", 1, &coords[0].polyterms[0][i]);
     
    834834    if (!strncmp (coords[0].ctype, "SLAT", 4)) strcpy (csys, "SLON");
    835835    if (!strcmp (csys, "NONE")) return (FALSE);
    836     sprintf (ctype, "%s-%s", csys, &coords[0].ctype[5]);
     836    snprintf (ctype, 16, "%s-%s", csys, &coords[0].ctype[5]);
    837837    gfits_modify (header, "CTYPE1",   "%s",  1, ctype);
    838838  }   
  • trunk/Ohana/src/libdvo/src/dvo_catalog.c

    r38462 r38553  
    8585
    8686// we can return a static string here unless we run multiple outputs threads at once
    87 static char compress_string[16];
    8887char *dvo_catalog_compress_string (DVOCatCompress catcompress) {
    89 
     88  char *compress_string = NULL;
    9089  switch (catcompress) {
    9190    case DVO_COMPRESS_NONE:
    92       strcpy (compress_string, "NONE");
     91      compress_string = strcreate("NONE");
    9392      break;
    9493    case DVO_COMPRESS_AUTO:
    95       strcpy (compress_string, "AUTO");
     94      compress_string = strcreate("AUTO");
    9695      break;
    9796    case DVO_COMPRESS_GZIP_1:
    98       strcpy (compress_string, "GZIP_1");
     97      compress_string = strcreate("GZIP_1");
    9998      break;
    10099    case DVO_COMPRESS_GZIP_2:
    101       strcpy (compress_string, "GZIP_2");
     100      compress_string = strcreate("GZIP_2");
    102101      break;
    103102    case DVO_COMPRESS_NONE_1:
    104       strcpy (compress_string, "NONE_1");
     103      compress_string = strcreate("NONE_1");
    105104      break;
    106105    case DVO_COMPRESS_NONE_2:
    107       strcpy (compress_string, "NONE_2");
     106      compress_string = strcreate("NONE_2");
    108107      break;
    109108    case DVO_COMPRESS_RICE_1:
    110       strcpy (compress_string, "RICE_1");
     109      compress_string = strcreate("RICE_1");
    111110      break;
    112111    default:
     
    532531  galphot->minorAxisErr = NAN;
    533532  galphot->theta        = NAN;
    534   galphot->theta_err    = NAN;
     533  galphot->thetaErr     = NAN;
    535534  galphot->index        = NAN;
    536535  galphot->chisq        = NAN;
     
    541540  galphot->catID   = -1;
    542541  galphot->imageID = -1;
     542  galphot->averef  = 0;
    543543
    544544  galphot->photcode = 0;
     
    11571157    return FALSE;
    11581158  }
    1159      
     1159 
     1160  int outStatus = TRUE;
    11601161  status = unlink (tmpfilename);
    11611162  if (status) {
     1163    perror ("unlink: ");
    11621164    fprintf (stderr, "failed to unlink catalog %s~\n", catalog->filename);
    1163     return FALSE;
     1165    outStatus = FALSE;
    11641166  }
    11651167     
     
    11671169    if (catalog[0].measure_catalog != NULL) {
    11681170      if (!dvo_catalog_unlink_backup (catalog[0].measure_catalog, FALSE)) {
    1169         return FALSE;
     1171        outStatus = FALSE;
    11701172      }
    11711173    }
    11721174    if (catalog[0].missing_catalog != NULL) {
    11731175      if (!dvo_catalog_unlink_backup (catalog[0].missing_catalog, FALSE)) {
    1174         return FALSE;
     1176        outStatus = FALSE;
    11751177      }
    11761178    }
    11771179    if (catalog[0].secfilt_catalog != NULL) {
    11781180      if (!dvo_catalog_unlink_backup (catalog[0].secfilt_catalog, FALSE)) {
    1179         return FALSE;
     1181        outStatus = FALSE;
    11801182      }
    11811183    }
    11821184    if ((catalog[0].lensing_catalog != NULL) && (catalog[0].Nlensing_disk > 0)) {
    11831185      if (!dvo_catalog_unlink_backup (catalog[0].lensing_catalog, FALSE)) {
    1184         return FALSE;
     1186        outStatus = FALSE;
    11851187      }
    11861188    }
    11871189    if ((catalog[0].lensobj_catalog != NULL) && (catalog[0].Nlensobj_disk > 0)) {
    11881190      if (!dvo_catalog_unlink_backup (catalog[0].lensobj_catalog, FALSE)) {
    1189         return FALSE;
     1191        outStatus = FALSE;
    11901192      }
    11911193    }
    11921194    if ((catalog[0].starpar_catalog != NULL) && (catalog[0].Nstarpar_disk > 0)) {
    11931195      if (!dvo_catalog_unlink_backup (catalog[0].starpar_catalog, FALSE)) {
    1194         return FALSE;
     1196        outStatus = FALSE;
    11951197      }
    11961198    }
    11971199    if ((catalog[0].galphot_catalog != NULL) && (catalog[0].Ngalphot_disk > 0)) {
    11981200      if (!dvo_catalog_unlink_backup (catalog[0].galphot_catalog, FALSE)) {
    1199         return FALSE;
    1200       }
    1201     }
    1202   }
    1203   return TRUE;
    1204 }
    1205 
    1206 
     1201        outStatus = FALSE;
     1202      }
     1203    }
     1204  }
     1205  return outStatus;
     1206}
     1207
     1208
  • trunk/Ohana/src/libdvo/src/dvo_catalog_create.c

    r38441 r38553  
    105105  char *path = pathname (catalog[0].filename);
    106106  char *root = filerootname (catalog[0].filename);
    107   int length = strlen(path) + strlen(root) + 6;
     107
     108  int length = strlen(path) + strlen(root) + 16;
    108109   
    109110  Catalog *subcat;
     
    120121  ALLOCATE (subcat->filename, char, length);
    121122
    122   sprintf (subcat->filename, "%s/%s.%s", path, root, ext);
     123  snprintf (subcat->filename, length, "%s/%s.%s", path, root, ext);
    123124
    124125  char *file = filebasename (subcat->filename);
  • trunk/Ohana/src/libdvo/src/dvo_catalog_split.c

    r38441 r38553  
    9090int dvo_catalog_save_subcat (Catalog *catalog, FTable *ftable, off_t start, off_t Nrows, off_t Ndisk, off_t Ntotal) {
    9191
    92   Matrix matrix;
    93  
    94   if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE);
     92  if (OHANA_MEMCHECK) ohana_memcheck (TRUE);
    9593 
    9694  /* rewind file pointers and truncate (file is still open) */
     
    108106  off_t fullsize = catalog->header.datasize;
    109107
     108# if (1)
    110109  // write the PHU matrix; this is probably a NOP, do I have to keep it in?
     110  Matrix matrix;
    111111  gfits_create_matrix (&catalog->header, &matrix);
    112112  if (!gfits_fwrite_matrix  (catalog->f, &matrix)) {
     
    117117  fullsize += matrix.datasize;
    118118  gfits_free_matrix (&matrix);
     119# endif
    119120
    120121  FTable *outtable = ftable;
     
    128129  int isCompressed = output_is_compressed (start, Nrows, Ntotal, catalog->catcompress);
    129130
    130   if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE);
     131  if (OHANA_MEMCHECK) ohana_memcheck (TRUE);
    131132
    132133  if (isCompressed) {
     
    136137    if (!gfits_compress_table (ftable, &cmptable, 1000, compressMode)) {
    137138      fprintf (stderr, "compression failure\n");
     139      free (compressMode);
    138140      return (FALSE);
    139141    }
    140142    if (!byteswap_varlength_ftable (&cmpheader, &cmptable)) {
    141143      fprintf (stderr, "failed to swap varlength column\n");
     144      free (compressMode);
    142145      return FALSE;
    143146    }
    144147    if (!gfits_modify (cmptable.header, "DVO_CMP", "%s", 1, compressMode)) {
    145148      fprintf (stderr, "can't save compression mode\n");
    146       return (FALSE);
    147     }
     149      free (compressMode);
     150      return (FALSE);
     151    }
     152    free (compressMode);
    148153    outtable = &cmptable;
    149154  }
    150155
    151   if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE);
     156  if (OHANA_MEMCHECK) ohana_memcheck (TRUE);
    152157
    153158  // write the table data
     
    169174  fullsize += outtable->datasize + outtable->header->datasize;
    170175
    171   if (OHANA_MEMCHECK) ohana_memcheck_func (TRUE);
     176  // XXX test of repeated failure
     177  if (0) {
     178    Matrix myMatrix;
     179
     180    // write the PHU matrix; this is probably a NOP, do I have to keep it in?
     181    gfits_create_matrix (&catalog->header, &myMatrix);
     182
     183    int niter;
     184    for (niter = 0; niter < 5; niter ++) {
     185      char name[1024];
     186      snprintf (name, 1024, "%s.v.%d", catalog->filename, niter);
     187      FILE *f = fopen (name, "w");
     188
     189      myAssert (gfits_fwrite_header  (f, &catalog->header), "failed to write header");
     190      myAssert (gfits_fwrite_matrix  (f, &myMatrix), "failed to write matrix");
     191      myAssert (gfits_fwrite_Theader (f, outtable->header), "can't write table header");
     192      myAssert (gfits_fwrite_table (f, outtable), "can't write table data");
     193      myAssert (!fflush (f), "failed to flush");
     194      myAssert (!fclose (f), "failed to close");
     195      int fd = fileno(f);
     196      myAssert (fsync(fd), "failed to sync");
     197      fprintf (stderr, "wrote to %s\n", name);
     198    }
     199    gfits_free_matrix (&myMatrix);
     200  }
     201
     202  if (OHANA_MEMCHECK) ohana_memcheck (TRUE);
    172203
    173204  // since we init'ed the structures above, these operations are safe whether or not we compressed the table
     
    191222  off_t Nskip;
    192223  int status;
    193   char *path, string[80];
     224  char *path, string[256];
    194225  Catalog *subcat;
    195226
     
    215246    return (DVO_CAT_OPEN_FAIL);
    216247  }
    217   ALLOCATE (subcat[0].filename, char, strlen(path) + strlen(string) + 2);
    218   sprintf (subcat[0].filename, "%s/%s", path, string);
     248  int Nchar = strlen(path) + strlen(string) + 10;
     249  ALLOCATE (subcat[0].filename, char, Nchar);
     250  snprintf (subcat[0].filename, Nchar, "%s/%s", path, string);
    219251  free (path);
    220252
     
    282314    }
    283315
    284     char compressMode[80];
     316    char compressMode[256];
    285317    if (!gfits_scan (ftable->header, "DVO_CMP", "%s", 1, compressMode)) {
    286318      strcpy (compressMode, "AUTO");
     
    759791}
    760792
     793# if (0)
     794void compare_file_ptr (FILE *copy_ptr, FILE *real_ptr, char *name) {
     795  return;
     796
     797  int i;
     798 
     799  char *real = (char *) real_ptr;
     800  char *copy = (char *) copy_ptr;
     801
     802  for (i = 0; i < sizeof(FILE); i++, real++, copy++) {
     803    if (*real != *copy) {
     804      fprintf (stderr, "file pointers %s differ @ %d\n", name, (int) ((char *) real - (char *) real_ptr));
     805    }
     806  }
     807}
     808# endif
     809
    761810/* save_catalog_split writes all data currently in memory to disk */
    762811int dvo_catalog_save_split (Catalog *catalog, char VERBOSE) {
     
    845894      goto failure;
    846895    }
     896
    847897    gfits_free_header (&header);
    848898    gfits_free_table (&ftable);
     
    887937      goto failure;
    888938    }
     939
    889940    gfits_free_header (&header);
    890941    gfits_free_table (&ftable);
  • trunk/Ohana/src/libdvo/src/dvo_convert.c

    r38441 r38553  
    10351035  Nimage = theader[0].Naxis[1];
    10361036
    1037 # define FORMAT_CASE(FORMAT, TYPE) \
    1038     case DVO_FORMAT_##FORMAT: { \
    1039       Image_##TYPE *tmpImage; \
     1037# define FORMAT_CASE(FORMAT, TYPE)              \
     1038  case DVO_FORMAT_##FORMAT: {                   \
     1039    Image_##TYPE *tmpImage;                                             \
    10401040      tmpImage = ImageInternalTo_##TYPE ((Image *) ftable[0].buffer, Nimage); \
    1041       free (ftable[0].buffer); \
    1042       gfits_table_set_Image_##TYPE (ftable, tmpImage, Nimage, TRUE); \
    1043       free (tmpImage); \
    1044       break; }
     1041        free (ftable[0].buffer);                                        \
     1042        gfits_free_header (ftable->header);                             \
     1043        gfits_table_set_Image_##TYPE (ftable, tmpImage, Nimage, TRUE);  \
     1044          free (tmpImage);                                              \
     1045          break; }
    10451046
    10461047  /* convert from the internal format */
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c

    r38462 r38553  
    990990
    991991    out[i].Xfit          = in[i].Xfit;
    992     out[i]. Yfit         = in[i]. Yfit;
    993     out[i]. mag          = in[i]. mag;
    994     out[i]. magErr       = in[i]. magErr;
    995     out[i]. majorAxis    = in[i]. majorAxis;
    996     out[i]. minorAxis    = in[i]. minorAxis;
    997     out[i]. majorAxisErr = in[i]. majorAxisErr;
    998     out[i]. minorAxisErr = in[i]. minorAxisErr;
    999     out[i]. theta        = in[i]. theta;
    1000     out[i]. theta_err    = in[i]. theta_err;
    1001     out[i]. index        = in[i]. index;
    1002     out[i]. chisq        = in[i]. chisq;
    1003     out[i]. Npix         = in[i]. Npix;
    1004     out[i]. objID        = in[i]. objID;
    1005     out[i]. catID        = in[i]. catID;
    1006     out[i]. detID        = in[i]. detID;
    1007     out[i]. imageID      = in[i]. imageID;
    1008     out[i]. photcode     = in[i]. photcode;
    1009     out[i]. modelType    = in[i]. modelType;
     992    out[i].Yfit          = in[i].Yfit;
     993    out[i].mag           = in[i].mag;
     994    out[i].magErr        = in[i].magErr;
     995    out[i].majorAxis     = in[i].majorAxis;
     996    out[i].minorAxis     = in[i].minorAxis;
     997    out[i].majorAxisErr  = in[i].majorAxisErr;
     998    out[i].minorAxisErr  = in[i].minorAxisErr;
     999    out[i].theta         = in[i].theta;
     1000    out[i].thetaErr      = in[i].thetaErr;
     1001    out[i].index         = in[i].index;
     1002    out[i].chisq         = in[i].chisq;
     1003    out[i].Npix          = in[i].Npix;
     1004    out[i].objID         = in[i].objID;
     1005    out[i].catID         = in[i].catID;
     1006    out[i].detID         = in[i].detID;
     1007    out[i].imageID       = in[i].imageID;
     1008    out[i].averef        = in[i].averef;
     1009    out[i].photcode      = in[i].photcode;
     1010    out[i].modelType     = in[i].modelType;
    10101011  }
    10111012  return (out);
     
    10291030    out[i].minorAxisErr  = in[i].minorAxisErr;
    10301031    out[i].theta         = in[i].theta;
    1031     out[i].theta_err     = in[i].theta_err;
     1032    out[i].thetaErr      = in[i].thetaErr;
    10321033    out[i].index         = in[i].index;
    10331034    out[i].chisq         = in[i].chisq;
     
    10371038    out[i].detID         = in[i].detID;
    10381039    out[i].imageID       = in[i].imageID;
     1040    out[i].averef        = in[i].averef;
    10391041    out[i].photcode      = in[i].photcode;
    10401042    out[i].modelType     = in[i].modelType;
  • trunk/Ohana/src/libdvo/src/dvo_image.c

    r38441 r38553  
    231231int dvo_image_createID (Header *header) {
    232232 
    233   char dbID[33];
     233  char dbID[64];
    234234
    235235  if (!header->buffer) return FALSE;
     
    259259  int i;
    260260  for (i = 0; i < 32; i++) {
    261     sprintf (&dbID[i], "%1x", (int)(16.0*drand48()));
     261    myAssert (snprintf (&dbID[i], 2, "%1x", (int)(16.0*drand48())) < 2, "overflow");
    262262  }
    263263
  • trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r38153 r38553  
    4343}
    4444
    45 // set the photcode table. This is used to switch between serveral previously
     45// free a specified photcode set
     46void FreePhotcodeData (PhotCodeData *myPhotcodes) {
     47  if (!myPhotcodes) return;
     48  FREE(myPhotcodes->code);
     49  FREE(myPhotcodes);
     50}
     51
     52// free the internal table
     53void FreePhotcodeTable (void) {
     54  FreePhotcodeData (photcodes);
     55  FREE(genericCodeMag);
     56  FREE(genericCodeFlux);
     57}
     58
     59// set the photcode table. This is used to switch between several previously
    4660// allocated tables
    4761void SetPhotcodeTable (PhotCodeData *new) {
  • trunk/Ohana/src/libdvo/src/dvo_util.c

    r38471 r38553  
    6363    }
    6464
    65     sprintf (dvoConfig->photcodeFile, "%s/Photcodes.dat", dvoConfig->catdir);
     65    snprintf (dvoConfig->photcodeFile, 256, "%s/Photcodes.dat", dvoConfig->catdir);
    6666    if (!LoadPhotcodes (dvoConfig->photcodeFile, MasterPhotcodeFile, FALSE)) {
    6767        fprintf (stderr, "error loading photcode table %s or master file %s\n",
     
    101101    char filename[256];
    102102 
    103     sprintf (filename, "%s/Images.dat", dvoConfig->catdir);
     103    snprintf (filename, 256, "%s/Images.dat", dvoConfig->catdir);
    104104
    105105    gfits_db_init (&dvoConfig->imageDB);
  • trunk/Ohana/src/libdvo/src/skydb.c

    r19823 r38553  
    224224  /* north dec bands */
    225225  for (dec = 0; dec < 90; dec += 7.5) {
    226     sprintf (db[N].name, "n%04d.cpt", (int) 100*dec);
     226    myAssert (snprintf (db[N].name, 18, "n%04d.cpt", (int) 100*dec) < 18, "overflow");
    227227    db[N].Rmin =   0; db[N].Rmax = 360;
    228228    db[N].Dmin = dec; db[N].Dmax = dec + 7.5;
     
    233233  /* south dec bands */
    234234  for (dec = 0; dec > -90; dec -= 7.5) {
    235     sprintf (db[N].name, "s%04d.cpt", (int) 100*dec);
     235    myAssert (snprintf (db[N].name, 18, "s%04d.cpt", (int) 100*dec) < 18, "overflow");
    236236    db[N].Rmin =   0;       db[N].Rmax = 360;
    237237    db[N].Dmin = dec - 7.5; db[N].Dmax = dec;
     
    276276      new[Nnew].child = FALSE;
    277277      strncpy (root, db[i].name, 5); root[5] = 0;
    278       sprintf (new[Nnew].name, "%s/r%04d.cpt", root, Rnumber);
     278      myAssert (snprintf (new[Nnew].name, 18, "%s/r%04d.cpt", root, Rnumber) < 18, "overflow");
    279279      Rnumber ++;     
    280280      Nnew ++;
     
    365365        db[N].child = FALSE;
    366366        strncpy (root, db[i].name, 10); root[10] = 0;
    367         sprintf (db[N].name, "%s.%02d.cpt", root, Rnumber);
     367        myAssert (snprintf (db[N].name, 18, "%s.%02d.cpt", root, Rnumber) < 18, "overflow");
    368368        Rnumber ++;
    369369        N ++;
  • trunk/Ohana/src/libdvo/src/skyregion_gsc.c

    r37807 r38553  
    4646  FTable ftable;
    4747  SkyTable *skytable;
    48   SkyTable *band;
    4948  SkyTable L0, L1, L2, L3, L4;
    5049  SkyRegionZone *zones;
     
    7978/* L0 : full sky */
    8079  L0.Nregions = 1;
    81   ALLOCATE (L0.regions, SkyRegion, L0.Nregions);
     80  L0.Nalloc = 1;
     81  ALLOCATE (L0.regions, SkyRegion, L0.Nalloc);
    8282  L0.regions[0].Rmin    =   0;
    8383  L0.regions[0].Rmax    = 360;
     
    9999  /* allocate space for all levels */
    100100  L1.Nregions = L2.Nregions = L3.Nregions = L4.Nregions = 0;
    101   ALLOCATE (L1.regions, SkyRegion, 1);
    102   ALLOCATE (L2.regions, SkyRegion, 1);
    103   ALLOCATE (L3.regions, SkyRegion, 1);
    104   ALLOCATE (L4.regions, SkyRegion, 1);
     101  L1.Nalloc = NDECBANDS;         ALLOCATE (L1.regions, SkyRegion, L1.Nalloc);
     102  L2.Nalloc = NDECBANDS*0x10;    ALLOCATE (L2.regions, SkyRegion, L2.Nalloc);
     103  L3.Nalloc = NDECBANDS*0x100;   ALLOCATE (L3.regions, SkyRegion, L3.Nalloc);
     104  L4.Nalloc = NDECBANDS*0x1000;  ALLOCATE (L4.regions, SkyRegion, L4.Nalloc);
    105105
    106106  // skipLines = 0;
     
    130130
    131131    /* load all GSC Regions in this band */
    132     band = SkyRegionForDecBand (&ftable.buffer[skipLines*48], DecLines[i], DecNames[i], L1.regions[i].Dmin, L1.regions[i].Dmax);
     132    SkyTable *band = SkyRegionForDecBand (&ftable.buffer[skipLines*48], DecLines[i], DecNames[i], L1.regions[i].Dmin, L1.regions[i].Dmax);
    133133    skipLines += DecLines[i];
    134134
     
    151151
    152152    L1.Nregions ++;
    153     REALLOCATE (L1.regions, SkyRegion, L1.Nregions + 1);
     153    myAssert (L1.Nregions <= NDECBANDS, "too many L1 regions");
    154154  }
    155155
     
    225225
    226226    temp[5] = 0;
    227     sprintf (name, "%s/%s", DecName, &temp[1]);
     227    snprintf (name, 80, "%s/%s", DecName, &temp[1]);
    228228    strcpy (regions[i].name, name);
    229229  }
     
    231231  band[0].regions = regions;
    232232  band[0].Nregions = Nregions;
     233  band[0].Nalloc   = Nregions;
    233234  return (band);
    234235}
     
    277278  Nregions = band[0].Nregions;
    278279
    279   NZ = 10;
     280  NZ = 100;
    280281  ALLOCATE (zones, SkyRegionZone, NZ);
    281282 
     
    312313      /* go to the next zone */
    313314      Nz++;
    314       CHECK_REALLOCATE (zones, SkyRegionZone, NZ, Nz, 10);
     315      CHECK_REALLOCATE (zones, SkyRegionZone, NZ, Nz, 100);
    315316
    316317      /* start info for the new zone */
     
    365366        band[0].regions[Nregions + i].Dmax = -86.250;
    366367      }
    367       sprintf (band[0].regions[Nregions + i].name, "%s.%d", basename, i);
     368      myAssert (snprintf (band[0].regions[Nregions + i].name, 18, "%s.%d", basename, i) < 18, "overflow");
    368369    }
    369370    band[0].regions[Nregions + i].Rmin = 0.0;
     
    376377      band[0].regions[Nregions + i].Dmax = -88.125;
    377378    }
    378     sprintf (band[0].regions[Nregions + i].name, "%s.%d", basename, i);
     379    myAssert (snprintf (band[0].regions[Nregions + i].name, 18, "%s.%d", basename, i) < 18, "overflow");
    379380
    380381    zones[0].Nset = 6;
     
    401402void SkyTableL2fromZone (SkyTable *L2, SkyTable *L3, SkyTable *L4, SkyTable *band, SkyRegionZone *zone, int parent) {
    402403
    403   int i, Nr, Ns, Ne;
     404  int i, Ns, Ne;
    404405  char *p, name[80];
    405406
    406   Nr = L2[0].Nregions;
    407   REALLOCATE (L2[0].regions, SkyRegion, Nr + 1);
     407  int Nr = L2[0].Nregions;
     408  CHECK_REALLOCATE (L2[0].regions, SkyRegion, L2[0].Nalloc, L2[0].Nregions, 100);
    408409 
    409410  /* divide this zone into L2 regions with Nset L3 regions each (fewer on ends) */
     
    435436    }
    436437    *p = 0;
    437     sprintf (name, "%s/z%03d", band[0].regions[Ns].name, Nr);
     438    myAssert (snprintf (name, 80, "%s/z%03d", band[0].regions[Ns].name, Nr) < 80, "overflow");
    438439    *p = '/';
    439440    strcpy (L2[0].regions[Nr].name, name);
     
    444445
    445446    Nr++;
    446     REALLOCATE (L2[0].regions, SkyRegion, Nr + 1);
     447    CHECK_REALLOCATE (L2[0].regions, SkyRegion, L2[0].Nalloc, Nr, 100);
    447448  }
    448449  L2[0].Nregions = Nr;
     
    456457  Nr = L3[0].Nregions;
    457458  L3[0].Nregions += Ne - Ns;
    458   REALLOCATE (L3[0].regions, SkyRegion, L3[0].Nregions);
     459  CHECK_REALLOCATE (L3[0].regions, SkyRegion, L3[0].Nalloc, L3[0].Nregions, 0.5*L3[0].Nalloc);
    459460
    460461  L2[0].child  = TRUE;
     
    498499  Nr = L4[0].Nregions;
    499500  L4[0].Nregions += NDIV*NDIV;
    500   REALLOCATE (L4[0].regions, SkyRegion, L4[0].Nregions);
     501  CHECK_REALLOCATE (L4[0].regions, SkyRegion, L4[0].Nalloc, L4[0].Nregions, 0.5*L4[0].Nalloc);
    501502
    502503  L3[0].child  = TRUE;
     
    531532      L4[0].regions[Nr].backupID  = 0;
    532533
    533       sprintf (name, "%s.%02d", L3[0].name, Nbox);
     534      myAssert (snprintf (name, 80, "%s.%02d", L3[0].name, Nbox) < 80, "overflow");
    534535      strcpy (L4[0].regions[Nr].name, name);
    535536      if (DEBUG >= 4) SkyRegionPrint (&L4[0].regions[Nr]);
  • trunk/Ohana/src/libdvo/src/skyregion_io.c

    r38441 r38553  
    113113  fclose (f);
    114114
     115  gfits_free_header  (&header);
     116  gfits_free_matrix  (&matrix);
     117  gfits_free_header  (&theader);
     118  gfits_free_table   (&ftable);
     119
    115120  return (TRUE);
    116121}
     
    131136    exit (1);
    132137  }
     138  free (filename);
    133139  return (sky);
    134140
     
    195201  // this generates the names, be sure to free when not needed
    196202  for (i = 0; i < list[0].Nregions; i++) {
    197     sprintf (line, "%s/%s.%s", path, list[0].regions[i][0].name, ext);
     203    snprintf (line, 256, "%s/%s.%s", path, list[0].regions[i][0].name, ext);
    198204    list[0].filename[i] = strcreate (line);
    199205  }
     
    209215  // this generates the names, be sure to free when not needed
    210216  for (i = 0; i < sky[0].Nregions; i++) {
    211     sprintf (line, "%s/%s.%s", path, sky[0].regions[i].name, ext);
     217    snprintf (line, 256, "%s/%s.%s", path, sky[0].regions[i].name, ext);
    212218    sky[0].filename[i] = strcreate (line);
    213219  }
     
    222228 
    223229  char *skyfile;
    224   ALLOCATE (skyfile, char, strlen(catdir) + strlen("/SkyTable.fits") + 1);
    225   sprintf (skyfile, "%s/SkyTable.fits", catdir);
     230
     231  int Nchar = strlen(catdir) + strlen("/SkyTable.fits") + 16;
     232  ALLOCATE (skyfile, char, Nchar);
     233  snprintf (skyfile, Nchar, "%s/SkyTable.fits", catdir);
    226234
    227235  return skyfile;
  • trunk/Ohana/src/libdvo/src/skyregion_ops.c

    r37807 r38553  
    550550    }
    551551    free (list[0].regions);
     552    free (list[0].filename);
    552553  }
    553554  free (list);
Note: See TracChangeset for help on using the changeset viewer.