| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 1 | /*[clinic input] | 
 | 2 | preserve | 
 | 3 | [clinic start generated code]*/ | 
 | 4 |  | 
 | 5 | PyDoc_STRVAR(binascii_a2b_uu__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 6 | "a2b_uu($module, data, /)\n" | 
 | 7 | "--\n" | 
 | 8 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 9 | "Decode a line of uuencoded data."); | 
 | 10 |  | 
 | 11 | #define BINASCII_A2B_UU_METHODDEF    \ | 
 | 12 |     {"a2b_uu", (PyCFunction)binascii_a2b_uu, METH_VARARGS, binascii_a2b_uu__doc__}, | 
 | 13 |  | 
 | 14 | static PyObject * | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 15 | binascii_a2b_uu_impl(PyModuleDef *module, Py_buffer *data); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 16 |  | 
 | 17 | static PyObject * | 
 | 18 | binascii_a2b_uu(PyModuleDef *module, PyObject *args) | 
 | 19 | { | 
 | 20 |     PyObject *return_value = NULL; | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 21 |     Py_buffer data = {NULL, NULL}; | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 22 |  | 
 | 23 |     if (!PyArg_ParseTuple(args, | 
 | 24 |         "O&:a2b_uu", | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 25 |         ascii_buffer_converter, &data)) | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 26 |         goto exit; | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 27 |     return_value = binascii_a2b_uu_impl(module, &data); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 28 |  | 
 | 29 | exit: | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 30 |     /* Cleanup for data */ | 
 | 31 |     if (data.obj) | 
 | 32 |        PyBuffer_Release(&data); | 
 | 33 |  | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 34 |     return return_value; | 
 | 35 | } | 
 | 36 |  | 
 | 37 | PyDoc_STRVAR(binascii_b2a_uu__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 38 | "b2a_uu($module, data, /)\n" | 
 | 39 | "--\n" | 
 | 40 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 41 | "Uuencode line of data."); | 
 | 42 |  | 
 | 43 | #define BINASCII_B2A_UU_METHODDEF    \ | 
 | 44 |     {"b2a_uu", (PyCFunction)binascii_b2a_uu, METH_VARARGS, binascii_b2a_uu__doc__}, | 
 | 45 |  | 
 | 46 | static PyObject * | 
 | 47 | binascii_b2a_uu_impl(PyModuleDef *module, Py_buffer *data); | 
 | 48 |  | 
 | 49 | static PyObject * | 
 | 50 | binascii_b2a_uu(PyModuleDef *module, PyObject *args) | 
 | 51 | { | 
 | 52 |     PyObject *return_value = NULL; | 
 | 53 |     Py_buffer data = {NULL, NULL}; | 
 | 54 |  | 
 | 55 |     if (!PyArg_ParseTuple(args, | 
 | 56 |         "y*:b2a_uu", | 
 | 57 |         &data)) | 
 | 58 |         goto exit; | 
 | 59 |     return_value = binascii_b2a_uu_impl(module, &data); | 
 | 60 |  | 
 | 61 | exit: | 
 | 62 |     /* Cleanup for data */ | 
 | 63 |     if (data.obj) | 
 | 64 |        PyBuffer_Release(&data); | 
 | 65 |  | 
 | 66 |     return return_value; | 
 | 67 | } | 
 | 68 |  | 
 | 69 | PyDoc_STRVAR(binascii_a2b_base64__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 70 | "a2b_base64($module, data, /)\n" | 
 | 71 | "--\n" | 
 | 72 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 73 | "Decode a line of base64 data."); | 
 | 74 |  | 
 | 75 | #define BINASCII_A2B_BASE64_METHODDEF    \ | 
 | 76 |     {"a2b_base64", (PyCFunction)binascii_a2b_base64, METH_VARARGS, binascii_a2b_base64__doc__}, | 
 | 77 |  | 
 | 78 | static PyObject * | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 79 | binascii_a2b_base64_impl(PyModuleDef *module, Py_buffer *data); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 80 |  | 
 | 81 | static PyObject * | 
 | 82 | binascii_a2b_base64(PyModuleDef *module, PyObject *args) | 
 | 83 | { | 
 | 84 |     PyObject *return_value = NULL; | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 85 |     Py_buffer data = {NULL, NULL}; | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 86 |  | 
 | 87 |     if (!PyArg_ParseTuple(args, | 
 | 88 |         "O&:a2b_base64", | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 89 |         ascii_buffer_converter, &data)) | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 90 |         goto exit; | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 91 |     return_value = binascii_a2b_base64_impl(module, &data); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 92 |  | 
 | 93 | exit: | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 94 |     /* Cleanup for data */ | 
 | 95 |     if (data.obj) | 
 | 96 |        PyBuffer_Release(&data); | 
 | 97 |  | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 98 |     return return_value; | 
 | 99 | } | 
 | 100 |  | 
 | 101 | PyDoc_STRVAR(binascii_b2a_base64__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 102 | "b2a_base64($module, data, /)\n" | 
 | 103 | "--\n" | 
 | 104 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 105 | "Base64-code line of data."); | 
 | 106 |  | 
 | 107 | #define BINASCII_B2A_BASE64_METHODDEF    \ | 
 | 108 |     {"b2a_base64", (PyCFunction)binascii_b2a_base64, METH_VARARGS, binascii_b2a_base64__doc__}, | 
 | 109 |  | 
 | 110 | static PyObject * | 
 | 111 | binascii_b2a_base64_impl(PyModuleDef *module, Py_buffer *data); | 
 | 112 |  | 
 | 113 | static PyObject * | 
 | 114 | binascii_b2a_base64(PyModuleDef *module, PyObject *args) | 
 | 115 | { | 
 | 116 |     PyObject *return_value = NULL; | 
 | 117 |     Py_buffer data = {NULL, NULL}; | 
 | 118 |  | 
 | 119 |     if (!PyArg_ParseTuple(args, | 
 | 120 |         "y*:b2a_base64", | 
 | 121 |         &data)) | 
 | 122 |         goto exit; | 
 | 123 |     return_value = binascii_b2a_base64_impl(module, &data); | 
 | 124 |  | 
 | 125 | exit: | 
 | 126 |     /* Cleanup for data */ | 
 | 127 |     if (data.obj) | 
 | 128 |        PyBuffer_Release(&data); | 
 | 129 |  | 
 | 130 |     return return_value; | 
 | 131 | } | 
 | 132 |  | 
 | 133 | PyDoc_STRVAR(binascii_a2b_hqx__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 134 | "a2b_hqx($module, data, /)\n" | 
 | 135 | "--\n" | 
 | 136 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 137 | "Decode .hqx coding."); | 
 | 138 |  | 
 | 139 | #define BINASCII_A2B_HQX_METHODDEF    \ | 
 | 140 |     {"a2b_hqx", (PyCFunction)binascii_a2b_hqx, METH_VARARGS, binascii_a2b_hqx__doc__}, | 
 | 141 |  | 
 | 142 | static PyObject * | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 143 | binascii_a2b_hqx_impl(PyModuleDef *module, Py_buffer *data); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 144 |  | 
 | 145 | static PyObject * | 
 | 146 | binascii_a2b_hqx(PyModuleDef *module, PyObject *args) | 
 | 147 | { | 
 | 148 |     PyObject *return_value = NULL; | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 149 |     Py_buffer data = {NULL, NULL}; | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 150 |  | 
 | 151 |     if (!PyArg_ParseTuple(args, | 
 | 152 |         "O&:a2b_hqx", | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 153 |         ascii_buffer_converter, &data)) | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 154 |         goto exit; | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 155 |     return_value = binascii_a2b_hqx_impl(module, &data); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 156 |  | 
 | 157 | exit: | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 158 |     /* Cleanup for data */ | 
 | 159 |     if (data.obj) | 
 | 160 |        PyBuffer_Release(&data); | 
 | 161 |  | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 162 |     return return_value; | 
 | 163 | } | 
 | 164 |  | 
 | 165 | PyDoc_STRVAR(binascii_rlecode_hqx__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 166 | "rlecode_hqx($module, data, /)\n" | 
 | 167 | "--\n" | 
 | 168 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 169 | "Binhex RLE-code binary data."); | 
 | 170 |  | 
 | 171 | #define BINASCII_RLECODE_HQX_METHODDEF    \ | 
 | 172 |     {"rlecode_hqx", (PyCFunction)binascii_rlecode_hqx, METH_VARARGS, binascii_rlecode_hqx__doc__}, | 
 | 173 |  | 
 | 174 | static PyObject * | 
 | 175 | binascii_rlecode_hqx_impl(PyModuleDef *module, Py_buffer *data); | 
 | 176 |  | 
 | 177 | static PyObject * | 
 | 178 | binascii_rlecode_hqx(PyModuleDef *module, PyObject *args) | 
 | 179 | { | 
 | 180 |     PyObject *return_value = NULL; | 
 | 181 |     Py_buffer data = {NULL, NULL}; | 
 | 182 |  | 
 | 183 |     if (!PyArg_ParseTuple(args, | 
 | 184 |         "y*:rlecode_hqx", | 
 | 185 |         &data)) | 
 | 186 |         goto exit; | 
 | 187 |     return_value = binascii_rlecode_hqx_impl(module, &data); | 
 | 188 |  | 
 | 189 | exit: | 
 | 190 |     /* Cleanup for data */ | 
 | 191 |     if (data.obj) | 
 | 192 |        PyBuffer_Release(&data); | 
 | 193 |  | 
 | 194 |     return return_value; | 
 | 195 | } | 
 | 196 |  | 
 | 197 | PyDoc_STRVAR(binascii_b2a_hqx__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 198 | "b2a_hqx($module, data, /)\n" | 
 | 199 | "--\n" | 
 | 200 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 201 | "Encode .hqx data."); | 
 | 202 |  | 
 | 203 | #define BINASCII_B2A_HQX_METHODDEF    \ | 
 | 204 |     {"b2a_hqx", (PyCFunction)binascii_b2a_hqx, METH_VARARGS, binascii_b2a_hqx__doc__}, | 
 | 205 |  | 
 | 206 | static PyObject * | 
 | 207 | binascii_b2a_hqx_impl(PyModuleDef *module, Py_buffer *data); | 
 | 208 |  | 
 | 209 | static PyObject * | 
 | 210 | binascii_b2a_hqx(PyModuleDef *module, PyObject *args) | 
 | 211 | { | 
 | 212 |     PyObject *return_value = NULL; | 
 | 213 |     Py_buffer data = {NULL, NULL}; | 
 | 214 |  | 
 | 215 |     if (!PyArg_ParseTuple(args, | 
 | 216 |         "y*:b2a_hqx", | 
 | 217 |         &data)) | 
 | 218 |         goto exit; | 
 | 219 |     return_value = binascii_b2a_hqx_impl(module, &data); | 
 | 220 |  | 
 | 221 | exit: | 
 | 222 |     /* Cleanup for data */ | 
 | 223 |     if (data.obj) | 
 | 224 |        PyBuffer_Release(&data); | 
 | 225 |  | 
 | 226 |     return return_value; | 
 | 227 | } | 
 | 228 |  | 
 | 229 | PyDoc_STRVAR(binascii_rledecode_hqx__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 230 | "rledecode_hqx($module, data, /)\n" | 
 | 231 | "--\n" | 
 | 232 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 233 | "Decode hexbin RLE-coded string."); | 
 | 234 |  | 
 | 235 | #define BINASCII_RLEDECODE_HQX_METHODDEF    \ | 
 | 236 |     {"rledecode_hqx", (PyCFunction)binascii_rledecode_hqx, METH_VARARGS, binascii_rledecode_hqx__doc__}, | 
 | 237 |  | 
 | 238 | static PyObject * | 
 | 239 | binascii_rledecode_hqx_impl(PyModuleDef *module, Py_buffer *data); | 
 | 240 |  | 
 | 241 | static PyObject * | 
 | 242 | binascii_rledecode_hqx(PyModuleDef *module, PyObject *args) | 
 | 243 | { | 
 | 244 |     PyObject *return_value = NULL; | 
 | 245 |     Py_buffer data = {NULL, NULL}; | 
 | 246 |  | 
 | 247 |     if (!PyArg_ParseTuple(args, | 
 | 248 |         "y*:rledecode_hqx", | 
 | 249 |         &data)) | 
 | 250 |         goto exit; | 
 | 251 |     return_value = binascii_rledecode_hqx_impl(module, &data); | 
 | 252 |  | 
 | 253 | exit: | 
 | 254 |     /* Cleanup for data */ | 
 | 255 |     if (data.obj) | 
 | 256 |        PyBuffer_Release(&data); | 
 | 257 |  | 
 | 258 |     return return_value; | 
 | 259 | } | 
 | 260 |  | 
 | 261 | PyDoc_STRVAR(binascii_crc_hqx__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 262 | "crc_hqx($module, data, crc, /)\n" | 
 | 263 | "--\n" | 
 | 264 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 265 | "Compute hqx CRC incrementally."); | 
 | 266 |  | 
 | 267 | #define BINASCII_CRC_HQX_METHODDEF    \ | 
 | 268 |     {"crc_hqx", (PyCFunction)binascii_crc_hqx, METH_VARARGS, binascii_crc_hqx__doc__}, | 
 | 269 |  | 
