Use buffered I/O to read the exclude list.
[rsync/rsync.git] / util.c
diff --git a/util.c b/util.c
index e642064..ddb150a 100644 (file)
--- a/util.c
+++ b/util.c
@@ -197,12 +197,10 @@ static int full_write(int desc, char *ptr, size_t len)
        
        total_written = 0;
        while (len > 0) {
-               int written = write (desc, ptr, len);
+               int written = write(desc, ptr, len);
                if (written < 0)  {
-#ifdef EINTR
                        if (errno == EINTR)
                                continue;
-#endif
                        return written;
                }
                total_written += written;
@@ -231,13 +229,9 @@ static int safe_read(int desc, char *ptr, size_t len)
        if (len == 0)
                return len;
  
-#ifdef EINTR
        do {
                n_chars = read(desc, ptr, len);
        } while (n_chars < 0 && errno == EINTR);
-#else
-       n_chars = read(desc, ptr, len);
-#endif
  
        return n_chars;
 }
@@ -559,13 +553,6 @@ void strlower(char *s)
        }
 }
 
-void *Realloc(void *p, int size)
-{
-       if (!p) return (void *)malloc(size);
-       return (void *)realloc(p, size);
-}
-
-
 void clean_fname(char *name)
 {
        char *p;
@@ -1008,3 +995,23 @@ int _Insure_trap_error(int a1, int a2, int a3, int a4, int a5, int a6)
        return ret;
 }
 #endif
+
+
+#define MALLOC_MAX 0x40000000
+
+void *_new_array(unsigned int size, unsigned long num)
+{
+       if (num >= MALLOC_MAX/size)
+               return NULL;
+       return malloc(size * num);
+}
+
+void *_realloc_array(void *ptr, unsigned int size, unsigned long num)
+{
+       if (num >= MALLOC_MAX/size)
+               return NULL;
+       /* No realloc should need this, but just in case... */
+       if (!ptr)
+               return malloc(size * num);
+       return realloc(ptr, size * num);
+}