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
@@ -229,98 +229,98 @@ bool FileManager::copyFile( const QString & src, const QString & dest ) {
229 int write_fd=0; 229 int write_fd=0;
230 struct stat stat_buf; 230 struct stat stat_buf;
231 off_t offset = 0; 231 off_t offset = 0;
232 QFile srcFile(src); 232 QFile srcFile(src);
233 QFile destFile(dest); 233 QFile destFile(dest);
234 234
235 if(!srcFile.open( IO_ReadOnly|IO_Raw)) { 235 if(!srcFile.open( IO_ReadOnly|IO_Raw)) {
236 return success = false; 236 return success = false;
237 } 237 }
238 read_fd = srcFile.handle(); 238 read_fd = srcFile.handle();
239 if(read_fd != -1) { 239 if(read_fd != -1) {
240 fstat (read_fd, &stat_buf); 240 fstat (read_fd, &stat_buf);
241 if( !destFile.open( IO_WriteOnly|IO_Raw ) ) 241 if( !destFile.open( IO_WriteOnly|IO_Raw ) )
242 return success = false; 242 return success = false;
243 write_fd = destFile.handle(); 243 write_fd = destFile.handle();
244 if(write_fd != -1) { 244 if(write_fd != -1) {
245 int err=0; 245 int err=0;
246 QString msg; 246 QString msg;
247#ifdef Q_OS_MACX 247#ifdef Q_OS_MACX
248#ifdef SENDFILE 248#ifdef SENDFILE
249 /* FreeBSD does support a different kind of 249 /* FreeBSD does support a different kind of
250 * sendfile. (eilers) 250 * sendfile. (eilers)
251 * I took this from Very Secure FTPd 251 * I took this from Very Secure FTPd
252 * Licence: GPL 252 * Licence: GPL
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 }
303 303
304 return success; 304 return success;
305} 305}
306 306
307 307
308bool FileManager::renameFile( const QString & src, const QString & dest ) { 308bool FileManager::renameFile( const QString & src, const QString & dest ) {
309 if(copyFile( src, dest )) { 309 if(copyFile( src, dest )) {
310 if(QFile::remove(src) ) { 310 if(QFile::remove(src) ) {
311 return true; 311 return true;
312 } 312 }
313 } 313 }
314 return false; 314 return false;
315} 315}
316 316
317/* 317/*
318bool FileManager::copyFile( const QString & src, const QString & dest ) { 318bool FileManager::copyFile( const QString & src, const QString & dest ) {
319 bool success = true; 319 bool success = true;
320 struct stat status; 320 struct stat status;
321 int read_fd=0; 321 int read_fd=0;
322 int write_fd=0; 322 int write_fd=0;
323 struct stat stat_buf; 323 struct stat stat_buf;
324 off_t offset = 0; 324 off_t offset = 0;
325 QFile srcFile(src); 325 QFile srcFile(src);
326 QFile destFile(dest); 326 QFile destFile(dest);