| Serhiy Storchaka | 2ef7c47 | 2015-04-20 09:26:49 +0300 | [diff] [blame] | 270 | static unsigned int | 
 | 271 | binascii_crc_hqx_impl(PyModuleDef *module, Py_buffer *data, unsigned int crc); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 272 |  | 
 | 273 | static PyObject * | 
 | 274 | binascii_crc_hqx(PyModuleDef *module, PyObject *args) | 
 | 275 | { | 
 | 276 |     PyObject *return_value = NULL; | 
 | 277 |     Py_buffer data = {NULL, NULL}; | 
| Serhiy Storchaka | 2ef7c47 | 2015-04-20 09:26:49 +0300 | [diff] [blame] | 278 |     unsigned int crc; | 
 | 279 |     unsigned int _return_value; | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 280 |  | 
 | 281 |     if (!PyArg_ParseTuple(args, | 
| Serhiy Storchaka | 2ef7c47 | 2015-04-20 09:26:49 +0300 | [diff] [blame] | 282 |         "y*I:crc_hqx", | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 283 |         &data, &crc)) | 
 | 284 |         goto exit; | 
 | 285 |     _return_value = binascii_crc_hqx_impl(module, &data, crc); | 
 | 286 |     if ((_return_value == -1) && PyErr_Occurred()) | 
 | 287 |         goto exit; | 
| Serhiy Storchaka | 2ef7c47 | 2015-04-20 09:26:49 +0300 | [diff] [blame] | 288 |     return_value = PyLong_FromUnsignedLong((unsigned long)_return_value); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 289 |  | 
 | 290 | exit: | 
 | 291 |     /* Cleanup for data */ | 
 | 292 |     if (data.obj) | 
 | 293 |        PyBuffer_Release(&data); | 
 | 294 |  | 
 | 295 |     return return_value; | 
 | 296 | } | 
 | 297 |  | 
 | 298 | PyDoc_STRVAR(binascii_crc32__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 299 | "crc32($module, data, crc=0, /)\n" | 
 | 300 | "--\n" | 
 | 301 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 302 | "Compute CRC-32 incrementally."); | 
 | 303 |  | 
 | 304 | #define BINASCII_CRC32_METHODDEF    \ | 
 | 305 |     {"crc32", (PyCFunction)binascii_crc32, METH_VARARGS, binascii_crc32__doc__}, | 
 | 306 |  | 
 | 307 | static unsigned int | 
 | 308 | binascii_crc32_impl(PyModuleDef *module, Py_buffer *data, unsigned int crc); | 
 | 309 |  | 
 | 310 | static PyObject * | 
 | 311 | binascii_crc32(PyModuleDef *module, PyObject *args) | 
 | 312 | { | 
 | 313 |     PyObject *return_value = NULL; | 
 | 314 |     Py_buffer data = {NULL, NULL}; | 
 | 315 |     unsigned int crc = 0; | 
 | 316 |     unsigned int _return_value; | 
 | 317 |  | 
 | 318 |     if (!PyArg_ParseTuple(args, | 
 | 319 |         "y*|I:crc32", | 
 | 320 |         &data, &crc)) | 
 | 321 |         goto exit; | 
 | 322 |     _return_value = binascii_crc32_impl(module, &data, crc); | 
 | 323 |     if ((_return_value == -1) && PyErr_Occurred()) | 
 | 324 |         goto exit; | 
 | 325 |     return_value = PyLong_FromUnsignedLong((unsigned long)_return_value); | 
 | 326 |  | 
 | 327 | exit: | 
 | 328 |     /* Cleanup for data */ | 
 | 329 |     if (data.obj) | 
 | 330 |        PyBuffer_Release(&data); | 
 | 331 |  | 
 | 332 |     return return_value; | 
 | 333 | } | 
 | 334 |  | 
 | 335 | PyDoc_STRVAR(binascii_b2a_hex__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 336 | "b2a_hex($module, data, /)\n" | 
 | 337 | "--\n" | 
 | 338 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 339 | "Hexadecimal representation of binary data.\n" | 
 | 340 | "\n" | 
 | 341 | "The return value is a bytes object.  This function is also\n" | 
 | 342 | "available as \"hexlify()\"."); | 
 | 343 |  | 
 | 344 | #define BINASCII_B2A_HEX_METHODDEF    \ | 
 | 345 |     {"b2a_hex", (PyCFunction)binascii_b2a_hex, METH_VARARGS, binascii_b2a_hex__doc__}, | 
 | 346 |  | 
 | 347 | static PyObject * | 
 | 348 | binascii_b2a_hex_impl(PyModuleDef *module, Py_buffer *data); | 
 | 349 |  | 
 | 350 | static PyObject * | 
 | 351 | binascii_b2a_hex(PyModuleDef *module, PyObject *args) | 
 | 352 | { | 
 | 353 |     PyObject *return_value = NULL; | 
 | 354 |     Py_buffer data = {NULL, NULL}; | 
 | 355 |  | 
 | 356 |     if (!PyArg_ParseTuple(args, | 
 | 357 |         "y*:b2a_hex", | 
 | 358 |         &data)) | 
 | 359 |         goto exit; | 
 | 360 |     return_value = binascii_b2a_hex_impl(module, &data); | 
 | 361 |  | 
 | 362 | exit: | 
 | 363 |     /* Cleanup for data */ | 
 | 364 |     if (data.obj) | 
 | 365 |        PyBuffer_Release(&data); | 
 | 366 |  | 
 | 367 |     return return_value; | 
 | 368 | } | 
 | 369 |  | 
