svn commit: samba r7924 - in branches/SAMBA_4_0/source/scripting/ejs: .

tpot at samba.org tpot at samba.org
Sun Jun 26 05:43:17 GMT 2005


Author: tpot
Date: 2005-06-26 05:43:16 +0000 (Sun, 26 Jun 2005)
New Revision: 7924

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=7924

Log:
Add mkdir() and rmdir() functions.

Write a macro to check tree handle parameters.

Modified:
   branches/SAMBA_4_0/source/scripting/ejs/smbcalls_cli.c


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/ejs/smbcalls_cli.c
===================================================================
--- branches/SAMBA_4_0/source/scripting/ejs/smbcalls_cli.c	2005-06-26 05:19:48 UTC (rev 7923)
+++ branches/SAMBA_4_0/source/scripting/ejs/smbcalls_cli.c	2005-06-26 05:43:16 UTC (rev 7924)
@@ -449,6 +449,9 @@
 	return 0;
 }
 
+#define IS_TREE_HANDLE(x) (mprVarIsPtr((x)->type) && \
+                           talloc_check_name((x)->ptr, "struct smbcli_tree"))
+
 /* Perform a tree disconnect:
 
      tree_disconnect(tree_handle);
@@ -459,8 +462,13 @@
 	struct smbcli_tree *tree;
 	NTSTATUS result;
 
-	if (!mprVarIsPtr(argv[0]->type) || 
-	    !talloc_check_name(argv[0]->ptr, "struct smbcli_tree")) {
+	if (argc != 1) {
+		ejsSetErrorMsg(eid, 
+			       "tree_disconnect(): invalid number of args");
+		return -1;
+	}
+
+	if (!IS_TREE_HANDLE(argv[0])) {
 		ejsSetErrorMsg(eid, "first arg is not a tree handle");
 		return -1;
 	}
@@ -474,6 +482,74 @@
 	return 0;
 }
 
+/* Perform a tree connect:
+
+     result = mkdir(tree_handle, DIRNAME);
+ */
+
+static int ejs_mkdir(MprVarHandle eid, int argc, MprVar **argv)
+{
+	struct smbcli_tree *tree;
+	NTSTATUS result;
+
+	if (argc != 2) {
+		ejsSetErrorMsg(eid, "mkdir(): invalid number of args");
+		return -1;
+	}
+
+	if (!IS_TREE_HANDLE(argv[0])) {
+		ejsSetErrorMsg(eid, "first arg is not a tree handle");
+		return -1;
+	}
+
+	tree = argv[0]->ptr;
+
+	if (!mprVarIsString(argv[1]->type)) {
+		ejsSetErrorMsg(eid, "arg 2 must be a string");
+		return -1;
+	}
+
+	result = smbcli_mkdir(tree, argv[1]->string);
+
+	ejsSetReturnValue(eid, mprNTSTATUS(result));
+
+	return 0;
+}
+
+/* Perform a tree connect:
+
+     result = rmdir(tree_handle, DIRNAME);
+ */
+
+static int ejs_rmdir(MprVarHandle eid, int argc, MprVar **argv)
+{
+	struct smbcli_tree *tree;
+	NTSTATUS result;
+
+	if (argc != 2) {
+		ejsSetErrorMsg(eid, "rmdir(): invalid number of args");
+		return -1;
+	}
+
+	if (!IS_TREE_HANDLE(argv[0])) {
+		ejsSetErrorMsg(eid, "first arg is not a tree handle");
+		return -1;
+	}
+
+	tree = argv[0]->ptr;
+
+	if (!mprVarIsString(argv[1]->type)) {
+		ejsSetErrorMsg(eid, "arg 2 must be a string");
+		return -1;
+	}
+	
+	result = smbcli_rmdir(tree, argv[1]->string);
+
+	ejsSetReturnValue(eid, mprNTSTATUS(result));
+
+	return 0;
+}
+
 /*
   setup C functions that be called from ejs
 */
@@ -482,6 +558,9 @@
 	ejsDefineStringCFunction(-1, "tree_connect", ejs_tree_connect, NULL, MPR_VAR_SCRIPT_HANDLE);
 	ejsDefineCFunction(-1, "tree_disconnect", ejs_tree_disconnect, NULL, MPR_VAR_SCRIPT_HANDLE);
 
+	ejsDefineCFunction(-1, "mkdir", ejs_mkdir, NULL, MPR_VAR_SCRIPT_HANDLE);
+	ejsDefineCFunction(-1, "rmdir", ejs_rmdir, NULL, MPR_VAR_SCRIPT_HANDLE);
+
 #if 0
 	ejsDefineStringCFunction(-1, "connect", ejs_cli_connect, NULL, MPR_VAR_SCRIPT_HANDLE);
 	ejsDefineCFunction(-1, "session_setup", ejs_cli_ssetup, NULL, MPR_VAR_SCRIPT_HANDLE);



More information about the samba-cvs mailing list