changeset 23268:efb139519388

dir.m: Do not include trailing filesep in "folder". Fix BIST. (bug #50504). * dir.m: Change regexp to exclude trailing filesep in "folder". Use canonicalize_file_name rather than make_absolute_filename. Fix BIST tests.
author Markus Mützel <markus.muetzel@gmx.de>
date Sun, 12 Mar 2017 14:21:52 +0000
parents a470f7fee1cf
children a921b6b772f3
files scripts/miscellaneous/dir.m
diffstat 1 files changed, 7 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/miscellaneous/dir.m	Sat Mar 11 22:10:27 2017 -0800
+++ b/scripts/miscellaneous/dir.m	Sun Mar 12 14:21:52 2017 +0000
@@ -114,7 +114,7 @@
   if (numel (flst) > 0)
 
     fs = regexptranslate ("escape", filesep ("all"));
-    re = sprintf ('(^.+[%s])([^%s.]*)([.][^%s]*)?$', fs, fs, fs);
+    re = sprintf ('(^.+)[%s]([^%s.]*)([.][^%s]*)?$', fs, fs, fs);
     last_dir = last_absdir = "";
     info(nf,1).name = "";  # pre-declare size of struct array
 
@@ -140,7 +140,7 @@
         if (! strcmp (last_dir, tmpdir))
           ## Caching mechanism to speed up function
           last_dir = tmpdir;
-          last_absdir = make_absolute_filename (last_dir);
+          last_absdir = canonicalize_file_name (last_dir);
         endif
         info(i).folder = last_absdir;
         lt = localtime (st.mtime);
@@ -178,17 +178,18 @@
 %! list = dir ();
 %! assert (isstruct (list) && ! isempty (list));
 %! assert (fieldnames (list),
-%!         {"name"; "date"; "bytes"; "isdir"; "datenum"; "statinfo"});
+%!         {"name"; "folder"; "date"; "bytes"; "isdir"; "datenum"; "statinfo"});
 %!
 %! if (isunix ())
-%!   assert ({list(1:2).name}, {".", ".."});
-%!   assert ([list(1:2).isdir], [true true]);
+%!   idx = find (strcmp ({list.name}, "."), 1);
+%!   assert ({list(idx:idx+1).name}, {".", ".."});
+%!   assert ([list(idx:idx+1).isdir], [true true]);
 %! endif
 %!
 %! ## test that specifying a filename works the same as using a directory.
 %! found = find (! [list.isdir], 1);
 %! if (! isempty (found))
-%!   list2 = dir (list(found).name);
+%!   list2 = dir (fullfile (list(found).folder, list(found).name));
 %!   assert (list(found), list2);
 %! endif