X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/3d38277706a5155d57563d1221e7233d8159470a..a1e0e45e0121de619175e86db2e34be62b862646:/backup.c diff --git a/backup.c b/backup.c index 88f9eaed..a30e7ff8 100644 --- a/backup.c +++ b/backup.c @@ -39,11 +39,11 @@ static int make_simple_backup(char *fname) return 0; } - slprintf(fnamebak,sizeof(fnamebak),"%s%s",fname,backup_suffix); + snprintf(fnamebak,sizeof(fnamebak),"%s%s",fname,backup_suffix); if (do_rename(fname,fnamebak) != 0) { /* cygwin (at least version b19) reports EINVAL */ if (errno != ENOENT && errno != EINVAL) { - rprintf(FERROR,"rename %s %s : %s\n",fname,fnamebak,strerror(errno)); + rsyserr(FERROR, errno, "rename %s to backup %s", fname, fnamebak); return 0; } } else if (verbose > 1) { @@ -92,9 +92,9 @@ static int make_bak_dir(char *fname,char *bak_path) while(strncmp(bak_path,"./",2)==0) bak_path += 2; if(bak_path[strlen(bak_path)-1]!='/') { - slprintf(fullpath,sizeof(fullpath),"%s/",bak_path); + snprintf(fullpath,sizeof(fullpath),"%s/",bak_path); } else { - slprintf(fullpath,sizeof(fullpath),"%s",bak_path); + snprintf(fullpath,sizeof(fullpath),"%s",bak_path); } p=fullpath; q=&fullpath[strlen(fullpath)]; /* End of bak_path string */ @@ -197,7 +197,10 @@ static int keep_backup(char *fname) if (do_stat (fname, &st)) return 1; #endif - file = make_file (0, fname, 0); + file = make_file(-1, fname, NULL, 1); + + /* the file could have disappeared */ + if (!file) return 1; /* make a complete pathname for backup file */ if (strlen(backup_dir) + strlen(fname) > (MAXPATHLEN - 1)) { @@ -205,7 +208,7 @@ static int keep_backup(char *fname) return 0; } - slprintf(keep_name, sizeof (keep_name), "%s/%s", backup_dir, fname); + snprintf(keep_name, sizeof (keep_name), "%s/%s", backup_dir, fname); #ifdef HAVE_MKNOD