X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/c3cbcfb8ef1f8b6a6894593a7bcb5ce05e7c8edd..669e76717c64bf40a8626da779839420cbf4a068:/generator.c diff --git a/generator.c b/generator.c index 44a7b93a..79b7e63f 100644 --- a/generator.c +++ b/generator.c @@ -302,7 +302,7 @@ static int unchanged_attrs(struct file_struct *file, STRUCT_STAT *st) static void itemize(struct file_struct *file, int statret, STRUCT_STAT *st, int32 iflags, int f_out, int ndx) { - if (statret >= 0) { + if (statret == 0) { if (S_ISREG(file->mode) && file->length != st->st_size) iflags |= ITEM_REPORT_SIZE; if (!(iflags & ITEM_NO_DEST_AND_NO_UPDATE)) { @@ -331,7 +331,7 @@ static void itemize(struct file_struct *file, int statret, STRUCT_STAT *st, write_int(f_out, ndx); write_shortint(f_out, iflags); } else if (ndx >= 0) - log_recv(file, &stats, iflags); + log_item(file, &stats, iflags, NULL); } } @@ -950,13 +950,8 @@ prepare_to_open: statret = 0; } - if (dry_run || read_batch) - goto notify_others; - if (whole_file > 0) { - if (statret == 0) - statret = 1; + if (dry_run || read_batch || whole_file) goto notify_others; - } if (fuzzy_basis) { int j = flist_find(fuzzy_dirlist, file); @@ -1026,41 +1021,32 @@ notify_others: if (f_out_name >= 0) { write_byte(f_out_name, fnamecmp_type); if (fnamecmp_type == FNAMECMP_FUZZY) { - uchar lenbuf[3], *lb = lenbuf; - int len = strlen(fuzzy_file->basename); - if (len > 0x7F) { -#if MAXPATHLEN > 0x7FFF - *lb++ = len / 0x10000 + 0x80; - *lb++ = len / 0x100; -#else - *lb++ = len / 0x100 + 0x80; -#endif - } - *lb = len; - write_buf(f_out_name, (char*)lenbuf, lb - lenbuf + 1); - write_buf(f_out_name, fuzzy_file->basename, len); + write_vstring(f_out_name, fuzzy_file->basename, + strlen(fuzzy_file->basename)); } } if (dry_run || read_batch) return; - if (statret == 0) { - generate_and_send_sums(fd, st.st_size, f_out, f_copy); - - if (f_copy >= 0) { - close(f_copy); - set_perms(backupptr, back_file, NULL, 0); - if (verbose > 1) { - rprintf(FINFO, "backed up %s to %s\n", - safe_fname(fname), safe_fname(backupptr)); - } - free(back_file); + if (statret != 0 || whole_file) { + write_sum_head(f_out, NULL); + return; + } + + generate_and_send_sums(fd, st.st_size, f_out, f_copy); + + if (f_copy >= 0) { + close(f_copy); + set_perms(backupptr, back_file, NULL, 0); + if (verbose > 1) { + rprintf(FINFO, "backed up %s to %s\n", + safe_fname(fname), safe_fname(backupptr)); } + free(back_file); + } - close(fd); - } else - write_sum_head(f_out, NULL); + close(fd); } @@ -1105,9 +1091,11 @@ void generate_files(int f_out, struct file_list *flist, char *local_name, if (delete_before && !local_name && flist->count > 0) do_delete_pass(flist, allowed_lull); + if (whole_file < 0) + whole_file = 0; if (verbose >= 2) { rprintf(FINFO, "delta-transmission %s\n", - whole_file > 0 + whole_file ? "disabled for local transfer or --whole-file" : "enabled"); }