extern int relative_paths;
extern int copy_links;
extern int remote_version;
+extern int io_error;
static char **local_exclude_list;
{
if (check_exclude(fname,local_exclude_list)) {
if (verbose > 2)
- fprintf(FERROR,"excluding file %s\n",fname);
+ fprintf(FINFO,"excluding file %s\n",fname);
return 0;
}
return 1;
bzero((char *)file,sizeof(*file));
(*fptr) = file;
+ if (l2 >= MAXPATHLEN-l1) overflow("receive_file_entry");
+
strncpy(thisname,lastname,l1);
- read_buf(f,&thisname[l1],l2);
+ read_sbuf(f,&thisname[l1],l2);
thisname[l1+l2] = 0;
strncpy(lastname,thisname,MAXPATHLEN-1);
int l = read_int(f);
file->link = (char *)malloc(l+1);
if (!file->link) out_of_memory("receive_file_entry 2");
- read_buf(f,file->link,l);
- file->link[l] = 0;
+ read_sbuf(f,file->link,l);
}
#if SUPPORT_HARD_LINKS
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,"skipping directory %s\n",fname);
+ fprintf(FINFO,"skipping directory %s\n",fname);
return NULL;
}
return NULL;
if (verbose > 2)
- fprintf(FERROR,"make_file(%s)\n",fname);
+ fprintf(FINFO,"make_file(%s)\n",fname);
file = (struct file_struct *)malloc(sizeof(*file));
if (!file) out_of_memory("make_file");
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;
d = opendir(dir);
if (!d) {
+ io_error = 1;
fprintf(FERROR,"%s: %s\n",
dir,strerror(errno));
return;
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;
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);
}
}
}
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,"skipping directory %s\n",fname);
+ fprintf(FINFO,"skipping directory %s\n",fname);
continue;
}
exit_cleanup(1);
}
if (chdir(dir) != 0) {
+ io_error=1;
fprintf(FERROR,"chdir %s : %s\n",
dir,strerror(errno));
continue;
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);
+ }
+
+ if (verbose > 2)
+ fprintf(FINFO,"send_file_list done\n");
+
return flist;
}
flist->count++;
if (verbose > 2)
- fprintf(FERROR,"recv_file_name(%s)\n",f_name(flist->files[i]));
+ fprintf(FINFO,"recv_file_name(%s)\n",f_name(flist->files[i]));
}
if (verbose > 2)
- fprintf(FERROR,"received %d names\n",flist->count);
+ fprintf(FINFO,"received %d names\n",flist->count);
clean_flist(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);
+ }
+
+ if (verbose > 2)
+ fprintf(FINFO,"recv_file_list done\n");
+
return flist;
oom:
strcmp(f_name(flist->files[i]),
f_name(flist->files[i-1])) == 0) {
if (verbose > 1 && !am_server)
- fprintf(FERROR,"removing duplicate name %s from file list %d\n",
+ fprintf(FINFO,"removing duplicate name %s from file list %d\n",
f_name(flist->files[i-1]),i-1);
free_file(flist->files[i]);
}