tags 640272 + patch thanks Hi there!
Mixing the reply I was writing after all my tests, something is probably useless now, but it was already written. On Sun, 04 Sep 2011 17:33:34 +0200, Axel Beckert wrote: > Axel Beckert wrote: >> > It would be very useful to have the possibility to load local file from >> > CLI similar to w3m, with full or relative paths: >> > >> > $ conkeror /usr/share/doc/conkeror/copyright > > According to upstream, this should work and it actually does work. Confirmed, I do not understand why yesterday it did not. >> Yeah, it's very annoying that it doesn't work that way. It though >> works already this way: >> >> $ conkeror file:///usr/share/doc/conkeror/copyright >> >> Nevertheless it's annoying that it only works that way. Here a simple patch, but read below: --8<---------------cut here---------------start------------->8--- --- /usr/bin/conkeror.ORG 2011-07-19 23:13:31.000000000 +0200 +++ /usr/bin/conkeror 2011-09-04 17:43:37.255077737 +0200 @@ -34,5 +34,21 @@ errormsg="`exec $XULRUNNER /usr/share/conkeror/application.ini \"$@\" 2>&1`" echo "$errormsg" | sed -e "s:/[^ ]*/xulrunner-bin:$0:; /-\(width\|height\)/d" 1>&2 else - exec $XULRUNNER /usr/share/conkeror/application.ini "$@" + # loading local file from CLI as w3m/iceweasel + # <http://bugs.debian.org/640272> + COMMAND="$XULRUNNER /usr/share/conkeror/application.ini" + for I in $@; do + # check if the argument is not actually an option + I_FIRSTCHAR=$(echo "$I" | cut -c 1) + # check if it is a full URL or not + I_FULLURL=$(echo "$I" | grep "://") + if [ "$I_FIRTSCHAR" != - ] && [ ! "$I_FULLURL" ]; then + # check if it is a relative or absolute path + if [ "$I_FIRSTCHAR" != / ]; then + I="$PWD/$I" + fi + fi + COMMAND="$COMMAND $I" + done + eval "$COMMAND" fi --8<---------------cut here---------------end--------------->8--- NB1, with this patch --help *after* the URL is not anymore recognized (see #640321), I still fail to understand why :-( NB2, while the Debian Policy allows `test -a/-o` (ยง 10.4), I find that the other notation is easier to read and it is spotted by checkbashisms, feel free to change it to be consistent with line 9 > What I had in mind that doesn't work and what also has been confirmed > by upstream that this is on purpose is the loading of files with > _relative_ paths does not work on the commandline. Here's the excerpt > from IRC: > > 17:08:55 <retroj:#conkeror> if you want to open a relative path, just > do: conkeror `pwd`/foo.html Yeah :-( > 17:09:26 <retroj:#conkeror> there is a strong reason for not directly > supporting relative paths, which i have > documented at various times when this > question has come up before > 17:09:52 <XTaran:#conkeror> retroj: Hrm, I think, I have to read them, > but I suspect, I will disagree. :) > 17:10:10 <XTaran:#conkeror> retroj: It's definitely a violation of the > rule of least surprise... > 17:10:21 <retroj:#conkeror> what conkeror supports that iceweasel etc > do not is that you can open any url or > webjump from the command line. supporting > relative paths introduces ambiguity into > the system Deviating from standard (and old common) behavior is even worse. > 17:12:54 <retroj:#conkeror> it would mean that if you have a file > called "google" in your home directory, > you could not use the google webjump from > the command line > 17:13:31 <retroj:#conkeror> the solution i'm planning to implement in > decoupling branch is to add a command line > flag that allows opening relative file > paths It should be the other way around, i.e. a flag for webjumps. > 17:23:53 <retroj:#conkeror> we have to deal with web addresses, dns > resolution, and webjumps No, a browser has to deal with URLs, full stop. >> > Please note that I firstly thought this was a missing feature for all >> > XULrunner-enabled browser, but actually iceweasel_6.0-1 already >> > implements this behavior, so reporting to conkeror only. >> >> Yeah, all other browsers I know work that way and that's also the rule >> of the least surprise. > > Still counts. I'll though hesitate to change the default for that in > the Debian package. I'll probably document how to "fix" it instead as > soon as I have a working fix. I firstly thought this was Conkeror's "fault" because of #634721. So, let me try to fix that: ===== luca@gismo:~$ readlink $(which conkeror) ../share/conkeror/conkeror luca@gismo:~$ ls -l /usr/share/conkeror/ total 64 -rw-r--r-- 1 root root 233 Jul 19 23:15 application.ini drwxr-xr-x 2 root root 4096 Jul 19 23:35 branding drwxr-xr-x 2 root root 4096 Jul 19 23:35 chrome -rw-r--r-- 1 root root 1065 May 4 13:45 chrome.manifest drwxr-xr-x 2 root root 4096 Jul 19 23:35 components lrwxrwxrwx 1 root root 38 Sep 4 11:28 conkeror -> ../../lib/xulrunner-6.0/xulrunner-stub drwxr-xr-x 2 root root 4096 Jul 19 23:35 content drwxr-xr-x 5 root root 4096 Feb 17 2011 contrib drwxr-xr-x 3 root root 4096 Feb 10 2011 defaults drwxr-xr-x 2 root root 4096 Jul 19 23:35 help drwxr-xr-x 4 root root 4096 Feb 10 2011 locale drwxr-xr-x 6 root root 12288 Jul 19 23:35 modules drwxr-xr-x 2 root root 4096 Jul 19 23:35 search-engines drwxr-xr-x 3 root root 4096 Feb 10 2011 style lrwxrwxrwx 1 root root 23 Jul 19 15:35 xulrunner-stub -> /usr/bin/xulrunner-stub luca@gismo:~$ /usr/bin/conkeror Could not read application.ini ===== Mmm, second try, mimicking /usr/bin/iceweasel: ===== luca@gismo$ ls -l /usr/share/conkeror/ total 64 -rw-r--r-- 1 root root 233 Jul 19 23:15 application.ini drwxr-xr-x 2 root root 4096 Jul 19 23:35 branding drwxr-xr-x 2 root root 4096 Jul 19 23:35 chrome -rw-r--r-- 1 root root 1065 May 4 13:45 chrome.manifest drwxr-xr-x 2 root root 4096 Jul 19 23:35 components -rwxr-xr-x 1 root root 365 Sep 4 11:36 conkeror lrwxrwxrwx 1 root root 38 Sep 4 11:28 conkeror-bin -> ../../lib/xulrunner-6.0/xulrunner-stub drwxr-xr-x 2 root root 4096 Jul 19 23:35 content drwxr-xr-x 5 root root 4096 Feb 17 2011 contrib drwxr-xr-x 3 root root 4096 Feb 10 2011 defaults drwxr-xr-x 2 root root 4096 Jul 19 23:35 help drwxr-xr-x 4 root root 4096 Feb 10 2011 locale drwxr-xr-x 6 root root 12288 Jul 19 23:35 modules drwxr-xr-x 2 root root 4096 Jul 19 23:35 search-engines drwxr-xr-x 3 root root 4096 Feb 10 2011 style lrwxrwxrwx 1 root root 23 Jul 19 15:35 xulrunner-stub -> /usr/bin/xulrunner-stub luca@gismo:~$ cat /usr/share/conkeror/conkeror #!/bin/sh MOZ_APP_LAUNCHER="$(which $0)" MOZ_DIST_BIN="$(dirname "$(readlink -f "${MOZ_APP_LAUNCHER}")")" MOZ_PROGRAM="${MOZ_DIST_BIN}/conkeror-bin" export MOZ_APP_LAUNCHER verbose () { if [ "${VERBOSE}" ]; then echo $@ fi } # exec wrapper for verbosity exec_verbose () { verbose Running: $@ exec "$@" } exec_verbose ${MOZ_PROGRAM} "$@" luca@gismo:~$ /usr/bin/conkeror Could not find the Mozilla runtime. ===== Something is wrong there, clearly, third and more "complete" try: ===== luca@gismo$ ls -l /usr/share/conkeror/ total 64 -rw-r--r-- 1 root root 233 Jul 19 23:15 application.ini drwxr-xr-x 2 root root 4096 Jul 19 23:35 branding drwxr-xr-x 2 root root 4096 Jul 19 23:35 chrome -rw-r--r-- 1 root root 1065 May 4 13:45 chrome.manifest drwxr-xr-x 2 root root 4096 Jul 19 23:35 components -rwxr-xr-x 1 root root 365 Sep 4 11:36 conkeror lrwxrwxrwx 1 root root 38 Sep 4 11:28 conkeror-bin -> ../../lib/xulrunner-6.0/xulrunner-stub drwxr-xr-x 2 root root 4096 Jul 19 23:35 content drwxr-xr-x 5 root root 4096 Feb 17 2011 contrib drwxr-xr-x 3 root root 4096 Feb 10 2011 defaults drwxr-xr-x 2 root root 4096 Jul 19 23:35 help drwxr-xr-x 4 root root 4096 Feb 10 2011 locale drwxr-xr-x 6 root root 12288 Jul 19 23:35 modules drwxr-xr-x 2 root root 4096 Jul 19 23:35 search-engines drwxr-xr-x 3 root root 4096 Feb 10 2011 style lrwxrwxrwx 1 root root 23 Sep 4 11:43 xulrunner -> ../../lib/xulrunner-6.0 lrwxrwxrwx 1 root root 23 Jul 19 15:35 xulrunner-stub -> /usr/bin/xulrunner-stub luca@gismo:~$ /usr/bin/conkeror Console error: [...] ===== Bingo! Unfortunately, the above still does not work for local files: $ /usr/bin/conkeror src/Debian/webwml/english/events/index.en.html -> <http://www.src.com/Debian/webwml/english/events/index.en.html> It seems the only option would have been to implement that in the shell script as per the patch above. But given all my tests I still think the problem should be fixed in conkeror upstream, instead, given that full-path files are opened correctly. Upstream disagrees, thus feel free to tag it as wontfix and close it. Thx, bye, Gismo / Luca
pgpqMA3k8VGKN.pgp
Description: PGP signature