summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorLines
2024-06-30Fix rotate by 180 degrees bug (patch by wwsmiff, thanks!)Birte Kristina Friesel-3/+5
Closes #754 Closes #740 Squashed commit of the following: commit 7770f4cf1a1e7ff86238d67053b22b066e3d38ec Author: wwsmiff <arnav0872@gmail.com> Date: Sun Mar 17 01:54:55 2024 +0530 Remove font file commit 70bc5864817e308d44fea51a409ef68c2bb9e574 Author: wwsmiff <arnav0872@gmail.com> Date: Sun Mar 17 01:54:23 2024 +0530 Fix rotate by 180 degrees bug
2024-06-30cache stat(2) callsNaïm Favier-52/+67
When the user requests sorting by size or mtime, do a "soft preload" of the file list that only calls stat(2) without loading images. This avoids calling stat(2) repeatedly on the same files when sorting the file list, and achieves faster startup on slow filesystems.
2024-06-30Fix --no-recursive bugwwsmiff-1/+1
2024-06-29feh_thumbnail_generate: pass-through for images <= thumbnail sizeBirte Kristina Friesel-0/+7
2024-06-29Add support for x-large and xx-large XDG thumbnail directoriesBirte Kristina Friesel-4/+8
2023-11-26Fix for right-click buffer overflowAmetov Imil-10/+6
2023-11-17add_stdin_to_filelist: fix resource leak upon fwrite failureBirte Kristina Friesel-0/+1
Closes #730
2023-10-02move signal-unsafe functions out of signal handlersBirte Kristina Friesel-20/+37
A signal interrupts the blocking function calls in the main iteration, so there is really no need to do (unsafe) heavy lifting in the signal handler. Closes #705
2023-09-18add %W format specifier (#719)Birte Kristina Friesel-0/+6
2023-07-30document new name of `--cycle-once`Eli the Bearded-1/+1
2023-07-12update copyrightBirte Kristina Friesel-27/+27
2023-04-06We do not use gib_imlib_load_image; comment it outDaniel Friesel-1/+4
2023-04-06Sync strverscmp.c with upstream muslTim van der Molen-3/+3
2023-04-06imlib.c: handle new Imlib2 return codesDaniel Friesel-0/+8
2023-02-15Add --sort=noneDaniel Friesel-0/+2
2023-01-22src: Fix build with clang 16orbea-18/+17
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
2022-08-22winwidget: do not add an inotify watch if file is a urlAnthony Iliopoulos-1/+1
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.
2022-06-13Set libcurl user agentDaniel Friesel-0/+1
The default user agent is empty, which is not that friendly. Closes #660
2022-06-12feh(1), --version: Document libmagic compile flagDaniel Friesel-0/+4
2022-06-10MotionNotify handler: only call generic handler if winwid != NULLDaniel Friesel-10/+12
Closes #656
2022-02-10Run init_magic before init_parse_optionsDaniel Friesel-4/+5
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.
2022-02-08global initialization for libmagicChristian Hesse-40/+66
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.
2022-02-08use libmagic to detect valid file formatsChristian Hesse-83/+51
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.
2022-01-16remove local getopt_long() implementationGuilherme Janczak-1256/+1
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
2022-01-03Fix spellinga1346054-8/+8
2022-01-03Trim trailing whitespacea1346054-13/+13
2021-12-24Disable --auto-rotate in feh builds compiled wiht Imlib2 1.7.5+Daniel Friesel-1/+7
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
2021-11-20--window-id: support hexadecimal IDsDaniel Friesel-1/+1
Closes #639
2021-11-13Add bindable button "0" for mouse movementDaniel Friesel-0/+11
Useful to make feh quit (or execute actions) on mouse movement Closes #568
2021-09-21Fix crash when X11 is connected via FD 0.Daniel Friesel-3/+9
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
2021-09-21Do not hardcode STDIN_FILENO == 0Daniel Friesel-2/+2
2021-09-09feh_http_load_image: Use mkstemps to save image with correct suffixDaniel Friesel-4/+25
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
2021-07-25Set correct window size when applying --zoom outside of -. / -FDaniel Friesel-3/+18
Needs further testing
2021-07-24Fix implicit definition of `strverscmp`.Olof-Joachim Frahm (欧雅福)-8/+4
2021-07-23Fix memory leak on error pathTobias Stoeckmann-1/+1
The snprintf string argument should not be duplicated. It is not needed and also not released afterwards.
2021-07-23Fix out of boundary access on illegal argumentTobias Stoeckmann-1/+1
Calling feh with an empty argument leads to out of boundary access. This can be seen best when compiled with asan: $ feh ""
2021-07-23feh_draw_exif: Fix out of bounds array access when handling long linesDaniel Friesel-4/+3
2021-07-23Fix out of boundary access with exif (#617)Tobias Stoeckmann-15/+15
* 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>
2021-06-21Fix feh_is_image for tiny filesDavid Buchanan-1/+3
2021-06-09Add JPEG XL to supported file formatsAlistair-0/+5
Note that Imlib2 does not support JXL images out of the box. However, the imlib2-jxl loader (https://github.com/alistair7/imlib2-jxl) does.
2021-05-09Release v3.73.7Daniel Friesel-1/+1
2021-05-09Merge branch 'simplify-exif'Daniel Friesel-98/+179
2021-05-08rename --zoom-rate to --zoom-step and switch to percentDaniel Friesel-7/+7
This is consistent with --scroll-step (option name) and --zoom (percentage)
2021-05-08getopt.c: Add missing string.h include (#530)Daniel Friesel-0/+1
2021-04-10EXIF: Use rawtherapee / flickr style output instead of "key: value" listsimplify-exifDaniel Friesel-98/+179
2021-04-10src/exif*: follow feh indentationDaniel Friesel-685/+729
2021-03-10Add support for gopher and gophers in utils/path_is_url.parazyd-0/+2
Both of these protocols are supported in latest curl. Signed-off-by: parazyd <parazyd@dyne.org>
2021-03-06help.raw: Add --window-id argumentDaniel Friesel-1/+1
2021-03-05Set original_file_items when using --start-at without file argumentsDaniel Friesel-0/+1
This makes --(auto-)reload use the directory specified at --start-at instead of the current working directory. Closes #597
2021-03-03Option Refactor and addition of Zoom Rate (#589)Alec C-203/+325
* 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>