mirror of
https://github.com/samba-team/samba.git
synced 2025-01-27 14:04:05 +03:00
r2966: Handle conversion of DATA_BLOB fields from Python in a slightly nicer
manner. I'm hoping to get rid of DATA_BLOB's but for the moment they make it easy to get some spoolss action happening quickly. (This used to be commit 15f8f73f8bfec099973fb8bf167020ae50346cf6)
This commit is contained in:
parent
e3627c2c6e
commit
1c4b87c788
@ -96,6 +96,11 @@ sub FieldFromPython($$)
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($e->{TYPE} eq "DATA_BLOB") {
|
||||||
|
$result .= "\tDATA_BLOB_ptr_from_python(mem_ctx, &s->$prefix$e->{NAME}, $obj, \"$e->{NAME}\");\n";
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
# Generate conversion for element
|
# Generate conversion for element
|
||||||
|
|
||||||
if (util::is_scalar_type($e->{TYPE})) {
|
if (util::is_scalar_type($e->{TYPE})) {
|
||||||
|
@ -254,28 +254,28 @@ PyObject *string_ptr_to_python(TALLOC_CTX *mem_ctx, char *obj)
|
|||||||
#define dom_sid2_ptr_to_python dom_sid_ptr_to_python
|
#define dom_sid2_ptr_to_python dom_sid_ptr_to_python
|
||||||
#define dom_sid2_ptr_from_python dom_sid_ptr_from_python
|
#define dom_sid2_ptr_from_python dom_sid_ptr_from_python
|
||||||
|
|
||||||
DATA_BLOB DATA_BLOB_from_python(PyObject *obj, char *name)
|
void DATA_BLOB_ptr_from_python(TALLOC_CTX *mem_ctx, DATA_BLOB **s,
|
||||||
|
PyObject *obj, char *name)
|
||||||
{
|
{
|
||||||
DATA_BLOB ret;
|
|
||||||
|
|
||||||
/* Because we treat DATA_BLOB as a scalar type (why?) there
|
|
||||||
doesn't seem to be a way to pass back when an error has
|
|
||||||
occured. */
|
|
||||||
|
|
||||||
if (obj == NULL) {
|
if (obj == NULL) {
|
||||||
PyErr_Format(PyExc_ValueError, "Expecting key %s", name);
|
PyErr_Format(PyExc_ValueError, "Expecting key %s", name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (obj == Py_None) {
|
||||||
|
*s = NULL;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!PyString_Check(obj)) {
|
if (!PyString_Check(obj)) {
|
||||||
PyErr_Format(PyExc_TypeError, "Expecting string value for key '%s'", name);
|
PyErr_Format(PyExc_TypeError, "Expecting string value for key '%s'", name);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret.length = PyString_Size(obj);
|
*s = talloc(mem_ctx, sizeof(DATA_BLOB));
|
||||||
ret.data = PyString_AsString(obj);
|
|
||||||
|
|
||||||
return ret;
|
(*s)->length = PyString_Size(obj);
|
||||||
|
(*s)->data = PyString_AsString(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *DATA_BLOB_to_python(DATA_BLOB obj)
|
PyObject *DATA_BLOB_to_python(DATA_BLOB obj)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user