if (NSS_Shutdown() != SECSuccess) { exit(1); }
int main(int argc, char **argv){    PLOptState *optstate;    PLOptStatus optstatus;    PRUint32 flags = 0;    PRBool             useCommandLinePassword = PR_FALSE;    Error ret;    SECStatus rv;    char * dbString = NULL;    int i;    progName = strrchr(argv[0], '/');    if (!progName)        progName = strrchr(argv[0], '\\');    progName = progName ? progName+1 : argv[0];    optstate = PL_CreateOptState(argc, argv, "rfd:h");    while ((optstatus = PL_GetNextOpt(optstate)) == PL_OPT_OK) {        switch (optstate->option) {          case 'h':          default : Usage(progName);                    break;          case 'r': flags |= NSS_INIT_READONLY;         break;          case 'f': flags |= NSS_INIT_FORCEOPEN;        break;          case 'd':                dbDir = PORT_Strdup(optstate->value);                break;        }    }    if (optstatus == PL_OPT_BAD)        Usage(progName);    if (!dbDir) {        dbDir = SECU_DefaultSSLDir(); /* Look in $SSL_DIR */    }    dbDir = SECU_ConfigDirectory(dbDir);    PR_fprintf(PR_STDERR, "dbdir selected is %s\n\n", dbDir);    if( dbDir[0] == '\0') {        PR_fprintf(PR_STDERR, errStrings[DIR_DOESNT_EXIST_ERR], dbDir);        ret= DIR_DOESNT_EXIST_ERR;        goto loser;    }    PR_Init( PR_USER_THREAD, PR_PRIORITY_NORMAL, 0);    /* get the status of the directory and databases and output message */    if(PR_Access(dbDir, PR_ACCESS_EXISTS) != PR_SUCCESS) {        PR_fprintf(PR_STDERR, errStrings[DIR_DOESNT_EXIST_ERR], dbDir);    } else if(PR_Access(dbDir, PR_ACCESS_READ_OK) != PR_SUCCESS) {        PR_fprintf(PR_STDERR, errStrings[DIR_NOT_READABLE_ERR], dbDir);    } else {        if( !( flags & NSS_INIT_READONLY ) &&                PR_Access(dbDir, PR_ACCESS_WRITE_OK) != PR_SUCCESS) {            PR_fprintf(PR_STDERR, errStrings[DIR_NOT_WRITEABLE_ERR], dbDir);        }        for (i=0;i<3;i++) {            dbString=PR_smprintf("%s/%s",dbDir,dbName[i]);            PR_fprintf(PR_STDOUT, "database checked is %s\n",dbString);            if(PR_Access(dbString, PR_ACCESS_EXISTS) != PR_SUCCESS) {                PR_fprintf(PR_STDERR, errStrings[FILE_DOESNT_EXIST_ERR],                                       dbString);            } else if(PR_Access(dbString, PR_ACCESS_READ_OK) != PR_SUCCESS) {                PR_fprintf(PR_STDERR, errStrings[FILE_NOT_READABLE_ERR],                                       dbString);            } else if( !( flags & NSS_INIT_READONLY ) &&                    PR_Access(dbString, PR_ACCESS_WRITE_OK) != PR_SUCCESS) {                PR_fprintf(PR_STDERR, errStrings[FILE_NOT_WRITEABLE_ERR],                                       dbString);            }        }    }    rv = NSS_Initialize(SECU_ConfigDirectory(dbDir), dbprefix, dbprefix,                   secmodName, flags);    if (rv != SECSuccess) {        SECU_PrintPRandOSError(progName);        ret=NSS_INITIALIZE_FAILED_ERR;    } else {        ret=SUCCESS;    }loser:    return ret;}