From patchwork Thu Feb 23 10:48:25 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Marek_Marczykowski-G=C3=B3recki?= X-Patchwork-Id: 9588161 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 5596A604A2 for ; Thu, 23 Feb 2017 10:51:32 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4218528609 for ; Thu, 23 Feb 2017 10:51:32 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 36F5828695; Thu, 23 Feb 2017 10:51:32 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id D40FE28609 for ; Thu, 23 Feb 2017 10:51:31 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cgqxI-0005tt-La; Thu, 23 Feb 2017 10:49:00 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cgqxG-0005sX-Q7 for xen-devel@lists.xen.org; Thu, 23 Feb 2017 10:48:58 +0000 Received: from [193.109.254.147] by server-10.bemta-6.messagelabs.com id 85/18-13192-A1EBEA85; Thu, 23 Feb 2017 10:48:58 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrGIsWRWlGSWpSXmKPExsXilM8ioyu2b12 EwcWXihZLPi5mcWD0OLr7N1MAYxRrZl5SfkUCa8aV/V+YChpkKp4sXs3SwPhLtIuRi0NIYBWj xNvHX1m7GDmBnGyJ7z09zCAJFoFLzBK7ly1iB0lICHhKzDy+lhHCdpbYPbODGaL7EKPEru3bw LrZBEIl2rfPALNFBKQlrn2+zAhSxCwwl1Hi879tYJOEBdwkDtw4wQZiswioStw9swZsKq+Av8 SKL5OgtslJ3DzXyQxicwoESLzsa4M6z19i4tRZUPWCEidnPmHpYuQAWqAusX6eEEiYX0BJYtv 6y2AlzALyEs1bZzNPYBSehaRjFkLHLCRVCxiZVzGqF6cWlaUW6ZrrJRVlpmeU5CZm5ugaGpjp 5aYWFyemp+YkJhXrJefnbmIEhjkDEOxgnHnZ/xCjJAeTkiivz551EUJ8SfkplRmJxRnxRaU5q cWHGGU4OJQkeJ+C5ASLUtNTK9Iyc4ARB5OW4OBREuHtBUnzFhck5hZnpkOkTjHqcsyZvfsNkx BLXn5eqpQ471eQIgGQoozSPLgRsOi/xCgrJczLCHSUEE9BalFuZgmq/CtGcQ5GJWFewb1AU3g y80rgNr0COoIJ6AhL57UgR5QkIqSkGhj3xryZz6fT4taxWivliu2rGw3B5VusRXf0ajtrzDP8 Y7D+wcPp9yfejUmT7Z66kfPmhDvHdt3w1i041OF49iF3r80FhccJ4pMZZ7BcTVJgMvhbvyl0c dX+NTmTpVZ9r3OLD/EMSWBdMYXZyXDjkigz3XTtor3nH/+r7TJj197+sWvhZJ82sXNKLMUZiY ZazEXFiQBf59pc+QIAAA== X-Env-Sender: marmarek@invisiblethingslab.com X-Msg-Ref: server-7.tower-27.messagelabs.com!1487846933!83886664!1 X-Originating-IP: [66.111.4.28] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.2.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 34355 invoked from network); 23 Feb 2017 10:48:54 -0000 Received: from out4-smtp.messagingengine.com (HELO out4-smtp.messagingengine.com) (66.111.4.28) by server-7.tower-27.messagelabs.com with DHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 23 Feb 2017 10:48:54 -0000 Received: from compute7.internal (compute7.nyi.internal [10.202.2.47]) by mailout.nyi.internal (Postfix) with ESMTP id A3A5420B1E; Thu, 23 Feb 2017 05:48:53 -0500 (EST) Received: from frontend2 ([10.202.2.161]) by compute7.internal (MEProxy); Thu, 23 Feb 2017 05:48:53 -0500 DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-sender:x-me-sender:x-sasl-enc:x-sasl-enc; s= smtpout; bh=JEbX6roDbO9VnzIdLPtxU9zDFjw=; b=U1bbCvquRT2MCXDmY3GX SXV8kesParw9x9JTRQ23QsMWoTpsf6epBUsih8oCghlBEurEj/dtvdQKIpiYbsFB 7la2D77gzcxJBljJ3rr4QDPIWvsbi81SFuBv1GT/jzduoht/lgxh6MCqbg2kU9hs vJx4g4Kdwr+9XO8DpRWNXH0= X-ME-Sender: X-Sasl-enc: 3UPhaki7+JtOyvpShNm8KMOBOaL5rfooyraTCAyyscTM 1487846933 Received: from devel-3rdparty.localdomain (89-70-103-23.dynamic.chello.pl [89.70.103.23]) by mail.messagingengine.com (Postfix) with ESMTPA id A03C024077; Thu, 23 Feb 2017 05:48:52 -0500 (EST) From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= To: xen-devel@lists.xen.org Date: Thu, 23 Feb 2017 11:48:25 +0100 Message-Id: <1487846908-21462-6-git-send-email-marmarek@invisiblethingslab.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1487846908-21462-1-git-send-email-marmarek@invisiblethingslab.com> References: <1487846908-21462-1-git-send-email-marmarek@invisiblethingslab.com> MIME-Version: 1.0 Organization: Invisible Things Lab Cc: Wei Liu , Ian Jackson , =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Subject: [Xen-devel] [PATCH 5/8] python: use PyBytes/PyUnicode instead of PyString X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP In Python2 PyBytes is the same as PyString, but in Python3 PyString is gone and 'str' is really PyUnicode in C-API. When handling arbitrary data, use PyBytes - which is the right thing to do in Python3, and pose no API change in Python2. When handling xenstore paths and transaction ids, which have well defined format, use PyUnicode - to ease API usage - no need to prefix all xenstore paths with 'b' when migrating scripts to Python3. Signed-off-by: Marek Marczykowski-Górecki --- tools/python/xen/lowlevel/xc/xc.c | 6 +++--- tools/python/xen/lowlevel/xs/xs.c | 20 ++++++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/tools/python/xen/lowlevel/xc/xc.c b/tools/python/xen/lowlevel/xc/xc.c index bcbb7b0..ce87afb 100644 --- a/tools/python/xen/lowlevel/xc/xc.c +++ b/tools/python/xen/lowlevel/xc/xc.c @@ -678,7 +678,7 @@ static void pyxc_dom_extract_cpuid(PyObject *config, for ( i = 0; i < 4; i++ ) if ( (obj = PyDict_GetItemString(config, regs_extract[i])) != NULL ) - regs[i] = PyString_AS_STRING(obj); + regs[i] = PyBytes_AS_STRING(obj); } static PyObject *pyxc_create_cpuid_dict(char **regs) @@ -693,7 +693,7 @@ static PyObject *pyxc_create_cpuid_dict(char **regs) if ( regs[i] == NULL ) continue; PyDict_SetItemString(dict, regs_extract[i], - PyString_FromString(regs[i])); + PyBytes_FromString(regs[i])); free(regs[i]); regs[i] = NULL; } @@ -940,7 +940,7 @@ static PyObject *pyxc_readconsolering(XcObject *self, str = ptr; } - obj = PyString_FromStringAndSize(str, count); + obj = PyBytes_FromStringAndSize(str, count); free(str); return obj; } diff --git a/tools/python/xen/lowlevel/xs/xs.c b/tools/python/xen/lowlevel/xs/xs.c index 66ab08d..c2b4d87 100644 --- a/tools/python/xen/lowlevel/xs/xs.c +++ b/tools/python/xen/lowlevel/xs/xs.c @@ -103,7 +103,7 @@ static PyObject *xspy_read(XsHandle *self, PyObject *args) xsval = xs_read(xh, th, path, &xsval_n); Py_END_ALLOW_THREADS if (xsval) { - PyObject *val = PyString_FromStringAndSize(xsval, xsval_n); + PyObject *val = PyBytes_FromStringAndSize(xsval, xsval_n); free(xsval); return val; } @@ -179,7 +179,11 @@ static PyObject *xspy_ls(XsHandle *self, PyObject *args) int i; PyObject *val = PyList_New(xsval_n); for (i = 0; i < xsval_n; i++) - PyList_SetItem(val, i, PyString_FromString(xsval[i])); +#if PY_MAJOR_VERSION >= 3 + PyList_SetItem(val, i, PyUnicode_FromString(xsval[i])); +#else + PyList_SetItem(val, i, PyBytes_FromString(xsval[i])); +#endif free(xsval); return val; } @@ -550,7 +554,11 @@ static PyObject *xspy_transaction_start(XsHandle *self) } snprintf(thstr, sizeof(thstr), "%lX", (unsigned long)th); - return PyString_FromString(thstr); +#if PY_MAJOR_VERSION >= 3 + return PyUnicode_FromString(thstr); +#else + return PyBytes_FromString(thstr); +#endif } #define xspy_transaction_end_doc "\n" \ @@ -773,7 +781,11 @@ static PyObject *xspy_get_domain_path(XsHandle *self, PyObject *args) Py_END_ALLOW_THREADS if (xsval) { - PyObject *val = PyString_FromString(xsval); +#if PY_MAJOR_VERSION >= 3 + PyObject *val = PyUnicode_FromString(xsval); +#else + PyObject *val = PyBytes_FromString(xsval); +#endif free(xsval); return val; }