changeset 32232:7d29c24117ae

maint: Merge stable to default.
author Markus Mützel <markus.muetzel@gmx.de>
date Fri, 04 Aug 2023 20:21:09 +0200
parents 9fddcbde0329 (current diff) b609c7ecd59b (diff)
children 4b57dca6bfdb
files
diffstat 1 files changed, 64 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/miscellaneous/fileparts.m	Fri Aug 04 19:41:01 2023 +0200
+++ b/scripts/miscellaneous/fileparts.m	Fri Aug 04 20:21:09 2023 +0200
@@ -53,7 +53,13 @@
   endif
 
   if (ds == 0)
-    dir = "";
+    if (ispc () && length (filename) >= 2 && strcmp (filename(2), ":"))
+      ## Relative path on Windows drive. At least, fix file name.
+      ds = 2;
+      dir = filename(1:2);
+    else
+      dir = "";
+    endif
   elseif (ds == 1)
     dir = filename(1);
   else
@@ -76,39 +82,87 @@
 
 %!test
 %! [d, n, e] = fileparts ("file");
-%! assert (strcmp (d, "") && strcmp (n, "file") && strcmp (e, ""));
+%! assert (d, "");
+%! assert (n, "file");
+%! assert (e, "");
 
 %!test
 %! [d, n, e] = fileparts ("file.ext");
-%! assert (strcmp (d, "") && strcmp (n, "file") && strcmp (e, ".ext"));
+%! assert (d, "");
+%! assert (n, "file");
+%! assert (e, ".ext");
 
 %!test
 %! [d, n, e] = fileparts ("/file.ext");
-%! assert (strcmp (d, "/") && strcmp (n, "file") && strcmp (e, ".ext"));
+%! assert (d, "/");
+%! assert (n, "file");
+%! assert (e, ".ext");
 
 %!test
 %! [d, n, e] = fileparts ("dir/file.ext");
-%! assert (strcmp (d, "dir") && strcmp (n, "file") && strcmp (e, ".ext"));
+%! assert (d, "dir");
+%! assert (n, "file");
+%! assert (e, ".ext");
 
 %!test
 %! [d, n, e] = fileparts ("./file.ext");
-%! assert (strcmp (d, ".") && strcmp (n, "file") && strcmp (e, ".ext"));
+%! assert (d, ".");
+%! assert (n, "file");
+%! assert (e, ".ext");
 
 %!test
 %! [d, n, e] = fileparts ("d1/d2/file.ext");
-%! assert (strcmp (d, "d1/d2") && strcmp (n, "file") && strcmp (e, ".ext"));
+%! assert (d, "d1/d2");
+%! assert (n, "file");
+%! assert (e, ".ext");
 
 %!test
 %! [d, n, e] = fileparts ("/d1/d2/file.ext");
-%! assert (strcmp (d, "/d1/d2") && strcmp (n, "file") && strcmp (e, ".ext"));
+%! assert (d, "/d1/d2");
+%! assert (n, "file");
+%! assert (e, ".ext");
 
 %!test
 %! [d, n, e] = fileparts ("/.ext");
-%! assert (strcmp (d, "/") && strcmp (n, "") && strcmp (e, ".ext"));
+%! assert (d, "/");
+%! assert (n, "");
+%! assert (e, ".ext");
 
 %!test
 %! [d, n, e] = fileparts (".ext");
-%! assert (strcmp (d, "") && strcmp (n, "") && strcmp (e, ".ext"));
+%! assert (d, "");
+%! assert (n, "");
+%! assert (e, ".ext");
+
+%!test
+%! [d, n, e] = fileparts ("a");
+%! assert (d, "");
+%! assert (n, "a");
+%! assert (e, "");
+
+%!test
+%! [d, n, e] = fileparts ("");
+%! assert (d, "");
+%! assert (n, "");
+%! assert (e, "");
+
+%!testif ; ispc () <*64462>
+%! [d, n, e] = fileparts ("c:file.ext");
+%! assert (d, "c:");
+%! assert (n, "file");
+%! assert (e, ".ext");
+
+%!testif ; ispc () <*64462>
+%! [d, n, e] = fileparts ("c:d1/../d2/file.ext");
+%! assert (d, "c:d1/../d2");
+%! assert (n, "file");
+%! assert (e, ".ext");
+
+%!testif ; ispc ()
+%! [d, n, e] = fileparts ('c:\dir\file.ext');
+%! assert (d, 'c:\dir');
+%! assert (n, "file");
+%! assert (e, ".ext");
 
 ## Test input validation
 %!error <Invalid call> fileparts ()