Recently, I have a problem installing a program and post a message in wine-devel, search bugzilla, and none results. The current implementation of LZCopy() only expand the file to new file, and after some tests I checked that the the window$ LZCopy mantain the modified date of expanded file the same of the original file. I do some tests, and after the patch, it runs correctly. It is the small test program: #include <windows.h> int main(int argc, char *argv[]) { HANDLE src, dest; //INT lzSrc, lzDest; if (argc < 3) { printf("testlz32 [file.ex_] [file.ext]\n"); return 0; } // I do not use LZOpenFIle, LZInit, LZClose, etc so I am sure that LZCopy is the correct local of the patch. src = CreateFile(argv[1], GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0); dest = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, 0); //lzSrc = LZInit(src); //lzDest = LZInit(dest); LZCopy(src, dest); // LZCopy(lzSrc, lzDest); //LZClose(lzSrc); //LZClose(lzDest); CloseHandle(src); CloseHandle(dest); return 0; } Changelog: - LZCopy: modified timestamp of a expanded file have to be the same of original file. -- Marcelo Duarte
Index: dlls/lzexpand/lzexpand_main.c =================================================================== RCS file: /home/wine/wine/dlls/lzexpand/lzexpand_main.c,v retrieving revision 1.20 diff -u -r1.20 lzexpand_main.c --- dlls/lzexpand/lzexpand_main.c 30 Apr 2003 17:15:06 -0000 1.20 +++ dlls/lzexpand/lzexpand_main.c 9 Jul 2003 17:03:14 -0000 @@ -476,6 +476,16 @@ if (wret!=ret) return LZERROR_WRITE; } + + /* Change the timestamp of file */ + HFILE fd; + FILETIME filetime; + struct lzstate *lzs; + fd = (!(lzs = GET_LZ_STATE(src))) ? src : lzs->realfd; + GetFileTime((HANDLE)fd, NULL, NULL, &filetime); + SetFileTime((HANDLE)dest, NULL, NULL, &filetime); + + /* close handle */ if (usedlzinit) LZClose(src); return len;