Changeset 16141 for branches/pap_branch_080117/psLib/src/fits/psFits.c
- Timestamp:
- Jan 18, 2008, 3:04:13 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/pap_branch_080117/psLib/src/fits/psFits.c
r16131 r16141 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1.76.2. 2$ $Name: not supported by cvs2svn $10 * @date $Date: 2008-01-1 8 03:37:50$9 * @version $Revision: 1.76.2.3 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2008-01-19 01:04:13 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 78 78 fitsClose(fits); 79 79 } 80 psFree (fits->extword);80 psFree(fits->options); 81 81 } 82 82 … … 160 160 161 161 psFits* fits = psAlloc(sizeof(psFits)); 162 psMemSetDeallocator(fits, (psFreeFunc)fitsFree); 163 162 164 fits->fd = fptr; 163 165 fits->writable = (iomode == READWRITE); 164 fits->extword = NULL; 165 fits->conventions.compression = true; 166 fits->conventions.psBitpix = true; 167 168 fits->floatType = PS_FITS_FLOAT_NONE; 169 fits->bitpix = 0; 170 fits->scaling = PS_FITS_SCALE_NONE; 171 fits->fuzz = true; 172 fits->bscale = 1.0; 173 fits->bzero = 0.0; 174 fits->mean = NAN; 175 fits->stdev = NAN; 176 fits->stdevBits = 4; 177 fits->stdevNum = 5.0; 178 179 psMemSetDeallocator(fits,(psFreeFunc)fitsFree); 166 167 fits->options = NULL; 180 168 181 169 return fits; 170 } 171 172 173 static void fitsOptionsFree(psFitsOptions *options) 174 { 175 psFree(options->extword); 176 } 177 178 179 psFitsOptions *psFitsOptionsAlloc(void) 180 { 181 psFitsOptions *options = psAlloc(sizeof(psFitsOptions)); // Options, to return 182 psMemSetDeallocator(options, (psFreeFunc)fitsOptionsFree); 183 184 options->extword = NULL; 185 186 options->conventions.compression = true; 187 options->conventions.psBitpix = true; 188 189 options->floatType = PS_FITS_FLOAT_NONE; 190 191 options->bitpix = 0; 192 193 options->scaling = PS_FITS_SCALE_NONE; 194 options->fuzz = true; 195 options->bscale = 1.0; 196 options->bzero = 0.0; 197 options->mean = NAN; 198 options->stdev = NAN; 199 options->stdevBits = 4; 200 options->stdevNum = 5.0; 201 202 return options; 182 203 } 183 204 … … 237 258 } 238 259 239 bool psFitsSetExtnameWord (psFits *fits, const char *extword)260 bool psFitsSetExtnameWord(psFits *fits, const char *extword) 240 261 { 241 262 PS_ASSERT_PTR_NON_NULL(fits, false); 242 263 PS_ASSERT_PTR_NON_NULL(extword, false); 243 264 244 psFree (fits->extword); 245 fits->extword = psStringCopy (extword); 265 if (!fits->options) { 266 fits->options = psFitsOptionsAlloc(); 267 } 268 269 psFree(fits->options->extword); 270 fits->options->extword = psStringCopy(extword); 246 271 return true; 247 272 } … … 261 286 int status = 0; 262 287 263 if (!fits->conventions.compression && !fits->extword) { 288 psFitsOptions *options = fits->options; // FITS options 289 if (options && !options->conventions.compression && !options->extword) { 264 290 // User wants to use cfitsio. Good luck to them! 265 291 if (fits_movnam_hdu(fits->fd, ANY_HDU, (char*)extname, 0, &status) != 0) { … … 270 296 } 271 297 272 bool ignoreCI = ( fits->conventions.compression &&298 bool ignoreCI = (options->conventions.compression && 273 299 (strcmp(extname, "COMPRESSED_IMAGE") != 0)); // Ignore COMPRESSED_IMAGE extension name? 274 char *extword = ( fits->extword ? fits->extword : "EXTNAME"); // Word to use as extension name300 char *extword = (options->extword ? options->extword : "EXTNAME"); // Word to use as extension name 275 301 276 302 #if 0 … … 375 401 char name[MAX_STRING_LENGTH]; 376 402 377 char *extword = (fits->extword == NULL) ? defaultExtword : fits->extword; 403 psFitsOptions *options = fits->options; // FITS options 404 char *extword = (!options || !options->extword) ? defaultExtword : options->extword; 378 405 379 406 if (fits_read_key_str(fits->fd, extword, name, NULL, &status) != 0) { 380 psError(PS_ERR_BAD_PARAMETER_NULL, true, 381 _("Header keyword %s is not found"), extword); 407 psError(PS_ERR_BAD_PARAMETER_NULL, true, _("Header keyword %s is not found"), extword); 382 408 return NULL; 383 409 } … … 392 418 int status = 0; 393 419 394 char *extword = (fits->extword == NULL) ? defaultExtword : fits->extword; 420 psFitsOptions *options = fits->options; // FITS options 421 char *extword = (!options || !options->extword) ? defaultExtword : options->extword; 395 422 396 423 if (fits_update_key_str(fits->fd, extword, (char*)name, NULL, &status) != 0) { 397 424 char fitsErr[MAX_STRING_LENGTH]; 398 425 (void)fits_get_errstatus(status, fitsErr); 399 psError(PS_ERR_IO, true, 400 _("Could not write data to file. CFITSIO Error: %s"), 401 fitsErr); 426 psError(PS_ERR_IO, true, _("Could not write data to file. CFITSIO Error: %s"), fitsErr); 402 427 return false; 403 428 } … … 414 439 415 440 // move to the specified HDU 416 if (! psFitsMoveExtNum(fits,extnum,relative) ) { 417 psError(PS_ERR_BAD_PARAMETER_VALUE, false, 418 "Failed to delete HDU #%d", 419 extnum); 441 if (!psFitsMoveExtNum(fits, extnum, relative) ) { 442 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Failed to delete HDU #%d", extnum); 420 443 return false; 421 444 } … … 427 450 char fitsErr[MAX_STRING_LENGTH]; 428 451 (void)fits_get_errstatus(status, fitsErr); 429 psError(PS_ERR_IO, true, 430 _("Could not write data to file. CFITSIO Error: %s"), 431 fitsErr); 452 psError(PS_ERR_IO, true, _("Could not write data to file. CFITSIO Error: %s"), fitsErr); 432 453 return false; 433 454 }
Note:
See TracChangeset
for help on using the changeset viewer.
