Saurabh T <[email protected]> writes:
> 1. In the function do_type_query (session/download.c), the variable
> 'handler', which
> comes from the get_mime_type_handler call in setup_download_handler in the
> same file, is NULL. Thus the dialog box that comes up when you hit say 'view
> image' has the title "Unknown type" (from the 'else' block in do_type_query)
> but
> mentions the correct mime type in the text, for example:
> What would you like to do with the file 'blah.png' (type: image/png)?
>
> 2. Since there's no mime handler, none of the 'set mime.handler.*' options in
> elinks.conf work, so in the above dialog box, the program field is blank, no
> matter how the file handling is configured.
How have you configured it, then? AFAICT, there are two ways
ELinks can find a program to run for a given MIME content type:
(a) Map the MIME content type to a handler name via the
mime.type.* options, and then map handler name to a program
via the mime.handler.* options.
(b) Map the MIME content type directly to a program, by reading
a mailcap file.
Which of these are you trying to use? You mentioned mime.handler.*
so I guess you're trying (a). Did you set mime.type.* too?
set mime.type.image.png = "pngpicture"
set mime.handler.pngpicture.win32 = "some-viewer %"
set mime.handler.pngpicture.win32-xwin = "some-viewer %"
set mime.handler.pngpicture.unix = "some-viewer %"
set mime.handler.pngpicture.unix-xwin = "some-viewer %"
I don't know whether SYSTEM_STR is "win32" or "unix" on Cygwin,
nor whether you have X there.
> 3. If I actually manually type in a program name, the % should represent the
> filename but it gets badly mangled: there is an error of the following sort
> from the application:
> Could not find file c:cygwintmpelinks22d184.0.blah.png (something like that).
That is probably a bug in subst_file() in src/session/download.c.
It gets the name of a temporary file as a parameter. On most
systems, when it sees the '%', it calls add_shell_quoted_to_string(),
which adds 'single quotes' around the name and escapes any similar
quotes within the name. On Cygwin however, subst_file() instead
calls cygwin_conv_to_full_win32_path() and add_to_string().
I guess the result of cygwin_conv_to_full_win32_path() has
backslashes as directory separators, and subst_file() then returns
those as part of the command to be executed by the shell; but if
the shell is a Unix-like shell from Cygwin, then it treats the
backslashes as quoting characters instead.
There is this line in subst_file():
add_to_string(&name, new_path);
Perhaps if you changed it to:
add_shell_quoted_to_string(&name, new_path,
strlen(new_path));
then it would work better?
_______________________________________________
elinks-users mailing list
[email protected]
http://linuxfromscratch.org/mailman/listinfo/elinks-users