Problem with 64-bit file functions declarations

Dustin Navea speeddymon at yahoo.com
Fri May 31 10:48:02 CDT 2002


--- Andriy Palamarchuk <apa3a at yahoo.com> wrote:
> I'm researching an issue when started regedit.exe
> fails to export registry. This started to happen
> after
> Alexandre's patch which included "config.h" in the
> regedit source file.
> 
> I found out this problem was triggered by
> declaration
> 
> #define _FILE_OFFSET_BITS 64
> 
> in config.h. The test case:
> 
> ********************************************
> /* Set this to 64 to enable 64-bit file support on
> Linux */
> #define _FILE_OFFSET_BITS 64
> 
> #include <stdio.h>
> #include <windows.h>
> 
> void test_write(void) 
> {
>     FILE *f = fopen("1.reg", "w");
>     printf("sizeof FILE: %d\n", sizeof(FILE));
>     fputs("DEBUG1\n", f);
>     fclose(f);
> }
> 
> int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE
> hPrevInstance,
>                    LPSTR lpCmdLine, int nCmdShow)
> {
>     test_write();
>     exit(0);
> }
> ********************************************
> 
> Comment out the macro definition and it works, with
> macro it creates file of 0 length.
> With the defined macro many file functions are
> defined
> as functions for 64-bit access and are linked to the
> native platform calls instead of msvcrt ones.
> 
> Differences in precompilation output:
> 
> Without macro:
> 
> # 203 "/usr/include/stdio.h" 3
> extern FILE *fopen (__const char *__restrict
> __filename,
>                     __const char *__restrict
> __modes)
> ;
> 
> With macro:
> 
> # 211 "/usr/include/stdio.h" 3
> extern FILE *fopen (__const char *__restrict
> __filename,
>                     __const char *__restrict
> __modes)
> __asm__ ("" "fopen64");
> 
> The same happens for some other file functions.
> What is the correct fix for this problem?
> 
> Andriy
> 

Hate to say it, but maybe we need yet *another*
#ifdef...  something like

#ifdef __IA64__
#define _FILE_OFFSET_BITS 64
#endif

yes i know that __IA64__ isnt anything but i was just
using it for example...

__________________________________________________
Do You Yahoo!?
Yahoo! - Official partner of 2002 FIFA World Cup
http://fifaworldcup.yahoo.com



More information about the wine-devel mailing list