diff options
Diffstat (limited to 'modules/fileio/macros/mkdir.sci')
-rwxr-xr-x | modules/fileio/macros/mkdir.sci | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/modules/fileio/macros/mkdir.sci b/modules/fileio/macros/mkdir.sci new file mode 100755 index 000000000..a1d60929c --- /dev/null +++ b/modules/fileio/macros/mkdir.sci @@ -0,0 +1,141 @@ +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2007 - INRIA - Allan CORNET +// Copyright (C) 2010 - DIGITEO - 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 [status, msg]=mkdir(varargin) + // mkdir Make a directory + //------------------------------------------------------------------------ + + lhs = argn(1); + rhs = argn(2); + + DirName = ""; + NewDirName = ""; + status = 0 ; + msg = ""; + + select rhs + + case 0 + error(msprintf(gettext("%s: Wrong number of input argument(s).\n"), "mkdir")); + break + + case 1 + NewDirName = varargin(1); + if type(NewDirName) <> 10 then + error(999, msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"), "mkdir", 1)); + end + + if size(NewDirName, "*") <> 1 then + error(999, msprintf(gettext("%s: Wrong size for input argument #%d: A string expected.\n"), "mkdir", 1)); + end + + NewDirName = stripblanks(NewDirName, %T); + if is_absolute_path(NewDirName) then + NewDirectory = NewDirName; + else + NewDirectory = fullfile(pwd(),NewDirName); + end + break + + case 2 + DirName = varargin(1); + if type(DirName) <> 10 then + error(999, msprintf(gettext("%s: Wrong type for input argument #%d: String expected.\n"), "mkdir", 1)); + end + + if size(DirName, "*") <> 1 then + error(999, msprintf(gettext("%s: Wrong size for input argument #%d: A string expected.\n"), "mkdir", 1)); + end + + NewDirName = varargin(2); + if type(NewDirName) <> 10 then + error(999, msprintf(gettext("%s: Wrong type for input argument #%d: A string expected.\n"), "mkdir", 2)); + end + + if size(NewDirName, "*") <> 1 then + error(999, msprintf(gettext("%s: Wrong size for input argument #%d: A string expected.\n"), "mkdir", 2)); + end + + NewDirName = stripblanks(NewDirName, %T); + DirName = stripblanks(DirName, %T); + NewDirectory = fullfile(DirName, NewDirName); + break + + else + error(msprintf(gettext("%s: Wrong number of input argument(s).\n"), "mkdir")); + end + + NewDirectory = fullpath(NewDirectory); + + if ~isdir(NewDirectory) & ~isfile(NewDirectory) then + // The directory does not exist + status = 1; + else + // The directory or file exists + if isfile(NewDirectory) then + // it is a file + status = -2; + else + // it is a directory + status = 2; + end + end + + select status + + case 0 + break + + case 1 + bAddFirstDirSep = %f; + subdirs = strsplit(NewDirectory, ["/" "\"]); + if subdirs(1) == "" then + subdirs(1) = []; + bAddFirstDirSep = %t; + end + for i = 1:size(subdirs, "*") + currentsubdir = strcat(subdirs(1:i), filesep()); + if bAddFirstDirSep then + currentsubdir = filesep() + currentsubdir; + end + if ~isfile(currentsubdir) & ~isdir(currentsubdir) then + status = createdir(currentsubdir); + if ~status then + break + end + end + end + + if ~isdir(NewDirectory) & ~isfile(NewDirectory) then + status = createdir(NewDirectory); + end + + if (~status) then + msg = msprintf(gettext("%s: An error occurred: %s\n"),"mkdir",gettext("Impossible to create directory ")) + NewDirectory; + status = 0; + else + msg = ""; + status = 1; + end + break + + case 2 + msg = msprintf(gettext("%s: An error occurred: %s\n"),"mkdir",gettext("This directory already exists in ")) + NewDirectory; + break + + case -2 + msg = msprintf(gettext("%s: An error occurred: %s\n"),"mkdir",gettext("A file with the same name already exists in ")) + DirName; + break + + else + msg = msprintf(gettext("%s: An error occurred: %s\n"),"mkdir",gettext("Impossible to create directory ")) + NewDirectory; + end + +endfunction |