From 979d85c842898463192c7e7dae87798c1df6d471 Mon Sep 17 00:00:00 2001 From: Michael Forney Date: Fri, 30 Apr 2021 20:02:41 -0700 Subject: [PATCH] Avoid use of statement-expressions --- Makefile.am | 2 +- acpi_listen.c | 6 +++--- acpid.c | 4 ++-- event.c | 5 +++-- input_layer.c | 4 ++-- libc_compat.h | 40 ---------------------------------------- libnetlink.c | 17 +++++++++-------- netlink.c | 4 ++-- proc.c | 5 +++-- ud_socket.c | 5 +++-- 10 files changed, 28 insertions(+), 64 deletions(-) delete mode 100644 libc_compat.h diff --git a/Makefile.am b/Makefile.am index 417528f..1c80ca4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -14,7 +14,7 @@ bin_PROGRAMS = acpi_listen acpid_SOURCES = acpid.c acpi_ids.c connection_list.c event.c input_layer.c inotify_handler.c libnetlink.c log.c netlink.c proc.c sock.c ud_socket.c \ acpid.h acpi_genetlink.h acpi_ids.h config.h connection_list.h event.h genetlink.h inotify_handler.h input_layer.h \ - libnetlink.h log.h netlink.h proc.h sock.h ud_socket.h libc_compat.h + libnetlink.h log.h netlink.h proc.h sock.h ud_socket.h acpi_listen_SOURCES = acpi_listen.c log.c ud_socket.c diff --git a/acpi_listen.c b/acpi_listen.c index 63a1cc3..674cc80 100644 --- a/acpi_listen.c +++ b/acpi_listen.c @@ -39,8 +39,6 @@ #include "acpid.h" #include "ud_socket.h" -#include "libc_compat.h" - static int handle_cmdline(int *argc, char ***argv); static char *read_line(int fd); @@ -217,8 +215,10 @@ read_line(int fd) memset(buf+i, 0, buflen-i); while (i < buflen) { - r = TEMP_FAILURE_RETRY (read(fd, buf+i, 1) ); + r = read(fd, buf+i, 1); if (r < 0) { + if (errno == EINTR) + continue; /* we should do something with the data */ fprintf(stderr, "ERR: read(): %s\n", strerror(errno)); diff --git a/acpid.c b/acpid.c index cb1875a..6538578 100644 --- a/acpid.c +++ b/acpid.c @@ -41,7 +41,6 @@ #include "input_layer.h" #include "inotify_handler.h" #include "netlink.h" -#include "libc_compat.h" static int handle_cmdline(int *argc, char ***argv); static void close_fds(void); @@ -153,7 +152,8 @@ main(int argc, char **argv) readfds = *get_fdset(); /* wait on data */ - nready = TEMP_FAILURE_RETRY(select(get_highestfd() + 1, &readfds, NULL, NULL, NULL)); + do nready = select(get_highestfd() + 1, &readfds, NULL, NULL, NULL); + while (nready == -1 && errno == EINTR); if (nready < 0) { acpid_log(LOG_ERR, "select(): %s", strerror(errno)); diff --git a/event.c b/event.c index 6c67062..033466e 100644 --- a/event.c +++ b/event.c @@ -39,7 +39,6 @@ #include "log.h" #include "sock.h" #include "ud_socket.h" -#include "libc_compat.h" #include "event.h" /* @@ -754,8 +753,10 @@ safe_write(int fd, const char *buf, int len) int ntries = NTRIES; do { - r = TEMP_FAILURE_RETRY (write(fd, buf+ttl, len-ttl) ); + r = write(fd, buf+ttl, len-ttl); if (r < 0) { + if (errno == EINTR) + continue; if (errno != EAGAIN) { /* a legit error */ return r; diff --git a/input_layer.c b/input_layer.c index 00246b3..f6bddef 100644 --- a/input_layer.c +++ b/input_layer.c @@ -42,7 +42,6 @@ #include "log.h" #include "connection_list.h" #include "event.h" -#include "libc_compat.h" #include "input_layer.h" @@ -352,7 +351,8 @@ static void process_input(int fd) struct connection *c; char str2[100]; - nbytes = TEMP_FAILURE_RETRY ( read(fd, &event, sizeof(event)) ); + do nbytes = read(fd, &event, sizeof(event)); + while (nbytes == -1 && errno == EINTR); if (nbytes == 0) { acpid_log(LOG_WARNING, "input layer connection closed"); diff --git a/libc_compat.h b/libc_compat.h deleted file mode 100644 index 39f2336..0000000 --- a/libc_compat.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * libc_compat.h - implement defs/macros missing from some libcs - * - * Copyright (C) 1999-2000 Andrew Henroid - * Copyright (C) 2001 Sun Microsystems - * Portions Copyright (C) 2004 Tim Hockin (thockin@hockin.org) - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef LIBC_COMPAT_H__ -#define LIBC_COMPAT_H__ - -/* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno' - set to EINTR. This macro is present on glibc/uclibc but may not be in other cases. */ - -#ifndef ____GLIBC__ -#ifndef TEMP_FAILURE_RETRY -#define TEMP_FAILURE_RETRY(expression) \ - (__extension__ \ - ({ long int __result; \ - do __result = (long int) (expression); \ - while (__result == -1L && errno == EINTR); \ - __result; })) -#endif -#endif /* __GLIBC__ */ - -#endif /* LIBC_COMPAT_H__ */ diff --git a/libnetlink.c b/libnetlink.c index d94bd5f..7ad00df 100644 --- a/libnetlink.c +++ b/libnetlink.c @@ -31,8 +31,6 @@ #include #include -#include "libc_compat.h" - #include "libnetlink.h" void rtnl_close(struct rtnl_handle *rth) @@ -180,10 +178,11 @@ int rtnl_dump_filter(struct rtnl_handle *rth, struct nlmsghdr *h; iov.iov_len = sizeof(buf); - status = TEMP_FAILURE_RETRY ( recvmsg(rth->fd, &msg, MSG_CMSG_CLOEXEC) ); + status = recvmsg(rth->fd, &msg, MSG_CMSG_CLOEXEC); if (status < 0) { - perror("OVERRUN"); + if (errno != EINTR) + perror("OVERRUN"); continue; } @@ -281,10 +280,11 @@ int rtnl_talk(struct rtnl_handle *rtnl, struct nlmsghdr *n, pid_t peer, while (1) { iov.iov_len = sizeof(buf); - status = TEMP_FAILURE_RETRY ( recvmsg(rtnl->fd, &msg, MSG_CMSG_CLOEXEC) ); + status = recvmsg(rtnl->fd, &msg, MSG_CMSG_CLOEXEC); if (status < 0) { - perror("OVERRUN"); + if (errno != EINTR) + perror("OVERRUN"); continue; } if (status == 0) { @@ -383,10 +383,11 @@ int rtnl_listen(struct rtnl_handle *rtnl, iov.iov_base = buf; while (1) { iov.iov_len = sizeof(buf); - status = TEMP_FAILURE_RETRY ( recvmsg(rtnl->fd, &msg, MSG_CMSG_CLOEXEC) ); + status = recvmsg(rtnl->fd, &msg, MSG_CMSG_CLOEXEC); if (status < 0) { - perror("OVERRUN"); + if (errno != EINTR) + perror("OVERRUN"); continue; } if (status == 0) { diff --git a/netlink.c b/netlink.c index 8254762..695bb33 100644 --- a/netlink.c +++ b/netlink.c @@ -48,7 +48,6 @@ #include "libnetlink.h" #include "genetlink.h" #include "acpi_genetlink.h" -#include "libc_compat.h" #include "acpi_ids.h" #include "connection_list.h" @@ -151,7 +150,8 @@ process_netlink(int fd) iov.iov_len = sizeof(buf); /* read the data into the buffer */ - status = TEMP_FAILURE_RETRY ( recvmsg(fd, &msg, MSG_CMSG_CLOEXEC) ); + do status = recvmsg(fd, &msg, MSG_CMSG_CLOEXEC); + while (status == -1 && errno == EINTR); /* if there was a problem, print a message and keep trying */ if (status < 0) { diff --git a/proc.c b/proc.c index f96b913..295cb73 100644 --- a/proc.c +++ b/proc.c @@ -31,7 +31,6 @@ #include "log.h" #include "event.h" #include "connection_list.h" -#include "libc_compat.h" #include "proc.h" @@ -137,8 +136,10 @@ read_line(int fd) /* only go to BUFLEN-1 so there will always be a 0 at the end */ while (i < BUFLEN-1) { - r = TEMP_FAILURE_RETRY(read(fd, buf+i, 1)); + r = read(fd, buf+i, 1); if (r < 0) { + if (errno == EINTR) + continue; /* we should do something with the data */ acpid_log(LOG_ERR, "read(): %s", strerror(errno)); diff --git a/ud_socket.c b/ud_socket.c index 83b2aa9..15a3b4a 100644 --- a/ud_socket.c +++ b/ud_socket.c @@ -21,7 +21,6 @@ #include "acpid.h" #include "log.h" #include "ud_socket.h" -#include "libc_compat.h" int ud_create_socket(const char *name, mode_t socketmode) @@ -87,8 +86,10 @@ ud_accept(int listenfd, struct ucred *cred) struct sockaddr_un cliaddr; socklen_t len = sizeof(struct sockaddr_un); - newsock = TEMP_FAILURE_RETRY (accept4(listenfd, (struct sockaddr *)&cliaddr, &len, SOCK_CLOEXEC|SOCK_NONBLOCK)); + newsock = accept4(listenfd, (struct sockaddr *)&cliaddr, &len, SOCK_CLOEXEC|SOCK_NONBLOCK); if (newsock < 0) { + if (errno == EINTR) + continue; return newsock; } if (cred) { -- 2.37.3