Re: [Gpsbabel-code] Fix: NG Topo
Brought to you by:
robertl
From: Alex M. <al...@co...> - 2003-07-21 00:59:45
|
> > >>It also reminds me a bit of an "issue" in a few of the formats... >>Some of them use a static variable to keep track of how many >>points have been written for indexing or other purposes, such as >>this one. This tends to not have the desired effect when writing >>the same format more than once in a single invocation. I.e.: >> >> > >Globals Are Bad. > >I don't know of such formats, so if you know of a list offhand, I'll >help fix those. > Now you have me wondering if there really is a problem at all. Or perhaps our terminology is in collission. I think some of the palm formats do something similar to what was done in the Topo! patch. That may be on purpose as it deals with the code in the colsync/ directory that I'm just now becoming acquainted with. I know the xcsv stuff does it for sure (ozi format will show it quite well). By static, I meant "static to the function that gets passed to waypt_disp_all()". > Do you really want this static? If I have ten points do > gpsbabel ... -o tpg -F blerf -o tpg -F bletch > is it your intent that 'bletch' contain 10-20? That's the problem that I mentioned above. Consider the following patch. Is this the proper fix or is there a better way to accomplish the goal of having the xxx_waypt_pr() function know which waypoint of the set it's dealing with? Thanks, alex Index: tpg.c =================================================================== RCS file: /cvsroot/gpsbabel/gpsbabel/tpg.c,v retrieving revision 1.7 diff -p -u -r1.7 tpg.c --- tpg.c 18 Jul 2003 13:24:31 -0000 1.7 +++ tpg.c 21 Jul 2003 00:49:10 -0000 @@ -34,6 +34,7 @@ static void *mkshort_handle; static int i_am_little_endian; static int endianness_tested; +static int out_count; static void test_endianness(void) @@ -152,6 +153,8 @@ tpg_wr_init(const char *fname, const cha if (tpg_file_out == NULL) { fatal(MYNAME ": Cannot open %s for writing\n", fname); } + + out_count = 0; } static void @@ -256,7 +259,6 @@ tpg_waypt_pr(const waypoint *wpt) char c; char *shortname; char *description; - static int out_count = 0; /* these unknown 4 are probably point properties (color, icon, etc..) unsigned char unknown4[] = { 0x78, 0x56, 0x34, 0x12 }; |