Owen Rudge : winecfg: Add /v parameter to display current Windows version.
Alexandre Julliard
julliard at winehq.org
Wed Sep 2 15:24:33 CDT 2020
Module: wine
Branch: master
Commit: 87f41e6b408dd01055ff6a378b90d089d61ec370
URL: https://source.winehq.org/git/wine.git/?a=commit;h=87f41e6b408dd01055ff6a378b90d089d61ec370
Author: Owen Rudge <orudge at codeweavers.com>
Date: Mon Aug 31 23:11:39 2020 +0100
winecfg: Add /v parameter to display current Windows version.
This patch allows winecfg to be called with the "/v" parameter to
display the current Windows version. "/v winver" will continue to allow
the Windows version to be updated.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49242
Signed-off-by: Owen Rudge <orudge at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/winecfg/appdefaults.c | 24 +++++++++++++++++++++++-
programs/winecfg/main.c | 9 +++++++--
programs/winecfg/winecfg.h | 1 +
3 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/programs/winecfg/appdefaults.c b/programs/winecfg/appdefaults.c
index dd3480cd63..8068941ff8 100644
--- a/programs/winecfg/appdefaults.c
+++ b/programs/winecfg/appdefaults.c
@@ -28,6 +28,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
+#include "wine/heap.h"
#include "wine/unicode.h"
#include "winecfg.h"
#include "resource.h"
@@ -74,6 +75,8 @@ static const struct win_version win_versions[] =
#endif
};
+#define DEFAULT_WIN_VERSION "win7"
+
static const char szKey9x[] = "Software\\Microsoft\\Windows\\CurrentVersion";
static const char szKeyNT[] = "Software\\Microsoft\\Windows NT\\CurrentVersion";
static const char szKeyProdNT[] = "System\\CurrentControlSet\\Control\\ProductOptions";
@@ -146,7 +149,7 @@ static void update_comboboxes(HWND dialog)
return;
}
if (ver != -1) winver = strdupA( win_versions[ver].szVersion );
- else winver = strdupA("win7");
+ else winver = strdupA(DEFAULT_WIN_VERSION);
}
WINE_TRACE("winver is %s\n", winver);
@@ -498,6 +501,25 @@ void print_windows_versions(void)
}
}
+void print_current_winver(void)
+{
+ char *winver = get_reg_key(config_key, keypath(""), "Version", "");
+
+ if (!winver || !winver[0])
+ {
+ int ver = get_registry_version();
+
+ if (ver == -1)
+ printf(DEFAULT_WIN_VERSION "\n");
+ else
+ printf("%s\n", win_versions[ver].szVersion);
+ }
+ else
+ printf("%s\n", winver);
+
+ heap_free(winver);
+}
+
static void on_winver_change(HWND dialog)
{
int selection = SendDlgItemMessageW(dialog, IDC_WINVER, CB_GETCURSEL, 0, 0);
diff --git a/programs/winecfg/main.c b/programs/winecfg/main.c
index f29e2f036f..9b30ed6e8e 100644
--- a/programs/winecfg/main.c
+++ b/programs/winecfg/main.c
@@ -187,9 +187,13 @@ ProcessCmdLine(LPSTR lpCmdLine)
{
return -1;
}
- if ((lpCmdLine[1] == 'V' || lpCmdLine[1] == 'v') && (lstrlenA(lpCmdLine) > 4))
+ if (lpCmdLine[1] == 'V' || lpCmdLine[1] == 'v')
{
- return set_winver_from_string(&lpCmdLine[3]) ? 0 : 1;
+ if (lstrlenA(lpCmdLine) > 4)
+ return set_winver_from_string(&lpCmdLine[3]) ? 0 : 1;
+
+ print_current_winver();
+ return 0;
}
if (lpCmdLine[1] == '?')
@@ -197,6 +201,7 @@ ProcessCmdLine(LPSTR lpCmdLine)
printf("Usage: winecfg [options]\n\n");
printf("Options:\n");
printf(" [no option] Launch the graphical version of this program.\n");
+ printf(" /v Display the current global Windows version.\n");
printf(" /v version Set global Windows version to 'version'.\n");
printf(" /? Display this information and exit.\n\n");
printf("Valid versions for 'version':\n\n");
diff --git a/programs/winecfg/winecfg.h b/programs/winecfg/winecfg.h
index 9dd39c51c3..d022cd3d68 100644
--- a/programs/winecfg/winecfg.h
+++ b/programs/winecfg/winecfg.h
@@ -91,6 +91,7 @@ INT_PTR CALLBACK AboutDlgProc (HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
/* Windows version management */
BOOL set_winver_from_string(const char *version);
+void print_current_winver(void);
void print_windows_versions(void);
/* Drive management */
More information about the wine-cvs
mailing list