Changeset 9437
- Timestamp:
- Oct 9, 2006, 3:04:45 PM (20 years ago)
- Location:
- trunk/psModules/src/camera
- Files:
-
- 2 edited
-
pmFPAfileDefine.c (modified) (3 diffs)
-
pmFPAfileIO.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/camera/pmFPAfileDefine.c
r9290 r9437 247 247 formatName = words->data[1]; 248 248 file->camera = pmConfigCameraByName(config, words->data[0]); 249 // XXX do we need to save the camera name? 249 250 if (!file->camera) { 250 251 psError(PS_ERR_IO, false, "camera %s not found\n", (char *)words->data[0]); … … 611 612 return NULL; 612 613 } 614 // a camera config is needed (as source of file rule) 615 if (config->cameraName == NULL) { 616 psAbort ("pmFPAfileDefine", "camera defined but not cameraName!"); 617 } 613 618 614 619 // find or define a pmFPAfile with this name … … 633 638 // detselect -camera (camera) -time (time) -type (type) [others] 634 639 // camera and time are functions of (pmFPA *input) 635 636 // XXX does this do something NASTY to the stack??640 // XXX we need to get the time, but we don't have the CELL.TIME yet set (no CELL yet read) 641 // add other options here f(pmFPA *input, type) 637 642 psTime *time = psTimeGetNow (PS_TIME_TAI); 638 639 psString camera = psStringCopy ("megacam"); 640 pmDetrendSelectOptions *options = pmDetrendSelectOptionsAlloc(camera, *time, type); 641 psFree (camera); 643 pmDetrendSelectOptions *options = pmDetrendSelectOptionsAlloc(config->cameraName, *time, type); 642 644 psFree (time); 643 644 // add other options here f(pmFPA *input, type)645 645 646 646 // search for existing detrend data (detID) 647 647 pmDetrendSelectResults *results = pmDetrendSelect (options); 648 648 if (!results) { 649 psLogMsg ("pmFPAfile", 2, "no matching detrend data"); 650 psError (PS_ERR_IO, true, "no matching detrend data"); 649 psError (PS_ERR_IO, false, "no matching detrend data"); 651 650 return NULL; 652 651 } -
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.
