If the input path contained a / or \, the output path must contain it. 88/18888/3
Adeline CARNIS [Mon, 16 Jan 2017 16:32:39 +0000 (17:32 +0100)]
Change-Id: I47068233707c46cdbe040e0fcf97a8ba544c59dc

scilab/modules/fileio/sci_gateway/cpp/sci_getlongpathname.cpp
scilab/modules/fileio/sci_gateway/cpp/sci_getshortpathname.cpp

index fab6a15..9cbea89 100644 (file)
@@ -53,10 +53,16 @@ types::Function::ReturnValue sci_getlongpathname(types::typed_list &in, int _iRe
     int* pBool = pOut2->get();
     int size = pS->getSize();
     wchar_t** p = pS->get();
-    for (int i = 0 ; i < size; i++)
+    for (int i = 0; i < size; i++)
     {
+        BOOL flagtrail = FALSE;
         wchar_t* tmp = getlongpathnameW(p[i], (BOOL*)&pBool[i]);
-        wchar_t* pwstPath = pathconvertW(tmp, TRUE, FALSE, AUTO_STYLE);
+        if (p[i][wcslen(p[i]) - 1] == '\\' || p[i][wcslen(p[i]) - 1] == '/')
+        {
+            flagtrail = TRUE;
+        }
+
+        wchar_t* pwstPath = pathconvertW(tmp, flagtrail, FALSE, AUTO_STYLE);
         pOut1->set(i, pwstPath);
         FREE(pwstPath);
         FREE(tmp);
index f6024a3..805b206 100644 (file)
@@ -56,10 +56,16 @@ types::Function::ReturnValue sci_getshortpathname(types::typed_list &in, int _iR
     int* pBool = pOut2->get();
     wchar_t** p = pS->get();
     int size = pS->getSize();
-    for (int i = 0 ; i < size; i++)
+    for (int i = 0; i < size; i++)
     {
+        BOOL flagtrail = FALSE;
         wchar_t* tmp = getshortpathnameW(p[i], (BOOL*)&pBool[i]);
-        wchar_t* pwstPath = pathconvertW(tmp, TRUE, FALSE, AUTO_STYLE);
+        if (p[i][wcslen(p[i]) - 1] == '\\' || p[i][wcslen(p[i]) - 1] == '/')
+        {
+            flagtrail = TRUE;
+        }
+
+        wchar_t* pwstPath = pathconvertW(tmp, flagtrail, FALSE, AUTO_STYLE);
         pOut1->set(i, pwstPath);
         FREE(pwstPath);
         FREE(tmp);