IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 5, 2010, 9:19:22 PM (15 years ago)
Author:
eugene
Message:

add support for compressed metadata files

File:
1 edited

Legend:

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

    r24187 r29925  
    2626void dump(const char *filename,     // Filename to which to dump
    2727          const char *description,  // Description of what's being dumped
    28           psMetadata *md            // Metadata to dump
    29           )
     28          psMetadata *md,           // Metadata to dump
     29          const char *compressMode
     30    )
    3031{
    3132    if (!filename || strlen(filename) == 0) {
     
    3839            die(PS_EXIT_SYS_ERROR);
    3940        }
    40         fprintf(stdout, "%s", string);
     41
     42        if (compressMode) {
     43            if (strlen(compressMode) > 2) {
     44                psErrorStackPrint(stderr, "invalid compression options %s!\n", compressMode);
     45                die(PS_EXIT_CONFIG_ERROR);
     46            }
     47            char modeString[4];
     48            snprintf (modeString, 4, "w%s", compressMode);
     49
     50            gzFile file = gzdopen (STDOUT_FILENO, modeString);
     51            if (file == Z_NULL) {
     52                psErrorStackPrint(stderr, "Failed to open file\n");
     53                die(PS_EXIT_SYS_ERROR);
     54            }
     55            int nbytes = gzwrite (file, string, strlen(string));
     56            if (nbytes != strlen(string)) {
     57                psErrorStackPrint(stderr, "Failed to write contents of configuration file %s", filename);
     58                psFree(string);
     59                gzclose(file);
     60                die(PS_EXIT_SYS_ERROR);
     61            }
     62            psFree(string);
     63            if (gzclose(file) != Z_OK) {
     64                psErrorStackPrint(stderr, "Failed to close file, %s\n", filename);
     65                die(PS_EXIT_SYS_ERROR);
     66            }
     67        } else {
     68            fprintf(stdout, "%s", string);
     69        }
    4170        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);
     71    } else {
     72        if (!psMetadataConfigWrite(md, filename, compressMode)) {
     73            psErrorStackPrint(stderr, "Can't write %s to %s\n", description, filename);
     74            die(PS_EXIT_SYS_ERROR);
     75        }
    4576    }
    4677}
     
    6293    arguments = psMetadataAlloc();
    6394    psMetadataAddStr(arguments, PS_LIST_TAIL, "-file", 0, "FITS file to use for camera determination", NULL);
     95    psMetadataAddStr(arguments, PS_LIST_TAIL, "-compress", 0, "output compression mode", NULL);
     96    psMetadataAddBool(arguments, PS_LIST_TAIL, "-z", 0, "default compression", false);
    6497    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-user", 0, "Filename for user configuration", NULL);
    6598    psMetadataAddStr(arguments, PS_LIST_TAIL, "-dump-site", 0, "Filename for site configuration", NULL);
     
    84117        psArgumentHelp(arguments);
    85118        die(PS_EXIT_CONFIG_ERROR);
     119    }
     120
     121    const char *defaultCompressMode = "7f";
     122    const char *compressMode = psMetadataLookupStr(NULL, arguments, "-compress"); // compression
     123    bool defaultCompression = psMetadataLookupBool(NULL, arguments, "-z"); // compression?
     124    if (!compressMode && defaultCompression) {
     125        compressMode = defaultCompressMode;
    86126    }
    87127
     
    122162
    123163    const char *userName = psMetadataLookupStr(NULL, arguments, "-dump-user"); // User filename
    124     dump(userName, "user configuration", config->user);
     164    dump(userName, "user configuration", config->user, compressMode);
    125165
    126166    const char *siteName = psMetadataLookupStr(NULL, arguments, "-dump-site"); // Site filename
    127     dump(siteName, "site configuration", config->site);
     167    dump(siteName, "site configuration", config->site, compressMode);
    128168
    129169    const char *systemName = psMetadataLookupStr(NULL, arguments, "-dump-system"); // System filename
    130     dump(systemName, "system configuration", config->system);
     170    dump(systemName, "system configuration", config->system, compressMode);
    131171
    132172    const char *camName = psMetadataLookupStr(NULL, arguments, "-dump-camera"); // Camera filename
    133     dump(camName, "camera configuration", config->camera);
     173    dump(camName, "camera configuration", config->camera, compressMode);
    134174
    135175    const char *formatName = psMetadataLookupStr(NULL, arguments, "-dump-format"); // Format filename
    136     dump(formatName, "camera format", config->format);
     176    dump(formatName, "camera format", config->format, compressMode);
    137177
    138178    const char *recipesName = psMetadataLookupStr(NULL, arguments, "-dump-recipes"); // Recipes filename
    139     dump(recipesName, "recipes", config->recipes);
     179    dump(recipesName, "recipes", config->recipes, compressMode);
    140180
    141181    recipeArgs = psMetadataLookupMetadata(NULL, arguments, "-dump-recipe");
     
    148188        }
    149189        const char *recipeFile = psMetadataLookupStr(NULL, recipeArgs, "filename"); // Filename for recipe
    150         dump(recipeFile, "recipe", recipe);
     190        dump(recipeFile, "recipe", recipe, compressMode);
    151191    }
    152192
Note: See TracChangeset for help on using the changeset viewer.