2005-04-15 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Fri, 15 Apr 2005 09:04:43 +0000 (09:04 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Fri, 15 Apr 2005 09:04:43 +0000 (09:04 +0000)
* symcryptrun.c (TEMP_FAILURE_RETRY): Define if not defined.

tools/ChangeLog
tools/symcryptrun.c

index 981c52f..62a5e84 100644 (file)
@@ -1,5 +1,7 @@
 2005-04-15  Marcus Brinkmann  <marcus@g10code.de>
 
+       * symcryptrun.c (TEMP_FAILURE_RETRY): Define if not defined.
+
        * symcryptrun.c (remove_file): New function.
        (confucius_copy_file): Accept new argument PLAIN and shred the
        file if it is set on error.
index 9f3a55f..b35e4d7 100644 (file)
@@ -217,6 +217,21 @@ i18n_init(void)
 }
 
 \f
+/* This is in the GNU C library in unistd.h.  */
+
+#ifndef TEMP_FAILURE_RETRY
+/* Evaluate EXPRESSION, and repeat as long as it returns -1 with `errno'
+   set to EINTR.  */
+
+# define TEMP_FAILURE_RETRY(expression) \
+  (__extension__                                                              \
+    ({ long int __result;                                                     \
+       do __result = (long int) (expression);                                 \
+       while (__result == -1L && errno == EINTR);                             \
+       __result; }))
+#endif
+
+
 /* Unlink a file, and shred it if SHRED is true.  */
 int
 remove_file (char *name, int shred)