Changeset 12457
- Timestamp:
- Mar 15, 2007, 2:32:46 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/objects/pmSourceIO.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/pmSourceIO.c
r12447 r12457 3 3 * @author EAM, IfA 4 4 * 5 * @version $Revision: 1.2 4$ $Name: not supported by cvs2svn $6 * @date $Date: 2007-03-1 5 20:45:27$5 * @version $Revision: 1.25 $ $Name: not supported by cvs2svn $ 6 * @date $Date: 2007-03-16 00:32:46 $ 7 7 * 8 8 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 281 281 } 282 282 283 // EXTNAME values used to for table data and image header segments 284 dataname = pmFPAfileNameFromRule (file->extrule, file, view); 285 headname = pmFPAfileNameFromRule (file->extxtra, file, view); 283 // lookup the EXTNAME values used for table data and image header segments 284 char *rule = NULL; 285 // Menu of EXTNAME rules 286 psMetadata *menu = psMetadataLookupMetadata(&status, file->camera, "EXTNAME.RULES"); 287 if (!menu) { 288 psError(PS_ERR_UNKNOWN, true, "missing EXTNAME.RULES in camera.config"); 289 return false; 290 } 291 // EXTNAME for image header 292 rule = psMetadataLookupStr(&status, menu, "CMF.HEAD"); 293 if (!rule) { 294 psError(PS_ERR_UNKNOWN, true, "missing entry for CMF.HEAD in EXTNAME.RULES in camera.config"); 295 return false; 296 } 297 headname = pmFPAfileNameFromRule (rule, file, view); 298 // EXTNAME for table data 299 rule = psMetadataLookupStr(&status, menu, "CMF.DATA"); 300 if (!rule) { 301 psError(PS_ERR_UNKNOWN, true, "missing entry for CMF.DATA in EXTNAME.RULES in camera.config"); 302 return false; 303 } 304 dataname = pmFPAfileNameFromRule (rule, file, view); 286 305 287 306 // this header block is new, write it to disk … … 481 500 if (!strcasecmp (file->filename, "@FILES")) { 482 501 psFree (file->filename); 483 char *extra = pmFPAfileNameFromRule (file->filextra, file, view); 484 file->filename = psMetadataLookupStr (&status, file->names, extra); 485 psFree (extra); 486 if (file->filename == NULL) 487 return false; 502 char *filesrc = pmFPAfileNameFromRule (file->filesrc, file, view); 503 file->filename = psMetadataLookupStr (&status, file->names, filesrc); 504 psFree (filesrc); 505 if (file->filename == NULL) return false; 488 506 // psMetadataLookupStr just returns a view, file->filename must be protected 489 507 psMemIncrRefCounter (file->filename); … … 508 526 // read in header, if not yet loaded 509 527 hdu = pmFPAviewThisHDU (view, file->fpa); 528 529 // lookup the EXTNAME values used for table data and image header segments 530 char *rule = NULL; 531 // Menu of EXTNAME rules 532 psMetadata *menu = psMetadataLookupMetadata(&status, file->camera, "EXTNAME.RULES"); 533 if (!menu) { 534 psError(PS_ERR_UNKNOWN, true, "missing EXTNAME.RULES in camera.config"); 535 return false; 536 } 537 // EXTNAME for image header 538 rule = psMetadataLookupStr(&status, menu, "CMF.HEAD"); 539 if (!rule) { 540 psError(PS_ERR_UNKNOWN, true, "missing entry for CMF.HEAD in EXTNAME.RULES in camera.config"); 541 return false; 542 } 543 char *headname = pmFPAfileNameFromRule (rule, file, view); 544 // EXTNAME for table data 545 rule = psMetadataLookupStr(&status, menu, "CMF.DATA"); 546 if (!rule) { 547 psError(PS_ERR_UNKNOWN, true, "missing entry for CMF.DATA in EXTNAME.RULES in camera.config"); 548 return false; 549 } 550 char *dataname = pmFPAfileNameFromRule (rule, file, view); 551 552 // advance to the IMAGE HEADER extension 510 553 if (hdu->header == NULL) { 511 char *headname = pmFPAfileNameFromRule (file->extxtra, file, view);512 554 psFitsMoveExtName (file->fits, headname); 513 555 hdu->header = psFitsReadHeader (NULL, file->fits); 514 psFree (headname);515 556 } 516 557 517 558 // we need to find the corresponding table EXTNAME. 518 559 // first check the header 519 char * dataname= psMetadataLookupStr (NULL, hdu->header, "EXTDATA");520 psMemIncrRefCounter (dataname); // so free below is safe521 if (!dataname) {522 // if it is not defined in the header, try the value in the filerule 523 dataname = pmFPAfileNameFromRule (file->extrule, file, view);524 if (!dataname)525 psAbort("cannot determine data EXTNAME"); 526 } 560 char *extdata = psMetadataLookupStr (NULL, hdu->header, "EXTDATA"); 561 if (extdata) { 562 // if EXTDATA is defined in the header, use that value for 'dataname' 563 psFree (dataname); 564 dataname = psMemIncrRefCounter (extdata); 565 } 566 567 // advance to the table data extension 527 568 if (!psFitsMoveExtName (file->fits, dataname)) { 528 569 psAbort("cannot find data extension %s in %s", dataname, file->filename); … … 543 584 } 544 585 586 psFree (headname); 545 587 psFree (dataname); 546 588 break;
Note:
See TracChangeset
for help on using the changeset viewer.
