author | waspe <waspe> | 2003-11-04 17:08:12 (UTC) |
---|---|---|
committer | waspe <waspe> | 2003-11-04 17:08:12 (UTC) |
commit | dc96afa26288897a9d25ab8c321d8ad350c53f44 (patch) (side-by-side diff) | |
tree | 62678d196ae984d246260279c16e49c2923d7a30 /library/filemanager.cpp | |
parent | 5865ec3970cead5b2cf3dd255a55cf2e1869e330 (diff) | |
download | opie-dc96afa26288897a9d25ab8c321d8ad350c53f44.zip opie-dc96afa26288897a9d25ab8c321d8ad350c53f44.tar.gz opie-dc96afa26288897a9d25ab8c321d8ad350c53f44.tar.bz2 |
resolved merge conflict
-rw-r--r-- | library/filemanager.cpp | 64 |
1 files changed, 62 insertions, 2 deletions
diff --git a/library/filemanager.cpp b/library/filemanager.cpp index 91986a0..1c1c998 100644 --- a/library/filemanager.cpp +++ b/library/filemanager.cpp @@ -227,4 +227,2 @@ bool FileManager::copyFile( const AppLnk &src, const AppLnk &dest ) - - bool FileManager::copyFile( const QString & src, const QString & dest ) { @@ -322,2 +320,64 @@ bool FileManager::renameFile( const QString & src, const QString & dest ) { +======= +bool FileManager::copyFile( const QString & src, const QString & dest ) { + bool success = true; + struct stat status; + int read_fd=0; + int write_fd=0; + struct stat stat_buf; + off_t offset = 0; + QFile srcFile(src); + QFile destFile(dest); + + if(!srcFile.open( IO_ReadOnly|IO_Raw)) { + return success = false; + } + read_fd = srcFile.handle(); + if(read_fd != -1) { + fstat (read_fd, &stat_buf); + if( !destFile.open( IO_WriteOnly|IO_Raw ) ) + return success = false; + write_fd = destFile.handle(); + if(write_fd != -1) { + int err=0; + QString msg; + err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size); + if( err == -1) { + switch(err) { + case EBADF : msg = "The input file was not opened for reading or the output file was not opened for writing. "; + case EINVAL: msg = "Descriptor is not valid or locked. "; + case ENOMEM: msg = "Insufficient memory to read from in_fd."; + case EIO: msg = "Unspecified error while reading from in_fd."; + }; + success = false; + } + } else { + qWarning("open write failed %s, %s",src.latin1(), dest.latin1()); + success = false; + } + } else { + qWarning("open read failed %s, %s",src.latin1(), dest.latin1()); + success = false; + } + srcFile.close(); + destFile.close(); + // Set file permissions + if( stat( (const char *) src, &status ) == 0 ) { + chmod( (const char *) dest, status.st_mode ); + } + + return success; +} + + +bool FileManager::renameFile( const QString & src, const QString & dest ) { + if(copyFile( src, dest )) { + if(QFile::remove(src) ) { + return true; + } + } + return false; +} + + /*! |