Added RERR_VANISHED.
[rsync/rsync.git] / batch.c
diff --git a/batch.c b/batch.c
index f27e6fc..d503373 100644 (file)
--- a/batch.c
+++ b/batch.c
@@ -185,15 +185,14 @@ struct file_list *create_flist_from_batch(void)
        fdb_open = 1;
        fdb_close = 0;
 
-       batch_flist = (struct file_list *) malloc(sizeof(batch_flist[0]));
+       batch_flist = new(struct file_list);
        if (!batch_flist) {
                out_of_memory("create_flist_from_batch");
        }
        batch_flist->count = 0;
        batch_flist->malloced = 1000;
-       batch_flist->files =
-           (struct file_struct **) malloc(sizeof(batch_flist->files[0]) *
-                                          batch_flist->malloced);
+       batch_flist->files = new_array(struct file_struct *,
+                                      batch_flist->malloced);
        if (!batch_flist->files) {
                out_of_memory("create_flist_from_batch");
        }
@@ -207,14 +206,10 @@ struct file_list *create_flist_from_batch(void)
                                batch_flist->malloced += 1000;
                        else
                                batch_flist->malloced *= 2;
-                       batch_flist->files =
-                           (struct file_struct **) realloc(batch_flist->
-                                                           files,
-                                                           sizeof
-                                                           (batch_flist->
-                                                            files[0]) *
-                                                           batch_flist->
-                                                           malloced);
+                       batch_flist->files
+                               = realloc_array(batch_flist->files,
+                                               struct file_struct *,
+                                               batch_flist->malloced);
                        if (!batch_flist->files)
                                out_of_memory("create_flist_from_batch");
                }
@@ -264,7 +259,7 @@ int read_batch_flist_file(char *buff, int len)
        return bytes_read;
 }
 
-unsigned char read_batch_flags()
+unsigned char read_batch_flags(void)
 {
        int flags;
 
@@ -282,7 +277,7 @@ void read_batch_flist_info(struct file_struct **fptr)
        char buff[256];
        struct file_struct *file;
 
-       file = (struct file_struct *) malloc(sizeof(*file));
+       file = new(struct file_struct);
        if (!file)
                out_of_memory("read_batch_flist_info");
        memset((char *) file, 0, sizeof(*file));
@@ -392,20 +387,27 @@ void close_batch_csums_file(void)
        close(fdb);
 }
 
+
+/**
+ * Write csum info to batch file 
+ *
+ * @todo This will break if s->count is ever larger than maxint.  The
+ * batch code should probably be changed to consistently use the
+ * variable-length integer routines, which is probably a compatible
+ * change.
+ **/
 void write_batch_csum_info(int *flist_entry, int flist_count,
                           struct sum_struct *s)
 {
        size_t i;
-       size_t int_zero = 0;
+       int int_count;
        extern int csum_length;
 
        fdb_open = 1;
 
-       /* Write csum info to batch file */
-
-       /* FIXME: This will break if s->count is ever not exactly an int. */
        write_batch_csums_file(flist_entry, sizeof(int));
-       write_batch_csums_file(s ? &s->count : &int_zero, sizeof(int));
+       int_count = s ? (int) s->count : 0;
+       write_batch_csums_file(&int_count, sizeof int_count);
        
        if (s) {
                for (i = 0; i < s->count; i++) {