[PATCH] add generated NTSTATUS error module for python

Andrew Bartlett abartlet at samba.org
Mon Oct 31 02:32:04 UTC 2016


On Mon, 2016-10-10 at 12:25 +0300, Alexander Bokovoy wrote:
> On ma, 10 loka 2016, Stefan Metzmacher wrote:
> > Am 10.10.2016 um 04:12 schrieb Andrew Bartlett:
> > > On Thu, 2016-10-06 at 15:19 -0700, Jeremy Allison wrote:
> > > > On Fri, Sep 30, 2016 at 06:25:15AM +0200, Günther Deschner
> > > > wrote:
> > > > > Hi,
> > > > > 
> > > > > please review and push.
> > > > > 
> > > > > Thanks,
> > > > > Guenther
> > > > 
> > > > Hi Guenther, I'm still working on my python - but get:
> > > > 
> > > > ../libcli/util/py_ntstatus.c:17:6: error: no previous prototype
> > > > for
> > > > ‘initntstatus’ [-Werror=missing-prototypes]
> > > >  void initntstatus(void)
> > > > 
> > > > when I try and build with this. Not sure where the
> > > > missing proto should go...
> > > 
> > > Nowhere (or just above it, to shut up the warning).
> > > 
> > > Because this is essentially a plugin (to python), it is like our
> > > own
> > > modules where the caller (python) works out the name and finds it
> > > with
> > > dlopen/dlsym stuff, rather than via a header. 
> > > 
> > > The only thing I would ask for is some spaces in this:
> > > +    print "writing new headerfile: %s"%pythonfile_name
> > > +    out_file = open(pythonfile_name,"w")
> > > 
> > > eg
> > > 
> > > +    print "writing new headerfile: %s" % pythonfile_name
> > > +    out_file = open(pythonfile_name, "w")
> > > 
> > > Sorry for the nitpick, but otherwise, it looks good to me, and we
> > > can
> > > work from here to make some python exceptions so we can raise
> > > something
> > > sensible when we need to return an NTSTATUS error from C.
> > 
> > Because of things like that and we may also want to have some
> > functions
> > translate from between NTSTATUS, WERROR and HRESULT, we may want to
> > have a generic, samba.errors module that contains all of them.
> > 
> > So we may want to have a py_ntstatus_init(PyObject *m),
> > py_werror_init(PyObject *m) and py_hresult_init(PyObject *m)
> > which are called from a handwritten initerrors() function.
> > 
> > And I'd like to use a define instead of integer.
> > 
> > PyModule_AddObject(m, "NT_STATUS_SUCCESS",
> > ndr_PyLong_FromUnsignedLongLong(0x00000000));
> > 
> > should be
> > 
> > PyModule_AddObject(m, "NT_STATUS_SUCCESS",
> > 		   ndr_PyLong_FromUnsignedLongLong(NT_STATUS_V(NT_STATU
> > S_SUCCESS)));
> > 
> > Or we use a define to make the lines shorter.
> > 
> > #define _ADD_CODE(m, v) do {\
> > 	PyModule_AddObject(m, #v, \
> > 		ndr_PyLong_FromUnsignedLongLong(NT_STATUS_V(v))); \
> > } while(0)
> 
> Agreed. This is one area which made my life on FreeIPA side miserable
> when tracking error codes. Having them unified is welcomed.

Ping!

It would still be really good to get this in to master!

Andrew Bartlett

-- 
Andrew Bartlett
https://samba.org/~abartlet/
Authentication Developer, Samba Team         https://samba.org
Samba Development and Support, Catalyst IT   
https://catalyst.net.nz/services/samba







More information about the samba-technical mailing list