added CmiFopen that handles interrupt.
authorGengbin Zheng <gzheng@illinois.edu>
Wed, 20 Oct 2010 07:12:30 +0000 (02:12 -0500)
committerGengbin Zheng <gzheng@illinois.edu>
Wed, 20 Oct 2010 07:12:30 +0000 (02:12 -0500)
src/conv-core/converse.h
src/util/pup_util.C

index 9829c54513341695bedbfcc5a84d03fd38933d55..88e6c7ef2ca2570f97e90769af86d88e52f2d573 100644 (file)
@@ -1858,6 +1858,7 @@ extern int CmiGridQueueLookupMsg (char *msg);
 /******** I/O wrappers ***********/
 
 size_t CmiFwrite(const void *ptr, size_t size, size_t nmemb, FILE *f);
+FILE *CmiFopen(const char *path, const char *mode);
 int CmiFclose(FILE *fp);
 
 #include "debug-conv.h"
index 53f1a85a593296b5d8876ad513121e8e57f5fa88..b2cb6e97d31098198206869208426e7c12ce173f 100644 (file)
@@ -156,6 +156,21 @@ size_t CmiFwrite(const void *ptr, size_t size, size_t nmemb, FILE *f)
         return nwritten;
 }
 
+FILE *CmiFopen(const char *path, const char *mode)
+{
+        FILE *fp = NULL;
+        while (1) {
+          fp = fopen(path, mode);
+          if (fp == 0 && errno==EINTR) {
+            printf("Warning: CmiFopen retrying ...\n");
+            continue;
+          }
+          else
+            break;
+        }
+        return fp;
+}
+
 // more robust fclose that handling interrupt
 int CmiFclose(FILE *fp)
 {