Back to index

lightning-sunbird  0.9+nobinonly
Functions
derdump.c File Reference
#include "secutil.h"
#include "nss.h"
#include <errno.h>
#include "plgetopt.h"

Go to the source code of this file.

Functions

static void Usage (char *progName)
int main (int argc, char **argv)
 The Xalan testcases app.

Function Documentation

int main ( int  argc,
char **  argv 
)

The Xalan testcases app.

Definition at line 62 of file derdump.c.

{
    char *progName;
    FILE *outFile;
    PRFileDesc *inFile;
    SECItem der;
    SECStatus rv;
    int16 xp_error;
    PRBool raw = PR_FALSE;
    PLOptState *optstate;
    PLOptStatus status;

    progName = strrchr(argv[0], '/');
    progName = progName ? progName+1 : argv[0];

    /* Parse command line arguments */
    inFile = 0;
    outFile = 0;
    optstate = PL_CreateOptState(argc, argv, "i:o:r");
    while ((status = PL_GetNextOpt(optstate)) == PL_OPT_OK) {
       switch (optstate->option) {
         case 'i':
           inFile = PR_Open(optstate->value, PR_RDONLY, 0);
           if (!inFile) {
              fprintf(stderr, "%s: unable to open \"%s\" for reading\n",
                     progName, optstate->value);
              return -1;
           }
           break;

         case 'o':
           outFile = fopen(optstate->value, "w");
           if (!outFile) {
              fprintf(stderr, "%s: unable to open \"%s\" for writing\n",
                     progName, optstate->value);
              return -1;
           }
           break;

         case 'r':
           raw = PR_TRUE;
           break;

         default:
           Usage(progName);
           break;
       }
    }
       if (status == PL_OPT_BAD)
              Usage(progName);

    if (!inFile) inFile = PR_STDIN;
    if (!outFile) outFile = stdout;

    rv = NSS_NoDB_Init(NULL);      /* XXX */
    if (rv != SECSuccess) {
       SECU_PrintPRandOSError(progName);
       return -1;
    }

       rv = SECU_ReadDERFromFile(&der, inFile, PR_FALSE);
    if (rv == SECSuccess) {
       rv = DER_PrettyPrint(outFile, &der, raw);
       if (rv == SECSuccess)
           return 0;
    }

    xp_error = PORT_GetError();
    if (xp_error) {
       SECU_PrintError(progName, "error %d", xp_error);
    }
    if (errno) {
       SECU_PrintSystemError(progName, "errno=%d", errno);
    }
    return 1;
}

Here is the call graph for this function:

static void Usage ( char *  progName) [static]

Definition at line 48 of file derdump.c.

{
    fprintf(stderr,
           "Usage: %s [-r] [-i input] [-o output]\n",
           progName);
    fprintf(stderr, "%-20s For formatted items, dump raw bytes as well\n",
           "-r");
    fprintf(stderr, "%-20s Define an input file to use (default is stdin)\n",
           "-i input");
    fprintf(stderr, "%-20s Define an output file to use (default is stdout)\n",
           "-o output");
    exit(-1);
}

Here is the call graph for this function: