NSS_NoDB_Init(NULL);
rv = NSS_NoDB_Init(NULL);	 if (rv != SECSuccess) { SECU_PrintPRandOSError(progName); return -1; }
int main(int argc, char **argv){    char *progName;    int option;    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;    NSS_NoDB_Init(NULL);	/* XXX */	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;}