Matt McCutchen's Web Site
/
rsync
/
rsync.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
- added an internal io_error flag. Whenever an io error occurs (such
[rsync/rsync.git]
/
flist.c
diff --git
a/flist.c
b/flist.c
index
e67d4b2
..
0a61d34
100644
(file)
--- a/
flist.c
+++ b/
flist.c
@@
-44,6
+44,7
@@
extern int preserve_times;
extern int relative_paths;
extern int copy_links;
extern int remote_version;
extern int relative_paths;
extern int copy_links;
extern int remote_version;
+extern int io_error;
static char **local_exclude_list;
static char **local_exclude_list;
@@
-68,7
+69,7
@@
static int match_file_name(char *fname,struct stat *st)
{
if (check_exclude(fname,local_exclude_list)) {
if (verbose > 2)
{
if (check_exclude(fname,local_exclude_list)) {
if (verbose > 2)
- fprintf(F
ERROR
,"excluding file %s\n",fname);
+ fprintf(F
INFO
,"excluding file %s\n",fname);
return 0;
}
return 1;
return 0;
}
return 1;
@@
-356,13
+357,14
@@
static struct file_struct *make_file(char *fname)
bzero(sum,SUM_LENGTH);
if (link_stat(fname,&st) != 0) {
bzero(sum,SUM_LENGTH);
if (link_stat(fname,&st) != 0) {
+ io_error = 1;
fprintf(FERROR,"%s: %s\n",
fname,strerror(errno));
return NULL;
}
if (S_ISDIR(st.st_mode) && !recurse) {
fprintf(FERROR,"%s: %s\n",
fname,strerror(errno));
return NULL;
}
if (S_ISDIR(st.st_mode) && !recurse) {
- fprintf(F
ERROR
,"skipping directory %s\n",fname);
+ fprintf(F
INFO
,"skipping directory %s\n",fname);
return NULL;
}
return NULL;
}
@@
-375,7
+377,7
@@
static struct file_struct *make_file(char *fname)
return NULL;
if (verbose > 2)
return NULL;
if (verbose > 2)
- fprintf(F
ERROR
,"make_file(%s)\n",fname);
+ fprintf(F
INFO
,"make_file(%s)\n",fname);
file = (struct file_struct *)malloc(sizeof(*file));
if (!file) out_of_memory("make_file");
file = (struct file_struct *)malloc(sizeof(*file));
if (!file) out_of_memory("make_file");
@@
-413,6
+415,7
@@
static struct file_struct *make_file(char *fname)
int l;
char lnk[MAXPATHLEN];
if ((l=readlink(fname,lnk,MAXPATHLEN-1)) == -1) {
int l;
char lnk[MAXPATHLEN];
if ((l=readlink(fname,lnk,MAXPATHLEN-1)) == -1) {
+ io_error=1;
fprintf(FERROR,"readlink %s : %s\n",
fname,strerror(errno));
return NULL;
fprintf(FERROR,"readlink %s : %s\n",
fname,strerror(errno));
return NULL;
@@
-494,6
+497,7
@@
static void send_directory(int f,struct file_list *flist,char *dir)
d = opendir(dir);
if (!d) {
d = opendir(dir);
if (!d) {
+ io_error = 1;
fprintf(FERROR,"%s: %s\n",
dir,strerror(errno));
return;
fprintf(FERROR,"%s: %s\n",
dir,strerror(errno));
return;
@@
-504,6
+508,7
@@
static void send_directory(int f,struct file_list *flist,char *dir)
l = strlen(fname);
if (fname[l-1] != '/') {
if (l == MAXPATHLEN-1) {
l = strlen(fname);
if (fname[l-1] != '/') {
if (l == MAXPATHLEN-1) {
+ io_error = 1;
fprintf(FERROR,"skipping long-named directory %s\n",fname);
closedir(d);
return;
fprintf(FERROR,"skipping long-named directory %s\n",fname);
closedir(d);
return;
@@
-518,7
+523,8
@@
static void send_directory(int f,struct file_list *flist,char *dir)
strcpy(p,".cvsignore");
local_exclude_list = make_exclude_list(fname,NULL,0);
} else {
strcpy(p,".cvsignore");
local_exclude_list = make_exclude_list(fname,NULL,0);
} else {
- fprintf(FERROR,"cannot cvs-exclude in long-named directory %s\n",fname);
+ io_error = 1;
+ fprintf(FINFO,"cannot cvs-exclude in long-named directory %s\n",fname);
}
}
}
}
@@
-571,12
+577,13
@@
struct file_list *send_file_list(int f,int argc,char *argv[])
}
if (link_stat(fname,&st) != 0) {
}
if (link_stat(fname,&st) != 0) {
+ io_error=1;
fprintf(FERROR,"%s : %s\n",fname,strerror(errno));
continue;
}
if (S_ISDIR(st.st_mode) && !recurse) {
fprintf(FERROR,"%s : %s\n",fname,strerror(errno));
continue;
}
if (S_ISDIR(st.st_mode) && !recurse) {
- fprintf(F
ERROR
,"skipping directory %s\n",fname);
+ fprintf(F
INFO
,"skipping directory %s\n",fname);
continue;
}
continue;
}
@@
-618,6
+625,7
@@
struct file_list *send_file_list(int f,int argc,char *argv[])
exit_cleanup(1);
}
if (chdir(dir) != 0) {
exit_cleanup(1);
}
if (chdir(dir) != 0) {
+ io_error=1;
fprintf(FERROR,"chdir %s : %s\n",
dir,strerror(errno));
continue;
fprintf(FERROR,"chdir %s : %s\n",
dir,strerror(errno));
continue;
@@
-656,6
+664,11
@@
struct file_list *send_file_list(int f,int argc,char *argv[])
send_uid_list(f);
}
send_uid_list(f);
}
+ /* if protocol version is >= 17 then send the io_error flag */
+ if (f != -1 && remote_version >= 17) {
+ write_int(f, io_error);
+ }
+
return flist;
}
return flist;
}
@@
-705,12
+718,12
@@
struct file_list *recv_file_list(int f)
flist->count++;
if (verbose > 2)
flist->count++;
if (verbose > 2)
- fprintf(F
ERROR
,"recv_file_name(%s)\n",f_name(flist->files[i]));
+ fprintf(F
INFO
,"recv_file_name(%s)\n",f_name(flist->files[i]));
}
if (verbose > 2)
}
if (verbose > 2)
- fprintf(F
ERROR
,"received %d names\n",flist->count);
+ fprintf(F
INFO
,"received %d names\n",flist->count);
clean_flist(flist);
clean_flist(flist);
@@
-723,6
+736,11
@@
struct file_list *recv_file_list(int f)
recv_uid_list(f, flist);
}
recv_uid_list(f, flist);
}
+ /* if protocol version is >= 17 then recv the io_error flag */
+ if (f != -1 && remote_version >= 17) {
+ io_error |= read_int(f);
+ }
+
return flist;
oom:
return flist;
oom:
@@
-816,7
+834,7
@@
void clean_flist(struct file_list *flist)
strcmp(f_name(flist->files[i]),
f_name(flist->files[i-1])) == 0) {
if (verbose > 1 && !am_server)
strcmp(f_name(flist->files[i]),
f_name(flist->files[i-1])) == 0) {
if (verbose > 1 && !am_server)
- fprintf(F
ERROR
,"removing duplicate name %s from file list %d\n",
+ fprintf(F
INFO
,"removing duplicate name %s from file list %d\n",
f_name(flist->files[i-1]),i-1);
free_file(flist->files[i]);
}
f_name(flist->files[i-1]),i-1);
free_file(flist->files[i]);
}