IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 7, 2006, 8:52:03 PM (20 years ago)
Author:
eugene
Message:

extensive cleanup of memory handling : no more leaks!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/psphotOutput.c

    r6311 r6379  
    1212static char *extRoot    = NULL;
    1313
     14void psphotOutputCleanup () {
     15
     16    psFree (outputRoot);
     17    psFree (outputName);
     18    psFree (outputMode);
     19    psFree (outputFormat);
     20    psFree (extNumberFormat);
     21    psFree (extNameKey);
     22    psFree (extRoot);
     23    return;
     24}
     25
    1426void psphotOutputPrep (ppFile *file, ppConfig *config) {
    1527
    1628    bool status;
    1729
    18     outputRoot   = psMetadataLookupPtr (&status, config->arguments, "OUTPUT_ROOT");
     30    outputRoot      = psMetadataLookupStr (&status, config->arguments, "OUTPUT_ROOT");
    1931    if (!status) psAbort ("psphot", "output file not specified");
    2032
    21     outputName   = psMetadataLookupPtr (&status, config->recipe, "OUTPUT_NAME");
    22     outputMode   = psMetadataLookupPtr (&status, config->recipe, "OUTPUT_MODE");
    23     outputFormat = psMetadataLookupPtr (&status, config->recipe, "OUTPUT_FORMAT");
     33    outputName      = psMetadataLookupStr (&status, config->recipe, "OUTPUT_NAME");
     34    outputMode      = psMetadataLookupStr (&status, config->recipe, "OUTPUT_MODE");
     35    outputFormat    = psMetadataLookupStr (&status, config->recipe, "OUTPUT_FORMAT");
    2436
    2537    // rules to construct output names
    26     extNumberFormat = psMetadataLookupPtr (&status, config->recipe, "EXTNUMBER_FORMAT");
    27     extNameKey      = psMetadataLookupPtr (&status, config->recipe, "EXTNAME");
    28     extRoot         = psMetadataLookupPtr (&status, config->recipe, "EXTROOT");
     38    extNumberFormat = psMetadataLookupStr (&status, config->recipe, "EXTNUMBER_FORMAT");
     39    extNameKey      = psMetadataLookupStr (&status, config->recipe, "EXTNAME");
     40    extRoot         = psMetadataLookupStr (&status, config->recipe, "EXTROOT");
    2941
    3042    if (extNumberFormat == NULL) {
     
    6375    }
    6476
     77    // save so freeing config will not drop these references
     78    psMemCopy (outputRoot);
     79    psMemCopy (outputName);
     80    psMemCopy (outputMode);
     81    psMemCopy (outputFormat);
     82    psMemCopy (extNumberFormat);
     83    psMemCopy (extNameKey);
     84    psMemCopy (extRoot);
     85
    6586    return;
    6687}
     
    79100
    80101    // find the extname:
    81     char *extNameVal = psMetadataLookupPtr (&status, header, extNameKey);
     102    char *extNameVal = psMetadataLookupStr (&status, header, extNameKey);
    82103           
    83104    extNameWord = extNameVal;
     
    157178    if (!strcasecmp (outputMode, "SPLIT")) {
    158179        outputFile = psphotSplitName (header);
    159     } else {
    160         // construct appropriate extname
    161         psAbort ("psphotOutput", "programming error");
    162     }
    163    
    164     fprintf (stderr, "output file: %s\n", outputFile);
    165     return;
    166 
    167     char *psfFile    = psMetadataLookupPtr (&status, arguments, "PSF_OUTPUT_FILE");
    168     char *psfSample  = psMetadataLookupPtr (&status, arguments, "PSF_SAMPLE_FILE");
    169     char *residImage = psMetadataLookupPtr (&status, arguments, "RESID_IMAGE");
     180    }
     181
     182    char *psfFile    = psMetadataLookupStr (&status, arguments, "PSF_OUTPUT_FILE");
     183    char *psfSample  = psMetadataLookupStr (&status, arguments, "PSF_SAMPLE_FILE");
     184    char *residImage = psMetadataLookupStr (&status, arguments, "RESID_IMAGE");
    170185
    171186    if (psfSample != NULL) psphotSamplePSFs (psf, readout->image, psfSample);
     
    183198    if (outputFormat == NULL) {
    184199        psLogMsg ("output", 3, "no data output format selected");
     200        psFree (outputFile);
    185201        return;
    186202    }
    187203    if (!strcasecmp (outputFormat, "SX")) {
    188204        pmSourcesWriteSX (sources, outputFile);
     205        psFree (outputFile);
    189206        return;
    190207    }
    191208    if (!strcasecmp (outputFormat, "OBJ")) {
    192209        pmSourcesWriteOBJ (sources, outputFile);
     210        psFree (outputFile);
    193211        return;
    194212    }
    195213    if (!strcasecmp (outputFormat, "CMP")) {
    196214        pmSourcesWriteCMP (sources, outputFile, header);
     215        psFree (outputFile);
    197216        return;
    198217    }
    199218    if (!strcasecmp (outputFormat, "CMF")) {
    200219        pmSourcesWriteCMF (sources, outputFile, header);
     220        psFree (outputFile);
    201221        return;
    202222    }
    203223    if (!strcasecmp (outputFormat, "TEXT")) {
    204224        pmSourcesWriteText (sources, outputFile);
     225        psFree (outputFile);
    205226        return;
    206227    }
     
    610631    }
    611632    fclose (f);
     633    psFree (empty);
    612634    return true;
    613635}
     
    746768
    747769    // optional dump of all rough source data
    748     char *output = psMetadataLookupPtr (&status, config, "MOMENTS_OUTPUT_FILE");
     770    char *output = psMetadataLookupStr (&status, config, "MOMENTS_OUTPUT_FILE");
    749771    if (!status) return false;
    750772    if (output == NULL) return false;
     
    752774
    753775    pmMomentsWriteText (sources, output);
    754     psFree (output);
    755776    return true;
    756777}
Note: See TracChangeset for help on using the changeset viewer.