svn commit: samba r9205 - in branches/SAMBA_4_0/source/script: .

tpot at samba.org tpot at samba.org
Mon Aug 8 00:24:05 GMT 2005


Author: tpot
Date: 2005-08-08 00:24:05 +0000 (Mon, 08 Aug 2005)
New Revision: 9205

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

Log:
Generate more stub code for smb_raw ejs functions.

Modified:
   branches/SAMBA_4_0/source/script/build_smb_interfaces.pl


Changeset:
Modified: branches/SAMBA_4_0/source/script/build_smb_interfaces.pl
===================================================================
--- branches/SAMBA_4_0/source/script/build_smb_interfaces.pl	2005-08-07 23:34:50 UTC (rev 9204)
+++ branches/SAMBA_4_0/source/script/build_smb_interfaces.pl	2005-08-08 00:24:05 UTC (rev 9205)
@@ -57,6 +57,9 @@
 # Generate implementation
 #
 
+my $basename = basename($file, ".h");
+stat "libcli/gen_raw" || mkdir("libcli/gen_raw") || die("mkdir");
+
 open(FILE, ">libcli/gen_raw/ejs_${basename}.c");
 
 print FILE "/* EJS wrapper functions auto-generated by build_smb_interfaces.pl */\n\n";
@@ -74,9 +77,38 @@
 
     # Top level struct
 
-    print FILE "static NTSTATUS ejs_$s->{TYPE_DEFINED}(int eid, int argc, struct MprVar **argv)\n";
+    print FILE "static int ejs_$s->{TYPE_DEFINED}(int eid, int argc, struct MprVar **argv)\n";
     print FILE "{\n";
-    print FILE "\treturn NT_STATUS_OK;\n";
+    print FILE "\tstruct $s->{TYPE_DEFINED} params;\n";
+    print FILE "\tstruct smbcli_tree *tree;\n";
+    print FILE "\tNTSTATUS result;\n\n";
+
+    print FILE "\tif (argc != 1 || argv[0]->type != MPR_TYPE_OBJECT) {\n";
+    print FILE "\t\tejsSetErrorMsg(eid, \"invalid arguments\");\n";
+    print FILE "\t\treturn -1;\n";
+    print FILE "\t}\n\n";
+
+    foreach my $field (@{$s->{FIELDS}}) {
+      next if $field->{NAME} eq "out";
+      print FILE "\t// pull params.$field->{NAME}\n";
+    }
+
+    my $fn = $s->{TYPE_DEFINED};
+    $fn =~ s/^smb_/smb_raw_/;
+
+    print FILE "\n\tresult = $fn(tree, &params);\n\n";
+
+    foreach my $field (@{$s->{FIELDS}}) {
+      next if $field->{NAME} eq "in";
+      print FILE "\t// push params.$field->{NAME}\n";
+    }
+
+    print FILE "\n\tmpr_Return(eid, mprNTSTATUS(result));\n\n";
+    print FILE "\tif (NT_STATUS_EQUAL(status, NT_STATUS_INTERNAL_ERROR)) {\n";
+    print FILE "\t\treturn -1;\n";
+    print FILE "\t}\n\n";
+    print FILE "\treturn 0;\n";
+
     print FILE "}\n\n";
 
   } else {
@@ -85,9 +117,38 @@
 
     foreach my $arm (@{$s->{FIELDS}}) {
 
-      print FILE "static NTSTATUS ejs_$s->{TYPE_DEFINED}_$arm->{NAME}(int eid, int argc, struct MprVar **argv)\n";
+      print FILE "static int ejs_$s->{TYPE_DEFINED}_$arm->{NAME}(int eid, int argc, struct MprVar **argv)\n";
       print FILE "{\n";
-      print FILE "\treturn NT_STATUS_OK;\n";
+      print FILE "\tunion $s->{TYPE_DEFINED} params;\n";
+      print FILE "\tstruct smbcli_tree *tree;\n";
+      print FILE "\tNTSTATUS result;\n\n";
+
+      print FILE "\tif (argc != 1 || argv[0]->type != MPR_TYPE_OBJECT) {\n";
+      print FILE "\t\tejsSetErrorMsg(eid, \"invalid arguments\");\n";
+      print FILE "\t\treturn -1;\n";
+      print FILE "\t}\n\n";
+
+      foreach my $field (@{$arm->{FIELDS}}) {
+	next if $field->{NAME} eq "out";
+	print FILE "\t// pull params.$arm->{NAME}.$field->{NAME}\n";
+      }
+
+      my $fn = $s->{TYPE_DEFINED};
+      $fn =~ s/^smb_/smb_raw_/;
+
+      print FILE "\n\tresult = $fn(tree, &params);\n\n";
+
+      foreach my $field (@{$arm->{FIELDS}}) {
+	next if $field->{NAME} eq "in";
+	print FILE "\t// push params.$arm->{NAME}.$field->{NAME}\n";
+      }
+
+      print FILE "\n\tmpr_Return(eid, mprNTSTATUS(result));\n\n";
+      print FILE "\tif (NT_STATUS_EQUAL(status, NT_STATUS_INTERNAL_ERROR)) {\n";
+      print FILE "\t\treturn -1;\n";
+      print FILE "\t}\n\n";
+      print FILE "\treturn 0;\n";
+
       print FILE "}\n\n";
     }
   }
@@ -119,43 +180,3 @@
 close(FILE);
 
 exit;
-
-foreach my $x (@{$header}) {
-  next, if $x->{STRUCT_NAME} eq "";
-
-  $raw_name = $x->{STRUCT_NAME};
-  $raw_name =~ s/smb_/smb_raw_/;
-
-  print FILE "static int ejs_$x->{STRUCT_NAME}(int eid, int argc, struct MprVar **argv)\n";
-  print FILE "{\n";
-  print FILE "\tstruct $x->{STRUCT_NAME} params;\n";
-  print FILE "\tstruct smbcli_tree *tree;\n";
-  print FILE "\tNTSTATUS result;\n\n";
-
-  $output = << "__HERE__";
-	if (argc != 1 || argv[0]->type != MPR_TYPE_OBJECT) {
-		ejsSetErrorMsg(eid, "invalid arguments");
-		return -1;
-	}
-
-	tree = mprGetThisPtr(eid, "tree");
-
-	if (!tree) {
-		ejsSetErrorMsg(eid, "invalid tree");
-		return -1;
-	}
-
-__HERE__
-
-  print FILE $output;
-  print FILE "\tresult = $raw_name(tree, &params);\n\n";
-
-  print FILE "\tmpr_Return(eid, mprNTSTATUS(status));\n";
-  print FILE "\tif (NT_STATUS_EQUAL(status, NT_STATUS_INTERNAL_ERROR)) {\n";
-  print FILE "\t\treturn -1;\n";
-  print FILE "\t}\n\n";
-  print FILE "\treturn 0;\n";
-
-  print FILE "}\n\n";
-}
-



More information about the samba-cvs mailing list