mirror of
				https://github.com/vlang/v.git
				synced 2023-08-10 21:13:21 +03:00 
			
		
		
		
	os: cleanup the output of os.uname() on windows (#17066)
* os: (WinOS) mimic current practices of `busybox` and `coreutils` * os: trim any possible surounding whitespace
This commit is contained in:
		| @@ -458,16 +458,24 @@ pub fn debugger_present() bool { | |||||||
| 	return C.IsDebuggerPresent() | 	return C.IsDebuggerPresent() | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // `uname` is not standardized, so mimic current practices | ||||||
|  | // busybox-v1.35.0 * `busybox uname -a` => "Windows_NT HOSTNAME 10.0 19044 x86_64 MS/Windows" | ||||||
|  | // rust/coreutils-v0.0.17 * `coreutils uname -a` => `Windows_NT HOSTNAME 10.0 19044 x86_64 MS/Windows (Windows 10)` | ||||||
|  | // Python3 => `uname_result(system='Windows', node='HOSTNAME', release='10', version='10.0.19044', machine='AMD64')` | ||||||
|  | // ref: [NT Version Info](https://en.wikipedia.org/wiki/Windows_NT) @@ <https://archive.is/GnnvF> | ||||||
|  | // ref: [NT Version Info (detailed)](https://en.wikipedia.org/wiki/Comparison_of_Microsoft_Windows_versions#NT_Kernel-based_2) | ||||||
| pub fn uname() Uname { | pub fn uname() Uname { | ||||||
| 	sys_and_ver := execute('cmd /c ver').output.split('[') |  | ||||||
| 	nodename := hostname() | 	nodename := hostname() | ||||||
| 	machine := getenv('PROCESSOR_ARCHITECTURE') | 	// ToDO: environment variables have low reliability; check for another quick way | ||||||
|  | 	machine := getenv('PROCESSOR_ARCHITECTURE') // * note: 'AMD64' == 'x86_64' (not standardized, but 'x86_64' use is more common; but, python == 'AMD64') | ||||||
|  | 	version_info := execute('cmd /d/c ver').output | ||||||
|  | 	version_n := (version_info.split(' '))[3].replace(']', '').trim_space() | ||||||
| 	return Uname{ | 	return Uname{ | ||||||
| 		sysname: sys_and_ver[0].trim_space() | 		sysname: 'Windows_NT' // as of 2022-12, WinOS has only two possible kernels ~ 'Windows_NT' or 'Windows_9x' | ||||||
| 		nodename: nodename | 		nodename: nodename | ||||||
| 		release: sys_and_ver[1].replace(']', '') | 		machine: machine.trim_space() | ||||||
| 		version: sys_and_ver[0] + '[' + sys_and_ver[1] | 		release: (version_n.split('.'))[0..2].join('.').trim_space() // Major.minor-only == "primary"/release version | ||||||
| 		machine: machine | 		version: (version_n.split('.'))[2].trim_space() | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Roy Ivy III
					Roy Ivy III