Add conditional statement for removing platform log
[platform/framework/native/appfw.git] / src / io / FIo_DirEnumeratorImpl.cpp
index 771bc6c..d3ce322 100644 (file)
@@ -51,7 +51,7 @@ _DirEnumeratorImpl::_DirEnumeratorImpl(const String& dirPath)
        , __pCurDirEntry(null)
 {
        __validAccess = true;
-       __absoluteDirPath = dirPath;
+       __dirPath = dirPath;
 }
 
 _DirEnumeratorImpl::_DirEnumeratorImpl(const _DirEnumeratorImpl& dirEnumeratorImpl)
@@ -116,11 +116,11 @@ _DirEnumeratorImpl::MoveNext(void)
 {
        SysTryReturnResult(NID_IO, __validAccess == true, E_ILLEGAL_ACCESS,
                        "Given path cannot be accessed!");
-       SysTryReturnResult(NID_IO, __absoluteDirPath.GetLength() > 0 && __absoluteDirPath.GetLength() <= PATH_MAX,
+       SysTryReturnResult(NID_IO, __dirPath.GetLength() > 0 && __dirPath.GetLength() <= PATH_MAX,
                        E_INVALID_ARG, "Invalid argument was passed. Given pattern length is not correct!");
        result r = E_SUCCESS;
 
-       unique_ptr<char[]> pDirPath(_StringConverter::CopyToCharArrayN(String(__absoluteDirPath)));
+       unique_ptr<char[]> pDirPath(_StringConverter::CopyToCharArrayN(String(__dirPath)));
        SysTryReturn(NID_IO, pDirPath != null, GetLastResult(), GetLastResult(),
                        "[%s] Invalid argument was passed. Given pattern length is not correct!", GetErrorMessage(GetLastResult()));
 
@@ -148,7 +148,10 @@ _DirEnumeratorImpl::MoveNext(void)
 
        memset(pEntryPath.get(), 0, len);
        strcpy(pEntryPath.get(), pDirPath.get());
-       strncat(pEntryPath.get(), "/", 1);
+       if (__dirPath.EndsWith(L"/") == false)
+       {
+               strncat(pEntryPath.get(), "/", 1);
+       }
        strncat(pEntryPath.get(), pDirEnt->d_name, strlen(pDirEnt->d_name));
 
        struct stat64 statbuf;
@@ -156,8 +159,9 @@ _DirEnumeratorImpl::MoveNext(void)
        SysSecureTryReturnResult(NID_IO, ret == 0, __ConvertNativeErrorToResult(errno),
                        "Failed to get attributes for directory entry (%s), errno: %d (%s)", pEntryPath.get(), errno, strerror(errno));
 
-       struct tm* pTm = localtime(&statbuf.st_mtime);
-       SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to call localtime() (%s).", strerror(errno));
+       struct tm resultTm;
+       struct tm* pTm = localtime_r(&statbuf.st_mtime, &resultTm);
+       SysTryReturnResult(NID_IO, pTm != null, E_SYSTEM, "Failed to get local time (%s).", strerror(errno));
 
        DateTime dateTime;
        r = dateTime.SetValue(_BASE_YEAR + pTm->tm_year, 1 + pTm->tm_mon, pTm->tm_mday, pTm->tm_hour, pTm->tm_min, pTm->tm_sec);
@@ -200,7 +204,7 @@ _DirEnumeratorImpl::Reset(void)
                closedir(static_cast <DIR*>(__pFileFindInfo));
        }
 
-       unique_ptr<char[]> pDirPathName(_StringConverter::CopyToCharArrayN(__absoluteDirPath));
+       unique_ptr<char[]> pDirPathName(_StringConverter::CopyToCharArrayN(__dirPath));
        SysTryReturn(NID_IO, pDirPathName != null, GetLastResult(), GetLastResult(),
                        "[%s] Failed to close file.", GetErrorMessage(GetLastResult()));