aboutsummaryrefslogtreecommitdiffstats
path: root/src/vu-arithm.c
diff options
context:
space:
mode:
authorMattias Andrée <maandree@kth.se>2017-01-11 09:30:33 +0100
committerMattias Andrée <maandree@kth.se>2017-01-11 09:30:33 +0100
commita21ebe8bea569e7d8961b9711d430d21c92f769b (patch)
treedda3810db2e7ad3683bdfc6f68538da144c2a0c8 /src/vu-arithm.c
parentClean up code (diff)
downloadblind-a21ebe8bea569e7d8961b9711d430d21c92f769b.tar.gz
blind-a21ebe8bea569e7d8961b9711d430d21c92f769b.tar.bz2
blind-a21ebe8bea569e7d8961b9711d430d21c92f769b.tar.xz
Reuse code
Signed-off-by: Mattias Andrée <maandree@kth.se>
Diffstat (limited to 'src/vu-arithm.c')
-rw-r--r--src/vu-arithm.c50
1 files changed, 2 insertions, 48 deletions
diff --git a/src/vu-arithm.c b/src/vu-arithm.c
index fd0ff6a..b4c09cc 100644
--- a/src/vu-arithm.c
+++ b/src/vu-arithm.c
@@ -57,9 +57,7 @@ LIST_OPERATORS
int
main(int argc, char *argv[])
{
- struct stream left;
- struct stream right;
- size_t n;
+ struct stream left, right;
process_func process = NULL;
ENOFLAGS(argc != 2);
@@ -72,55 +70,11 @@ main(int argc, char *argv[])
right.fd = eopen(right.file, O_RDONLY);
einit_stream(&right);
- echeck_compat(&left, &right);
-
if (!strcmp(left.pixfmt, "xyza"))
process = get_lf_process(argv[0]);
else
eprintf("pixel format %s is not supported, try xyza\n", left.pixfmt);
- for (;;) {
- if (left.ptr < sizeof(left.buf) && !eread_stream(&left, SIZE_MAX)) {
- close(left.fd);
- left.fd = -1;
- break;
- }
- if (right.ptr < sizeof(right.buf) && !eread_stream(&right, SIZE_MAX)) {
- close(right.fd);
- right.fd = -1;
- break;
- }
-
- n = left.ptr < right.ptr ? left.ptr : right.ptr;
- n -= n % left.pixel_size;
- left.ptr -= n;
- right.ptr -= n;
-
- process(&left, &right, n);
-
- ewriteall(STDOUT_FILENO, left.buf, n, "<stdout>");
- if ((n & 3) || left.ptr != right.ptr) {
- memmove(left.buf, left.buf + n, left.ptr);
- memmove(right.buf, right.buf + n, right.ptr);
- }
- }
-
- if (right.fd >= 0)
- close(right.fd);
-
- ewriteall(STDOUT_FILENO, left.buf, left.ptr, "<stdout>");
-
- if (left.fd >= 0) {
- for (;;) {
- left.ptr = 0;
- if (!eread_stream(&left, SIZE_MAX)) {
- close(left.fd);
- left.fd = -1;
- break;
- }
- ewriteall(STDOUT_FILENO, left.buf, left.ptr, "<stdout>");
- }
- }
-
+ process_two_streams(&left, &right, STDOUT_FILENO, "<stdout>", process);
return 0;
}