The branch, master has been updated
       via  2c322ca Fix some of the issues that Jelmer identified in my first 
patch. This might be changed again, especially when I figure out how to return 
the file as an object.
      from  36101d3 Add an open and close method to samba.smb.SMB so we can 
open and close files. Also, fix up some documentation.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 2c322ca95a7dc4fb8396b475d115f31837316267
Author: Richard Sharpe <realrichardsha...@gmail.com>
Date:   Sun Apr 1 13:14:49 2012 -0700

    Fix some of the issues that Jelmer identified in my first patch. This might 
be
    changed again, especially when I figure out how to return the file as an
    object.
    
    Autobuild-User: Richard Sharpe <sha...@samba.org>
    Autobuild-Date: Mon Apr  2 01:43:44 CEST 2012 on sn-devel-104

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

Summary of changes:
 source4/libcli/pysmb.c |   28 ++++++++++++----------------
 1 files changed, 12 insertions(+), 16 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/libcli/pysmb.c b/source4/libcli/pysmb.c
index a0021b9..3f2efe9 100644
--- a/source4/libcli/pysmb.c
+++ b/source4/libcli/pysmb.c
@@ -437,13 +437,15 @@ static PyObject *py_open_file(pytalloc_Object *self, 
PyObject *args, PyObject *k
        union smb_open io;
        struct smb_private_data *spdata;
        const char *filename;
-       uint32_t access_mask = 0;
-       uint32_t share_access = 0;
-        uint32_t open_disposition = 0;
+       uint32_t access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
+       uint32_t share_access = NTCREATEX_SHARE_ACCESS_READ |
+                               NTCREATEX_SHARE_ACCESS_WRITE;
+        uint32_t open_disposition = NTCREATEX_DISP_OPEN;
         uint32_t create_options = 0;
+       TALLOC_CTX *mem_ctx;
        int fnum;
 
-       if (!PyArg_ParseTuple(args, "si|iii:open_file", 
+       if (!PyArg_ParseTuple(args, "s|iiii:open_file", 
                                &filename, 
                                &access_mask,
                                &share_access,
@@ -452,20 +454,12 @@ static PyObject *py_open_file(pytalloc_Object *self, 
PyObject *args, PyObject *k
                return NULL;
        }
 
-       if (!access_mask)
-               access_mask = SEC_FLAG_MAXIMUM_ALLOWED;
-
-       if (!share_access)
-               share_access = NTCREATEX_SHARE_ACCESS_READ |
-                               NTCREATEX_SHARE_ACCESS_WRITE;
-
-       if (!open_disposition)
-               open_disposition = NTCREATEX_DISP_OPEN;
-
        ZERO_STRUCT(io);
 
        spdata = self->ptr;     
 
+       mem_ctx = talloc_new(NULL);
+
        io.generic.level = RAW_OPEN_NTCREATEX;
        io.ntcreatex.in.root_fid.fnum = 0;
        io.ntcreatex.in.flags = 0;
@@ -479,7 +473,9 @@ static PyObject *py_open_file(pytalloc_Object *self, 
PyObject *args, PyObject *k
        io.ntcreatex.in.security_flags = 0;
        io.ntcreatex.in.fname = filename;
        
-       status = smb_raw_open(spdata->tree, self->talloc_ctx, &io);
+       status = smb_raw_open(spdata->tree, mem_ctx, &io);
+       talloc_free(mem_ctx);
+
        PyErr_NTSTATUS_IS_ERR_RAISE(status);
 
        fnum = io.ntcreatex.out.file.fnum;
@@ -541,7 +537,7 @@ static PyMethodDef py_smb_methods[] = {
                Set security descriptor for file." },
        { "open_file", (PyCFunction)py_open_file, METH_VARARGS,
                "open_file(path, access_mask[, share_access[, 
open_disposition[, create_options]]] -> fnum\n\n \
-               Open a file. Throws exceptions on errors." },
+               Open a file. Throws NTSTATUS exceptions on errors." },
        { "close_file", (PyCFunction)py_close_file, METH_VARARGS,
                "close_file(fnum) -> None\n\n \
                Close the file based on fnum."},


-- 
Samba Shared Repository

Reply via email to