add patch 2.2_release submit/tizen_2.2/20130816.014459
authorJinkun Jang <jinkun.jang@samsung.com>
Fri, 16 Aug 2013 01:44:49 +0000 (10:44 +0900)
committerJinkun Jang <jinkun.jang@samsung.com>
Fri, 16 Aug 2013 01:44:49 +0000 (10:44 +0900)
packaging/osp-image-core.spec
src/FMedia_MediaUtil.cpp

index 35c5f77..eb2ec64 100755 (executable)
@@ -1,3 +1,4 @@
+%define debug_package %{nil}
 %define __strip /bin/true
 
 Name:       osp-image-core
index 371e213..e0e78e2 100644 (file)
@@ -24,7 +24,9 @@
 #include <unique_ptr.h>
 #include <FBaseSysLog.h>
 #include <FIoFile.h>
+#include <FIoDirectory.h>
 #include "FMedia_MediaUtil.h"
+#include "FBase_StringConverter.h"
 
 using namespace Tizen::Base;
 using namespace Tizen::Io;
@@ -94,14 +96,40 @@ _MediaUtil::BufferToFile(const Tizen::Base::ByteBuffer &srcBuf,
 {
        File file;
        result r = E_SUCCESS;
-
-       String tmpPath = dstPath + L"_tmp";
+       String directoryName;
+       String fileName;
+       char* tempFileName = null;
+       std::unique_ptr<char[]> pDirectory;
+       std::unique_ptr<char[]> pFileName;
 
        if (File::IsFileExist(dstPath) && overwrite == false)
        {
                return E_FILE_ALREADY_EXIST;
        }
 
+       String tmpPath = File::GetFileName(dstPath);
+
+       r = dstPath.SubString(0, dstPath.GetLength() - tmpPath.GetLength() -1, directoryName);
+       SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagated. Faied to generate tempfile", GetErrorMessage(r));
+
+       r = dstPath.SubString(dstPath.GetLength() - tmpPath.GetLength(), fileName);
+       SysTryReturn(NID_MEDIA, r == E_SUCCESS, r, r, "[%s] Propagated. Faied to generate tempfile", GetErrorMessage(r));
+
+       pDirectory.reset(_StringConverter::CopyToCharArrayN(directoryName));
+       SysTryReturn(NID_MEDIA, pDirectory.get() != null, r, r, "[E_OUT_OF_MEMORY] Propagated.");
+
+       pFileName.reset(_StringConverter::CopyToCharArrayN(fileName));
+       SysTryReturn(NID_MEDIA, pFileName.get() != null, r, r, "[E_OUT_OF_MEMORY] Propagated.");
+
+       r = Directory::Create(directoryName, true);
+       SysSecureTryReturn(NID_MEDIA, (r == E_SUCCESS || r == E_FILE_ALREADY_EXIST), r, r, "[%s] Propagated. Faied to create directory for %ls",
+                                          GetErrorMessage(r), directoryName.GetPointer());
+
+       tempFileName = tempnam(pDirectory.get(), pFileName.get());
+       SysTryReturn(NID_MEDIA, tempFileName != null, E_SYSTEM, E_SYSTEM, "[E_SYSTEM] Propagated. Faied to generate tempfile");
+
+       tmpPath = String(tempFileName);
+
        r = file.Construct(tmpPath, "wb", true);
        SysSecureTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagated. Temp File.Construct failed for %ls",
                                          GetErrorMessage(r), tmpPath.GetPointer());
@@ -120,9 +148,15 @@ _MediaUtil::BufferToFile(const Tizen::Base::ByteBuffer &srcBuf,
        r = file.Move(tmpPath, dstPath);
        SysSecureTryCatch(NID_MEDIA, r == E_SUCCESS, , r, "[%s] Propagated. File.Move failed for %ls",
                GetErrorMessage(r), dstPath.GetPointer());
+
+       free(tempFileName);
        return r;
 
 CATCH:
+       if (tempFileName != null)
+       {
+               free(tempFileName);
+       }
        file.Remove(tmpPath);
        return r;
 }