summaryrefslogtreecommitdiff
path: root/modules/fileio/macros/mkdir.sci
diff options
context:
space:
mode:
Diffstat (limited to 'modules/fileio/macros/mkdir.sci')
-rwxr-xr-xmodules/fileio/macros/mkdir.sci141
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