|
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) {
|