Age | Commit message (Collapse) | Author | Lines |
|
No need to use `grep -F` here
|
|
These are no longer supported in upcoming clang versions.
warning: a function declaration without a prototype is deprecated in all versions of C [-Wstrict-prototypes]
Reference: https://archives.gentoo.org/gentoo-dev/message/dd9f2d3082b8b6f8dfbccb0639e6e240
|
|
|
|
inotify_add_watch calls fail when the file is a url, since it does not
correspond to an actual on-disk path. The temporary file path fetched by
curl could be kept and monitored, but since this is unlikely to change
just avoid monitoring files opened via a url.
|
|
Closes #665
|
|
The default user agent is empty, which is not that friendly.
Closes #660
|
|
|
|
|
|
|
|
|
|
Closes #656
|
|
|
|
|
|
use libmagic to detect valid file formats
|
|
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
|
|
|