[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[tyndur-devel] [PATCH] libc: Fehler in mkstemp zurueckgeben



! libc: mkstemp darf es nicht bei allen Fehlern nochmal versuchen. git
  versucht beispielsweise eine temporaere Datei anzulegen, die in einem
  Verzeichnis liegt, das erst angelegt wird, nachdem ein ENOENT kommt.

Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
 src/modules/lib/posix/mktemp.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/modules/lib/posix/mktemp.c b/src/modules/lib/posix/mktemp.c
index 9095afd..67940f2 100644
--- a/src/modules/lib/posix/mktemp.c
+++ b/src/modules/lib/posix/mktemp.c
@@ -96,14 +96,14 @@ int mkstemp(char* template)
     size_t len = strlen(template);
     char buf[len + 1];
 
-    while (fd == -1) {
+    do {
         strcpy(buf, template);
         if (!mktemp(buf)) {
             return fd;
         }
 
         fd = open(buf, O_EXCL | O_CREAT);
-    }
+    } while (fd == -1 && (errno == EEXIST || errno == EINTR));
 
     strcpy(template, buf);
     return fd;
-- 
1.6.0.2