I tested it (code to copy a file below, file was > 4 GB) and it works. I'm using Gentoo 2006.0, Linux 2.6.15.1, ReiserFS 3 and wine 0.9.15.
Can you find out whether the broken code is using KERNEL32, NTDLL, MSVCRT streams or MSVCRT POSIX-style open()/read() etc.? #include <windows.h> #include <stdio.h> int main(int argc, char **argv) { HANDLE inputFile = INVALID_HANDLE_VALUE, outputFile = INVALID_HANDLE_VALUE; const int bufferSize = 8*1024; char buffer[bufferSize]; DWORD bytesRead; BOOL ok; if (argc < 3) { fprintf(stderr, "Usage: %s source destination\n", argv[0]); return 1; } inputFile = CreateFile(argv[1], GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if (inputFile == INVALID_HANDLE_VALUE) { fprintf(stderr, "Error opening %s\n", argv[1]); goto done; } outputFile = CreateFile(argv[2], GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); if (outputFile == INVALID_HANDLE_VALUE) { fprintf(stderr, "Error opening %s\n", argv[2]); goto done; } ok = ReadFile(inputFile, buffer, bufferSize, &bytesRead, NULL); if (!ok) { fprintf(stderr, "Error reading file\n"); goto done; } while (bytesRead > 0) { DWORD bytesWritten = 0, bytesWrittenNow; do { ok = WriteFile(outputFile, buffer, bytesRead, &bytesWrittenNow, NULL); if (!ok) { fprintf(stderr, "Error writing file\n"); goto done; } bytesWritten += bytesWrittenNow; } while (bytesWritten < bytesRead); ok = ReadFile(inputFile, buffer, bufferSize, &bytesRead, NULL); if (!ok) { fprintf(stderr, "Error reading file\n"); goto done; } }; done: if (inputFile != INVALID_HANDLE_VALUE) CloseHandle(inputFile); if (outputFile != INVALID_HANDLE_VALUE) CloseHandle(outputFile); return 0; } --- John Willis <[EMAIL PROTECTED]> wrote: > Damjan, > > Linux kernel: 2.4.21-20.ELsmp > Filesystem: ext3 > > Thanks for looking into this for me, > > John > > ----- Original Message ----- > From: "Damjan Jovanovic" <[EMAIL PROTECTED]> > To: "John Willis" <[EMAIL PROTECTED]>; > <wine-devel@winehq.org> > Sent: Sunday, June 25, 2006 11:31 PM > Subject: Re: Very large files > > > > > > > > --- John Willis <[EMAIL PROTECTED]> wrote: > > > >> Howdy, > >> > >> I have a large VS 6.0 C++ program and I'm running > it > >> under WINE under Redhat Linux. > >> Everything works fine, but it doesn't handle file > >> sizes greater than 4gb like it can running > >> directly under Windows XP. > >> I've tweaked everything that I can find that > seems > >> to deal with file sizes. > > > > How do you access the file? With stdio streams > > (fopen(), fread(), ...), MSVCRT's open()/read(), > or > > with KERNEL32's CreateFile(), ReadFile(), ... ? > > > >> Is there a problem with WINE itself handling very > >> large file sizes? > > > > Which version of the Linux kernel and which > filesystem > > are you using? > > > > I'll run some tests at home and see whether it > works > > for me. > > > >> Thanks in advance, > >> John> > >> > > > > > > __________________________________________________ > > Do You Yahoo!? > > Tired of spam? Yahoo! Mail has the best spam > protection around > > http://mail.yahoo.com > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com