if a theme (but not normal commandline) contains multiple separate short options (e.g. -x -d instead of -xd), feh gives errors and ignores the first argument specified on commandline, or segfaults if no arguments are specified.
for example:
theme: feh --scale-down -x -d
commandline: feh ~/img.jpg
result: the following errors, and loading all images in . while ignoring ~/img.jpg
feh: invalid option -- '�'
feh: invalid option -- ''
experienced with 1.14.1
The text was updated successfully, but these errors were encountered:
I can't reproduce the segfault, but I do get the error messages. Looks like another case of weird memory management in feh/getopt... I'll see what I can do about it.
I think I found the problem... and the fix is so simple:
diff --git a/src/options.c b/src/options.c
index b5a95dd..052f8a8 100644
--- a/src/options.c+++ b/src/options.c@@ -794,7 +794,7 @@ static void feh_parse_option_array(int argc, char **argv, int finalrun)
add_file_to_filelist_recursively(".", FILELIST_FIRST);
/* So that we can safely be called again */
- optind = 1;+ optind = 0;
return;
}
from manpage:
A program that scans multiple argument vectors, or [snip], or changes the value of POSIXLY_CORRECT between scans, must reinitialize getopt() by resetting optind to 0, rather than the traditional value of 1. (Resetting to 0 forces the invocation of an internal initialization routine that rechecks POSIXLY_CORRECT and checks for GNU extensions in optstring.)
A small suggestion, "--debug" should be a special case, when loading theme options, there are some D() used, but they will never print anything out since "--debug" at least have to wait until theme options are processed. There should be a quick check on debug option at very early stage.
Ooh. Yeah, that's looking good. Looks like I missed that while reading the documentation...
Thanks!
As for --debug: Right now it's useless for debugging getopt stuff, yeah. But I don't want yet another special case, I think I'll create a compile time switch for that (make debug=2 or similar). That way, you can really debug everything.
if a theme (but not normal commandline) contains multiple separate short options (e.g. -x -d instead of -xd), feh gives errors and ignores the first argument specified on commandline, or segfaults if no arguments are specified.
for example:
theme: feh --scale-down -x -d
commandline: feh ~/img.jpg
result: the following errors, and loading all images in . while ignoring ~/img.jpg
feh: invalid option -- '�'
feh: invalid option -- ''
experienced with 1.14.1
The text was updated successfully, but these errors were encountered: