]> gitweb.hamatoma.de Git - crepublib/commitdiff
copyfile for windows
authorkawi <winfriedkappeler@atron.de>
Wed, 7 Jan 2015 14:43:50 +0000 (15:43 +0100)
committerkawi <winfriedkappeler@atron.de>
Wed, 7 Jan 2015 14:43:50 +0000 (15:43 +0100)
cunit/cuReTraverser.cpp
os/ReDirTools.cpp

index 81e76da0a23a6b8a1a9dac46fade00a8016b368d..e2dc60d3242c8d88d814cb5d25d66380f3cb94fa 100644 (file)
@@ -59,7 +59,16 @@ private:
       checkSetFilterFromProgramArgs();
                testDirStatistic();
                testBasic();
+        testCopyFile();
        }
+    void testCopyFile(){
+        ReByteBuffer src(m_base);
+        src.append("dir1/dir1_2/dir1_2_1/x1.txt");
+        ReByteBuffer trg(getTestDir());
+        trg.append("copy_x1.txt");
+        ReByteBuffer buffer;
+        ReDirSync::copyFile(src.str(), 0, -1ll, trg.str(), buffer, ReLogger::globalLogger());
+    }
     void checkRelDate(time_t absTime, int relTime){
         int diff = int(time(NULL) - relTime - absTime);
         if (diff < 0)
index 75e6afd326c62ac7afc0170972bd0503003bf3f8..5dc5f8ed6b0090e045f8deb702635a1ef2b2fcbb 100644 (file)
@@ -1006,7 +1006,7 @@ ReDirSync::ReDirSync() :
     ReDirOptions(s_syncUsage, s_syncExamples),
     m_buffer()
 {
-       m_buffer.ensureSize(4u*1024*1024*1024);
+       m_buffer.ensureSize(4u*1024u*1024u);
     m_programArgs.addBool("add",
         i18n("copies only files which does not exist on the target"),
         'a', "add", false);
@@ -1053,6 +1053,7 @@ void ReDirSync::copyFile(ReDirStatus_t* entry, const char* target){
 bool ReDirSync::copyFile(const char* source, time_t modified, int64_t size,
                const char* target, ReByteBuffer& buffer, ReLogger* logger){
        bool rc = false;
+#ifdef __linux__
        if (size < 0ll){
                struct stat info;
                if (stat(source, &info) == 0)
@@ -1111,6 +1112,10 @@ bool ReDirSync::copyFile(const char* source, time_t modified, int64_t size,
                        fclose(fpSource);
                }
        }
+#elif defined __WIN32__
+    BOOL dummy;
+    rc = CopyFileEx(source, target, NULL, NULL, &dummy, COPY_FILE_NO_BUFFERING) != 0;
+#endif
        return rc;
 }
 /**