diff options
author | Jan200101 <sentrycraft123@gmail.com> | 2020-10-12 20:32:01 +0200 |
---|---|---|
committer | Jan200101 <sentrycraft123@gmail.com> | 2020-10-12 20:32:01 +0200 |
commit | e9eed79c3691e145c3c8cdb0cb07bbb2b9275874 (patch) | |
tree | 1c2c44c926bb7d1d979e7ecc424e9f9aa823b53a /src/wine.c | |
parent | 7b64e547e3eccc4aa4515de2b86b39e16246d4ee (diff) | |
download | polecat-e9eed79c3691e145c3c8cdb0cb07bbb2b9275874.tar.gz polecat-e9eed79c3691e145c3c8cdb0cb07bbb2b9275874.zip |
append system arch to wine version if wine version was not found
Diffstat (limited to 'src/wine.c')
-rw-r--r-- | src/wine.c | 21 |
1 files changed, 19 insertions, 2 deletions
@@ -8,6 +8,7 @@ #include <linux/limits.h> #include <sys/types.h> #include <sys/stat.h> +#include <sys/utsname.h> #include <dirent.h> #include "wine.h" @@ -137,15 +138,31 @@ int wine_run(int argc, char** argv) strncat(winepath, "/", sizeof(winepath) - strlen(winepath) - 1); strncat(winepath, winever, sizeof(winepath) - strlen(winepath) - 1); - strncat(winepath, "/bin/wine", sizeof(winepath) - strlen(winepath) - 1); + + if (!isDir(winepath)) + { + + struct utsname buffer; + + if (!uname(&buffer)) + { + strncat(winepath, "-", sizeof(winepath) - strlen(winepath) - 1); + strncat(winepath, buffer.machine, sizeof(winepath) - strlen(winepath) - 1); + } + } + + strncat(winepath, WINEBIN, sizeof(winepath) - strlen(winepath) - 1); if (isFile(winepath)) { for (int i = 2; i < argc; ++i) { - strncat(winepath, " ", sizeof(winepath) - strlen(winepath) - 1); + strncat(winepath, " \"", sizeof(winepath) - strlen(winepath) - 1); strncat(winepath, argv[i], sizeof(winepath) - strlen(winepath) - 1); + strncat(winepath, "\"", sizeof(winepath) - strlen(winepath) - 1); } + + puts(winepath); return system(winepath); } else |