aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* nout patchHEADmastersinanmohd2022-07-153-2/+12
|
* reject empty xresources (#340)NRK2022-07-051-1/+1
| | | | | | | | | | | | | | | currently, in case of an empty xresources we would fail to init: nsxiv: Error allocating color '' instead, just reject empty value and use the fallback. Closes: https://codeberg.org/nsxiv/nsxiv/issues/339 Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/340 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr> Co-authored-by: NRK <nrk@disroot.org> Co-committed-by: NRK <nrk@disroot.org>
* check for utf8_decode errors (#327)NRK2022-07-031-1/+8
| | | | | | | | | | | | | | | | | | | utf8_decode() may return an errors, in which case the returned codepoint might be garbage. the issue can be tested by adding the following to `image-info` which produces invalid utf8 sequences: base64 -d << EOF 9JCAgPSQgIH0kICC9JCAg/SQgIT0kICF9JCAhvSQgIf0kICI9JCAifSQgIr0kICL9JCAjPSQgI30 kICO9JCAj/SQgJD0kICR9JCAkvSQgJP0kICU9JCAlfSQgJb0kICX9JCAmPSQgJn0kICa9JCAm/SQ gJz0kICd9JCAnvSQgJ8= EOF on my system, this leads to the statusbar being filled with empty boxes. check for returned error and skip the iteration. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/327 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* fix build failure due to missing <stdio.h> (#337)NRK2022-07-031-0/+1
| | | | | | | | | | | | | | the following combination currently fails to build: $ make HAVE_LIBFONTS=0 HAVE_LIBWEBP=1 this is probably because one of the font library was including <stdio.h> Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/337 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr> Reviewed-by: TAAPArthur <taaparthur@noreply.codeberg.org> Co-authored-by: NRK <nrk@disroot.org> Co-committed-by: NRK <nrk@disroot.org>
* Clean up readme (#330)Berke Kocaoğlu2022-06-291-32/+42
| | | | | | Co-authored-by: NRK <nrk@disroot.org> Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/330 Reviewed-by: NRK <nrk@disroot.org>
* sort and group includesNRK2022-06-288-20/+24
| | | | | | | | | | | | | * includes are sorted alphabetically * their grouping and layout is the following: - nsxiv.h will be the first include - followed by any internal headers (e.g "commands.h" "config.h") - followed by system headers (<stdlib.h> etc) - followed by third party headers (X.h libwebp etc) * also add `llvm-include-order` check to clang-tidy so that it can catch unsorted includes during CI.
* code-style: cleanup includesNRK2022-06-287-16/+16
| | | | | | | | * rm unused include <sys/types.h> * move <sys/time.h> to main.c, it's the only file that needs it. * move TV_* macros to main.c * let *.c files explicitly include what they need instead of including them at nsxiv.h
* CHANGELOG: use reference style links (#325)NRK2022-06-272-72/+143
| | | | | | | | | | | | | | | | | | | | | | | Originally we stopped doing links in the CHANGELOG since it harmed readability when reading the raw markdown file. However we can use reference styles links instead. * Pros - Doesn't harm readability. - We can link to proper thread on the proper repo (`CodeBerg/nsxiv` for newer threads, `nsxiv-record` for wiped ones) - The links will be clickable on the [webpage] - Both GitHub and Codeberg support reference style links, as well as lowdown (which we use for building the webpage) [webpage]: https://nsxiv.codeberg.page/changelog/ * Cons - Slightly higher maintainance burden. - Larger file size. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/325 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* CHANGELOG: update title and link (#324)NRK2022-06-271-7/+8
| | | | | | | | | | now that CHANGELOG has it's own webpage [0], update the title accordingly. also change the link to `nsxiv-record` instead. [0]: https://nsxiv.codeberg.page/changelog/ Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/324 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* [ci]: check for typos via codespell (#326)NRK2022-06-272-2/+13
| | | | | | | also fix any found issues. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/326 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* [ci]: skip the pipeline entirely if branch isn't masterNRK2022-06-252-4/+4
| | | | | currently, it will clone the repo and then skip the step. this is wasteful, instead skip the pipeline entirely.
* [ci]: suppress some cppcheck warningsNRK2022-06-251-0/+1
| | | | | | | | | | | | | | | cppcheck warns about passing a plain NULL to construct_argv() main.c:254:36: portability: Passing NULL after the last typed argument to a variadic function leads to undefined behaviour. [varFuncNullUB] fidx, fcnt, w, h, z, NULL); in our case, POSIX mandates `NULL` to be defined as `(void *)0` rather than a plain `0` [0]. and void pointers are required to have the same representation and size as char pointers [1]. so this is not an issue we need to worry about. [0]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stddef.h.html#tag_13_47 [1]: https://port70.net/~nsz/c/c99/n1256.html#6.2.5p27
* [ci]: slience some clang-tidy warningsNRK2022-06-253-2/+6
| | | | | | | | | the warnings on r_readdir(), img_load_gif() and strcpy seems to be false positives. the warning about fmt being unused is valid, but not worth fixing with additional #ifdef guards. use `assert` to silence the false positive cases when possible, otherwise use a NOLINT comment with an explanation.
* fix: memory leak in r_readdir()NRK2022-06-251-1/+3
| | | | | reported by clang-tidy: `filename` gets leaked when this branch gets taken.
* fix: don't use reserved identifiersNRK2022-06-256-9/+9
| | | | identifiers beginning with an underscore is reserved by the C standard.
* [ci]: use cppcheck and clang-tidy for static analysisNRK2022-06-253-0/+46
|
* fix: potentially printing wrong error message (#321)NRK2022-06-252-22/+17
| | | | | | | | | | | | it's possible for the close() calls to override the errno resulting in incorrect error message being printed. call error() immediately to avoid such possibilities. also refactor a couple conditions to avoid doing multiple checks. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/321 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* r_mkdir: don't truncate the path on error (#322)NRK2022-06-222-8/+10
| | | | | | | | | | | | | | | | currently, in case of error, r_mkdir will leave the path at a truncated state. a7d39b0ab8 is the commit that introduced this change, and in it the error printing is moved from r_mkdir to the caller, which makes me think it was probably intentional. make it so that the function itself prints the error/warning message and returns the path back to the caller unharmed. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/322 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr> Reviewed-by: TAAPArthur <taaparthur@noreply.codeberg.org>
* add codeberg ci and cleanup github one (#311)NRK2022-06-163-45/+54
| | | | | | | | | | | | | | | | | | - apt-get is slow, takes up ~1m40s just to install deps, fix it by not using it. instead use alpine linux for codeberg ci, which brings build time down to 25s. - And since alpine uses musl, it's probably a good idea to use it on our ci since it might catch us using any glibc extensions. The github ci can keep using ubuntu. - remove duplication of CFLAGS by having it on a separate file instead. - remove pull_request from github ci since we no longer accept PRs there. Closes: https://codeberg.org/nsxiv/nsxiv/issues/307 Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/311 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr> Reviewed-by: TAAPArthur <taaparthur@noreply.codeberg.org>
* Release version 30NRK2022-06-154-4/+47
| | | | | Co-authored-by: NRK <nrk@disroot.org> Co-authored-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* Fix links in readme (#309)Sanjay Pavan2022-06-121-2/+2
| | | | | | | | | The former worked on GitHub, but does not work on Codeberg. Reviewed-on: https://codeberg.org/nsxiv/nsxiv/pulls/309 Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr> Co-authored-by: Sanjay Pavan <withercubes@protonmail.com> Co-committed-by: Sanjay Pavan <withercubes@protonmail.com>
* Move over to codeberg (#293)NRK2022-06-114-31/+68
| | | | Reviewed-by: Berke Kocaoğlu <berke.kocaoglu@metu.edu.tr>
* adds emblems of mirrorseylles2022-06-061-0/+5
|
* code-style: simplify window title related codeNRK2022-06-023-35/+30
| | | | | | | | | instead of dancing around with some `init` parameter, directly give `win_set_title()` what it needs. `get_win_title()` now also does *just* what the name says. this simplifies things quite a bit and the functions now do what their name implies more closely instead of doing some `init` dance internally.
* reduce calls to win-titleNRK2022-06-027-6/+16
| | | | | | | | | rather than calling the script unconditionally per redraw, we now have a `title_dirty` flag and keep track of when any of the relavent information changes. Co-authored-by: Arthur Williams <taaparthur@gmail.com> Partially fixes: https://github.com/nsxiv/nsxiv/issues/258
* avoid doing dynamic allocation for bar buffers (#279)N-R-K2022-06-012-13/+8
| | | | | | | | just use a static buffer since the size is constant and doesn't change. as opposed to using malloc, this also sets the buffer's initial memory region to 0 by default. also remove BAR_{L,R}_LEN from nsxiv.h, not needed after commit b4268fbf38d1f8433c73999466e116e68c7f81e7
* Makefile: add utf8.h as window.o dependency (#280)N-R-K2022-05-311-1/+1
| | | | unlikely for utf8.h to change, other than syncing with upstream, but doesn't hurt tracking it either ways.
* Makefile: use lowercase for internal macrosNRK2022-05-302-10/+12
| | | | ref: 971f5d669490696c11f5c4ede1fee558e05ae4fc
* config.mk: use c99 as default CCNRK2022-05-301-1/+3
| | | | | See https://github.com/nsxiv/nsxiv/issues/262#issuecomment-1111216349 for related discussion.
* config.mk: add comments for OpenBSD usersNRK2022-05-302-1/+10
| | | | Closes: https://github.com/nsxiv/nsxiv/issues/262
* introduce config.mkNRK2022-05-303-35/+35
| | | | | | | this moves all the build variables intended to be modified by the user over to `config.mk` similar to other suckless software. also move CPPFLAGS down below for cosmetic purposes.
* fix: broken slideshow if redraw takes too long (#282)N-R-K2022-05-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | currently the way check_timeout() is implemented, animate has higher priority than slideshow. so if doing a redraw takes longer than the frame delay of the animated image then it's going to continuously keep animating and never reliably get to slideshow. this issue can occur if the animated image has too fast of a delay or if nsxiv is being run on a slow system where doing redraw takes too long. the issue can be emulated by artificially slowing down img_render by sticking a sleep in there. diff --git a/main.c b/main.c index 5dc52d4..0580011 100644 --- a/main.c +++ b/main.c @@ -441,6 +441,7 @@ void redraw(void) if (mode == MODE_IMAGE) { img_render(&img); + nanosleep(&(struct timespec){0, 62000000}, NULL); /* 62ms */ if (img.ss.on) { t = img.ss.delay * 100; if (img.multi.cnt > 0 && img.multi.animate) make it so that slideshow has higher priority than animate to fix the issue. Closes: https://github.com/nsxiv/nsxiv/issues/281
* fix: broken statusbar after key-handler cancellationNRK2022-05-191-25/+6
| | | | | | | | | | | | | | | | | | | to reproduce: 1. have an image-info script 2. invoke the key-handler 3. cancle invocation by pressing `escape` at this point, the statusbar ends up being empty. the regression seems to be caused by 6922d5d (changing select to poll), unsure why that is. in any case, this simplifies read_info quite a bit and solves the regression as well. in short: * read straight into the statusbar buffer * if read succeeds, make sure buffer is null terminated and replace any newline with space * close the script
* fix: don't override statusbar if info script doesn't existNRK2022-05-191-1/+1
| | | | | | | this happens when the keyhandler is invoked while viewing an animated image. if {image,thumb}-info scripts exists, everything works as expected. but if they don't, then update_info will override the statusbar.
* fix: broken thumbnail statusbar after running keyhandlerNRK2022-05-191-2/+2
|
* check_timeouts: avoid unnecessary conversions (#273)N-R-K2022-05-122-10/+4
| | | | | | | | before we were using select, which expected `struct timeval` as arg. so we needed to do ms -> timeval conversions. but now since we're using poll, which accepts milisec as arg, there's no need to do ms -> timeval -> ms. instead have check_timeouts directly return ms.
* Declare every extern function/variable in `nsxiv.h` (#268)N-R-K2022-05-037-48/+53
| | | | | | | | with a couple exceptions as they cause too many -Wshadow warnings. also moves the `extcmd_t` typedef on top for cosmetic purposes. also enable `-Wmissing-prototypes` in the ci
* Add thumb-info (#265)N-R-K2022-05-035-19/+69
| | | | Closes: https://github.com/nsxiv/nsxiv/issues/88 Closes: https://github.com/nsxiv/nsxiv/pull/253
* replace select() with poll() (#270)N-R-K2022-04-282-18/+14
| | | | | | | | | | usage of select (3) in modern programs is typically discouraged. this simply replaces the select call with poll (3) instead. and since poll conveniently ignores negative fds, this also reduces needs for some special casing. this also handles error if they occur, while old implementation didn't. other than the error handling, no change in functionality should occur.
* README: some wording change and cosmetics (#269)N-R-K2022-04-281-6/+8
|
* merge autoreload_{inotify,nop}.c into autoreload.c (#263)explosion-mental2022-04-273-45/+30
|
* code-style: reduce some unnecessary if-elses (#261)N-R-K2022-04-272-16/+5
| | | | also change the condition inside img_frame_animate() to check for positive value rather than comparing against 0.
* Update .desktop entry's mimetypes (#260)Michael2022-04-171-1/+1
| | | Co-authored-by: NRK <nrk@disroot.org>
* don't quit if imlib_create_image() fails (#248)N-R-K2022-04-121-2/+8
| | | | | ...simply print an error msg and try (slower) fallback. also adds a useful comment explaining why we're doing manual blending.
* fix: correctly close the font (#250)N-R-K2022-04-101-2/+3
| | | | | | | currently we immediately close the font on win_init_font(), which was introduced in 0d8dcfd. this was probably not correct since we use `font` later in win_draw_text(). instead, the font should be closed at exit/cleanup.
* Improve starting in fullscreen modeKim Woelders2022-03-311-3/+6
| | | | | | Instead of effectively first mapping the window at regular size and then fullscreening it, tell the WM to map the window at fullscreen size by setting _NET_WM_STATE_FULLSCREEN before mapping the window.
* Correct setting of _NET_WM_PIDKim Woelders2022-03-311-2/+2
| | | | | | | The property _NET_WM_PID is a CARDINAL which per definition has format 32, whatever the size of pid_t may be. CARDINALS (and other format 32 items) must always be passed to Xlib in long's, whatever the size of long may be.
* fix: thumbnail memory leak when removing file (#247)N-R-K2022-03-271-0/+4
|
* Fix typo and manpage improvement (#249)Nick Morrott2022-03-262-16/+27
| | | | | | | * Fixes some typo and adds some consistency to the manpage Typo detected automatically whilst packaging nsxiv for Debian Co-authored-by: NRK <nrk@disroot.org>
* fix: close the file descriptor in get_win_title() (#245)N-R-K2022-03-171-0/+1
| | | | this would eventually end up opening too many fds and erroring out with "too many open files".