[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha2-1252-gbfe773a

Jeremy Allison jra at samba.org
Tue Mar 11 18:51:09 GMT 2008


The branch, v4-0-test has been updated
       via  bfe773a620640fa46efe008f38144f5452350825 (commit)
      from  a8a5339cf2ca218668f888eced5ffe7ce059553c (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit bfe773a620640fa46efe008f38144f5452350825
Author: Stefan Metzmacher <metze at samba.org>
Date:   Tue Mar 11 19:11:57 2008 +0100

    libcli/raw: add RAW_RENAME_NTTRANS support
    
    metze
    
    Signed-off-by: Stefan Metzmacher <metze at samba.org>

-----------------------------------------------------------------------

Summary of changes:
 source/libcli/raw/interfaces.h |   13 ++++++++++++-
 source/libcli/raw/rawfile.c    |   26 ++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/libcli/raw/interfaces.h b/source/libcli/raw/interfaces.h
index 24e8ad4..3965c58 100644
--- a/source/libcli/raw/interfaces.h
+++ b/source/libcli/raw/interfaces.h
@@ -175,7 +175,7 @@ struct smb_rmdir {
 };
 
 /* struct used in rename() call */
-enum smb_rename_level {RAW_RENAME_RENAME, RAW_RENAME_NTRENAME};
+enum smb_rename_level {RAW_RENAME_RENAME, RAW_RENAME_NTRENAME, RAW_RENAME_NTTRANS};
 
 union smb_rename {
 	struct {
@@ -206,6 +206,17 @@ union smb_rename {
 			const char *new_name;
 		} in;
 	} ntrename;
+
+	/* NT TRANS rename interface */
+	struct {
+		enum smb_rename_level level;
+
+		struct {
+			union smb_handle file;
+			uint16_t flags;/* see RENAME_REPLACE_IF_EXISTS */
+			const char *new_name;
+		} in;
+	} nttrans;
 };
 
 enum smb_tcon_level {
diff --git a/source/libcli/raw/rawfile.c b/source/libcli/raw/rawfile.c
index d938340..725034c 100644
--- a/source/libcli/raw/rawfile.c
+++ b/source/libcli/raw/rawfile.c
@@ -36,6 +36,8 @@ struct smbcli_request *smb_raw_rename_send(struct smbcli_tree *tree,
 					union smb_rename *parms)
 {
 	struct smbcli_request *req = NULL; 
+	struct smb_nttrans nt;
+	TALLOC_CTX *mem_ctx;
 
 	switch (parms->generic.level) {
 	case RAW_RENAME_RENAME:
@@ -53,6 +55,30 @@ struct smbcli_request *smb_raw_rename_send(struct smbcli_tree *tree,
 		smbcli_req_append_ascii4(req, parms->ntrename.in.old_name, STR_TERMINATE);
 		smbcli_req_append_ascii4(req, parms->ntrename.in.new_name, STR_TERMINATE);
 		break;
+
+	case RAW_RENAME_NTTRANS:
+
+		mem_ctx = talloc_new(tree);
+
+		nt.in.max_setup = 0;
+		nt.in.max_param = 0;
+		nt.in.max_data = 0;
+		nt.in.setup_count = 0;
+		nt.in.setup = NULL;
+		nt.in.function = NT_TRANSACT_RENAME;
+		nt.in.params = data_blob_talloc(mem_ctx, NULL, 4);
+		nt.in.data = data_blob(NULL, 0);
+
+		SSVAL(nt.in.params.data, VWV(0), parms->nttrans.in.file.fnum);
+		SSVAL(nt.in.params.data, VWV(1), parms->nttrans.in.flags);
+
+		smbcli_blob_append_string(tree->session, mem_ctx,
+					  &nt.in.params, parms->nttrans.in.new_name,
+					  STR_TERMINATE);
+
+		req = smb_raw_nttrans_send(tree, &nt);
+		talloc_free(mem_ctx);
+		return req;
 	}
 
 	if (!smbcli_request_send(req)) {


-- 
Samba Shared Repository


More information about the samba-cvs mailing list