[GRASS-dev] diglib test.c fails on 64bit win

Markus Metz markus.metz.giswork at googlemail.com
Mon May 17 09:01:18 EDT 2010


Glynn Clements wrote:
>
> Markus Metz wrote:
>
>> I would do
>>
>> >  if test $ac_cv_largefiles = yes; then
>> >        USE_LARGEFILES=1
>> > +       if test "$MINGW32" = yes ; then
>> > +                USE_LARGEFILES=0
>> > +       fi
>> >  fi
>
> This *silently* disables LFS. I would prefer to tell the user that LFS
> isn't available.

OK
>
>> but that is your turf, you can judge what is portable. I guess, in the
>> near future, MINGW64 will become more popular which is IMHO good and
>> grass should consider this build environment.
>
> I wouldn't assume that Win64 will be any different with regard to LFS.
> Apart from anything else, "long" is still only 32 bits on Win64.

I think there is one of int64, int64_t, _int64, _int64_t available if
a 64-bit integer type is really needed.

I did some testing on w32 with mingw32, and

#ifdef __MINGW32__
#define off_t off64_t
#define fseeko fseeko64
#define ftello ftello64
#endif

provided me with a 64-bit off_t. In LibGw32C, there are a number of 64
variants of standard functions: stat, fstat, seek, fseek, tell, ftell
are available as 64 variants as e.g. stat64. Somewhere there is also a
lseek64. What about fopen/fopen64 etc?

In GRASS, config.h does not know about __MINGW32__ even if __MINGW32__
is (somewhere else) defined, thus off_t is not redefined for mingw32,
and I placed the redefinitions for testing in another header. Looks
like a lot of hacking to get LFS for wingrass.


More information about the grass-dev mailing list