* Bug #14710 fixed - fullpath(TMPDIR+...) was bugged on MacOS 27/18527/3
Paul Bignier [Mon, 29 Aug 2016 11:33:37 +0000 (13:33 +0200)]
Change-Id: I40c2b8f79fa3085eaf88818d5289148baf9c8e55

scilab/CHANGES.md
scilab/modules/fileio/src/c/fullpath.c
scilab/modules/fileio/tests/nonreg_tests/bug_14710.dia.ref [new file with mode: 0644]
scilab/modules/fileio/tests/nonreg_tests/bug_14710.tst [new file with mode: 0644]

index 71e2efa..ab822b2 100644 (file)
@@ -279,7 +279,8 @@ Bug Fixes
 * [Bug #14662](http://bugzilla.scilab.org/show_bug.cgi?id=14662) fixed - Matrix of strings concatenation with single quote led to a parser error.
 * [Bug #14681](http://bugzilla.scilab.org/show_bug.cgi?id=14681) fixed - Short-circuited AND operation was not possible with double matrices in if and while clauses
 * [Bug #14690](http://bugzilla.scilab.org/show_bug.cgi?id=14690) fixed - The user's startup files set in the working directory were not executed. When `SCIHOME` is not the working directory, `SCIHOME\scilab.ini` was executed twice.
-* [Bug #14694](http://bugzilla.scilab.org/show_bug.cgi?id=14694) fixed - The list of named colors was misaligned and poorly rendered in `help color_list`
+* [Bug #14694](http://bugzilla.scilab.org/show_bug.cgi?id=14694) fixed - The list of named colors was misaligned and poorly rendered in `help color_list``SCIHOME\scilab.ini` was executed twice.
+* [Bug #14710](http://bugzilla.scilab.org/show_bug.cgi?id=14710) fixed - fullpath(TMPDIR+...) was bugged on MacOS
 
 ### In 6.0.0 beta-2 and earlier:
 
index 751e0ea..d2d362d 100644 (file)
@@ -100,16 +100,25 @@ char *get_full_path(char *_FullPath, const char *_Path, size_t _SizeInBytes)
         _Path_tmp = (char *)MALLOC(sizeof(char) * (lenPath + 1));
         _Path_start = (char *)MALLOC(sizeof(char) * (lenPath + 1));
         _FullPath_start = (char *)MALLOC(sizeof(char) * (lenFullPath + 1));
+
         //First case(1): fullpath(TMPDIR+"/a/b/c"), second case(2): fullpath("a/b/c") or third case(3): fullpath("../a/b")
         strcpy(_Path_start, pstWorkingPath); // _Path_start=TMPDIR+"/a/b/c" (1) or _Path_start="a/b/c" (2) or _Path_start="../a/b/c" (3)
         strcpy(_FullPath_start, _FullPath); // _Fullpath_Start=TMPDIR+"/a" (1) or _FullPath_start=SCI+"/a" (2) or _FullPath_start=../SCI+"/a" (3)
         strtok(_Path_start, "/"); // _Path_start=/tmp  (1) or _Path_start="a" (2) or _Path_start="a/b/c" (3)
         strtok(_FullPath_start, "/"); // _FullPath_start=/tmp (1) or _FullPath_start=/home (2) and (3)
+
+#if defined(__APPLE__)
+        if (strcmp(_FullPath_start, "/private") == 0) // For case: fullpath(TMPDIR+"/a/b/c") (1)
+        {
+            normalizePath(_FullPath);
+        }
+#else
         if (strcmp(_Path_start, _FullPath_start) == 0) // For case: fullpath(TMPDIR+"/a/b/c") (1)
         {
             strcpy(_FullPath, pstWorkingPath);
             normalizePath(_FullPath);
         }
+#endif
         else if (strcmp(_Path, _FullPath) != 0) // For case: fullpath("a/b/c") (2) or fullpath("../a/b/c") (3)
         {
             strcpy(_Path_tmp, pstWorkingPath); //_Path_tmp="a/b/c" (2) or _Path_tmp="../a/b/c" (3)
@@ -118,7 +127,7 @@ char *get_full_path(char *_FullPath, const char *_Path, size_t _SizeInBytes)
             strcat(_FullPath, toadd); //_FullPath=_Fullpath+toadd
             FREE(toadd);
         }
-        
+
         FREE(pstWorkingPath);
         FREE(_FullPath_start);
         FREE(_Path_start);
@@ -138,6 +147,7 @@ char *get_full_path(char *_FullPath, const char *_Path, size_t _SizeInBytes)
             bufTmp = NULL;
         }
     }
+
     return _FullPath;
 #endif
 }
diff --git a/scilab/modules/fileio/tests/nonreg_tests/bug_14710.dia.ref b/scilab/modules/fileio/tests/nonreg_tests/bug_14710.dia.ref
new file mode 100644 (file)
index 0000000..c25df7b
--- /dev/null
@@ -0,0 +1,19 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14710 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14710
+//
+// <-- Short Description -->
+// fullpath(TMPDIR+...) was bugged on MacOS
+short = TMPDIR;
+long  = TMPDIR+"/api_c";
+assert_checkequal(fullpath(short)+"/api_c", fullpath(long));
diff --git a/scilab/modules/fileio/tests/nonreg_tests/bug_14710.tst b/scilab/modules/fileio/tests/nonreg_tests/bug_14710.tst
new file mode 100644 (file)
index 0000000..823c2fd
--- /dev/null
@@ -0,0 +1,21 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2016 - Scilab Enterprises - Paul Bignier
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+//
+// <-- CLI SHELL MODE -->
+//
+// <-- Non-regression test for bug 14710 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/show_bug.cgi?id=14710
+//
+// <-- Short Description -->
+// fullpath(TMPDIR+...) was bugged on MacOS
+
+short = TMPDIR;
+long  = TMPDIR+"/api_c";
+
+assert_checkequal(fullpath(short)+"/api_c", fullpath(long));