diff --git a/scp.c b/scp.c index 5af23a92..365d1850 100644 --- a/scp.c +++ b/scp.c @@ -4370,14 +4370,55 @@ if (flag) { fprintf (st, "\n\t\tOS: OpenVMS %s %s", arch, __VMS_VERSION); } #elif defined(_WIN32) - fprintf (st, "\n\t\tOS: Windows: "); - fflush (st); - system ("ver"); - system ("echo \t\t%PROCESSOR_IDENTIFIER% - %PROCESSOR_ARCHITECTURE%-%PROCESSOR_ARCHITEW6432%"); + if (1) { + char *proc_id = getenv ("PROCESSOR_IDENTIFIER"); + char *arch = getenv ("PROCESSOR_ARCHITECTURE"); + char *procs = getenv ("NUMBER_OF_PROCESSORS"); + char *proc_level = getenv ("PROCESSOR_LEVEL"); + char *proc_rev = getenv ("PROCESSOR_REVISION"); + char *proc_arch3264 = getenv ("PROCESSOR_ARCHITEW6432"); + char *tmpnam = _tempnam (NULL, "simh-ver"); + char vercmd[PATH_MAX+1]; + char osversion[PATH_MAX+1]; + FILE *f; + + sprintf (vercmd, "ver >%s", tmpnam); + system (vercmd); + f = fopen (tmpnam, "r"); + memset (osversion, 0, sizeof(osversion)); + do { + if (NULL == fgets (osversion, sizeof(osversion)-1, f)) + break; + sim_trim_endspc (osversion); + } while (osversion[0] == '\0'); + fclose (f); + remove (tmpnam); + free (tmpnam); + fprintf (st, "\n\t\tOS: %s", osversion); + fprintf (st, "\n\t\tArchitecture: %s%s%s, Processors: %s", arch, proc_arch3264 ? " on " : "", proc_arch3264 ? proc_arch3264 : "", procs); + fprintf (st, "\n\t\tProcessor Id: %s, Level: %s, Revision: %s", proc_id ? proc_id : "", proc_level ? proc_level : "", proc_rev ? proc_rev : ""); + } #else - fprintf (st, "\n\t\tOS: "); - fflush (st); - system ("uname -a"); + if (1) { + char *tmpnam = tempnam (NULL, "simh-ver"); + char vercmd[2*PATH_MAX+1]; + char osversion[2*PATH_MAX+1]; + FILE *f; + + sprintf (vercmd, "uname -a >%s", tmpnam); + system (vercmd); + f = fopen (tmpnam, "r"); + memset (osversion, 0, sizeof(osversion)); + do { + if (NULL == fgets (osversion, sizeof(osversion)-1, f)) + break; + sim_trim_endspc (osversion); + } while (osversion[0] == '\0'); + fclose (f); + remove (tmpnam); + free (tmpnam); + fprintf (st, "\n\t\tOS: %s", osversion); + } #endif } #if defined(SIM_GIT_COMMIT_ID)