diff src/dirfns.cc @ 6187:2a8922007c12

[project @ 2006-11-29 01:59:59 by jwe]
author jwe
date Wed, 29 Nov 2006 02:00:00 +0000
parents 3010a2ecde0b
children 5a53bf0f15b0
line wrap: on
line diff
--- a/src/dirfns.cc	Tue Nov 28 20:13:40 2006 +0000
+++ b/src/dirfns.cc	Wed Nov 29 02:00:00 2006 +0000
@@ -204,6 +204,7 @@
 DEFCMD (mkdir, args, ,
   "-*- texinfo -*-\n\
 @deftypefn {Built-in Function} {[@var{status}, @var{msg}, @var{msgid}] =} mkdir (@var{dir})\n\
+@deftypefn {Built-in Function} {[@var{status}, @var{msg}, @var{msgid}] =} mkdir (@var{parent}, @var{dir})\n\
 Create a directory named @var{dir}.\n\
 \n\
 If successful, @var{status} is 1, with @var{msg} and @var{msgid} empty\n\
@@ -219,27 +220,48 @@
   retval(1) = std::string ();
   retval(0) = false;
 
-  if (args.length () == 1)
+  int nargin = args.length ();
+
+  std::string dirname;
+
+  if (nargin == 2)
     {
-      std::string dirname = args(0).string_value ();
+      std::string parent = args(0).string_value ();
+      std::string dir = args(1).string_value ();
 
       if (error_state)
-	gripe_wrong_type_arg ("mkdir", args(0));
-      else
 	{
-	  std::string msg;
+	  gripe_wrong_type_arg ("mkdir", args(0));
+	  return retval;
+	}
+      else
+	dirname = parent + file_ops::dir_sep_char + dir;
+    }
+  else
+    {
+      dirname = args(0).string_value ();
 
-	  int status = file_ops::mkdir (file_ops::tilde_expand (dirname),
+      if (error_state)
+	{
+	  gripe_wrong_type_arg ("mkdir", args(0));
+	  return retval;
+	}
+    }
+
+  if (nargin == 1 || nargin == 2)
+    {
+      std::string msg;
+
+      int status = file_ops::mkdir (file_ops::tilde_expand (dirname),
 					0777, msg);
 
-	  if (status < 0)
-	    {
-	      retval(2) = "mkdir";
-	      retval(1) = msg;
-	    }
-	  else
-	    retval(0) = true;
+      if (status < 0)
+	{
+	  retval(2) = "mkdir";
+	  retval(1) = msg;
 	}
+      else
+	retval(0) = true;
     }
   else
     print_usage ();