[RFC PATCH 4/5] wineboot: Disable prefix update if overlays are used.

Zebediah Figura z.figura12 at gmail.com
Mon Mar 30 10:09:13 CDT 2020


On 3/30/20 7:24 AM, Rémi Bernon wrote:
> Updating the prefix with overlays enabled creates all sort of yet
> unsolved problems, and will update the upper dir, defeating the purpose
> of using overlays.
> ---

Presumably you only want to skip the parts that write files here,
though. Otherwise the registry won't get updated.

>  programs/wineboot/wineboot.c | 18 +++++++++++++++++-
>  1 file changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
> index 2463b7a0e050..53a634a70614 100644
> --- a/programs/wineboot/wineboot.c
> +++ b/programs/wineboot/wineboot.c
> @@ -86,6 +86,7 @@ static const BOOL is_64bit = sizeof(void *) > sizeof(int);
>  static const WCHAR winebuilddirW[] = {'W','I','N','E','B','U','I','L','D','D','I','R',0};
>  static const WCHAR winedatadirW[] = {'W','I','N','E','D','A','T','A','D','I','R',0};
>  static const WCHAR wineconfigdirW[] = {'W','I','N','E','C','O','N','F','I','G','D','I','R',0};
> +static const WCHAR wineprefix_overlaysW[] = {'W','I','N','E','P','R','E','F','I','X','_','O','V','E','R','L','A','Y','S',0};
>  
>  /* retrieve the path to the wine.inf file */
>  static WCHAR *get_wine_inf_path(void)
> @@ -138,12 +139,21 @@ static BOOL update_timestamp( const WCHAR *config_dir, unsigned long timestamp )
>      if ((fd = _wopen( timestampW, O_WRONLY | O_CREAT | O_TRUNC, 0666 )) == -1) goto done;
>  
>      count = sprintf( buffer, "%lu\n", timestamp );
> +    ret = TRUE;
> +
> +    if (_wgetenv( wineprefix_overlaysW ))
> +    {
> +        WINE_MESSAGE( "wine: overlays are enabled, disabling prefix updates\n" );
> +        count = sprintf( buffer, "disable\n" );
> +        ret = FALSE;
> +    }
> +
>      if (write( fd, buffer, count ) != count)
>      {
>          WINE_WARN( "failed to update timestamp in %s\n", debugstr_w(timestampW) );
>          chsize( fd, 0 );
> +        ret = FALSE;
>      }
> -    else ret = TRUE;
>  
>  done:
>      if (fd != -1) close( fd );
> @@ -1462,6 +1472,12 @@ static void update_wineprefix( BOOL force )
>      fstat( fd, &st );
>      close( fd );
>  
> +    if (_wgetenv( wineprefix_overlaysW ))
> +    {
> +        WINE_MESSAGE( "wine: overlays are enabled, not updating prefix\n" );
> +        force = FALSE;
> +    }
> +
>      if (update_timestamp( config_dir, st.st_mtime ) || force)
>      {
>          HANDLE process;
> 



More information about the wine-devel mailing list