Add delimiter / to the path that ends without delimiter /
authorHyunbin Lee <hyunbin.lee@samsung.com>
Mon, 29 Jul 2013 05:12:35 +0000 (14:12 +0900)
committerHyunbin Lee <hyunbin.lee@samsung.com>
Mon, 29 Jul 2013 05:14:30 +0000 (14:14 +0900)
Change-Id: I515a6c5946ffd0dbc597af4a73105057c3fb5488
Signed-off-by: Hyunbin Lee <hyunbin.lee@samsung.com>
src/io/FIo_DirEnumeratorImpl.cpp
src/io/inc/FIo_DirEnumeratorImpl.h

index 771bc6c..1d39563 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;
@@ -200,7 +203,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()));
 
index 3a96cd5..ade3453 100644 (file)
@@ -67,7 +67,7 @@ private:
        _DirEnumeratorImpl& operator =(const _DirEnumeratorImpl& source);
 
        bool __validAccess;
-       Tizen::Base::String __absoluteDirPath;
+       Tizen::Base::String __dirPath;
        void* __pFileFindInfo;
        DirEntry* __pCurDirEntry;