[GRASS-dev] Re: [GRASS-user] r.in.xyz: Could open text file ~ 2.5GB

Hamish hamish_nospam at yahoo.com
Tue Oct 24 01:46:04 EDT 2006


Glynn Clements wrote:
> 
> I forgot that the --enable-largefile switch only enables LFS in
> libgis, not anywhere else.
> 
> [Although config.h includes definitions to enable LFS automatically,
> those definitions are currently inactive. This is probably a good
> thing; a lot of GRASS' code isn't LFS-aware, and explicit failure is
> preferable to silently corrupting data.]
> 
> To enable LFS elsewhere, you need to manually add
> -D_FILE_OFFSET_BITS=64 to the compilation flags. The simplest approach
> is to add:
> 
> ifneq ($(USE_LARGEFILES),)
> 	EXTRA_CFLAGS = -D_FILE_OFFSET_BITS=64
> endif
> 
> to raster/r.in.xyz/Makefile, then repeat the "make" and "make install"
> steps.


I have added this knowledge (and some other tips posted to the mailing
list by Glynn & Brad) to a page in the Development section of the Wiki.
Please correct, update, and expand as needed.

http://grass.gdf-hannover.de/wiki/Large_File_Support



how hard will it be to get a HAVE_FTELLO (or whatever) switch tested &
set by ./configure? If we get that, should every LFS compliant module be
written like:

#ifdef HAVE_FTELLO
    off_t filesize;
#else
    long filesize;
#endif

...

#ifdef HAVE_FTELLO
    fseeko(in_fd, 0L, SEEK_END);
    filesize = ftello(in_fd);
#else
    fseek(in_fd, 0L, SEEK_END);
    filesize = ftell(in_fd);
#endif


Or is that better handled in G_fseek() etc fns etc as suggested by Brad?
(still should try and match variable type in that case (how?))


fopen() and fclose() are ok in both cases? (dependant on finding
-D_FILE_OFFSET_BITS=64 in the Makefile and including grass/config.h ?)


I'm trying to make that wiki page a "best practices" guide for GRASS
developers, so direct updates there would be appreciated.



Hamish




More information about the grass-dev mailing list