# HG changeset patch # User John W. Eaton # Date 1203706058 18000 # Node ID 4f6a73fd8df9a8a299d06f6a69cf573f22faca51 # Parent 05eb3486f6507ef91ddc8bd0dd0722f6897208e9 fullfile: improve handling of args ending with filesep diff -r 05eb3486f650 -r 4f6a73fd8df9 scripts/ChangeLog --- a/scripts/ChangeLog Fri Feb 22 04:05:36 2008 -0500 +++ b/scripts/ChangeLog Fri Feb 22 13:47:38 2008 -0500 @@ -1,5 +1,8 @@ 2008-02-22 John W. Eaton + * miscellaneous/fullfile.m: Improve handling of empty args and + args ending with filesep. + * control/base/__stepimp__.m: Don't use subplot for just one plot. 2008-02-21 John W. Eaton diff -r 05eb3486f650 -r 4f6a73fd8df9 scripts/miscellaneous/fullfile.m --- a/scripts/miscellaneous/fullfile.m Fri Feb 22 04:05:36 2008 -0500 +++ b/scripts/miscellaneous/fullfile.m Fri Feb 22 13:47:38 2008 -0500 @@ -25,42 +25,56 @@ function filename = fullfile (varargin) if (nargin > 0) - filename = ""; - for first = 1:nargin - tmp = varargin{first}; - if (! isempty (tmp)) - filename = tmp; - break; + ## Discard all empty arguments + varargin(cellfun (@isempty, varargin)) = []; + nargs = numel (varargin); + if (nargs > 1) + filename = varargin{1}; + if (strcmp (filename(end), filesep)) + filename(end) = ""; endif - endfor - for i = first+1:nargin - tmp = varargin{i}; - if (! isempty (tmp)) - if (strcmp (tmp(1), filesep)) - tmp(1) = ""; + for i = 2:nargs + tmp = varargin{i}; + if (i < nargs && strcmp (tmp(end), filesep)) + tmp(end) = ""; + elseif (i == nargs && strcmp (tmp, filesep)) + tmp = ""; endif - if (i < nargin && strcmp (tmp(end), filesep)) - tmp(end) = ""; - endif - filename = strcat (filename, filesep, tmp); - endif - endfor + filename = strcat (filename, filesep, tmp); + endfor + elseif (nargs == 1) + filename = varargin{1}; + else + filename = ""; + endif else print_usage (); endif endfunction +%!shared fs, fsx, xfs, fsxfs, xfsy +%! fs = filesep (); +%! fsx = strcat (fs, "x"); +%! xfs = strcat ("x", fs); +%! fsxfs = strcat (fs, "x", fs); +%! xfsy = strcat ("x", fs, "y"); %!assert (fullfile (""), "") -%!assert (fullfile (filesep ()), filesep ()) -%!assert (fullfile ("", filesep ()), filesep ()) -%!assert (fullfile (filesep (), ""), filesep ()) -%!assert (fullfile ("", filesep ()), filesep ()) -%!assert (fullfile ("foo"), "foo") -%!assert (fullfile ("", "foo"), "foo") -%!assert (fullfile ("foo", ""), "foo") -%!assert (fullfile ("", "foo", ""), "foo") -%!assert (fullfile ("foo", "bar"), strcat ("foo", filesep (), "bar")) -%!assert (fullfile ("foo", "", "bar"), strcat ("foo", filesep (), "bar")) -%!assert (fullfile ("foo", "", "bar", ""), strcat ("foo", filesep (), "bar")) -%!assert (fullfile ("", "foo", "", "bar", ""), strcat ("foo", filesep (), "bar")) +%!assert (fullfile (fs), fs) +%!assert (fullfile ("", fs), fs) +%!assert (fullfile (fs, ""), fs) +%!assert (fullfile ("", fs), fs) +%!assert (fullfile ("x"), "x") +%!assert (fullfile ("", "x"), "x") +%!assert (fullfile ("x", ""), "x") +%!assert (fullfile ("", "x", ""), "x") +%!assert (fullfile ("x", "y"), xfsy) +%!assert (fullfile ("x", "", "y"), xfsy) +%!assert (fullfile ("x", "", "y", ""), xfsy) +%!assert (fullfile ("", "x", "", "y", ""), xfsy) +%!assert (fullfile (fs), fs) +%!assert (fullfile (fs, fs), fs) +%!assert (fullfile (fs, "x"), fsx) +%!assert (fullfile (fs, xfs), fsxfs) +%!assert (fullfile (fsx, fs), fsxfs) +%!assert (fullfile (fs, "x", fs), fsxfs)