NSS_Init(SECU_ConfigDirectory(NULL));
rv = NSS_Init(SECU_ConfigDirectory(NULL)); if (rv != SECSuccess) { SECU_PrintPRandOSError(progName); return -1; }
main(int argc, char **argv){    char *progName;    FILE *outFile;    PRFileDesc *inFile;    PLOptState *optstate;    PLOptStatus status;    progName = strrchr(argv[0], '/');    progName = progName ? progName+1 : argv[0];    inFile = NULL;    outFile = NULL;    /*     * Parse command line arguments     */    optstate = PL_CreateOptState(argc, argv, "d:i:o:");    while ((status = PL_GetNextOpt(optstate)) == PL_OPT_OK) {	switch (optstate->option) {	  case 'd':	    SECU_ConfigDirectory(optstate->value);	    break;	  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;	  default:	    Usage(progName);	    break;	}    }    if (status == PL_OPT_BAD)	Usage(progName);    if (!inFile) inFile = PR_STDIN;    if (!outFile) outFile = stdout;    /* Call the initialization routines */    PR_Init(PR_SYSTEM_THREAD, PR_PRIORITY_NORMAL, 1);    NSS_Init(SECU_ConfigDirectory(NULL));    if (DecodeAndPrintFile(outFile, inFile, progName)) {	SECU_PrintError(progName, "problem decoding data");	return -1;    }    return 0;}