summaryrefslogtreecommitdiff
authorar <ar>2004-06-13 17:46:33 (UTC)
committer ar <ar>2004-06-13 17:46:33 (UTC)
commitecf1fb42bef9d64869349abd4e550f0b6d2cfa59 (patch) (unidiff)
tree2001746dd484b155d04b7f1500b14538bf0b8b08
parent07d700581b9f608d3105eb8d82d9b4cfa0084317 (diff)
downloadopie-ecf1fb42bef9d64869349abd4e550f0b6d2cfa59.zip
opie-ecf1fb42bef9d64869349abd4e550f0b6d2cfa59.tar.gz
opie-ecf1fb42bef9d64869349abd4e550f0b6d2cfa59.tar.bz2
- fix error-handling again ;)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--library/filemanager.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/library/filemanager.cpp b/library/filemanager.cpp
index 99837fe..adfe590 100644
--- a/library/filemanager.cpp
+++ b/library/filemanager.cpp
@@ -253,50 +253,50 @@ bool FileManager::copyFile( const QString & src, const QString & dest ) {
253 * Author: Chris Evans 253 * Author: Chris Evans
254 * sysdeputil.c 254 * sysdeputil.c
255 */ 255 */
256 /* XXX - start_pos will truncate on 32-bit machines - can we 256 /* XXX - start_pos will truncate on 32-bit machines - can we
257 * say "start from current pos"? 257 * say "start from current pos"?
258 */ 258 */
259 off_t written = 0; 259 off_t written = 0;
260 int retval = 0; 260 int retval = 0;
261 retval = sendfile(read_fd, write_fd, offset, stat_buf.st_size, NULL, 261 retval = sendfile(read_fd, write_fd, offset, stat_buf.st_size, NULL,
262 &written, 0); 262 &written, 0);
263 /* Translate to Linux-like retval */ 263 /* Translate to Linux-like retval */
264 if (written > 0) 264 if (written > 0)
265 { 265 {
266 err = (int) written; 266 err = (int) written;
267 } 267 }
268#else /* SENDFILE */ 268#else /* SENDFILE */
269 err == -1; 269 err == -1;
270 msg = "FAILURE: Using unsupported function \"sendfile()\" Need Workaround !!"; 270 msg = "FAILURE: Using unsupported function \"sendfile()\" Need Workaround !!";
271 success = false; 271 success = false;
272# warning "Need workaround for sendfile!!(eilers)" 272# warning "Need workaround for sendfile!!(eilers)"
273#endif /* SENDFILE */ 273#endif /* SENDFILE */
274 274
275#else 275#else
276 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size); 276 err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
277 if( err != -1) { 277 if( err == -1) {
278 switch(err) { 278 switch(errno) {
279 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; 279 case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. ";
280 case EINVAL: msg = "Descriptor is not valid or locked. "; 280 case EINVAL: msg = "Descriptor is not valid or locked. ";
281 case ENOMEM: msg = "Insufficient memory to read from in_fd."; 281 case ENOMEM: msg = "Insufficient memory to read from in_fd.";
282 case EIO: msg = "Unspecified error while reading from in_fd."; 282 case EIO: msg = "Unspecified error while reading from in_fd.";
283 }; 283 };
284 success = false; 284 success = false;
285 } 285 }
286#endif /* Q_OS_MACX */ 286#endif /* Q_OS_MACX */
287 if( !success ) 287 if( !success )
288 qWarning( msg ); 288 qWarning( msg );
289 } else { 289 } else {
290 qWarning("open write failed %s, %s",src.latin1(), dest.latin1()); 290 qWarning("open write failed %s, %s",src.latin1(), dest.latin1());
291 success = false; 291 success = false;
292 } 292 }
293 } else { 293 } else {
294 qWarning("open read failed %s, %s",src.latin1(), dest.latin1()); 294 qWarning("open read failed %s, %s",src.latin1(), dest.latin1());
295 success = false; 295 success = false;
296 } 296 }
297 srcFile.close(); 297 srcFile.close();
298 destFile.close(); 298 destFile.close();
299 // Set file permissions 299 // Set file permissions
300 if( stat( (const char *) src, &status ) == 0 ) { 300 if( stat( (const char *) src, &status ) == 0 ) {
301 chmod( (const char *) dest, status.st_mode ); 301 chmod( (const char *) dest, status.st_mode );
302 } 302 }