Может ли gnuplot знать, какая ОС является хостом, кроме как через переменные среды? - PullRequest
0 голосов
/ 06 декабря 2018

Мне нужно разработать скрипт в gnuplot, который будет использоваться как под Windows, так и под Linux.

Чтобы решить, какая у меня ОС, я написал

OS=system("echo %OS%")
print "OS = ", OS
if (OS eq "Windows_NT") \
  ...; \
else \
  ...;

, и она сработала.

Есть ли альтернативный способ, свойственный gnuplot, который не зависит от переменных среды?

1 Ответ

0 голосов
/ 06 декабря 2018

вы можете использовать внутреннюю переменную GPVAL_SYSNAME:

gnuplot> print GPVAL_SYSNAME
Windows_NT-10.0

, которая в Windows инициализирована в eval.c как:

ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&osvi);
snprintf(s, 30, "Windows_NT-%ld.%ld", osvi.dwMajorVersion, osvi.dwMinorVersion);
fill_gpval_string("GPVAL_SYSNAME", s);

Для проверки запуска этой строкис помощью «Windows» можно использовать внутреннюю функцию strstrt Gnuplot как:

if (strstrt(GPVAL_SYSNAME, "Windows") == 1) {
   ....
}

Кроме того, есть также GPVAL_MACHINE:

gnuplot> print GPVAL_MACHINE
x86_64
...