IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14287


Ignore:
Timestamp:
Jul 18, 2007, 8:46:45 AM (19 years ago)
Author:
eugene
Message:

return NULL if field is not founddvo/dbFields.c

Location:
trunk/Ohana/src/opihi/dvo
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/dvo/avextract.c

    r14191 r14287  
    33int avextract (int argc, char **argv) {
    44 
    5   int i, j, n, m, Npts, NPTS, last, Nfields, Nreturn, Ncstack, Nstack;
    6   int Nsecfilt, mode;
     5  int i, j, n, m, N, Npts, NPTS, last, Nfields, Nreturn, Ncstack, Nstack;
     6  int Nsecfilt, mode, VERBOSE;
    77  char *RegionName, *RegionList, *p;
    88  char **cstack, name[1024];
    99  float *values;
     10  void *Signal;
    1011
    1112  Catalog catalog;
     
    2425  fields = NULL;
    2526  stack = NULL;
     27
     28  VERBOSE = FALSE;
     29  if ((N = get_argument (argc, argv, "-v"))) {
     30    remove_argument (N, &argc, argv);
     31    VERBOSE = TRUE;
     32  }
    2633
    2734  dvo_catalog_init (&catalog, TRUE);
     
    6976  NPTS = 1;
    7077
    71   // XXX need to add interrupt test to this loop
    72   for (i = 0; i < skylist[0].Nregions; i++) {
     78  // grab data from all selected sky regions
     79  Signal = signal (SIGINT, handle_interrupt);
     80  interrupt = FALSE;
     81  for (i = 0; (i < skylist[0].Nregions) && !interrupt; i++) {
    7382    /* lock, load, unlock catalog */
    7483    catalog.filename = skylist[0].filename[i];
     
    7685    catalog.Nsecfilt = 0;
    7786
     87    if (VERBOSE) gprint (GP_ERR, "trying %s (%d of %d)\n", catalog.filename, i, skylist[0].Nregions);
     88     
    7889    // an error exit status here is a significant error
    7990    if (!dvo_catalog_open (&catalog, NULL, FALSE, "r")) {
    80       fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);
     91      gprint (GP_ERR, "ERROR: failure to open catalog file %s\n", catalog.filename);
    8192      exit (2);
    8293    }
    8394    dvo_catalog_unlock (&catalog);
    8495
    85     for (j = 0; j < catalog.Naverage; j++) {
     96    for (j = 0; (j < catalog.Naverage) && !interrupt; j++) {
    8697      m = catalog.average[j].offset;
    8798      // extract the relevant values
     
    105116    dvo_catalog_free (&catalog);
    106117  }
     118  signal (SIGINT, Signal);
     119  interrupt = FALSE;
    107120  for (n = 0; n < Nreturn; n++) {
    108121    vec[n][0].Nelements = Npts;
  • trunk/Ohana/src/opihi/dvo/dbCheckStack.c

    r13479 r14287  
    11# include "dvoshell.h"
    22
    3 int dbCheckStack (dbStack *stack, int Nstack, int table, dbField **inFields, int *Nfields) {
     3int dbCheckStack (dbStack *stack, int Nstack, int table, dbField **inFields, int *inNfields) {
    44
    5   int i, j, status, NFIELDS;
     5  int i, j, status, NFIELDS, Nfields;
    66  char *c;
    77  dbField *fields;
    88
    9   NFIELDS = *Nfields + 10;
    10   REALLOCATE (*inFields, dbField, NFIELDS);
    119  fields = *inFields;
     10  Nfields = *inNfields;
     11
     12  NFIELDS = Nfields + 10;
     13  REALLOCATE (fields, dbField, NFIELDS);
    1214
    1315  for (i = 0; i < Nstack; i++) {
     
    2224
    2325      // this must be a field : is it already in the list?
    24       for (j = 0; (j < *Nfields) && strcasecmp (stack[i].name, fields[j].name); j++);
    25       if (j < *Nfields) {
     26      for (j = 0; (j < Nfields) && strcasecmp (stack[i].name, fields[j].name); j++);
     27      if (j < Nfields) {
    2628        stack[i].field = j;
    2729        stack[i].type  = 'F';
     30        stack[i].name  = NULL;
     31        stack[i].Float = 0.0;
    2832        continue;
    2933      }
     
    3135      // this must be a field : is it a valid name?
    3236      if (table == DVO_TABLE_MEASURE) {
    33         status = ParseMeasureField (&fields[*Nfields], stack[i].name);
     37        status = ParseMeasureField (&fields[Nfields], stack[i].name);
    3438      }
    3539      if (table == DVO_TABLE_AVERAGE) {
    36         status = ParseAverageField (&fields[*Nfields], stack[i].name);
     40        status = ParseAverageField (&fields[Nfields], stack[i].name);
    3741      }
    3842      if (!status) {
     
    4044        return (FALSE);
    4145      }
    42       stack[i].field = *Nfields;
     46      stack[i].field = Nfields;
    4347      stack[i].type  = 'F';
     48      stack[i].name  = NULL;
     49      stack[i].Float = 0.0;
    4450
    45       *Nfields ++;
    46       CHECK_REALLOCATE (*inFields, dbField, NFIELDS, *Nfields, 10);
    47       fields = *inFields;
     51      Nfields ++;
     52      CHECK_REALLOCATE (fields, dbField, NFIELDS, Nfields, 10);
    4853    }
    4954  }
     55
     56  *inNfields = Nfields;
     57  *inFields = fields;
     58
    5059  return (TRUE);
    5160}
  • trunk/Ohana/src/opihi/dvo/dbFields.c

    r14191 r14287  
    77  if (fields == NULL) return;
    88
    9   for (i = 0; i <= Nfields; i++) {
     9  for (i = 0; i < Nfields; i++) {
    1010    if (fields[i].name != NULL) free (fields[i].name);
    1111    if (fields[i].photcode != NULL) {
     
    6868  }
    6969  code = GetPhotcodebyName (tmpstring);
     70  if (!code) {
     71      return NULL;
     72  }
     73
    7074
    7175  // enforce compatibility
  • trunk/Ohana/src/opihi/dvo/mextract.c

    r14191 r14287  
    44 
    55  int i, j, k, m, n, N, N1, Npts, NPTS, last, Nfields, Nreturn, Ncstack, Nstack;
    6   int param, mode, Nsecfilt;
     6  int Nsecfilt, VERBOSE, loadImages, mosaicMode;
    77  char *RegionName, *RegionList, *p;
    88  double *M1;
    99  char **cstack, name[1024];
    1010  float *values;
     11  void *Signal;
    1112
    1213  Catalog catalog;
     
    2223  RegionList = NULL;
    2324  code = NULL;
    24   mode = MAG_REL;
    2525  fields = NULL;
    2626  stack = NULL;
     27
     28  VERBOSE = FALSE;
     29  if ((N = get_argument (argc, argv, "-v"))) {
     30    remove_argument (N, &argc, argv);
     31    VERBOSE = TRUE;
     32  }
    2733
    2834  dvo_catalog_init (&catalog, TRUE);
     
    5056  // construct the db Boolean math stack (frees cstack)
    5157  stack = dbRPN (Ncstack, cstack, &Nstack);
     58  if ((Ncstack > 0) && (Nstack < 1)) {
     59    print_error ();
     60    goto escape;
     61  }
    5262
    5363  Nreturn = Nfields;
     
    5969
    6070  // XXX is this still needed?
    61   // if (!SetImageSelection (param, ((RegionName == NULL) && (RegionList == NULL)))) goto escape;
     71  loadImages = FALSE;
     72  mosaicMode = FALSE;
     73  for (i = 0; !loadImages && (i < Nfields); i++) {
     74    if (fields[i].ID == MEAS_XCCD) loadImages = TRUE;
     75    if (fields[i].ID == MEAS_YCCD) loadImages = TRUE;
     76    if (fields[i].ID == MEAS_XMOSAIC) loadImages = mosaicMode = TRUE;
     77    if (fields[i].ID == MEAS_YMOSAIC) loadImages = mosaicMode = TRUE;
     78  }
     79  if (loadImages && !SetImageSelection (mosaicMode, ((RegionName == NULL) && (RegionList == NULL)))) goto escape;
    6280
    6381  /* create storage vector */
     
    7694  NPTS = 1;
    7795
    78   // XXX need to add interrupt test to this loop
    79   for (i = 0; i < skylist[0].Nregions; i++) {
     96  // grab data from all selected sky regions
     97  Signal = signal (SIGINT, handle_interrupt);
     98  interrupt = FALSE;
     99  for (i = 0; (i < skylist[0].Nregions) && !interrupt; i++) {
    80100    /* lock, load, unlock catalog */
    81101    catalog.filename = skylist[0].filename[i];
     
    83103    catalog.Nsecfilt = Nsecfilt;
    84104
     105    if (VERBOSE) gprint (GP_ERR, "trying %s (%d of %d)\n", catalog.filename, i, skylist[0].Nregions);
     106     
    85107    // an error exit status here is a significant error
    86108    if (!dvo_catalog_open (&catalog, NULL, FALSE, "r")) {
    87       fprintf (stderr, "ERROR: failure to open catalog file %s\n", catalog.filename);
     109      gprint (GP_ERR, "ERROR: failure to open catalog file %s\n", catalog.filename);
    88110      exit (2);
    89111    }
     
    92114    /* XXX need to call dvo_catalog_chipcoords here passing the loaded images */
    93115
    94     for (j = 0; j < catalog.Naverage; j++) {
     116    for (j = 0; (j < catalog.Naverage) && !interrupt; j++) {
    95117      m = catalog.average[j].offset;
    96118      for (k = 0; k < catalog.average[j].Nm; k++, m++) {
     
    117139    dvo_catalog_free (&catalog);
    118140  }
     141  signal (SIGINT, Signal);
     142  interrupt = FALSE;
     143
    119144  for (n = 0; n < Nreturn; n++) {
    120145    vec[n][0].Nelements = Npts;
    121146    REALLOCATE (vec[n][0].elements, float, MAX(1,Npts));
    122147  }
    123 
    124148  dbFreeFields (fields, Nfields);
    125149  dbFreeStack (stack, Nstack);
     150
    126151  FreeImageSelection ();
    127152  SkyListFree (skylist, ((RegionName != NULL) || (RegionList != NULL)));
     153
    128154  if (RegionName != NULL) free (RegionName);
    129155  if (RegionList != NULL) free (RegionList);
Note: See TracChangeset for help on using the changeset viewer.