Changeset 7236
- Timestamp:
- May 26, 2006, 4:09:47 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psLib/src/fits/psFitsHeader.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psLib/src/fits/psFitsHeader.c
r7235 r7236 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1.1 4$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-05-27 02:09: 18$9 * @version $Revision: 1.15 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-05-27 02:09:47 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 322 322 323 323 return fitsWriteHeader(fits, output, true); 324 325 326 bool psFitsWriteBlank(psFits* fits, 327 psMetadata* output 328 ) { 329 if (!fits) { 330 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psFits_NULL); 331 return false; 332 } 333 334 if (!output) { 335 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psFits_METADATA_NULL); 336 return false; 337 } 338 339 // Create a dummy image HDU for the primary HDU 340 int status = 0; // Status of cfitsio 341 fits_create_img(fits->fd, 16, 0, NULL, &status); 342 if (status) { 343 char fitsErr[MAX_STRING_LENGTH]; 344 (void)fits_get_errstatus(status, fitsErr); 345 psError(PS_ERR_IO, true, "Unable to create primary header.\n%s\n", fitsErr); 346 return false; 347 } 348 349 return fitsWriteHeader(fits, output, false); 350 } 351 352 bool psFitsHeaderValidate(psMetadata *header) { 353 if (header == NULL) { 354 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psFits_METADATA_NULL); 355 return false; 356 } 357 358 // Traverse the metadata list and inspect at each key 359 psListIterator* iter = psListIteratorAlloc(header->list, PS_LIST_HEAD, true); // Iterator 360 psMetadataItem* item; // Item from iteration 361 bool valid = true; // Are all items valid? 362 while ((item = psListGetAndIncrement(iter))) { 363 if (item->type > PS_DATA_STRING) { // i.e., a non-primitive type 364 valid = false; 365 } 366 367 if (strlen(item->name) > 8) { 368 item->name[8] = '\0'; // truncate to 8 characters 369 } 370 371 fits_uppercase(item->name); // make uppercase 372 373 // now, let's see if CFITSIO thinks this is a good keyword... 374 int status = 0; // Status from cfitsio calls 375 if (fits_test_keyword(item->name,&status) != 0) { 376 valid = false; 377 } 378 } 379 psFree(iter); 380 381 return valid; 382 } 324 } 325 326 bool psFitsWriteBlank(psFits* fits, 327 psMetadata* output 328 ) 329 { 330 if (!fits) { 331 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psFits_NULL); 332 return false; 333 } 334 335 if (!output) { 336 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psFits_METADATA_NULL); 337 return false; 338 } 339 340 // Create a dummy image HDU for the primary HDU 341 int status = 0; // Status of cfitsio 342 fits_create_img(fits->fd, 16, 0, NULL, &status); 343 if (status) { 344 char fitsErr[MAX_STRING_LENGTH]; 345 (void)fits_get_errstatus(status, fitsErr); 346 psError(PS_ERR_IO, true, "Unable to create primary header.\n%s\n", fitsErr); 347 return false; 348 } 349 350 return fitsWriteHeader(fits, output, false); 351 } 352 353 bool psFitsHeaderValidate(psMetadata *header) 354 { 355 if (header == NULL) { 356 psError(PS_ERR_BAD_PARAMETER_NULL, true, PS_ERRORTEXT_psFits_METADATA_NULL); 357 return false; 358 } 359 360 // Traverse the metadata list and inspect at each key 361 psListIterator* iter = psListIteratorAlloc(header->list, PS_LIST_HEAD, true); // Iterator 362 psMetadataItem* item; // Item from iteration 363 bool valid = true; // Are all items valid? 364 while ((item = psListGetAndIncrement(iter))) { 365 if (item->type > PS_DATA_STRING) { // i.e., a non-primitive type 366 valid = false; 367 } 368 369 if (strlen(item->name) > 8) { 370 item->name[8] = '\0'; // truncate to 8 characters 371 } 372 373 fits_uppercase(item->name); // make uppercase 374 375 // now, let's see if CFITSIO thinks this is a good keyword... 376 int status = 0; // Status from cfitsio calls 377 if (fits_test_keyword(item->name,&status) != 0) { 378 valid = false; 379 } 380 } 381 psFree(iter); 382 383 return valid; 384 }
Note:
See TracChangeset
for help on using the changeset viewer.
