diff options
Diffstat (limited to 'modules/fileio/macros/fullfile.sci')
-rwxr-xr-x | modules/fileio/macros/fullfile.sci | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/modules/fileio/macros/fullfile.sci b/modules/fileio/macros/fullfile.sci new file mode 100755 index 000000000..6462377a4 --- /dev/null +++ b/modules/fileio/macros/fullfile.sci @@ -0,0 +1,69 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) INRIA - Vincent COUVERT +// Copyright (C) DIGITEO - 2010-2012 - Allan CORNET +// +// This file must be used under the terms of the CeCILL. +// This source file is licensed as described in the file COPYING, which +// you should have received as part of this distribution. The terms +// are also available at +// http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt + +function f = fullfile(varargin) + + // Build a full filename from parts + + if lstsize(varargin) < 1 then + error(msprintf(gettext("%s: Wrong number of input argument(s): At least %d expected.\n"), "fullfile",1)); + end + + fs = ["/" "\"]; + f = varargin(1); + + if ~isempty(f) then + if type(f) <> 10 then + error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "fullfile", 1)); + end + + if size(f,"*") <> 1 then + error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "fullfile", 1)); + end + f = stripblanks(f); + end + + nbParameters = lstsize(varargin) + for k = 2 : nbParameters + arg = varargin(k); + if isempty(f) | isempty(arg) + if ~isempty(arg) then + if type(arg) <> 10 then + error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "fullfile", k)); + end + + if (size(arg,"*") <> 1) & (k <> nbParameters) then + error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "fullfile", k)); + end + end + f = f + arg; + else + + if type(arg) <> 10 then + error(msprintf(gettext("%s: Wrong type for input argument #%d: a string expected.\n"), "fullfile", k)); + end + + if (size(arg,"*") <> 1) & (k <> nbParameters) then + error(msprintf(gettext("%s: Wrong size for input argument #%d: a string expected.\n"), "fullfile", k)); + end + + if or(part(f, length(f)) == fs) & or(part(arg, 1) == fs) + f = f + stripblanks(part(arg, 2:length(arg))); + elseif or(part(f, length(f))==fs) | or(part(arg, 1)==fs) + f = f + stripblanks(arg); + else + f = f + pathconvert("/") + stripblanks(arg); + end + end + end + + f = pathconvert(f, %f, %f); + +endfunction |