Changeset 9437 for trunk/psModules/src/camera/pmFPAfileIO.c
- Timestamp:
- Oct 9, 2006, 3:04:45 PM (20 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/camera/pmFPAfileIO.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/camera/pmFPAfileIO.c
r8879 r9437 36 36 37 37 bool status; 38 char *extra;39 38 char *mode = NULL; 40 39 char *readMode = "r"; … … 76 75 // indirect filenames 77 76 if (!strcasecmp (file->filename, "@FILES")) { 77 char *extra = pmFPAfileNameFromRule (file->filextra, file, view); 78 if (extra == NULL) { 79 psError(PS_ERR_IO, false, "error converting extrule to name %s\n", file->extrule); 80 return false; 81 } 82 78 83 psFree (file->filename); 79 extra = pmFPAfileNameFromRule (file->filextra, file, view);80 84 file->filename = psMetadataLookupStr (&status, file->names, extra); 81 psFree (extra); 85 82 86 if (file->filename == NULL) { 83 87 psError(PS_ERR_IO, true, "filename lookup error (@FILES) for %s : %s\n", file->filextra, extra); 88 psFree (extra); 84 89 return false; 85 90 } 86 91 // psMetadataLookupStr just returns a view, file->filename must be protected 87 92 psMemIncrRefCounter (file->filename); 88 } 93 psFree (extra); 94 } 95 96 // get name from detrend database 97 // extrule expands to yield the class_id 98 // filextra contains the desired -det_id detID -iteration iter string 89 99 if (!strcasecmp (file->filename, "@DETDB")) { 100 char *extra = pmFPAfileNameFromRule (file->extrule, file, view); 101 if (extra == NULL) { 102 psError(PS_ERR_IO, false, "error converting extrule to name %s\n", file->extrule); 103 return false; 104 } 105 psTrace ("pmFPAfile", 6, "looking for detrend (%s, %s)\n", file->filextra, extra); 106 90 107 psFree (file->filename); 91 extra = pmFPAfileNameFromRule (file->extrule, file, view); 92 psTrace ("pmFPAfile", 6, "looking for detrend (%s, %s)\n", file->filextra, extra); 108 93 109 file->filename = pmDetrendFile (file->filextra, extra); 110 if (file->filename == NULL) { 111 psError(PS_ERR_IO, false, "failed to find a valid detrend image for detID %s : classID %s\n", file->filextra, extra); 112 psFree (extra); 113 return false; 114 } 115 116 // XXXX this is very ad-hoc 117 // XXXX prepend the value config[WORKDIR] to the filename... 118 char *workdir = psMetadataLookupStr (NULL, config->site, "WORKDIR"); 119 if (workdir) { 120 psStringPrepend (&file->filename, "%s/", workdir); 121 } 122 94 123 psTrace ("pmFPAfile", 6, "got detrend file %s\n", file->filename); 95 124 psFree (extra); 96 if (file->filename == NULL) {97 psError(PS_ERR_IO, true, "filename lookup error (@DETBD) for %s : %s\n", file->filextra, extra);98 return false;99 }100 125 } 101 126 // if () "neb://" -> get from neb... … … 571 596 PS_ASSERT_PTR_NON_NULL(view, false); 572 597 573 bool status = true;574 598 psMetadata *files = config->files; 575 599 576 // attempt to perform all create, read, write 600 // attempt to perform all create, read, write, close operations 577 601 psMetadataItem *item = NULL; 578 602 psMetadataIterator *iter = psMetadataIteratorAlloc (files, PS_LIST_HEAD, NULL); … … 584 608 if (!pmFPAfileRead (file, view, config)) { 585 609 psError(PS_ERR_IO, false, "failed READ in FPA_BEFORE block for %s", file->name); 586 status = false;610 goto failure; 587 611 } 588 612 if (!pmFPAfileCreate(file, view)) { 589 613 psError(PS_ERR_IO, false, "failed CREATE in FPA_BEFORE block for %s", file->name); 590 status = false;614 goto failure; 591 615 } 592 616 break; … … 594 618 if (!pmFPAfileWrite (file, view, config)) { 595 619 psError(PS_ERR_IO, false, "failed WRITE in FPA_AFTER block for %s", file->name); 596 status = false;620 goto failure; 597 621 } 598 622 if (!pmFPAfileClose(file, view)) { 599 623 psError(PS_ERR_IO, false, "failed CLOSE in FPA_AFTER block for %s", file->name); 600 status = false;624 goto failure; 601 625 } 602 626 break; … … 617 641 if (!pmFPAfileFreeData(file, view)) { 618 642 psError(PS_ERR_IO, false, "failed FREE in FPA_AFTER block for %s", file->name); 619 status = false;643 goto failure; 620 644 } 621 645 break; … … 625 649 } 626 650 psFree (iter); 627 return status; 628 } 629 651 return true; 652 653 failure: 654 psFree (iter); 655 return false; 656 } 657
Note:
See TracChangeset
for help on using the changeset viewer.
