summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)AuthorLines
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>
2021-03-01stdin keyboard input: Ignore uninitialized keysymsDaniel Friesel-1/+1
This fixes Ctrl+key causing unintended behaviour. Closes #596
2021-02-28Merge pull request #531 from Ferada/fix-some-warningsDaniel Friesel-8/+14
Fix some warnings from `gcc`.
2021-02-27feh_event_handle_stdin: handle EOFDaniel Friesel-1/+1
Closes #595
2021-01-28Merge pull request #588 from avlec/masterDaniel Friesel-83/+102
.fehbg now stores the full path to the feh binary when it was run using a relative path (i.e., not from $PATH)
2021-01-28added detection for path vs env PATH launch for use in .fehbg script gen.Alec Cox-4/+12
2021-01-28fix memory leak (free exec_absolute_path)Daniel Friesel-0/+1
2021-01-26added early exit condition as per Ferada's suggestionAlec Cox-72/+73
2021-01-25Removed unused variable.Alec Cox-2/+0
2021-01-25absolute file path for .fehbg, moved script creation into helper functionAlec Cox-82/+92
2021-01-24Handle URL-encoded components in "feh --start-at file://...."Daniel Friesel-3/+47
Closes #584
2021-01-24free opt.start_list_at before NULLing itDaniel Friesel-0/+3
2021-01-23wallpaper.h: Remove useless _XFUNCPROTO wrappersDaniel Friesel-2/+1
feh is C code, _XFUNCPROTO(BEGIN|END) are only needed for C++ applications.
2021-01-22fixed for simpler parenthesis matchingAlec Cox-2/+3
2021-01-09Rename --windowid to --window-id; add usage warning to documentationDaniel Friesel-2/+2
2021-01-09X11 uses unsigned long int for window IDs (see X11/X.h)Daniel Friesel-2/+2
2021-01-09Merge branch 'add-windowid-option' of https://github.com/codehearts/feh into ↵Daniel Friesel-5/+32
codehearts-add-windowid-option