teknoraver / rpms / systemd

Forked from rpms/systemd 2 months ago
Clone

Blame 0014-util-simplify-close_nointr-a-bit.patch

Zbigniew Jędrzejewski-Szmek 62fe94
From a9f85faf43ae2289e19ba9105c36496aefe66072 Mon Sep 17 00:00:00 2001
Zbigniew Jędrzejewski-Szmek 62fe94
From: Lennart Poettering <lennart@poettering.net>
Zbigniew Jędrzejewski-Szmek 62fe94
Date: Thu, 21 Aug 2014 16:13:15 +0200
Zbigniew Jędrzejewski-Szmek 62fe94
Subject: [PATCH] util: simplify close_nointr() a bit
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
---
Zbigniew Jędrzejewski-Szmek 62fe94
 src/shared/util.c | 33 ++++++++++++++++-----------------
Zbigniew Jędrzejewski-Szmek 62fe94
 1 file changed, 16 insertions(+), 17 deletions(-)
Zbigniew Jędrzejewski-Szmek 62fe94
Zbigniew Jędrzejewski-Szmek 62fe94
diff --git a/src/shared/util.c b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
index 9d254e0464..a54e879953 100644
Zbigniew Jędrzejewski-Szmek 62fe94
--- a/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
+++ b/src/shared/util.c
Zbigniew Jędrzejewski-Szmek 62fe94
@@ -175,25 +175,24 @@ char* first_word(const char *s, const char *word) {
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 int close_nointr(int fd) {
Zbigniew Jędrzejewski-Szmek 62fe94
-        int r;
Zbigniew Jędrzejewski-Szmek 62fe94
-
Zbigniew Jędrzejewski-Szmek 62fe94
         assert(fd >= 0);
Zbigniew Jędrzejewski-Szmek 62fe94
-        r = close(fd);
Zbigniew Jędrzejewski-Szmek 62fe94
-        if (r >= 0)
Zbigniew Jędrzejewski-Szmek 62fe94
-                return r;
Zbigniew Jędrzejewski-Szmek 62fe94
-        else if (errno == EINTR)
Zbigniew Jędrzejewski-Szmek 62fe94
-                /*
Zbigniew Jędrzejewski-Szmek 62fe94
-                 * Just ignore EINTR; a retry loop is the wrong
Zbigniew Jędrzejewski-Szmek 62fe94
-                 * thing to do on Linux.
Zbigniew Jędrzejewski-Szmek 62fe94
-                 *
Zbigniew Jędrzejewski-Szmek 62fe94
-                 * http://lkml.indiana.edu/hypermail/linux/kernel/0509.1/0877.html
Zbigniew Jędrzejewski-Szmek 62fe94
-                 * https://bugzilla.gnome.org/show_bug.cgi?id=682819
Zbigniew Jędrzejewski-Szmek 62fe94
-                 * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR
Zbigniew Jędrzejewski-Szmek 62fe94
-                 * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain
Zbigniew Jędrzejewski-Szmek 62fe94
-                 */
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        if (close(fd) >= 0)
Zbigniew Jędrzejewski-Szmek 62fe94
                 return 0;
Zbigniew Jędrzejewski-Szmek 62fe94
-        else
Zbigniew Jędrzejewski-Szmek 62fe94
-                return -errno;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        /*
Zbigniew Jędrzejewski-Szmek 62fe94
+         * Just ignore EINTR; a retry loop is the wrong thing to do on
Zbigniew Jędrzejewski-Szmek 62fe94
+         * Linux.
Zbigniew Jędrzejewski-Szmek 62fe94
+         *
Zbigniew Jędrzejewski-Szmek 62fe94
+         * http://lkml.indiana.edu/hypermail/linux/kernel/0509.1/0877.html
Zbigniew Jędrzejewski-Szmek 62fe94
+         * https://bugzilla.gnome.org/show_bug.cgi?id=682819
Zbigniew Jędrzejewski-Szmek 62fe94
+         * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR
Zbigniew Jędrzejewski-Szmek 62fe94
+         * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain
Zbigniew Jędrzejewski-Szmek 62fe94
+         */
Zbigniew Jędrzejewski-Szmek 62fe94
+        if (errno == EINTR)
Zbigniew Jędrzejewski-Szmek 62fe94
+                return 0;
Zbigniew Jędrzejewski-Szmek 62fe94
+
Zbigniew Jędrzejewski-Szmek 62fe94
+        return -errno;
Zbigniew Jędrzejewski-Szmek 62fe94
 }
Zbigniew Jędrzejewski-Szmek 62fe94
 
Zbigniew Jędrzejewski-Szmek 62fe94
 int safe_close(int fd) {