15 if (DirName && *DirName) {
18 const char *p = *s + l;
42 cCopyingThread(
const char *SourceName,
const char *ToFileName,
bool DeleteSource =
false);
50 deleteSource(DeleteSource),
55 const char *delim =
"/";
77 error =
"invalid target";
83 recname.
Truncate(strlen(*recname) - 1);
99 recname.
Truncate(strlen(*recname) - 1);
113 if (required < available) {
119 const int len = 1024 * 1024;
120 char *buffer =
MALLOC(
char, len);
129 if (strcmp(e->d_name,
".") && strcmp(e->d_name,
"..") && strcmp(e->d_name,
"lost+found")) {
135 if (!stat(*sourceFile, &sts) && S_ISREG(sts.st_mode)) {
141 if (!inputFile || !outputFile) {
148 r = inputFile->
Read(buffer, len);
150 w = outputFile->
Write(buffer, r);
153 }
while (
Running() && r > 0 && w > 0);
158 if (!
Running() || r < 0 || w < 0) {
175 error =
"copy failed";
182 recname.
Truncate(strlen(*recname) - 1);
190 error =
"insufficient free space";
225 if (strlen(*NewName)) {
240 if (Interrupted || Error) {
242 isyslog(
"file transfer has been interrupted");
244 esyslog(
"ERROR: '%s' during file transfer", Error);