diff --git a/nsprpub/pr/tests/version.c b/nsprpub/pr/tests/version.c index c5c3013df312..ce73235a1277 100644 --- a/nsprpub/pr/tests/version.c +++ b/nsprpub/pr/tests/version.c @@ -32,6 +32,8 @@ PRIntn main(PRIntn argc, char **argv) PRLibrary *runtime = NULL; const char *library_name = NULL; const PRVersionDescription *version_info; + char buffer[100]; + PRExplodedTime exploded; PLOptState *opt = PL_CreateOptState(argc, argv, "d"); PRFileDesc *err = PR_GetSpecialFD(PR_StandardError); @@ -54,47 +56,46 @@ PRIntn main(PRIntn argc, char **argv) } PL_DestroyOptState(opt); - if (NULL == library_name) - PR_fprintf(err, "Usage: version [-d] {fully qualified library name}\n"); - else + if (NULL != library_name) { runtime = PR_LoadLibrary(library_name); - if (NULL == runtime) PL_FPrintError(err, "PR_LoadLibrary"); - else - { + if (NULL == runtime) { + PL_FPrintError(err, "PR_LoadLibrary"); + return 3; + } else { versionEntryPointType versionPoint = (versionEntryPointType) PR_FindSymbol(runtime, "libVersionPoint"); - if (NULL == versionPoint) PL_FPrintError(err, "PR_FindSymbol"); - else - { - char buffer[100]; - PRExplodedTime exploded; - version_info = versionPoint(); - (void)PR_fprintf(err, "Runtime library version information\n"); - PR_ExplodeTime( - version_info->buildTime, PR_GMTParameters, &exploded); - (void)PR_FormatTime( - buffer, sizeof(buffer), "%d %b %Y %H:%M:%S", &exploded); - (void)PR_fprintf(err, " Build time: %s GMT\n", buffer); - (void)PR_fprintf( - err, " Build time: %s\n", version_info->buildTimeString); - (void)PR_fprintf( - err, " %s V%u.%u.%u (%s%s%s)\n", - version_info->description, - version_info->vMajor, - version_info->vMinor, - version_info->vPatch, - (version_info->beta ? " beta " : ""), - (version_info->debug ? " debug " : ""), - (version_info->special ? " special" : "")); - (void)PR_fprintf(err, " filename: %s\n", version_info->filename); - (void)PR_fprintf(err, " security: %s\n", version_info->security); - (void)PR_fprintf(err, " copyright: %s\n", version_info->copyright); - (void)PR_fprintf(err, " comment: %s\n", version_info->comment); - rv = 0; - } - } - } + if (NULL == versionPoint) { + PL_FPrintError(err, "PR_FindSymbol"); + return 4; + } + version_info = versionPoint(); + } + } else + version_info = libVersionPoint(); /* NSPR's version info */ + + (void)PR_fprintf(err, "Runtime library version information\n"); + PR_ExplodeTime( + version_info->buildTime, PR_GMTParameters, &exploded); + (void)PR_FormatTime( + buffer, sizeof(buffer), "%d %b %Y %H:%M:%S", &exploded); + (void)PR_fprintf(err, " Build time: %s GMT\n", buffer); + (void)PR_fprintf( + err, " Build time: %s\n", version_info->buildTimeString); + (void)PR_fprintf( + err, " %s V%u.%u.%u (%s%s%s)\n", + version_info->description, + version_info->vMajor, + version_info->vMinor, + version_info->vPatch, + (version_info->beta ? " beta " : ""), + (version_info->debug ? " debug " : ""), + (version_info->special ? " special" : "")); + (void)PR_fprintf(err, " filename: %s\n", version_info->filename); + (void)PR_fprintf(err, " security: %s\n", version_info->security); + (void)PR_fprintf(err, " copyright: %s\n", version_info->copyright); + (void)PR_fprintf(err, " comment: %s\n", version_info->comment); + rv = 0; return rv; }