From 63d2046a8f4388fbc7c12a07ae5f412fccc1b202 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 29 May 2014 23:43:45 +0200 Subject: [PATCH] loader: Add commandline option --patches to show the patch list. --- dlls/ntdll/misc.c | 8 ++++++++ dlls/ntdll/ntdll.spec | 1 + include/wine/library.h | 1 + libs/wine/config.c | 6 ++++++ libs/wine/wine.map | 1 + loader/main.c | 42 +++++++++++++++++++++++++++++++++++++++++- 6 files changed, 58 insertions(+), 1 deletion(-) diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index c29a1c26c26..8906e194272 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -60,6 +60,14 @@ const char * CDECL NTDLL_wine_get_version(void) return wine_get_version(); } +/********************************************************************* + * wine_get_patches (NTDLL.@) + */ +const void * CDECL NTDLL_wine_get_patches(void) +{ + return wine_get_patches(); +} + /********************************************************************* * wine_get_build_id (NTDLL.@) */ diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index e61a2578da5..52db67fd978 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -1571,6 +1571,7 @@ # Version @ cdecl wine_get_version() NTDLL_wine_get_version +@ cdecl wine_get_patches() NTDLL_wine_get_patches @ cdecl wine_get_build_id() NTDLL_wine_get_build_id @ cdecl wine_get_host_version(ptr ptr) NTDLL_wine_get_host_version diff --git a/include/wine/library.h b/include/wine/library.h index f338c4da190..1f992da6062 100644 --- a/include/wine/library.h +++ b/include/wine/library.h @@ -47,6 +47,7 @@ extern const char *wine_get_data_dir(void); extern const char *wine_get_server_dir(void); extern const char *wine_get_user_name(void); extern const char *wine_get_version(void); +extern const void *wine_get_patches(void); extern const char *wine_get_build_id(void); extern void wine_init_argv0_path( const char *argv0 ); extern void wine_exec_wine_binary( const char *name, char **argv, const char *env_var ); diff --git a/libs/wine/config.c b/libs/wine/config.c index 2a3314cbfda..5b66c063db6 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c @@ -504,6 +504,12 @@ const char *wine_get_version(void) return PACKAGE_VERSION; } +/* return the applied non-standard patches */ +const void *wine_get_patches(void) +{ + return NULL; +} + /* return the build id string */ const char *wine_get_build_id(void) { diff --git a/libs/wine/wine.map b/libs/wine/wine.map index 7ea849b908e..a7359ee7872 100644 --- a/libs/wine/wine.map +++ b/libs/wine/wine.map @@ -22,6 +22,7 @@ WINE_1.0 wine_get_server_dir; wine_get_user_name; wine_get_version; + wine_get_patches; wine_init; wine_init_argv0_path; wine_mmap_add_reserved_area; diff --git a/loader/main.c b/loader/main.c index 407c897892d..d97d6b28bf8 100644 --- a/loader/main.c +++ b/loader/main.c @@ -53,7 +53,8 @@ static void check_command_line( int argc, char *argv[] ) static const char usage[] = "Usage: wine PROGRAM [ARGUMENTS...] Run the specified program\n" " wine --help Display this help and exit\n" - " wine --version Output version information and exit"; + " wine --version Output version information and exit\n" + " wine --patches Output patch information and exit"; if (argc <= 1) { @@ -70,6 +71,45 @@ static void check_command_line( int argc, char *argv[] ) printf( "%s\n", wine_get_build_id() ); exit(0); } + if (!strcmp( argv[1], "--patches" )) + { + const struct + { + const char *author; + const char *subject; + int revision; + } + *next, *cur = wine_get_patches(); + + if (!cur) + { + fprintf( stderr, "Patchlist not available.\n" ); + exit(1); + } + + while (cur->author) + { + next = cur + 1; + while (next->author) + { + if (strcmp( cur->author, next->author )) break; + next++; + } + + printf( "%s (%d):\n", cur->author, (int)(next - cur) ); + while (cur < next) + { + printf( " %s", cur->subject ); + if (cur->revision != 1) + printf( " [rev %d]", cur->revision ); + printf( "\n" ); + cur++; + } + printf( "\n" ); + } + + exit(0); + } } -- 2.25.1