Hallo @alle!
Habe einen Fehler gefunden im Kommandozeilenconverter bei der Konvertierung von GPX->GPI
Aufruf:
/usr/lib/jvm/java-7-openjdk-amd64/bin/java -classpath /usr/share/java/RouteConverterCmdLine.jar -Djava.awt.headless=true slash.navigation.converter.cmdline.RouteConverterCmdLine datei.gpx datei.gpi
(Version 2.10)
Dabei erstellt sich der Routerconverter folgende externe Skriptdatei, um gpsbabel zu starten:
Die Antwort der Shell ist:
- bricht die Shell /bin/sh bei den Blanks vor und nach "in" in mehrere Tokens auf, gpsbabel denkt dass in die Eingabedatei und Karte die Ausgabedatei sei
- weil ; das Zeichen ist mit welchen man in Shells mehrere Befehle auf einer Befehlszeile voneinander trennt (befehl1 ; befehl2 ; befehl3 ; …) startet die nächste "Befehls"zeile" mit 50.47848225964282, was im PATH natürlich nicht gefunden wird.
In der Skriptdatei hat es also einen Fehler und ein paar Schönheitsfehler:
- Der Wert der Kommandozeilenoption -o müsste gequotet sein, also:
- Noch ein Quelle eines möglichen Fehlers: beim chmod ist der Pfad zum GPSbabel gequotet (was sinnvoll ist, da es ja auch in c:\Pfad\mit blanks\gpsbabel.exe liegen könnte), beim Aufruf darunter fehlen die Quotes.
- Noch ein Quelle eines möglichen Fehlers: Mag als Haarspalterei erscheinen, aber es gibt nicht wenige Linux/Unix-Systeme, auf welchen /tmp und /var/tmp mit der Mount-Option "noexec" gemounted werden. Dateien von solchen Dateisystemen können nicht ausgeführt werden, auch wenn die Dateirechte ausweisen, dass jeder es dürfte.
Jetzt hoffe ich mal, dass das jemand fixt, weil ich mich einigermaßen schwer damit tue herauszufinden, wo ich den kompletten String für -o zu greifen kriege.
Habe einen Fehler gefunden im Kommandozeilenconverter bei der Konvertierung von GPX->GPI
Aufruf:
/usr/lib/jvm/java-7-openjdk-amd64/bin/java -classpath /usr/share/java/RouteConverterCmdLine.jar -Djava.awt.headless=true slash.navigation.converter.cmdline.RouteConverterCmdLine datei.gpx datei.gpi
(Version 2.10)
Dabei erstellt sich der Routerconverter folgende externe Skriptdatei, um gpsbabel zu starten:
Quote:#!/bin/sh
`which chmod` a+x "/usr/bin/gpsbabel"
/usr/bin/gpsbabel -r -w -t -i gpx -f "/path/to/file.gpx" -o garmin_gpi,category=Klick in Karte; 50.47848225964282 12.117919734374984 to Klick in -F "/path/to/file.gpi"
Die Antwort der Shell ist:
Quote:GPX: Cannot open file 'in'!Weil der Wert der Kommandozeilenoption -o nicht gequotet ist,
bash: command not found: 50.47848225964282
- bricht die Shell /bin/sh bei den Blanks vor und nach "in" in mehrere Tokens auf, gpsbabel denkt dass in die Eingabedatei und Karte die Ausgabedatei sei
- weil ; das Zeichen ist mit welchen man in Shells mehrere Befehle auf einer Befehlszeile voneinander trennt (befehl1 ; befehl2 ; befehl3 ; …) startet die nächste "Befehls"zeile" mit 50.47848225964282, was im PATH natürlich nicht gefunden wird.
In der Skriptdatei hat es also einen Fehler und ein paar Schönheitsfehler:
- Der Wert der Kommandozeilenoption -o müsste gequotet sein, also:
Quote:/usr/bin/gpsbabel -r -w -t -i gpx -f "/path/to/file.gpx" -o "garmin_gpi,category=Klick in Karte; 50.47848225964282 12.117919734374984 to Klick in" -F "/path/to/file.gpi"- Wenn man das auf dem System installierte gpsbabel unter /usr/bin/ benutzt, ist der Aufruf von
Quote:`which chmod` a+x "/usr/bin/gpsbabel"im externen Skript sinnlos.
- Noch ein Quelle eines möglichen Fehlers: beim chmod ist der Pfad zum GPSbabel gequotet (was sinnvoll ist, da es ja auch in c:\Pfad\mit blanks\gpsbabel.exe liegen könnte), beim Aufruf darunter fehlen die Quotes.
- Noch ein Quelle eines möglichen Fehlers: Mag als Haarspalterei erscheinen, aber es gibt nicht wenige Linux/Unix-Systeme, auf welchen /tmp und /var/tmp mit der Mount-Option "noexec" gemounted werden. Dateien von solchen Dateisystemen können nicht ausgeführt werden, auch wenn die Dateirechte ausweisen, dass jeder es dürfte.
http://linux.die.net/man/8/mount Wrote:noexec
Do not allow direct execution of any binaries on the mounted filesystem.
Jetzt hoffe ich mal, dass das jemand fixt, weil ich mich einigermaßen schwer damit tue herauszufinden, wo ich den kompletten String für -o zu greifen kriege.