Changeset 6789
- Timestamp:
- Apr 4, 2006, 4:36:46 PM (20 years ago)
- File:
-
- 1 edited
-
branches/rel10_ifa/psLib/src/fits/psFitsHeader.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/rel10_ifa/psLib/src/fits/psFitsHeader.c
r6728 r6789 7 7 * @author Robert DeSonia, MHPCC 8 8 * 9 * @version $Revision: 1.2.4. 3$ $Name: not supported by cvs2svn $10 * @date $Date: 2006-0 3-30 00:31:04$9 * @version $Revision: 1.2.4.4 $ $Name: not supported by cvs2svn $ 10 * @date $Date: 2006-04-05 02:36:46 $ 11 11 * 12 12 * Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii … … 174 174 } 175 175 176 psMetadata* psFitsReadHeaderSet( const psFits* fits)176 psMetadata* psFitsReadHeaderSet(psMetadata* out, const psFits* fits) 177 177 { 178 178 if (fits == NULL) { 179 179 psError(PS_ERR_BAD_PARAMETER_NULL, true, 180 180 PS_ERRORTEXT_psFits_NULL); 181 psFree(out); 181 182 return NULL; 182 183 } 183 184 184 psMetadata* out = psMetadataAlloc(); 185 if (out == NULL) { 186 out = psMetadataAlloc(); 187 } 185 188 186 189 int size = psFitsGetSize(fits); … … 251 254 break; 252 255 } 256 case PS_DATA_S8: 257 fits_update_key(fits->fd, 258 TBYTE, 259 item->name, 260 &item->data.S8, 261 item->comment, 262 &status); 263 break; 264 case PS_DATA_S16: 265 fits_update_key(fits->fd, 266 TSHORT, 267 item->name, 268 &item->data.S16, 269 item->comment, 270 &status); 271 break; 253 272 case PS_DATA_S32: 254 273 fits_update_key(fits->fd, … … 259 278 &status); 260 279 break; 280 case PS_DATA_U8: { 281 unsigned short int temp = item->data.U8; 282 fits_update_key(fits->fd, 283 TUSHORT, 284 item->name, 285 &temp, 286 item->comment, 287 &status); 288 } 289 break; 290 case PS_DATA_U16: 291 fits_update_key(fits->fd, 292 TUSHORT, 293 item->name, 294 &item->data.U16, 295 item->comment, 296 &status); 297 break; 298 case PS_DATA_U32: 299 fits_update_key(fits->fd, 300 TUINT, 301 item->name, 302 &item->data.U32, 303 item->comment, 304 &status); 305 break; 261 306 case PS_DATA_F32: 262 307 fits_update_key(fits->fd, … … 276 321 break; 277 322 case PS_DATA_STRING: 278 if (!strcmp (item->name, "COMMENT")) {279 fits_write_comment(fits->fd, item->comment, &status);280 break;281 }282 if (!strcmp (item->name, "HISTORY")) {283 fits_write_history(fits->fd, item->comment, &status);284 break;285 }286 323 fits_update_key(fits->fd, 287 324 TSTRING, … … 305 342 } 306 343 344 psFree(iter); 345 307 346 return true; 308 347 } 309 348 349 bool psFitsHeaderValidate(psMetadata *header) 350 { 351 bool valid = true; 352 int status; 353 354 if (header == NULL) { 355 psError(PS_ERR_BAD_PARAMETER_NULL, true, 356 PS_ERRORTEXT_psFits_METADATA_NULL); 357 return false; 358 } 359 360 //transverse the metadata list and inspect at each key 361 362 psListIterator* iter = psListIteratorAlloc(header->list,PS_LIST_HEAD,true); 363 psMetadataItem* item; 364 while ( (item=psListGetAndIncrement(iter)) != NULL ) { 365 psDataType type = item->type; 366 367 if (type > PS_DATA_STRING) { // i.e., a non-primitive type 368 valid = false; 369 } 370 371 if (strlen(item->name) > 8) { 372 item->name[8] = '\0'; // truncate to 8 characters 373 } 374 375 fits_uppercase(item->name); // make uppercase 376 377 // now, let's see if CFITSIO thinks this is a good keyword... 378 status = 0; 379 if (fits_test_keyword(item->name,&status) != 0) { 380 valid = false; 381 } 382 } 383 384 psFree(iter); 385 386 return valid; 387 }
Note:
See TracChangeset
for help on using the changeset viewer.
