[RFC PATCH 2/5] wineboot: Move .update-timestamp to drive_c/.wine.

Rémi Bernon rbernon at codeweavers.com
Mon Mar 30 07:24:27 CDT 2020


When mounting an overlayfs to drive_c in the next patch, we need to
expose the lower layer timestamp to wineboot, so it doesn't update the
upper layer every time.
---
 programs/wineboot/wineboot.c | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c
index e1dbe6630221..913c967d4d4d 100644
--- a/programs/wineboot/wineboot.c
+++ b/programs/wineboot/wineboot.c
@@ -118,17 +118,12 @@ static WCHAR *get_wine_inf_path(void)
 /* update the timestamp if different from the reference time */
 static BOOL update_timestamp( const WCHAR *config_dir, unsigned long timestamp )
 {
-    static const WCHAR timestampW[] = {'\\','.','u','p','d','a','t','e','-','t','i','m','e','s','t','a','m','p',0};
+    static const WCHAR timestampW[] = {'C',':','\\','.','w','i','n','e','\\','u','p','d','a','t','e','-','t','i','m','e','s','t','a','m','p',0};
     BOOL ret = FALSE;
     int fd, count;
     char buffer[100];
-    WCHAR *file = HeapAlloc( GetProcessHeap(), 0, lstrlenW(config_dir) * sizeof(WCHAR) + sizeof(timestampW) );
 
-    if (!file) return FALSE;
-    lstrcpyW( file, config_dir );
-    lstrcatW( file, timestampW );
-
-    if ((fd = _wopen( file, O_RDWR )) != -1)
+    if ((fd = _wopen( timestampW, O_RDWR )) != -1)
     {
         if ((count = read( fd, buffer, sizeof(buffer) - 1 )) >= 0)
         {
@@ -142,20 +137,19 @@ static BOOL update_timestamp( const WCHAR *config_dir, unsigned long timestamp )
     else
     {
         if (errno != ENOENT) goto done;
-        if ((fd = _wopen( file, O_WRONLY | O_CREAT | O_TRUNC, 0666 )) == -1) goto done;
+        if ((fd = _wopen( timestampW, O_WRONLY | O_CREAT | O_TRUNC, 0666 )) == -1) goto done;
     }
 
     count = sprintf( buffer, "%lu\n", timestamp );
     if (write( fd, buffer, count ) != count)
     {
-        WINE_WARN( "failed to update timestamp in %s\n", debugstr_w(file) );
+        WINE_WARN( "failed to update timestamp in %s\n", debugstr_w(timestampW) );
         chsize( fd, 0 );
     }
     else ret = TRUE;
 
 done:
     if (fd != -1) close( fd );
-    HeapFree( GetProcessHeap(), 0, file );
     return ret;
 }
 
-- 
2.26.0.rc2




More information about the wine-devel mailing list