# 
# old_revision [1007839d0212365ae91bf35580b76dac1cf35577]
# 
# add_dir "packages/opie-advancedfm/files"
# 
# add_file "packages/opie-advancedfm/files/fix-copy-file.patch"
#  content [3edfeccb186b8d415be4cb920f14e5412079bf13]
# 
# patch "packages/opie-advancedfm/opie-advancedfm_1.2.3.bb"
#  from [57c6788657d53567a5abfdb33cd47cf2f1d78faf]
#    to [23ebb97ccc2ee84cb1dbe6d2f60e0fe22cd92bb8]
# 
============================================================
--- packages/opie-advancedfm/files/fix-copy-file.patch	3edfeccb186b8d415be4cb920f14e5412079bf13
+++ packages/opie-advancedfm/files/fix-copy-file.patch	3edfeccb186b8d415be4cb920f14e5412079bf13
@@ -0,0 +1,116 @@
+? advancedfm/fileInfoDialog.cpp
+? advancedfm/fileInfoDialog.h
+Index: advancedfm/advancedfmMenu.cpp
+===================================================================
+RCS file: /cvs/opie/noncore/apps/advancedfm/advancedfmMenu.cpp,v
+retrieving revision 1.56
+diff -u -d -r1.56 advancedfmMenu.cpp
+--- advancedfm/advancedfmMenu.cpp	10 Jan 2007 17:27:56 -0000	1.56
++++ advancedfm/advancedfmMenu.cpp	20 Oct 2007 01:46:07 -0000
+@@ -28,6 +28,7 @@
+ #include <qpopupmenu.h>
+ #include <qlistview.h>
+ #include <qlabel.h>
++#include <qdatastream.h>
+ 
+ /* STD */
+ 
+@@ -547,6 +548,7 @@
+ 
+ bool AdvancedFm::copyFile( const QString & src, const QString & dest ) {
+ 		if(QFileInfo(src).isDir()) {
++        odebug << "copyFile: source is a directory" << oendl;
+ 				if( copyDirectory( src, dest )) {
+ //						setOtherTabCurrent();
+ 						rePopulate();
+@@ -556,55 +558,47 @@
+ 						return false;
+ 		}
+ 
++    QFile srcFile(src);
++    if(!srcFile.open( IO_ReadOnly )) {
++        odebug << "copyFile: srcfile open failed" << oendl;
++        return false;
++    }
+ 
+-		bool success = true;
++    QFile destFile(dest);
++    if(!destFile.open( IO_WriteOnly )) {
++        odebug << "copyFile: destfile open failed" << oendl;
++        srcFile.close();
++        return false;
++    }
++
++    const int BUFFER_SIZE = 1024;
++
++    Q_INT8 buffer[BUFFER_SIZE];
++
++    QDataStream srcStream(&srcFile);
++    QDataStream destStream(&destFile);
++
++    while(!srcStream.atEnd()) {
++        int i = 0;
++        while(!srcStream.atEnd() && i < BUFFER_SIZE) {
++            srcStream >> buffer[i];
++            i++;
++        }
++        for(int k = 0; k < i; k++) {
++            destStream << buffer[k];
++        }
++    }
++
++    srcFile.close();
++    destFile.close();
++
++		// Set file permissions
+ 		struct stat status;
+-		QFile srcFile(src);
+-		QFile destFile(dest);
+-		int err=0;
+-		int read_fd=0;
+-		int write_fd=0;
+-		struct stat stat_buf;
+-		off_t offset = 0;
+-		if(!srcFile.open( IO_ReadOnly|IO_Raw)) {
+-//         owarn << "open failed" << oendl;
+-				return success = false;
+-		}
+-		read_fd = srcFile.handle();
+-		if(read_fd != -1) {
+-				fstat (read_fd, &stat_buf);
+-				if( !destFile.open( IO_WriteOnly|IO_Raw ) ) {
+-//       owarn << "destfile open failed" << oendl;
+-						return success = false;
+-				}
+-				write_fd = destFile.handle();
+-				if(write_fd != -1) {
+-						err = sendfile(write_fd, read_fd, &offset, stat_buf.st_size);
+-						if( err == -1) {
+-								QString msg;
+-								switch(errno) {
+-									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;
+-//              owarn << msg << oendl;
+-						}
+-				} else {
+-						success = false;
+-				}
+-		} else {
+-				success = false;
+-		}
+-		srcFile.close();
+-		destFile.close();
+-			// Set file permissions
+ 		if( stat( QFile::encodeName(src), &status ) == 0 )  {
+ 				chmod( QFile::encodeName(dest), status.st_mode );
+     }
+ 
+-		return success;
++		return true;
+ }
+ 
+ void AdvancedFm::runCommand() {
============================================================
--- packages/opie-advancedfm/opie-advancedfm_1.2.3.bb	57c6788657d53567a5abfdb33cd47cf2f1d78faf
+++ packages/opie-advancedfm/opie-advancedfm_1.2.3.bb	23ebb97ccc2ee84cb1dbe6d2f60e0fe22cd92bb8
@@ -1,6 +1,8 @@ require ${PN}.inc
 require ${PN}.inc
 
+PR = "r1"
 
 SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/noncore/apps/${APPNAME} \
            ${HANDHELDS_CVS};tag=${TAG};module=opie/pics \
+           ${HANDHELDS_CVS};tag=${TAG};module=opie/apps \
+           file://fix-copy-file.patch;patch=1"
-           ${HANDHELDS_CVS};tag=${TAG};module=opie/apps"
