From f2ab77512354b3a1689eff8ecbdedd310e2e8119 Mon Sep 17 00:00:00 2001 From: Samanta Navarro Date: Sat, 24 Jul 2021 11:52:34 +0000 Subject: [PATCH] abuild: avoid calculations with void pointers Arithmetic operations with void pointers are an extension by some compilers and not part of the C standard, which does not specify the size of void. CFLAGS with -pedantic reveals this during compile time. I have adjusted the usage of ?: so CFLAGS can contain -pedantic now. --- Makefile | 2 +- abuild-gzsplit.c | 2 +- abuild-sudo.c | 2 +- abuild-tar.c | 10 ++++++---- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/Makefile b/Makefile index a58e0b2..4c0a4b7 100644 --- a/Makefile +++ b/Makefile @@ -34,7 +34,7 @@ TAR := tar SCDOC := scdoc LINK = $(CC) $(OBJS-$@) -o $@ $(LDFLAGS) $(LDFLAGS-$@) $(LIBS-$@) -CFLAGS ?= -Wall -Werror -g +CFLAGS ?= -Wall -Werror -g -pedantic SED_REPLACE := -e 's:@VERSION@:$(FULL_VERSION):g' \ -e 's:@prefix@:$(prefix):g' \ diff --git a/abuild-gzsplit.c b/abuild-gzsplit.c index 9b171eb..ac55c54 100644 --- a/abuild-gzsplit.c +++ b/abuild-gzsplit.c @@ -75,7 +75,7 @@ int main(void) } if (zs.avail_in == 0 || r == Z_STREAM_END) { - len = (void *)zs.next_in - (void *)ibuf; + len = (char *)zs.next_in - (char *)ibuf; if (write(fd, ibuf, len) != len) { warn("Failed to write to %s", fn); goto err; diff --git a/abuild-sudo.c b/abuild-sudo.c index 2c8dbcf..450e4ad 100644 --- a/abuild-sudo.c +++ b/abuild-sudo.c @@ -104,7 +104,7 @@ int main(int argc, const char *argv[]) if (name == NULL) warnx("Could not find username for uid %d\n", uid); - setenv("USER", name ?: "", 1); + setenv("USER", name ? name : "", 1); cmd = strrchr(argv[0], '/'); if (cmd) diff --git a/abuild-tar.c b/abuild-tar.c index 5964eac..44ebf17 100644 --- a/abuild-tar.c +++ b/abuild-tar.c @@ -122,15 +122,16 @@ static int usage(void) static ssize_t full_read(int fd, void *buf, size_t count) { ssize_t total, n; + char *p = buf; total = 0; do { - n = read(fd, buf, count); + n = read(fd, p, count); if (n < 0 && errno == EINTR) continue; if (n <= 0) break; - buf += n; + p += n; total += n; count -= n; } while (1); @@ -144,15 +145,16 @@ static ssize_t full_read(int fd, void *buf, size_t count) static ssize_t full_write(int fd, const void *buf, size_t count) { ssize_t total, n; + const char *p = buf; total = 0; do { - n = write(fd, buf, count); + n = write(fd, p, count); if (n < 0 && errno == EINTR) continue; if (n <= 0) break; - buf += n; + p += n; total += n; count -= n; } while (1);