From dd92be296cc9ccc63545fbe8a1582e69f98983b5 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 27 Jan 2022 03:24:05 -0800 Subject: [PATCH] SCP: Add host system processor name to SHOW VERSION output --- scp.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/scp.c b/scp.c index 8e493cd7..2b23cebe 100644 --- a/scp.c +++ b/scp.c @@ -6629,6 +6629,8 @@ if (flag) { char osversion[PATH_MAX+1] = ""; char tarversion[PATH_MAX+1] = ""; char curlversion[PATH_MAX+1] = ""; + char wmicpath[PATH_MAX+1] = ""; + char proc_name[CBUFSIZE] = ""; FILE *f; if ((f = _popen ("ver", "r"))) { @@ -6643,6 +6645,23 @@ if (flag) { fprintf (st, "\n OS: %s", osversion); fprintf (st, "\n Architecture: %s%s%s, Processors: %s", arch, proc_arch3264 ? " on " : "", proc_arch3264 ? proc_arch3264 : "", procs); fprintf (st, "\n Processor Id: %s, Level: %s, Revision: %s", proc_id ? proc_id : "", proc_level ? proc_level : "", proc_rev ? proc_rev : ""); + strlcpy (wmicpath, sim_get_tool_path ("wmic"), sizeof (wmicpath)); + if (wmicpath[0]) { + strlcat (wmicpath, " cpu get name", sizeof (wmicpath)); + if ((f = _popen (wmicpath, "r"))) { + memset (proc_name, 0, sizeof(proc_name)); + do { + if (NULL == fgets (proc_name, sizeof(proc_name)-1, f)) + break; + sim_trim_endspc (proc_name); + if (0 == strcmp (proc_name, "Name")) /* skip header line */ + memset (proc_name, 0, sizeof (proc_name)); + } while (proc_name[0] == '\0'); + _pclose (f); + } + if (proc_name[0] != '\0') + fprintf (st, "\n Processor Name: %s", proc_name); + } strlcpy (os_type, "Windows", sizeof (os_type)); strlcpy (tarversion, _get_tool_version ("tar"), sizeof (tarversion)); if (tarversion[0]) @@ -6677,6 +6696,41 @@ if (flag) { } while (os_type[0] == '\0'); pclose (f); } +#if (defined(__linux) || defined(__linux__)) + if ((f = popen ("lscpu 2>/dev/null | grep 'Model name:'", "r"))) { + char proc_name[PATH_MAX+1] = ""; + + memset (proc_name, 0, sizeof (proc_name)); + do { + if (NULL == fgets (proc_name, sizeof (proc_name)-1, f)) + break; + sim_trim_endspc (proc_name); + if (0 == memcmp ("Model name:", proc_name, 11)) { + size_t offset = 11 + strspn (proc_name + 11, " "); + memmove (proc_name, &proc_name[offset], 1 + strlen (&proc_name[offset])); + } + } while (proc_name[0] == '\0'); + pclose (f); + if (proc_name[0] != '\0') { + + fprintf (st, "\n Processor Name: %s", proc_name); + } + } +#elif defined (__APPLE__) + if ((f = popen ("sysctl -n machdep.cpu.brand_string 2>/dev/null", "r"))) { + char proc_name[PATH_MAX+1] = ""; + + memset (proc_name, 0, sizeof (proc_name)); + do { + if (NULL == fgets (proc_name, sizeof (proc_name)-1, f)) + break; + sim_trim_endspc (proc_name); + } while (proc_name[0] == '\0'); + pclose (f); + if (proc_name[0] != '\0') + fprintf (st, "\n Processor Name: %s", proc_name); + } +#endif strlcpy (tarversion, _get_tool_version ("tar"), sizeof (tarversion)); if (tarversion[0]) fprintf (st, "\n tar tool: %s", tarversion);