IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 28513


Ignore:
Timestamp:
Jun 25, 2010, 3:01:05 PM (16 years ago)
Author:
Paul Price
Message:

Backporting changes to table reading and streaksremove so that destreaking can work on empty source file.

Location:
tags/ipp-20100623
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • tags/ipp-20100623/magic/remove/src

  • tags/ipp-20100623/magic/remove/src/streaksremove.c

    r28275 r28513  
    577577}
    578578
    579 static void 
     579static void
    580580setStreakBits(psImage *maskImage, psU32 maskStreak)
    581581{
     
    644644            if (exciseAll) {
    645645                strkGetMaskValues(sf);
    646                
     646
    647647                // add the STREAK bit to the mask image pixels
    648648                setStreakBits(sf->inMask->image, sf->maskStreak);
     
    941941        psArray *inTable = psFitsReadTable(in->fits);
    942942        if (!inTable) {
    943             psErrorStackPrint(stderr, "failed to read tablle in %s", in->resolved_name);
    944             streaksExit("", PS_EXIT_DATA_ERROR);
    945         }
    946         if (!inTable->n) {
    947             psErrorStackPrint(stderr, "table in %s is empty", in->resolved_name);
     943            psErrorStackPrint(stderr, "failed to read table in %s", in->resolved_name);
    948944            streaksExit("", PS_EXIT_DATA_ERROR);
    949945        }
  • tags/ipp-20100623/psLib/src/fits

  • tags/ipp-20100623/psLib/src/fits/psFitsImage.c

    r27313 r28513  
    415415    if (fits_read_subset(fits->fd, info->fitsDatatype, info->firstPixel, info->lastPixel,
    416416                         info->increment, nullValue, output->data.V[0], &anynull, &status) != 0) {
    417         psFitsError(status, true, "Reading FITS file failed.");
     417        psFitsError(status, true, "Reading FITS file %s failed.", fits->fd->Fptr->filename);
    418418        return false;
    419419    }
  • tags/ipp-20100623/psLib/src/fits/psFitsTable.c

    r28508 r28513  
    3939
    4040    int status = 0;                     // CFITSIO status
     41
     42    // Check for empty table, which looks like an image
     43    int hdutype;                        // Type of HDU
     44    fits_get_hdu_type(fits->fd, &hdutype, &status);
     45    if (psFitsError(status, true, "Could not determine the HDU type.")) {
     46        return -1;
     47    }
     48    if (hdutype == IMAGE_HDU) {
     49        // It could be an empty table
     50        int naxis = 0;                  // Dimensions of image
     51        if (fits_get_img_dim(fits->fd, &naxis, &status) != 0) {
     52            psFitsError(status, true, "Unable to determine dimension for table.");
     53            return -1;
     54        }
     55        if (naxis != 0) {
     56            psFitsError(PS_ERR_BAD_FITS, true, "Current FITS HDU is not a table.");
     57            return -1;
     58        }
     59        return 0;
     60    }
     61
    4162    long numRows;                       // Number of rows
    4263    if (fits_get_num_rows(fits->fd, &numRows, &status)) {
     
    4869}
    4970
     71
    5072// Check the FITS file in preparation for reading a table
    5173static bool readTableCheck(const psFits *fits // FITS file
    5274                           )
    5375{
    54     PS_ASSERT_FITS_NON_NULL(fits, NULL);
     76    PS_ASSERT_FITS_NON_NULL(fits, false);
    5577
    5678    if (psFitsGetExtNum(fits) == 0 && !psFitsMoveExtNum(fits, 1, false)) {
     
    5880        return false;
    5981    }
    60 
    6182
    6283    // check that we are positioned on a table HDU
     
    6990    if (hdutype == IMAGE_HDU) {
    7091        // It could be an empty table
    71         long size = 0;                  // Size of 'table'
    72         if (fits_get_num_rows(fits->fd, &size, &status)) {
    73             psFitsError(status, true, "Unable to determine size of table.");
     92        int naxis = 0;                  // Dimensions of image
     93        if (fits_get_img_dim(fits->fd, &naxis, &status) != 0) {
     94            psFitsError(status, true, "Unable to determine dimension for table.");
    7495            return false;
    7596        }
    76         if (size != 0) {
     97        if (naxis != 0) {
    7798            psFitsError(PS_ERR_BAD_FITS, true, "Current FITS HDU is not a table.");
    7899            return false;
    79100        }
    80     }
    81     if (hdutype != ASCII_TBL && hdutype != BINARY_TBL) {
     101    } else if (hdutype != ASCII_TBL && hdutype != BINARY_TBL) {
    82102        psError(PS_ERR_BAD_FITS, true, _("Current FITS HDU is not a table."));
    83103        return false;
Note: See TracChangeset for help on using the changeset viewer.