IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12827


Ignore:
Timestamp:
Apr 12, 2007, 2:55:04 PM (19 years ago)
Author:
Paul Price
Message:

Adding option to dump a single recipe.
Adding option to dump to stdout.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppConfigDump/src/ppConfigDump.c

    r12809 r12827  
    44
    55#include <stdio.h>
     6#include <string.h>
    67#include <pslib.h>
    78#include <psmodules.h>
     
    2324}
    2425
     26void dump(const char *filename,     // Filename to which to dump
     27          const char *description,  // Description of what's being dumped
     28          psMetadata *md            // Metadata to dump
     29          )
     30{
     31    if (!filename || strlen(filename) == 0) {
     32        return;
     33    }
     34    if (strcmp(filename, "-") == 0) {
     35        psString string = psMetadataConfigFormat(md); // String to dump
     36        if (!string) {
     37            psErrorStackPrint(stderr, "Can't write %s to STDOUT\n", description);
     38            die(PS_EXIT_SYS_ERROR);
     39        }
     40        fprintf(stdout, "%s", string);
     41        psFree(string);
     42    } else if (!psMetadataConfigWrite(md, filename)) {
     43        psErrorStackPrint(stderr, "Can't write %s to %s\n", description, filename);
     44        die(PS_EXIT_SYS_ERROR);
     45    }
     46}
    2547
    2648int main(int argc, char *argv[])
     
    3961
    4062    arguments = psMetadataAlloc();
    41     psMetadataAddStr(arguments, PS_LIST_TAIL, "-file", 0,
    42                      "FITS file to use for camera determination", NULL);
    43     psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-site", 0,
    44                      "Filename to dump site configuration", NULL);
    45     psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-camera", 0,
    46                      "Filename to dump camera configuration", NULL);
    47     psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-format", 0,
    48                      "Filename to dump camera format", NULL);
    49     psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-recipes", 0,
    50                      "Filename to dump recipes", NULL);
     63    psMetadataAddStr(arguments, PS_LIST_TAIL, "-file", 0, "FITS file to use for camera determination", NULL);
     64    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-site", 0, "Filename for site configuration", NULL);
     65    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-camera", 0, "Filename for camera configuration", NULL);
     66    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-format", 0, "Filename for camera format", NULL);
     67    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-recipes", 0, "Filename for recipes", NULL);
     68    psMetadata *recipeArgs = psMetadataAlloc(); // Options for dumping a single recipe
     69    psMetadataAddStr(recipeArgs, PS_LIST_TAIL, "recipe", 0, "Name of recipe", NULL);
     70    psMetadataAddStr(recipeArgs, PS_LIST_TAIL, "filename", 0, "Filename", NULL);
     71    psMetadataAddMetadata(arguments, PS_LIST_TAIL, "-dump-recipe", 0, "Dump a single recipe", recipeArgs);
     72    psFree(recipeArgs);
    5173
    5274    if (argc == 1 || !psArgumentParse(arguments, &argc, argv)) {
    5375        fprintf(stderr, "\nPan-STARRS IPP configuration dumper\n\n");
    5476        fprintf(stderr, "Usage: %s [-file INPUT.fits] [-dump-site FILE.mdc]\n", argv[0]);
    55         fprintf(stderr, "       [-dump-camera FILE.mdc] [-dump-format FILE.mdc] [-dump-recipe FILE.mdc]\n");
     77        fprintf(stderr, "       [-dump-camera FILE.mdc] [-dump-format FILE.mdc] [-dump-recipes FILE.mdc]\n");
     78        fprintf(stderr, "       [-dump-recipe RECIPE FILE.mdc]\n");
     79        fprintf(stderr, "\n");
     80        fprintf(stderr, "       FILE.mdc may be ""-"", in which case the file is written to stdout.\n");
    5681        fprintf(stderr, "\n");
    5782        psArgumentHelp(arguments);
     
    86111
    87112    const char *siteName = psMetadataLookupStr(NULL, arguments, "-dump-site"); // Site filename
    88     if (siteName && !psMetadataConfigWrite(config->site, siteName)) {
    89         psErrorStackPrint(stderr, "Can't write site configuration to %s\n", siteName);
    90         die(PS_EXIT_SYS_ERROR);
    91     }
     113    dump(siteName, "site configuration", config->site);
    92114
    93115    const char *camName = psMetadataLookupStr(NULL, arguments, "-dump-camera"); // Camera filename
    94     if (camName && !psMetadataConfigWrite(config->camera, camName)) {
    95         psErrorStackPrint(stderr, "Can't write camera configuration to %s\n", camName);
    96         die(PS_EXIT_SYS_ERROR);
    97     }
     116    dump(camName, "camera configuration", config->camera);
    98117
    99118    const char *formatName = psMetadataLookupStr(NULL, arguments, "-dump-format"); // Format filename
    100     if (formatName && !psMetadataConfigWrite(config->format, formatName)) {
    101         psErrorStackPrint(stderr, "Can't write camera format to %s\n", formatName);
    102         die(PS_EXIT_SYS_ERROR);
    103     }
     119    dump(formatName, "camera format", config->format);
    104120
    105     const char *recipeName = psMetadataLookupStr(NULL, arguments, "-dump-recipes"); // Recipe filename
    106     if (recipeName && !psMetadataConfigWrite(config->recipes, recipeName)) {
    107         psErrorStackPrint(stderr, "Can't write recipes to %s\n", recipeName);
    108         die(PS_EXIT_SYS_ERROR);
     121    const char *recipesName = psMetadataLookupStr(NULL, arguments, "-dump-recipes"); // Recipes filename
     122    dump(recipesName, "recipes", config->recipes);
     123
     124    recipeArgs = psMetadataLookupMetadata(NULL, arguments, "-dump-recipe");
     125    const char *recipeName = psMetadataLookupStr(NULL, recipeArgs, "recipe"); // Name of recipe
     126    if (recipeName) {
     127        psMetadata *recipe = psMetadataLookupMetadata(NULL, config->recipes, recipeName); // Recipe desired
     128        if (!recipe) {
     129            psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to find recipe %s", recipeName);
     130            die(PS_EXIT_CONFIG_ERROR);
     131        }
     132        const char *recipeFile = psMetadataLookupStr(NULL, recipeArgs, "filename"); // Filename for recipe
     133        dump(recipeFile, "recipe", recipe);
    109134    }
    110135
    111136    die(PS_EXIT_SUCCESS);
    112137}
     138
Note: See TracChangeset for help on using the changeset viewer.