Age | Commit message (Collapse) | Author | Lines |
|
init_parse_options calls feh_prepare_filelist, which in turn calls
feh_file_info_preload if opt.preload is set. This function will load all
images in the filelist to determine their attributes, so we need to initialize
libmagic before calling init_parse_options.
|
|
Add a global `magic_t magic` and initialize it just once.
Also `feh_is_image()` now calls itself to check compressed files, saving
some duplicate code.
|
|
Writing our own magic bytes detection is prone to errors and an
everlasting catch-up-game. Let's use libmagic to get things right,
this is less code and makes things more reliable.
Building without libmagic is still possible. That will make the code
act like specifying FEH_SKIP_MAGIC=1, effectively passing everything
to imlib2.
|
|
When _POSIX_C_SOURCE is defined, macOS hides the definitions of mkdtemp
and mkstemps, among others. Define _DARWIN_C_SOURCE to counteract that.
|
|
getopt_long() is widely supported these days, removing it from the
source tree should be okay.
Here's documentation or the implementation of getopt_long on many
systems:
All the BSDs:
https://man.netbsd.org/NetBSD-9.2-STABLE/getopt_long.3
https://man.openbsd.org/OpenBSD-7.0/getopt_long
https://www.freebsd.org/cgi/man.cgi?query=getopt_long
https://leaf.dragonflybsd.org/cgi/web-man?command=getopt_long
Illumos (OpenSolaris fork):
https://illumos.org/man/3c/getopt_long
The musl, newlib, and uclibc-ng libcs:
https://gogs.waldemar-brodkorb.de/oss/uclibc-ng/src/master/libc/unistd/getopt_long-simple.c#L49-L52
https://git.musl-libc.org/cgit/musl/tree/src/misc/getopt_long.c#n140
https://sourceware.org/git/?p=newlib-cygwin.git;a=blob;f=newlib/libc/stdlib/getopt.c;h=d4f225a7a735dc741d2874eb6c131b6fce2967c5;hb=HEAD#l475
Mingw-w64:
https://github.com/mirror/mingw-w64/blob/master/mingw-w64-crt/misc/getopt.c#L542-L549
Mac OS X:
https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/getopt_long.3.html
|
|
Closes #642
|
|
|
|
|
|
Imlib2 v1.7.5 introduces automatic (and transparent) orientation adjustment
based on EXIF orientation tags. This makes feh's --auto-rotate function
both superfluous and erroneous: It doesn't know about Imlib2's adjustments,
so it rotates an image which is already correctly oriented, leading to
incorrect orientation.
I am not aware of a simple run-time check for detecting whethen running
Imlib2 < 1.7.5 or ≥ 1.7.5. For now, feh disables --auto-rotate entirely when
compiled on a system with Imlib2 1.7.5+ and outputs a warning when the
option is used.
Rationale: The Imlib2 version available at run-time should in most cases be
at least as recent as the Imlib2 version used at compile-time. So, while there
may be cases where feh was compiled with Imlib2 1.7.4 and exhibits erroneous
auto-rotate behaviour on an Imlib2 1.7.5 system, the inverse case
(a feh with disabled auto-rotate support running on Imlib2 1.7.4) should be
sufficiently rare. If it does occur, it can be remedied by compiling feh
from source locally.
Possible caveat: Imlib2 only adjusts for EXIF orientation when loading JPEG
and TIFF images. If there are additional EXIF-aware file formats supported by
feh, but not Imlib2, they lose auto-rotate support.
Reference: GitHub issue #642
|
|
See GitHub issue #642
|
|
Closes #639
|
|
Useful to make feh quit (or execute actions) on mouse movement
Closes #568
|
|
|
|
|
|
|
|
If stdin is not connected, the X11 connection may use FD 0, which is
traditionally used for STDIN. Do not attempt reads from fd 0 unless it
_really_ is connected to a terminal on stdin.
Reported by https://github.com/pvanstam, thanks a lot!
Closes #631
Closes #632
|
|
|
|
This allows feh to load .gif images via libcurl, as some imlib2 versions only
load gif images if the suffix is correct. It's also more convenient when using
--keep-http.
To achieve this, feh needs to use mkstemps. mkstemps is a non-standard
extension that is available on several systems. Compile feh with
"mkstemps=0" to use mkstemp instead.
Closes #630
|
|
Needs further testing
|
|
|
|
|
|
The snprintf string argument should not be duplicated.
It is not needed and also not released afterwards.
|
|
Calling feh with an empty argument leads to out of boundary access.
This can be seen best when compiled with asan:
$ feh ""
|
|
|
|
* Fix out of boundary access
The while-loop is not finished when pos is set to EXIF_MAX_DATA.
Instead, the loop continues and therefore tries to access data outside
of the array.
This is triggered when compiled with exif=1 and asan:
$ feh --draw-exif image.jpg
* Fixed formatting
No functional change but makes previous commit easier verifiable
(independent of tab space setup).
* Call break; instead of setting pos2 to a magic value
This is in line with the following else clause
* Another cosmetic adjustment
Co-authored-by: Daniel Friesel <derf@finalrewind.org>
|
|
Fix feh_is_image for tiny (<16 byte) image files
|
|
|
|
|
|
Note that Imlib2 does not support JXL images out of the box. However, the
imlib2-jxl loader (https://github.com/alistair7/imlib2-jxl) does.
|
|
|
|
|
|
This is consistent with --scroll-step (option name) and --zoom (percentage)
|
|
|
|
"screen" and "display" are different X11 terms; we're actually talking about
"monitors"
|
|
This should help answer questions such as #605 in the future
|
|
|
|
|
|
|
|
Both of these protocols are supported in latest curl.
Signed-off-by: parazyd <parazyd@dyne.org>
|
|
|
|
|
|
This makes --(auto-)reload use the directory specified at --start-at
instead of the current working directory. Closes #597
|
|
* fixed for simpler parenthesis matching
* absolute file path for .fehbg, moved script creation into helper function
* Removed unused variable.
* added early exit condition as per Ferada's suggestion
* Added enum for options to improve readability
* migrated options to enum.
* added support for zoom specification through options
* added man entry for zoom-rate
* added help entry for zoom-rate commands
* updated man to have warnings about strange values for zoom options
* fix memory leak (free exec_absolute_path)
* added detection for path vs env PATH launch for use in .fehbg script gen.
* Added enum for options to improve readability
* migrated options to enum.
* added support for zoom specification through options
* added man entry for zoom-rate
* added help entry for zoom-rate commands
* updated man to have warnings about strange values for zoom options
* Update help.raw
removed zoom-in/out
* removed zoom-in/out from options
* updated man/help entry to remove in/out zoom specification
* sanitize --zoom-rate in options parser; use a single variable for storing it
Co-authored-by: Daniel Friesel <derf@finalrewind.org>
|
|
This fixes Ctrl+key causing unintended behaviour. Closes #596
|
|
Fix some warnings from `gcc`.
|
|
Closes #595
|
|
.fehbg now stores the full path to the feh binary when it was run using a relative path (i.e., not from $PATH)
|
|
|
|
|
|
|