Some platforms may have getaddrinfo() but not sockaddr_storage.
[rsync.git] / rsync.c
diff --git a/rsync.c b/rsync.c
index 2d267a0f08a75b2dd6836c5f16404c857dd6c62d..890d6a890b4a17d63f89e36e3ae91ba045d7a652 100644 (file)
--- a/rsync.c
+++ b/rsync.c
@@ -43,7 +43,7 @@ void free_sums(struct sum_struct *s)
 
 
 /*
- * delete a file or directory. If force_delet is set then delete 
+ * delete a file or directory. If force_delete is set then delete 
  * recursively 
  */
 int delete_file(char *fname)
@@ -56,34 +56,32 @@ int delete_file(char *fname)
        int ret;
        extern int recurse;
 
-       if (robust_unlink(fname) == 0 || errno == ENOENT) return 0;
-
 #if SUPPORT_LINKS
        ret = do_lstat(fname, &st);
 #else
        ret = do_stat(fname, &st);
 #endif
        if (ret) {
-               rprintf(FERROR,"stat(%s) : %s\n", fname, strerror(errno));
                return -1;
        }
 
        if (!S_ISDIR(st.st_mode)) {
-               rprintf(FERROR,"unlink(%s) : %s\n", fname, strerror(errno));
+               if (robust_unlink(fname) == 0 || errno == ENOENT) return 0;
+               rprintf(FERROR,"delete_file: unlink(%s) : %s\n", fname, strerror(errno));
                return -1;
        }
 
        if (do_rmdir(fname) == 0 || errno == ENOENT) return 0;
        if (!force_delete || !recurse || 
            (errno != ENOTEMPTY && errno != EEXIST)) {
-               rprintf(FERROR,"rmdir(%s) : %s\n", fname, strerror(errno));
+               rprintf(FERROR,"delete_file: rmdir(%s) : %s\n", fname, strerror(errno));
                return -1;
        }
 
        /* now we do a recsursive delete on the directory ... */
        d = opendir(fname);
        if (!d) {
-               rprintf(FERROR,"opendir(%s): %s\n",
+               rprintf(FERROR,"delete_file: opendir(%s): %s\n",
                        fname,strerror(errno));
                return -1;
        }
@@ -93,7 +91,7 @@ int delete_file(char *fname)
                if (strcmp(dname,".")==0 ||
                    strcmp(dname,"..")==0)
                        continue;
-               slprintf(buf, sizeof(buf), "%s/%s", fname, dname);
+               snprintf(buf, sizeof(buf), "%s/%s", fname, dname);
                if (verbose > 0)
                        rprintf(FINFO,"deleting %s\n", buf);
                if (delete_file(buf) != 0) {
@@ -105,7 +103,7 @@ int delete_file(char *fname)
        closedir(d);
        
        if (do_rmdir(fname) != 0) {
-               rprintf(FERROR,"rmdir(%s) : %s\n", fname, strerror(errno));
+               rprintf(FERROR,"delete_file: rmdir(%s) : %s\n", fname, strerror(errno));
                return -1;
        }
 
@@ -152,7 +150,6 @@ int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st,
        int updated = 0;
        STRUCT_STAT st2;
        int change_uid, change_gid;
-       extern int am_daemon;
 
        if (dry_run) return 0;
 
@@ -165,7 +162,7 @@ int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st,
        }
 
        if (preserve_times && !S_ISLNK(st->st_mode) &&
-           st->st_mtime != file->modtime) {
+           cmp_modtime(st->st_mtime, file->modtime) != 0) {
                /* don't complain about not setting times on directories
                   because some filesystems can't do it */
                if (set_modtime(fname,file->modtime) != 0 &&
@@ -229,6 +226,7 @@ int set_perms(char *fname,struct file_struct *file,STRUCT_STAT *st,
 
 void sig_int(void)
 {
+       rprintf(FINFO,"\nrsync.c:sig_int() called.\n");
        exit_cleanup(RERR_SIGNAL);
 }
 
@@ -260,6 +258,3 @@ void finish_transfer(char *fname, char *fnametmp, struct file_struct *file)
                set_perms(fname,file,NULL,0);
        }
 }
-
-
-