--- Urlader/urlader.c 2011/12/29 10:20:56 1.2 +++ Urlader/urlader.c 2011/12/29 10:39:34 1.3 @@ -35,6 +35,7 @@ #define u_close(handle) CloseHandle (handle) #define u_append(path,add) PathAppend (path, add) #define u_write(handle,data,len) (WriteFile (handle, data, len, &dword, 0) ? dword : -1) + #define u_sync() // use transacted I/O? #else @@ -58,6 +59,7 @@ #define u_close(handle) close (handle - 1) #define u_append(path,add) strcat (strcat (path, "/"), add) #define u_write(handle,data,len) write ((handle) - 1, data, len) + #define u_sync() sync () #endif @@ -372,6 +374,8 @@ if (u_chdir (datadir)) fatal ("unable to change to data directory"); + u_sync (); + if (u_rename (tmppath, execdir)) deltree (tmppath); // if move fails, delete new, assume other process created it independently }