summaryrefslogtreecommitdiff
path: root/python/py3compat.h
diff options
context:
space:
mode:
authorPetr Viktorin <pviktori@redhat.com>2017-05-03 16:57:07 +0200
committerAndrew Bartlett <abartlet@samba.org>2017-05-19 22:20:15 +0200
commit40e409bf9e89a163c771b2a58493d2c1b496fae7 (patch)
tree28dceee63f2a27ebcc7b5355d94bfed91b4975b9 /python/py3compat.h
parentb691f6d32f79ef8427f567612243dd51ea8d5584 (diff)
downloadsamba-40e409bf9e89a163c771b2a58493d2c1b496fae7.tar.gz
python3: Use "y#" instead of "s#" for binary data in PyArg_ParseTuple
The "s#" format code for PyArg_ParseTupleAndKeywords and Py_BuildValue converts a char* and size to/from Python str (with utf-8 encoding under Python 3). In some cases, we want bytes (str on Python 2, bytes on 3) instead. The code for this is "y#" in Python 3, but that is not available in 2. Introduce a PYARG_BYTES_LEN macro that expands to "s#" or "y#", and use that in: - credentials.get_ntlm_response (for input and output) - ndr_unpack argument in PIDL generated code Signed-off-by: Petr Viktorin <pviktori@redhat.com> Reviewed-by: Andreas Schneider <asn@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Diffstat (limited to 'python/py3compat.h')
-rw-r--r--python/py3compat.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/python/py3compat.h b/python/py3compat.h
index c7724c95748..f54b3912f17 100644
--- a/python/py3compat.h
+++ b/python/py3compat.h
@@ -98,6 +98,10 @@
PyMODINIT_FUNC PyInit_ ## name(void); \
PyMODINIT_FUNC PyInit_ ## name(void)
+/* PyArg_ParseTuple/Py_BuildValue argument */
+
+#define PYARG_BYTES_LEN "y#"
+
#else
/***** Python 2 *****/
@@ -140,6 +144,10 @@
#define PyBytes_ConcatAndDel PyString_ConcatAndDel
#define _PyBytes_Resize _PyString_Resize
+/* PyArg_ParseTuple/Py_BuildValue argument */
+
+#define PYARG_BYTES_LEN "s#"
+
/* Module init */
#define PyModuleDef_HEAD_INIT 0