Just for the record ...

Took me about an hour to figure out how to compile on Windows from the CVS sources, and even then it was guesswork and I wasn't able to do it 100%. The ".in" files I couldn't figure out how to process by hand. nmake on Windows was useless for the makefiles, and "configure" can't be run at all. I downloaded awk for Windows and muddled through making opcodes and stuff.

First pass at compiling the latest CVS sources ...

in os_win.c theres:

static int winFileHandle(OsFile *id){
 return (int)((winFile*)id)->h;
}

This won't fly on 64-bit platforms. Windows file handles are declared as HANDLE which is an alias for "void *". int's are 32-bits in 64-bit Windows and will cause a pointer truncation.

Here's an excerpt from MSDN:

-----
This topic discusses coding issues for developing applications to run on Windows 64-bit operating systems. When you use Visual C++ to create applications to run on a 64-bit Windows operating system, you should be aware of the following issues:

- An int and a long are 32-bit values on 64-bit Windows operating systems.
- size_t, time_t, and ptrdiff_t are 64-bit values on 64-bit Windows operating systems.
- time_t is a 32-bit value on 32-bit Windows operating systems.
-----

Also, on Windows CE, LOCKFILE_FAIL_IMMEDIATELY does not exist. It's defined in winbase.h as:

#define LOCKFILE_FAIL_IMMEDIATELY 0x00000001


I'm still working on integrating the CE locking code.

Robert



Reply via email to