Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Store getopt() return in a signed variable
|
|
On certain platforms [0] a char may be unsigned [1]. The loop for
getopt would loop forever because:
(char)-1 => 255 and 255 != -1
A signed char also worked. I don't know what that would mean for
performance or portability. int feels simpler to me.
[0]: I'm using Arch Linux ARM on the Samsung Chromebook 2, which is
armv7h. Not sure about other ARM platforms. With this fix, imv
appears to work correctly.
details: https://archlinuxarm.org/platforms/armv7/samsung/samsung-chromebook-2
[1]: http://stackoverflow.com/questions/2054939/is-char-signed-or-unsigned-by-default#2054941
|
|
|
|
Unconditionally echo build commands
|
|
Also, use default abbreviation length, so that abbreviated object name in
VERSION would match github's display of commit IDs.
|
|
|
|
PR #98 hints that we were venturing into downstream's territory: compiler and
linker flags may be OS-specific, while preprocessor flags and libraries are our
responsibility. Provide clean separation between these categories.
Downstreams may still need to provide "--std=c99" in CFLAGS though.
|
|
Fixes #97.
|
|
When the user hits left/right to change image, the time left until the
slideshow changes images is reset. If the user changes image by closing
the current image, the timer is not reset. This patch resolves that.
|
|
Most shells would interpret the hash sign as start of the comment, so command
with an unescaped hash sign will result in rather puzzling error message:
$ imv -b #C0C0C0 files...
Unknown argument 'b'. Aborting.
Although there is obvious workaround (detect 'b' in '?' case of getopt switch
and put more appropriate message), it generally makes more sense to suggest
plain hex values for input.
|
|
It is actually a trivial task for strtoul + some bit shifting, so there is no
need for two separate functions.
|
|
|
|
Once cmocka is built, it is cached, so that subsequent builds only need to
install it and update linker configuration.
|
|
|
|
|
|
This prevents imv from trying to "catch up" on the time that it was
asleep for by playing the gif back at high speed.
|
|
From read(2) manual page on OpenBSD:
Error checks should explicitly test for -1. Code such as
while ((nr = read(fd, buf, sizeof(buf))) > 0)
is not maximally portable, as some platforms allow for nbytes to range
between SSIZE_MAX and SIZE_MAX - 2, in which case the return value of an
error-free read() may appear as a negative number distinct from -1.
Proper loops should use
while ((nr = read(fd, buf, sizeof(buf))) != -1 && nr != 0)
Distingushing between error and eof would also help for debugging.
|
|
|
|
|
|
|
|
Fix the linking order of tests in the Makefile for --as-needed
|
|
When '--as-needed' linker flag is added to LDFLAGS, linker strips out
the symbols from the libraries needed for the tests due to the order
in which the libraries appear on the command line. List the source
files before the libraries to fix the linking issue.
For more information, see:
https://wiki.gentoo.org/wiki/Project:Quality_Assurance/As-needed#Importance_of_linking_order
Signed-off-by: Göktürk Yüksek <gokturk@gentoo.org>
|
|
|
|
Previously imv used -std=gnu11 flag which activated GNU "extensions" of C11
standard. This masked a portability issue in imv: strduo(3) should not have
been visible in `src/loader.c` without inclusion of `<string.h>` header. This
have been fixed. To remidy GNU libc's stange choice to hide X/Open interfaces
in C99 code by default _XOPEN_SOURCE macro was also set. (This should have no
effect on most other platforms.)
|
|
This reverts commit 9e3db8bdaad7d7752b24df5d9832b980a21f4496. The effort was
futile.
|
|
This way we may continue using strict flags for detecting issues while still
allowing old compiler versions elsewhere.
|
|
|
|
|
|
In case of error return non-zero value instead of cleaning up navigator. This
way main loop may do some more cleanup, or maybe even act differently.
|
|
Implementation details should not leak to other parts of the code.
While at it, clean up initialization and destruction of navigator.
|
|
Set "last_time" to current time at declaration time, so that it holds at least
something by the time it is used.
|
|
|
|
This allows to drop extra printing steps and memory allocations.
|
|
|
|
This change effectively backs out f1737ddd06141afbe99f37af3b5c2d0f1df5fe7a,
implementing the same functionality in a simpler and more correct way.
Implementation details:
* imv_navigator.wrapped - a new field that has value "0" by default; once
navigator wraps around the list, this field recieves value "1".
* imv_navigator_wrapped(&nav) - a new function that returns non-zero value iff
navigator wrapped around the list. Currently just returns value of
imv_navigator.wrapped.
While at it, expanded "test_navigator_remove" and merged it with
"test_navigator_add". Resulting test is called "test_navigator_add_remove".
Fixes #94.
|
|
When non-cycling mode prevents navigator from wrapping to the other end of list,
undo change to nav->cur_path. Otherwise it will remain out-of-bounds, so that
subsequent calls to navigator functions may produce unexpected results, up to
segmentation violation.
Fixes #93
|