Thread: Re: [Gpsbabel-misc] charset conversion SOLVED
Brought to you by:
robertl
From: Mikhail K. <mik...@gm...> - 2010-01-16 13:10:11
|
Problem SOLVED I have applied patch provided here https://bugs.launchpad.net/ubuntu/+source/gpsbabel/+bug/398505 That patch allows override auto-detected garmin unit encoding from the command line. It works fine for my Garmin GPSMAP 60Cx. I use the following command line [mkalenkov@sadki temp]$ gpsbabel -D 1 -w -i gpx -f point.gpx -o garmin,encoding=CP1251 -F usb: Now waypoint name has a correct (cp1251) encoding. Robert, what do you think about inclusion of this patch into the official version of gpsbabel? Mikhail Kalenkov. |
From: Robert L. <rob...@gp...> - 2010-01-17 20:00:58
|
On Sat, Jan 16, 2010 at 7:09 AM, Mikhail Kalenkov < mik...@gm...> wrote: > Problem SOLVED > > I have applied patch provided here > https://bugs.launchpad.net/ubuntu/+source/gpsbabel/+bug/398505 > > That patch allows override auto-detected garmin unit encoding from the > command line. It works fine for my Garmin GPSMAP 60Cx. I use the > following command line > > [mkalenkov@sadki temp]$ gpsbabel -D 1 -w -i gpx -f point.gpx -o > garmin,encoding=CP1251 -F usb: > > Now waypoint name has a correct (cp1251) encoding. Robert, what do you > think about inclusion of this patch into the official version of > gpsbabel? > Conversations with Garmin are bearing no fruit for ways to get the GPS to surrender its capabilities, so how about we allow the existing '-c' option to work? I'd rather not add a new option for this. rjlimac:gpsbabel-virgin robertlipe$ cvs diff garmin.c Index: garmin.c =================================================================== RCS file: /cvsroot/gpsbabel/gpsbabel/garmin.c,v retrieving revision 1.134 diff -p -u -r1.134 garmin.c --- garmin.c 30 Nov 2009 14:13:14 -0000 1.134 +++ garmin.c 17 Jan 2010 19:56:17 -0000 @@ -222,6 +222,13 @@ rw_init(const char *fname) break; } + + // If a user has specified a non-default character set, we'll trust + // them to sort our the wreckage of violating the Garmin protocol and + // ship characters to the device in that character set. + if (global_opts.charset != &cet_cs_vec_utf8) { + receiver_charset = global_opts.charset_name; + } if (global_opts.debug_level > 0) { fprintf(stderr, "Waypoint type: %d\n" "Chosen waypoint length %d\n", This should allow gpsbabel -D 1 -w -i gpx -f point.gpx -c CP1251 -o garmin -F usb: to work for you. Can you please confirm that before I commit it? Thanx, RJL > Mikhail Kalenkov. > > > ------------------------------------------------------------------------------ > Throughout its 18-year history, RSA Conference consistently attracts the > world's best and brightest in the field, creating opportunities for > Conference > attendees to learn about information security's most important issues > through > interactions with peers, luminaries and emerging and established companies. > http://p.sf.net/sfu/rsaconf-dev2dev > _______________________________________________ > Gpsbabel-misc mailing list http://www.gpsbabel.org > Gps...@li... > To unsubscribe, change list options, or see archives, visit: > https://lists.sourceforge.net/lists/listinfo/gpsbabel-misc > |
From: Mikhail K. <mik...@gm...> - 2010-01-18 14:26:06
|
Yes I use just latest cvs version of the gpsbabel. I have tried to insert some debug lines as you suggested if (global_opts.charset != &cet_cs_vec_utf8) { fprintf(stderr, "*** %s ***\n", global_opts.charset_name); receiver_charset = global_opts.charset_name; fprintf(stderr, "rrr %s rrr\n", receiver_charset); } Output is correct. Moreover, if I just write receiver_charset="CP1251"; then everything works fine. So I think that global_opts structure is corrupted somewhere below this code. I will try to look closer at the code today. Mikhail Kalenkov. 2010/1/18 Robert Lipe <rob...@gp...>: > I can't reproduce that. It looks like receiver_charset is being pointed to > a bad place, but the glboal_opts should always be set. Are you sure you > applied this correctly and don't have a bad interaction with the other one? > > You're working from the CVS tree, right? > > if (global_opts.charset != &cet_cs_vec_utf8) { > receiver_charset = global_opts.charset_name; > fprintf(stderr, "*** %s ***\n", global_opts.charset_name); > } > > > On Sun, Jan 17, 2010 at 2:54 PM, Mikhail Kalenkov > <mik...@gm...> wrote: >> >> Robert, unfortunately something wrong with your patch. I used the command >> >> [mkalenkov@sadki temp]$ ./gpsbabel/gpsbabel -D 1 -t -w -i gpx -f >> point.gpx -o garmin -c CP1251 -F usb: >> >> and get the follwoing line from the debug output >> Unsupported character set Q51"! >> >> Subsequet execution of the above command produces slightly different >> line. For instance >> Unsupported character set !6 51"! >> or >> Unsupported character set Qn 51"! >> or >> Unsupported character set !51"! >> and so on. >> >> Command >> >> [mkalenkov@sadki temp]$ ./gpsbabel/gpsbabel -D 1 -t -w -i gpx -f >> point.gpx -o garmin -c CP1252 -F usb: >> >> also produces similar error line, so I guess you can easily localize >> error (I am not familiar with the structure of the gpsbabel code yet). >> >> Mikhail Kalenkov. >> >> 2010/1/17 Robert Lipe <rob...@gp...>: >> > >> > >> > On Sat, Jan 16, 2010 at 7:09 AM, Mikhail Kalenkov >> > <mik...@gm...> wrote: >> >> >> >> Problem SOLVED >> >> >> >> I have applied patch provided here >> >> https://bugs.launchpad.net/ubuntu/+source/gpsbabel/+bug/398505 >> >> >> >> That patch allows override auto-detected garmin unit encoding from the >> >> command line. It works fine for my Garmin GPSMAP 60Cx. I use the >> >> following command line >> >> >> >> [mkalenkov@sadki temp]$ gpsbabel -D 1 -w -i gpx -f point.gpx -o >> >> garmin,encoding=CP1251 -F usb: >> >> >> >> Now waypoint name has a correct (cp1251) encoding. Robert, what do you >> >> think about inclusion of this patch into the official version of >> >> gpsbabel? >> > >> > Conversations with Garmin are bearing no fruit for ways to get the GPS >> > to >> > surrender its capabilities, so how about we allow the existing '-c' >> > option >> > to work? I'd rather not add a new option for this. >> > rjlimac:gpsbabel-virgin robertlipe$ cvs diff garmin.c >> > Index: garmin.c >> > =================================================================== >> > RCS file: /cvsroot/gpsbabel/gpsbabel/garmin.c,v >> > retrieving revision 1.134 >> > diff -p -u -r1.134 garmin.c >> > --- garmin.c 30 Nov 2009 14:13:14 -0000 1.134 >> > +++ garmin.c 17 Jan 2010 19:56:17 -0000 >> > @@ -222,6 +222,13 @@ rw_init(const char *fname) >> > break; >> > >> > } >> > + >> > + // If a user has specified a non-default character set, we'll trust >> > + // them to sort our the wreckage of violating the Garmin protocol >> > and >> > + // ship characters to the device in that character set. >> > + if (global_opts.charset != &cet_cs_vec_utf8) { >> > + receiver_charset = global_opts.charset_name; >> > + } >> > if (global_opts.debug_level > 0) { >> > fprintf(stderr, "Waypoint type: %d\n" >> > "Chosen waypoint length %d\n", >> > >> > >> > This should allow >> > gpsbabel -D 1 -w -i gpx -f point.gpx -c CP1251 -o garmin -F usb: >> > to work for you. Can you please confirm that before I commit it? >> > >> > Thanx, >> > RJL >> > >> >> >> >> Mikhail Kalenkov. >> >> >> >> >> >> >> >> ------------------------------------------------------------------------------ >> >> Throughout its 18-year history, RSA Conference consistently attracts >> >> the >> >> world's best and brightest in the field, creating opportunities for >> >> Conference >> >> attendees to learn about information security's most important issues >> >> through >> >> interactions with peers, luminaries and emerging and established >> >> companies. >> >> http://p.sf.net/sfu/rsaconf-dev2dev >> >> _______________________________________________ >> >> Gpsbabel-misc mailing list http://www.gpsbabel.org >> >> Gps...@li... >> >> To unsubscribe, change list options, or see archives, visit: >> >> https://lists.sourceforge.net/lists/listinfo/gpsbabel-misc >> > >> > > > |
From: Mikhail K. <mik...@gm...> - 2010-01-20 16:58:52
|
I found that that patch leaded to the problem even without -c option [mkalenkov@sadki temp]$ LANG=C; ./gpsbabel/gpsbabel -D 1 -t -w -i gpx -f point.gpx -o garmin -F usb: [skip] Unsupported character set q� SCII"! [mkalenkov@sadki temp]$ I have looked at the code and found that I need much more time to understand options handling and charset manipulations in gpsbabel. receiver_charset is a local variable in a function rw_init. I have declared a new variable in this function char charset[40]; and rewrote the patch as if (global_opts.charset != &cet_cs_vec_utf8) { strncpy(charset, global_opts.charset_name, sizeof(charset) - 1); charset[sizeof(charset) - 1] = '\0'; receiver_charset = charset; } This version of the patch works fine on my PC. Of course, it is a dirty hack, but it shows that global_opts.charset_name variable is overwritten somewhere. Mikhail Kalenkov. 2010/1/18 Mikhail Kalenkov <mik...@gm...>: > Yes I use just latest cvs version of the gpsbabel. I have tried to > insert some debug lines as you suggested > > if (global_opts.charset != &cet_cs_vec_utf8) { > fprintf(stderr, "*** %s ***\n", global_opts.charset_name); > receiver_charset = global_opts.charset_name; > fprintf(stderr, "rrr %s rrr\n", receiver_charset); > } > > Output is correct. Moreover, if I just write > > receiver_charset="CP1251"; > > then everything works fine. So I think that global_opts structure is > corrupted somewhere below this code. I will try to look closer at the > code today. > > Mikhail Kalenkov. > > 2010/1/18 Robert Lipe <rob...@gp...>: >> I can't reproduce that. It looks like receiver_charset is being pointed to >> a bad place, but the glboal_opts should always be set. Are you sure you >> applied this correctly and don't have a bad interaction with the other one? >> >> You're working from the CVS tree, right? >> >> if (global_opts.charset != &cet_cs_vec_utf8) { >> receiver_charset = global_opts.charset_name; >> fprintf(stderr, "*** %s ***\n", global_opts.charset_name); >> } >> >> >> On Sun, Jan 17, 2010 at 2:54 PM, Mikhail Kalenkov >> <mik...@gm...> wrote: >>> >>> Robert, unfortunately something wrong with your patch. I used the command >>> >>> [mkalenkov@sadki temp]$ ./gpsbabel/gpsbabel -D 1 -t -w -i gpx -f >>> point.gpx -o garmin -c CP1251 -F usb: >>> >>> and get the follwoing line from the debug output >>> Unsupported character set Q51"! >>> >>> Subsequet execution of the above command produces slightly different >>> line. For instance >>> Unsupported character set !6 51"! >>> or >>> Unsupported character set Qn 51"! >>> or >>> Unsupported character set !51"! >>> and so on. >>> >>> Command >>> >>> [mkalenkov@sadki temp]$ ./gpsbabel/gpsbabel -D 1 -t -w -i gpx -f >>> point.gpx -o garmin -c CP1252 -F usb: >>> >>> also produces similar error line, so I guess you can easily localize >>> error (I am not familiar with the structure of the gpsbabel code yet). >>> >>> Mikhail Kalenkov. >>> >>> 2010/1/17 Robert Lipe <rob...@gp...>: >>> > >>> > >>> > On Sat, Jan 16, 2010 at 7:09 AM, Mikhail Kalenkov >>> > <mik...@gm...> wrote: >>> >> >>> >> Problem SOLVED >>> >> >>> >> I have applied patch provided here >>> >> https://bugs.launchpad.net/ubuntu/+source/gpsbabel/+bug/398505 >>> >> >>> >> That patch allows override auto-detected garmin unit encoding from the >>> >> command line. It works fine for my Garmin GPSMAP 60Cx. I use the >>> >> following command line >>> >> >>> >> [mkalenkov@sadki temp]$ gpsbabel -D 1 -w -i gpx -f point.gpx -o >>> >> garmin,encoding=CP1251 -F usb: >>> >> >>> >> Now waypoint name has a correct (cp1251) encoding. Robert, what do you >>> >> think about inclusion of this patch into the official version of >>> >> gpsbabel? >>> > >>> > Conversations with Garmin are bearing no fruit for ways to get the GPS >>> > to >>> > surrender its capabilities, so how about we allow the existing '-c' >>> > option >>> > to work? I'd rather not add a new option for this. >>> > rjlimac:gpsbabel-virgin robertlipe$ cvs diff garmin.c >>> > Index: garmin.c >>> > =================================================================== >>> > RCS file: /cvsroot/gpsbabel/gpsbabel/garmin.c,v >>> > retrieving revision 1.134 >>> > diff -p -u -r1.134 garmin.c >>> > --- garmin.c 30 Nov 2009 14:13:14 -0000 1.134 >>> > +++ garmin.c 17 Jan 2010 19:56:17 -0000 >>> > @@ -222,6 +222,13 @@ rw_init(const char *fname) >>> > break; >>> > >>> > } >>> > + >>> > + // If a user has specified a non-default character set, we'll trust >>> > + // them to sort our the wreckage of violating the Garmin protocol >>> > and >>> > + // ship characters to the device in that character set. >>> > + if (global_opts.charset != &cet_cs_vec_utf8) { >>> > + receiver_charset = global_opts.charset_name; >>> > + } >>> > if (global_opts.debug_level > 0) { >>> > fprintf(stderr, "Waypoint type: %d\n" >>> > "Chosen waypoint length %d\n", >>> > >>> > >>> > This should allow >>> > gpsbabel -D 1 -w -i gpx -f point.gpx -c CP1251 -o garmin -F usb: >>> > to work for you. Can you please confirm that before I commit it? >>> > >>> > Thanx, >>> > RJL >>> > >>> >> >>> >> Mikhail Kalenkov. >>> >> >>> >> >>> >> >>> >> ------------------------------------------------------------------------------ >>> >> Throughout its 18-year history, RSA Conference consistently attracts >>> >> the >>> >> world's best and brightest in the field, creating opportunities for >>> >> Conference >>> >> attendees to learn about information security's most important issues >>> >> through >>> >> interactions with peers, luminaries and emerging and established >>> >> companies. >>> >> http://p.sf.net/sfu/rsaconf-dev2dev >>> >> _______________________________________________ >>> >> Gpsbabel-misc mailing list http://www.gpsbabel.org >>> >> Gps...@li... >>> >> To unsubscribe, change list options, or see archives, visit: >>> >> https://lists.sourceforge.net/lists/listinfo/gpsbabel-misc >>> > >>> > >> >> > |
From: Mikhail K. <mik...@gm...> - 2010-01-20 17:20:52
|
What kind of details do you need? [mkalenkov@sadki temp]$ uname -a Linux sadki 2.6.31.9-174.fc12.i686 #1 SMP Mon Dec 21 06:24:20 UTC 2009 i686 athlon i386 GNU/Linux [mkalenkov@sadki temp]$ cat /etc/fedora-release Fedora release 12 (Constantine) [mkalenkov@sadki temp]$ 2010/1/20 Robert Lipe <rob...@gp...>: > Please send me your OS details. I'd like to capture this in a debugger by > setting a watchpoint on that. > |
From: Mikhail K. <mik...@gm...> - 2010-01-24 06:49:48
|
Many thanks, it works fine! Mikhail Kalenkov. 2010/1/24 Robert Lipe <rob...@gp...>: > OK, I had to upgrade from FC11 to FC12 to see this, but I caught it. Pretty > silly, actually. > make that line > receiver_charset = xstrdup(global_opts.charset_name) > > If you can confirm this, I'll commit it. > > Thanx, > RJL > > On Sun, Jan 17, 2010 at 4:11 PM, Robert Lipe <rob...@gp...> > wrote: >> >> I can't reproduce that. It looks like receiver_charset is being pointed >> to a bad place, but the glboal_opts should always be set. Are you sure you >> applied this correctly and don't have a bad interaction with the other one? >> >> You're working from the CVS tree, right? >> >> if (global_opts.charset != &cet_cs_vec_utf8) { >> receiver_charset = global_opts.charset_name; >> fprintf(stderr, "*** %s ***\n", global_opts.charset_name); >> } >> >> >> On Sun, Jan 17, 2010 at 2:54 PM, Mikhail Kalenkov >> <mik...@gm...> wrote: >>> >>> Robert, unfortunately something wrong with your patch. I used the command >>> >>> [mkalenkov@sadki temp]$ ./gpsbabel/gpsbabel -D 1 -t -w -i gpx -f >>> point.gpx -o garmin -c CP1251 -F usb: >>> >>> and get the follwoing line from the debug output >>> Unsupported character set Q51"! >>> >>> Subsequet execution of the above command produces slightly different >>> line. For instance >>> Unsupported character set !6 51"! >>> or >>> Unsupported character set Qn 51"! >>> or >>> Unsupported character set !51"! >>> and so on. >>> >>> Command >>> >>> [mkalenkov@sadki temp]$ ./gpsbabel/gpsbabel -D 1 -t -w -i gpx -f >>> point.gpx -o garmin -c CP1252 -F usb: >>> >>> also produces similar error line, so I guess you can easily localize >>> error (I am not familiar with the structure of the gpsbabel code yet). >>> >>> Mikhail Kalenkov. >>> >>> 2010/1/17 Robert Lipe <rob...@gp...>: >>> > >>> > >>> > On Sat, Jan 16, 2010 at 7:09 AM, Mikhail Kalenkov >>> > <mik...@gm...> wrote: >>> >> >>> >> Problem SOLVED >>> >> >>> >> I have applied patch provided here >>> >> https://bugs.launchpad.net/ubuntu/+source/gpsbabel/+bug/398505 >>> >> >>> >> That patch allows override auto-detected garmin unit encoding from the >>> >> command line. It works fine for my Garmin GPSMAP 60Cx. I use the >>> >> following command line >>> >> >>> >> [mkalenkov@sadki temp]$ gpsbabel -D 1 -w -i gpx -f point.gpx -o >>> >> garmin,encoding=CP1251 -F usb: >>> >> >>> >> Now waypoint name has a correct (cp1251) encoding. Robert, what do you >>> >> think about inclusion of this patch into the official version of >>> >> gpsbabel? >>> > >>> > Conversations with Garmin are bearing no fruit for ways to get the GPS >>> > to >>> > surrender its capabilities, so how about we allow the existing '-c' >>> > option >>> > to work? I'd rather not add a new option for this. >>> > rjlimac:gpsbabel-virgin robertlipe$ cvs diff garmin.c >>> > Index: garmin.c >>> > =================================================================== >>> > RCS file: /cvsroot/gpsbabel/gpsbabel/garmin.c,v >>> > retrieving revision 1.134 >>> > diff -p -u -r1.134 garmin.c >>> > --- garmin.c 30 Nov 2009 14:13:14 -0000 1.134 >>> > +++ garmin.c 17 Jan 2010 19:56:17 -0000 >>> > @@ -222,6 +222,13 @@ rw_init(const char *fname) >>> > break; >>> > >>> > } >>> > + >>> > + // If a user has specified a non-default character set, we'll >>> > trust >>> > + // them to sort our the wreckage of violating the Garmin protocol >>> > and >>> > + // ship characters to the device in that character set. >>> > + if (global_opts.charset != &cet_cs_vec_utf8) { >>> > + receiver_charset = global_opts.charset_name; >>> > + } >>> > if (global_opts.debug_level > 0) { >>> > fprintf(stderr, "Waypoint type: %d\n" >>> > "Chosen waypoint length %d\n", >>> > >>> > >>> > This should allow >>> > gpsbabel -D 1 -w -i gpx -f point.gpx -c CP1251 -o garmin -F usb: >>> > to work for you. Can you please confirm that before I commit it? >>> > >>> > Thanx, >>> > RJL >>> > >>> >> >>> >> Mikhail Kalenkov. >>> >> >>> >> >>> >> >>> >> ------------------------------------------------------------------------------ >>> >> Throughout its 18-year history, RSA Conference consistently attracts >>> >> the >>> >> world's best and brightest in the field, creating opportunities for >>> >> Conference >>> >> attendees to learn about information security's most important issues >>> >> through >>> >> interactions with peers, luminaries and emerging and established >>> >> companies. >>> >> http://p.sf.net/sfu/rsaconf-dev2dev >>> >> _______________________________________________ >>> >> Gpsbabel-misc mailing list http://www.gpsbabel.org >>> >> Gps...@li... >>> >> To unsubscribe, change list options, or see archives, visit: >>> >> https://lists.sourceforge.net/lists/listinfo/gpsbabel-misc >>> > >>> > >> > > |