python plugin: fix building with python 3
authorRuben Kerkhof <ruben@rubenkerkhof.com>
Fri, 5 Aug 2016 17:46:08 +0000 (19:46 +0200)
committerRuben Kerkhof <ruben@rubenkerkhof.com>
Fri, 5 Aug 2016 17:46:08 +0000 (19:46 +0200)
Python 3 doesn't have PyUnicode_SetDefaultEncoding()

CC       python_la-python.lo
python.c: In function 'cpy_config':
python.c:1138:4: error: implicit declaration of function 'PyUnicode_SetDefaultEncoding' [-Werror=implicit-function-declaration]
    if (PyUnicode_SetDefaultEncoding(encoding)) {
    ^
cc1: all warnings being treated as errors
*** Error code 1

src/python.c

index deab4be..b991f45 100644 (file)
@@ -1124,21 +1124,23 @@ static int cpy_config(oconfig_item_t *ci) {
                                continue;
                        }
                } else if (strcasecmp(item->key, "Encoding") == 0) {
-#ifdef IS_PY3K
-                       ERROR("python: \"Encoding\" was used in the config file but Python3 was used, which does not support changing encodings");
-                       status = 1;
-                       continue;
-#endif
                        char *encoding = NULL;
                        if (cf_util_get_string(item, &encoding) != 0) {
                                status = 1;
                                continue;
                        }
+#ifdef IS_PY3K
+                       ERROR("python: \"Encoding\" was used in the config file but Python3 was used, which does not support changing encodings");
+                       status = 1;
+                       sfree(encoding);
+                       continue;
+#else
                        /* Why is this even necessary? And undocumented? */
                        if (PyUnicode_SetDefaultEncoding(encoding)) {
                                cpy_log_exception("setting default encoding");
                                status = 1;
                        }
+#endif
                        sfree(encoding);
                } else if (strcasecmp(item->key, "LogTraces") == 0) {
                        _Bool log_traces;