From 0ef9d8810403b68a11c98e92761b63a8d280438a Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Wed, 6 Oct 2010 13:41:26 -0400 Subject: Add default python encoding module to reset default from ascii to utf-8 Also clean up some duplicate files in the rpm for the UI. --- ipapython/py_default_encoding/Makefile | 20 ++++++++ .../py_default_encoding/default_encoding_utf8.c | 59 ++++++++++++++++++++++ ipapython/py_default_encoding/setup.py | 38 ++++++++++++++ 3 files changed, 117 insertions(+) create mode 100644 ipapython/py_default_encoding/Makefile create mode 100644 ipapython/py_default_encoding/default_encoding_utf8.c create mode 100644 ipapython/py_default_encoding/setup.py (limited to 'ipapython/py_default_encoding') diff --git a/ipapython/py_default_encoding/Makefile b/ipapython/py_default_encoding/Makefile new file mode 100644 index 000000000..7cd1f6c58 --- /dev/null +++ b/ipapython/py_default_encoding/Makefile @@ -0,0 +1,20 @@ +PYTHONLIBDIR ?= $(shell python -c "from distutils.sysconfig import *; print get_python_lib()") +PACKAGEDIR ?= $(DESTDIR)/$(PYTHONLIBDIR)/ipa +CONFIGDIR ?= $(DESTDIR)/etc/ipa + +all: + python setup.py build + +install: + if [ "$(DESTDIR)" = "" ]; then \ + python setup.py install; \ + else \ + python setup.py install --root $(DESTDIR); \ + fi + +clean: + rm -rf build + +distclean: clean + +maintainer-clean: distclean diff --git a/ipapython/py_default_encoding/default_encoding_utf8.c b/ipapython/py_default_encoding/default_encoding_utf8.c new file mode 100644 index 000000000..c3cdd4eca --- /dev/null +++ b/ipapython/py_default_encoding/default_encoding_utf8.c @@ -0,0 +1,59 @@ +/* + * Authors: + * John Dennis + * + * Copyright (C) 2009 Red Hat + * see file 'COPYING' for use and warranty information + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +PyDoc_STRVAR(setdefaultencoding_doc, +"setdefaultencoding(encoding='utf-8')\n\ +\n\ +Set the current default string encoding used by the Unicode implementation.\n\ +Defaults to utf-8." +); + +static PyObject * +setdefaultencoding(PyObject *self, PyObject *args, PyObject *kwds) +{ + static char *kwlist[] = {"utf-8", NULL}; + char *encoding; + + if (!PyArg_ParseTupleAndKeywords(args, kwds, "s:setdefaultencoding", kwlist, &encoding)) + return NULL; + + if (PyUnicode_SetDefaultEncoding(encoding)) + return NULL; + + Py_RETURN_NONE; +} + +static PyMethodDef methods[] = { + {"setdefaultencoding", (PyCFunction)setdefaultencoding, METH_VARARGS|METH_KEYWORDS, setdefaultencoding_doc}, + {NULL, NULL} /* sentinel */ +}; + + +PyMODINIT_FUNC +initdefault_encoding_utf8(void) +{ + PyObject* m; + + PyUnicode_SetDefaultEncoding("utf-8"); + m = Py_InitModule3("default_encoding_utf8", methods, "Forces the default encoding to utf-8"); +} diff --git a/ipapython/py_default_encoding/setup.py b/ipapython/py_default_encoding/setup.py new file mode 100644 index 000000000..6ea520f13 --- /dev/null +++ b/ipapython/py_default_encoding/setup.py @@ -0,0 +1,38 @@ +# Authors: +# John Dennis +# +# Copyright (C) 2009 Red Hat +# see file 'COPYING' for use and warranty information +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +from distutils.core import setup, Extension + +default_encoding_utf8 = Extension('default_encoding_utf8', ['default_encoding_utf8.c']) + +setup(name = 'python-default-encoding', + version = '0.1', + description = 'Forces the default encoding in Python to be utf-8', + long_description = 'Forces the default encoding in Python to be utf-8', + author = 'John Dennis', + author_email = 'jdennis@redhat.com', + maintainer = 'John Dennis', + maintainer_email = 'jdennis@redhat.com', + license = 'GPLv3+', + platforms = 'posix', + url = '', + download_url = '', + ext_modules = [default_encoding_utf8], +) + -- cgit