diff --git a/dlls/ntdll/misc.c b/dlls/ntdll/misc.c index 8bd4eb7..4b4c318 100644 --- a/dlls/ntdll/misc.c +++ b/dlls/ntdll/misc.c @@ -60,6 +60,14 @@ const char * CDECL NTDLL_wine_get_version(void) } /********************************************************************* + * wine_get_patches (NTDLL.@) + */ +const void * CDECL NTDLL_wine_get_patches(void) +{ + return wine_get_patches(); +} + +/********************************************************************* * wine_get_build_id (NTDLL.@) */ const char * CDECL NTDLL_wine_get_build_id(void) diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec index 70bf94f..42eddcf 100644 --- a/dlls/ntdll/ntdll.spec +++ b/dlls/ntdll/ntdll.spec @@ -1410,6 +1410,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/libs/wine/config.c b/libs/wine/config.c index a273502..5fa0cd5 100644 --- a/libs/wine/config.c +++ b/libs/wine/config.c @@ -478,6 +478,##PATCH_LINES## @@ const char *wine_get_version(void) return PACKAGE_VERSION; } +struct wine_patch { + const char *hash; + const char *author; + const char *title; +} wine_patch_data[] = { ##PATCH_DATA## + { NULL, NULL, NULL } +}; + +/* return the applied non-standard patches */ +const void * wine_get_patches(void) +{ + return &wine_patch_data[0]; +} + /* return the build id string */ const char *wine_get_build_id(void) { diff --git a/libs/wine/wine.def b/libs/wine/wine.def index ed315bd..5b42029 100644 --- a/libs/wine/wine.def +++ b/libs/wine/wine.def @@ -83,6 +83,7 @@ EXPORTS wine_get_sortkey wine_get_user_name wine_get_version + wine_get_patches wine_init wine_init_argv0_path wine_is_dbcs_leadbyte diff --git a/libs/wine/wine.map b/libs/wine/wine.map index 2159fac..7cb2918 100644 --- a/libs/wine/wine.map +++ b/libs/wine/wine.map @@ -90,6 +90,7 @@ WINE_1.0 wine_get_ss; wine_get_user_name; wine_get_version; + wine_get_patches; wine_init; wine_init_argv0_path; wine_is_dbcs_leadbyte; diff --git a/loader/main.c b/loader/main.c index ac67290..516fd82 100644 --- a/loader/main.c +++ b/loader/main.c @@ -79,6 +79,12 @@ static inline void reserve_area( void *addr, size_t size ) #endif /* __APPLE__ */ +struct wine_patch { + const char *hash; + const char *author; + const char *title; +}; + /*********************************************************************** * check_command_line * @@ -89,7 +96,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) { @@ -106,6 +114,16 @@ 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 wine_patch *wine_patch_data = wine_get_patches(); + for(; wine_patch_data->hash != NULL; wine_patch_data++) + { + printf( "%s :: %s :: %s\n", wine_patch_data->hash, wine_patch_data->author, + wine_patch_data->title ); + } + exit(0); + } } diff --git a/include/wine/library.h b/include/wine/library.h index 242bb69..aa9e585 100644 --- a/include/wine/library.h +++ b/include/wine/library.h @@ -43,6 +43,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 );