extern PyObject* _PyUnicode_EncodeUTF7(
PyObject *unicode, /* Unicode object */
- int base64SetO, /* Encode RFC2152 Set O characters in base64 */
- int base64WhiteSpace, /* Encode whitespace (sp, ht, nl, cr) in base64 */
const char *errors); /* error handling */
/* --- UTF-8 Codecs ------------------------------------------------------- */
const char *errors)
/*[clinic end generated code: output=0feda21ffc921bc8 input=2546dbbb3fa53114]*/
{
- return codec_tuple(_PyUnicode_EncodeUTF7(str, 0, 0, errors),
+ return codec_tuple(_PyUnicode_EncodeUTF7(str, errors),
PyUnicode_GET_LENGTH(str));
}
/* ENCODE_DIRECT: this character should be encoded as itself. The
* answer depends on whether we are encoding set O as itself, and also
- * on whether we are encoding whitespace as itself. RFC2152 makes it
+ * on whether we are encoding whitespace as itself. RFC 2152 makes it
* clear that the answers to these questions vary between
* applications, so this code needs to be flexible. */
-#define ENCODE_DIRECT(c, directO, directWS) \
- ((c) < 128 && (c) > 0 && \
- ((utf7_category[(c)] == 0) || \
- (directWS && (utf7_category[(c)] == 2)) || \
- (directO && (utf7_category[(c)] == 1))))
+#define ENCODE_DIRECT(c) \
+ ((c) < 128 && (c) > 0 && ((utf7_category[(c)] != 3)))
PyObject *
PyUnicode_DecodeUTF7(const char *s,
PyObject *
_PyUnicode_EncodeUTF7(PyObject *str,
- int base64SetO,
- int base64WhiteSpace,
const char *errors)
{
Py_ssize_t len = PyUnicode_GET_LENGTH(str);
Py_UCS4 ch = PyUnicode_READ(kind, data, i);
if (inShift) {
- if (ENCODE_DIRECT(ch, !base64SetO, !base64WhiteSpace)) {
+ if (ENCODE_DIRECT(ch)) {
/* shifting out */
if (base64bits) { /* output remaining bits */
*out++ = TO_BASE64(base64buffer << (6-base64bits));
*out++ = '+';
*out++ = '-';
}
- else if (ENCODE_DIRECT(ch, !base64SetO, !base64WhiteSpace)) {
+ else if (ENCODE_DIRECT(ch)) {
*out++ = (char) ch;
}
else {