| Zachary Ware | b176d40 | 2015-01-20 13:59:46 -0600 | [diff] [blame] | 370 | PyDoc_STRVAR(binascii_hexlify__doc__, | 
 | 371 | "hexlify($module, data, /)\n" | 
 | 372 | "--\n" | 
 | 373 | "\n" | 
 | 374 | "Hexadecimal representation of binary data.\n" | 
 | 375 | "\n" | 
 | 376 | "The return value is a bytes object."); | 
 | 377 |  | 
 | 378 | #define BINASCII_HEXLIFY_METHODDEF    \ | 
 | 379 |     {"hexlify", (PyCFunction)binascii_hexlify, METH_VARARGS, binascii_hexlify__doc__}, | 
 | 380 |  | 
 | 381 | static PyObject * | 
 | 382 | binascii_hexlify_impl(PyModuleDef *module, Py_buffer *data); | 
 | 383 |  | 
 | 384 | static PyObject * | 
 | 385 | binascii_hexlify(PyModuleDef *module, PyObject *args) | 
 | 386 | { | 
 | 387 |     PyObject *return_value = NULL; | 
 | 388 |     Py_buffer data = {NULL, NULL}; | 
 | 389 |  | 
 | 390 |     if (!PyArg_ParseTuple(args, | 
 | 391 |         "y*:hexlify", | 
 | 392 |         &data)) | 
 | 393 |         goto exit; | 
 | 394 |     return_value = binascii_hexlify_impl(module, &data); | 
 | 395 |  | 
 | 396 | exit: | 
 | 397 |     /* Cleanup for data */ | 
 | 398 |     if (data.obj) | 
 | 399 |        PyBuffer_Release(&data); | 
 | 400 |  | 
 | 401 |     return return_value; | 
 | 402 | } | 
 | 403 |  | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 404 | PyDoc_STRVAR(binascii_a2b_hex__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 405 | "a2b_hex($module, hexstr, /)\n" | 
 | 406 | "--\n" | 
 | 407 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 408 | "Binary data of hexadecimal representation.\n" | 
 | 409 | "\n" | 
 | 410 | "hexstr must contain an even number of hex digits (upper or lower case).\n" | 
 | 411 | "This function is also available as \"unhexlify()\"."); | 
 | 412 |  | 
 | 413 | #define BINASCII_A2B_HEX_METHODDEF    \ | 
 | 414 |     {"a2b_hex", (PyCFunction)binascii_a2b_hex, METH_VARARGS, binascii_a2b_hex__doc__}, | 
 | 415 |  | 
 | 416 | static PyObject * | 
 | 417 | binascii_a2b_hex_impl(PyModuleDef *module, Py_buffer *hexstr); | 
 | 418 |  | 
 | 419 | static PyObject * | 
 | 420 | binascii_a2b_hex(PyModuleDef *module, PyObject *args) | 
 | 421 | { | 
 | 422 |     PyObject *return_value = NULL; | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 423 |     Py_buffer hexstr = {NULL, NULL}; | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 424 |  | 
 | 425 |     if (!PyArg_ParseTuple(args, | 
 | 426 |         "O&:a2b_hex", | 
 | 427 |         ascii_buffer_converter, &hexstr)) | 
 | 428 |         goto exit; | 
 | 429 |     return_value = binascii_a2b_hex_impl(module, &hexstr); | 
 | 430 |  | 
 | 431 | exit: | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 432 |     /* Cleanup for hexstr */ | 
 | 433 |     if (hexstr.obj) | 
 | 434 |        PyBuffer_Release(&hexstr); | 
 | 435 |  | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 436 |     return return_value; | 
 | 437 | } | 
 | 438 |  | 
