Glynn:
Breaking backwards compatibility is allowed in 7.0. We'll probably be
breaking raster compatibility at some point (but in a far more
fundamental way; old rasters won't be recognised at all).

Something this fundamental should have been announced (maybe it was
and I missed it). Also, the error message is misleading.
I will announce it more loudly next time :-)
The error message should be fixed, see other post.
Markus:
My argument is that enabling backwards compatibility would be about the same effort like rebuilding topology. I could write a module that converts any existing sidx file to the new format or builds the spatial index from topo if no sidx file is found, then writes a new sidx file in the new format. That would avoid rebuilding the core topology and category index.

Maybe the sidx file should have been renamed?
That would be fool-proof and no problem.
PERMANENT/vector/fields contains:

        -rw-r--r-- 1 root root  4117 May 25  2004 cidx
        -rw-r--r-- 1 root root 27905 May 25  2004 coor
        -rw-r--r-- 1 root root    55 May 25  2004 dbln
        -rw-r--r-- 1 root root   278 May 25  2004 head
        -rw-r--r-- 1 root root   186 May 25  2004 hist
        -rw-r--r-- 1 root root 24538 May 25  2004 sidx
There is no sidx file for vectors in
http://grass.osgeo.org/sampledata/spearfish_grass60data-0.3.tar.gz

IOW: sidx was removed in 6.0 (existing sidx files were silently
ignored), then an entirely different sidx file was added recently, and
the code is confused by the existence of a 5.7 sidx file, right?
Yes. I wasn't aware that 5.7 was writing sidx files. I found the spearfsh57 sample dataset just now, will use it for more testing in the future.
Also, this needs to be checked for anything which uses VECT_CFLAGS,
which isn't limited to v.* modules (a few g.* and r.* modules use
vector functions).
I fixed r.drain, v.in.dxf, v.vol.rst. AFAICT all other g.*, r.* and v.* modules are ok. Please let me know if I missed something.

I don't know which modules need fixing and which don't. I was just
pointing out that e.g. g.{copy,remove,rename,list} use the vector
libraries (but don't use VECT_CFLAGS; is that a bug?)
Yes. Anything that uses vector libraries must use the same LFS-related flags like the vector libs, otherwise there can be segfaults because the size of a number of structures, most importantly struct Map_info, is on 32bit systems dependent on the LFS flags.
, r.to.vect,
d.vect, etc use the libraries and VECT_CFLAGS, so it isn't just v.*
modules which need to be checked. It might just be v.* modules which
need to be fixed; I don't know.
OK. I will check all modules including <grass/vector.h> or any of the headers in include/vect. All vector modules should be fixed by now. Of the raster modules, only r.drain needed fixing, all other were ok. But I will check again.
I got carried away (replacing all fseek/ftell occurrences I could find with G_fseek/G_ftell, adjusting off_t as you showed above) and also made r3.in|out.v5d LFS-safe, but did not submit. Should I?

Yes;
Will do, testing highly welcome!
ideally, we should use G_{fseek,ftell} everywhere. Ultimately, it
would be better to enable -D_FILE_OFFSET_BITS=64 globally (to ensure
that there aren't any cases where a FILE* is obtained via fopen64()
then passed to code which can't handle it), which means making
everything LFS-aware.

That's beyond my scope because aclocal.m4 and configure.in need adjustment, and I won't touch these. I guess you are suitably qualified for the task ;-)

Markus M

_______________________________________________
grass-dev mailing list
grass-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to