| Zachary Ware | b176d40 | 2015-01-20 13:59:46 -0600 | [diff] [blame] | 439 | PyDoc_STRVAR(binascii_unhexlify__doc__, | 
 | 440 | "unhexlify($module, hexstr, /)\n" | 
 | 441 | "--\n" | 
 | 442 | "\n" | 
 | 443 | "Binary data of hexadecimal representation.\n" | 
 | 444 | "\n" | 
 | 445 | "hexstr must contain an even number of hex digits (upper or lower case)."); | 
 | 446 |  | 
 | 447 | #define BINASCII_UNHEXLIFY_METHODDEF    \ | 
 | 448 |     {"unhexlify", (PyCFunction)binascii_unhexlify, METH_VARARGS, binascii_unhexlify__doc__}, | 
 | 449 |  | 
 | 450 | static PyObject * | 
 | 451 | binascii_unhexlify_impl(PyModuleDef *module, Py_buffer *hexstr); | 
 | 452 |  | 
 | 453 | static PyObject * | 
 | 454 | binascii_unhexlify(PyModuleDef *module, PyObject *args) | 
 | 455 | { | 
 | 456 |     PyObject *return_value = NULL; | 
 | 457 |     Py_buffer hexstr = {NULL, NULL}; | 
 | 458 |  | 
 | 459 |     if (!PyArg_ParseTuple(args, | 
 | 460 |         "O&:unhexlify", | 
 | 461 |         ascii_buffer_converter, &hexstr)) | 
 | 462 |         goto exit; | 
 | 463 |     return_value = binascii_unhexlify_impl(module, &hexstr); | 
 | 464 |  | 
 | 465 | exit: | 
 | 466 |     /* Cleanup for hexstr */ | 
 | 467 |     if (hexstr.obj) | 
 | 468 |        PyBuffer_Release(&hexstr); | 
 | 469 |  | 
 | 470 |     return return_value; | 
 | 471 | } | 
 | 472 |  | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 473 | PyDoc_STRVAR(binascii_a2b_qp__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 474 | "a2b_qp($module, /, data, header=False)\n" | 
 | 475 | "--\n" | 
 | 476 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 477 | "Decode a string of qp-encoded data."); | 
 | 478 |  | 
 | 479 | #define BINASCII_A2B_QP_METHODDEF    \ | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 480 |     {"a2b_qp", (PyCFunction)binascii_a2b_qp, METH_VARARGS|METH_KEYWORDS, binascii_a2b_qp__doc__}, | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 481 |  | 
 | 482 | static PyObject * | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 483 | binascii_a2b_qp_impl(PyModuleDef *module, Py_buffer *data, int header); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 484 |  | 
 | 485 | static PyObject * | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 486 | binascii_a2b_qp(PyModuleDef *module, PyObject *args, PyObject *kwargs) | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 487 | { | 
 | 488 |     PyObject *return_value = NULL; | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 489 |     static char *_keywords[] = {"data", "header", NULL}; | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 490 |     Py_buffer data = {NULL, NULL}; | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 491 |     int header = 0; | 
 | 492 |  | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 493 |     if (!PyArg_ParseTupleAndKeywords(args, kwargs, | 
 | 494 |         "O&|i:a2b_qp", _keywords, | 
 | 495 |         ascii_buffer_converter, &data, &header)) | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 496 |         goto exit; | 
| Serhiy Storchaka | 1278561 | 2014-01-25 11:49:49 +0200 | [diff] [blame] | 497 |     return_value = binascii_a2b_qp_impl(module, &data, header); | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 498 |  | 
 | 499 | exit: | 
| Benjamin Peterson | b62deac | 2014-01-26 10:41:58 -0500 | [diff] [blame] | 500 |     /* Cleanup for data */ | 
 | 501 |     if (data.obj) | 
 | 502 |        PyBuffer_Release(&data); | 
 | 503 |  | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 504 |     return return_value; | 
 | 505 | } | 
 | 506 |  | 
 | 507 | PyDoc_STRVAR(binascii_b2a_qp__doc__, | 
| Larry Hastings | 2623c8c | 2014-02-08 22:15:29 -0800 | [diff] [blame] | 508 | "b2a_qp($module, /, data, quotetabs=False, istext=True, header=False)\n" | 
 | 509 | "--\n" | 
 | 510 | "\n" | 
| Serhiy Storchaka | 3ffd913 | 2014-01-25 11:21:23 +0200 | [diff] [blame] | 511 | "Encode a string using quoted-printable encoding.\n" | 
 | 512 | "\n" | 
 | 513 | "On encoding, when istext is set, newlines are not encoded, and white\n" | 
 | 514 | "space at end of lines is.  When istext is not set, \\r and \\n (CR/LF)\n" | 
 | 515 | "are both encoded.  When quotetabs is set, space and tabs are encoded."); | 
 | 516 |  | 
 | 517 | #define BINASCII_B2A_QP_METHODDEF    \ | 
 | 518 |     {"b2a_qp", (PyCFunction)binascii_b2a_qp, METH_VARARGS|METH_KEYWORDS, binascii_b2a_qp__doc__}, | 
 | 519 |  | 
 | 520 | static PyObject * | 
 | 521 | binascii_b2a_qp_impl(PyModuleDef *module, Py_buffer *data, int quotetabs, int istext, int header); | 
 | 522 |  | 
 | 523 | static PyObject * | 
 | 524 | binascii_b2a_qp(PyModuleDef *module, PyObject *args, PyObject *kwargs) | 
 | 525 | { | 
 | 526 |     PyObject *return_value = NULL; | 
 | 527 |     static char *_keywords[] = {"data", "quotetabs", "istext", "header", NULL}; | 
 | 528 |     Py_buffer data = {NULL, NULL}; | 
 | 529 |     int quotetabs = 0; | 
 | 530 |     int istext = 1; | 
 | 531 |     int header = 0; | 
 | 532 |  | 
 | 533 |     if (!PyArg_ParseTupleAndKeywords(args, kwargs, | 
 | 534 |         "y*|iii:b2a_qp", _keywords, | 
 | 535 |         &data, "etabs, &istext, &header)) | 
 | 536 |         goto exit; | 
 | 537 |     return_value = binascii_b2a_qp_impl(module, &data, quotetabs, istext, header); | 
 | 538 |  | 
 | 539 | exit: | 
 | 540 |     /* Cleanup for data */ | 
 | 541 |     if (data.obj) | 
 | 542 |        PyBuffer_Release(&data); | 
 | 543 |  | 
 | 544 |     return return_value; | 
 | 545 | } | 
| Serhiy Storchaka | 2ef7c47 | 2015-04-20 09:26:49 +0300 | [diff] [blame] | 546 | /*[clinic end generated code: output=22761b36f4f9e5bb input=a9049054013a1b77]*/ |