As described here:
https://docs.python.org/3/howto/cporting.html#str-unicode-unification
Signed-off-by: Andy Grover <agrover(a)redhat.com>
---
python-ethtool/etherinfo.c | 9 ++++----
python-ethtool/etherinfo_obj.c | 45 ++++++++++++++++++++--------------------
python-ethtool/ethtool.c | 33 +++++++++++++++--------------
python-ethtool/netlink-address.c | 43 +++++++++++++++++++-------------------
4 files changed, 67 insertions(+), 63 deletions(-)
diff --git a/python-ethtool/etherinfo.c b/python-ethtool/etherinfo.c
index 14b4796..513f955 100644
--- a/python-ethtool/etherinfo.c
+++ b/python-ethtool/etherinfo.c
@@ -16,6 +16,7 @@
*/
#include <Python.h>
+#include <bytesobject.h>
#include <bits/sockaddr.h>
#include <stdio.h>
#include <string.h>
@@ -65,7 +66,7 @@ static void callback_nl_link(struct nl_object *obj, void *arg)
if( ethi->hwaddress ) {
Py_XDECREF(ethi->hwaddress);
}
- ethi->hwaddress = PyString_FromFormat("%s", hwaddr);
+ ethi->hwaddress = PyBytes_FromFormat("%s", hwaddr);
}
@@ -129,7 +130,7 @@ static int _set_device_index(PyEtherInfo *self)
return 0;
}
- link = rtnl_link_get_by_name(link_cache,
PyString_AsString(self->device));
+ link = rtnl_link_get_by_name(link_cache,
PyBytes_AsString(self->device));
if( !link ) {
errno = ENODEV;
PyErr_SetFromErrno(PyExc_IOError);
@@ -179,7 +180,7 @@ int get_etherinfo_link(PyEtherInfo *self)
if( !open_netlink(self) ) {
PyErr_Format(PyExc_RuntimeError,
"Could not open a NETLINK connection for %s",
- PyString_AsString(self->device));
+ PyBytes_AsString(self->device));
return 0;
}
@@ -233,7 +234,7 @@ PyObject * get_etherinfo_address(PyEtherInfo *self, nlQuery query)
if( !open_netlink(self) ) {
PyErr_Format(PyExc_RuntimeError,
"Could not open a NETLINK connection for %s",
- PyString_AsString(self->device));
+ PyBytes_AsString(self->device));
return NULL;
}
diff --git a/python-ethtool/etherinfo_obj.c b/python-ethtool/etherinfo_obj.c
index cd7f2e3..54cea0b 100644
--- a/python-ethtool/etherinfo_obj.c
+++ b/python-ethtool/etherinfo_obj.c
@@ -24,6 +24,7 @@
*/
#include <Python.h>
+#include <bytesobject.h>
#include "structmember.h"
#include <netlink/route/rtnl.h>
@@ -86,7 +87,7 @@ static PyNetlinkIPaddress * get_last_ipv4_address(PyObject *addrlist)
*/
PyObject *_ethtool_etherinfo_getter(PyEtherInfo *self, PyObject *attr_o)
{
- char *attr = PyString_AsString(attr_o);
+ char *attr = PyBytes_AsString(attr_o);
PyNetlinkIPaddress *py_addr;
PyObject *addrlist = NULL;
@@ -177,14 +178,14 @@ PyObject *_ethtool_etherinfo_str(PyEtherInfo *self)
get_etherinfo_link(self);
- ret = PyString_FromFormat("Device ");
- PyString_Concat(&ret, self->device);
- PyString_ConcatAndDel(&ret, PyString_FromString(":\n"));
+ ret = PyBytes_FromFormat("Device ");
+ PyBytes_Concat(&ret, self->device);
+ PyBytes_ConcatAndDel(&ret, PyBytes_FromString(":\n"));
if( self->hwaddress ) {
- PyString_ConcatAndDel(&ret, PyString_FromString("\tMAC address: "));
- PyString_Concat(&ret, self->hwaddress);
- PyString_ConcatAndDel(&ret, PyString_FromString("\n"));
+ PyBytes_ConcatAndDel(&ret, PyBytes_FromString("\tMAC address: "));
+ PyBytes_Concat(&ret, self->hwaddress);
+ PyBytes_ConcatAndDel(&ret, PyBytes_FromString("\n"));
}
ipv4addrs = get_etherinfo_address(self, NLQRY_ADDR4);
@@ -192,16 +193,16 @@ PyObject *_ethtool_etherinfo_str(PyEtherInfo *self)
Py_ssize_t i;
for (i = 0; i < PyList_Size(ipv4addrs); i++) {
PyNetlinkIPaddress *py_addr = (PyNetlinkIPaddress
*)PyList_GetItem(ipv4addrs, i);
- PyObject *tmp = PyString_FromFormat("\tIPv4 address:
");
- PyString_Concat(&tmp, py_addr->local);
- PyString_ConcatAndDel(&tmp,
PyString_FromFormat("/%d", py_addr->prefixlen));
+ PyObject *tmp = PyBytes_FromFormat("\tIPv4 address: ");
+ PyBytes_Concat(&tmp, py_addr->local);
+ PyBytes_ConcatAndDel(&tmp, PyBytes_FromFormat("/%d",
py_addr->prefixlen));
if (py_addr->ipv4_broadcast ) {
- PyString_ConcatAndDel(&tmp,
- PyString_FromString("
Broadcast: "));
- PyString_Concat(&tmp, py_addr->ipv4_broadcast);
+ PyBytes_ConcatAndDel(&tmp,
+ PyBytes_FromString("
Broadcast: "));
+ PyBytes_Concat(&tmp, py_addr->ipv4_broadcast);
}
- PyString_ConcatAndDel(&tmp,
PyString_FromString("\n"));
- PyString_ConcatAndDel(&ret, tmp);
+ PyBytes_ConcatAndDel(&tmp,
PyBytes_FromString("\n"));
+ PyBytes_ConcatAndDel(&ret, tmp);
}
}
@@ -210,13 +211,13 @@ PyObject *_ethtool_etherinfo_str(PyEtherInfo *self)
Py_ssize_t i;
for (i = 0; i < PyList_Size(ipv6addrs); i++) {
PyNetlinkIPaddress *py_addr = (PyNetlinkIPaddress *)PyList_GetItem(ipv6addrs,
i);
- PyObject *tmp = PyString_FromFormat("\tIPv6 address: [");
- PyString_Concat(&tmp, py_addr->scope);
- PyString_ConcatAndDel(&tmp, PyString_FromString("] "));
- PyString_Concat(&tmp, py_addr->local);
- PyString_ConcatAndDel(&tmp, PyString_FromFormat("/%d",
py_addr->prefixlen));
- PyString_ConcatAndDel(&tmp, PyString_FromString("\n"));
- PyString_ConcatAndDel(&ret, tmp);
+ PyObject *tmp = PyBytes_FromFormat("\tIPv6 address: [");
+ PyBytes_Concat(&tmp, py_addr->scope);
+ PyBytes_ConcatAndDel(&tmp, PyBytes_FromString("] "));
+ PyBytes_Concat(&tmp, py_addr->local);
+ PyBytes_ConcatAndDel(&tmp, PyBytes_FromFormat("/%d",
py_addr->prefixlen));
+ PyBytes_ConcatAndDel(&tmp, PyBytes_FromString("\n"));
+ PyBytes_ConcatAndDel(&ret, tmp);
}
}
diff --git a/python-ethtool/ethtool.c b/python-ethtool/ethtool.c
index 0f9cdbb..46320f6 100644
--- a/python-ethtool/ethtool.c
+++ b/python-ethtool/ethtool.c
@@ -16,6 +16,7 @@
* General Public License for more details.
*/
#include <Python.h>
+#include <bytesobject.h>
#include <errno.h>
#include <stddef.h>
@@ -60,7 +61,7 @@ static PyObject *get_active_devices(PyObject *self __unused, PyObject
*args __un
list = PyList_New(0);
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
- PyObject *str = PyString_FromString(ifa->ifa_name);
+ PyObject *str = PyBytes_FromString(ifa->ifa_name);
/* names are not unique (listed for both ipv4 and ipv6) */
if (!PySequence_Contains(list, str) && (ifa->ifa_flags & (IFF_UP))) {
PyList_Append(list, str);
@@ -104,7 +105,7 @@ static PyObject *get_devices(PyObject *self __unused, PyObject *args
__unused)
while (*name == ' ')
name++; /* skip over leading whitespace if any */
- str = PyString_FromString(name);
+ str = PyBytes_FromString(name);
PyList_Append(list, str);
Py_DECREF(str);
}
@@ -151,7 +152,7 @@ static PyObject *get_hwaddress(PyObject *self __unused, PyObject
*args)
(unsigned int)ifr.ifr_hwaddr.sa_data[4] % 256,
(unsigned int)ifr.ifr_hwaddr.sa_data[5] % 256);
- return PyString_FromString(hwaddr);
+ return PyBytes_FromString(hwaddr);
}
static PyObject *get_ipaddress(PyObject *self __unused, PyObject *args)
@@ -191,7 +192,7 @@ static PyObject *get_ipaddress(PyObject *self __unused, PyObject
*args)
(unsigned int)ifr.ifr_addr.sa_data[4] % 256,
(unsigned int)ifr.ifr_addr.sa_data[5] % 256);
- return PyString_FromString(ipaddr);
+ return PyBytes_FromString(ipaddr);
}
@@ -218,10 +219,10 @@ static PyObject *get_interfaces_info(PyObject *self __unused,
PyObject *args) {
/* Parse input arguments if we got them */
if( inargs != NULL ) {
- if( PyString_Check(inargs) ) { /* Input argument is just a string */
+ if( PyBytes_Check(inargs) ) { /* Input argument is just a string */
fetch_devs_len = 1;
fetch_devs = calloc(1, sizeof(char *));
- fetch_devs[0] = PyString_AsString(inargs);
+ fetch_devs[0] = PyBytes_AsString(inargs);
} else if( PyTuple_Check(inargs) ) { /* Input argument is a tuple list with devices */
int j = 0;
@@ -229,8 +230,8 @@ static PyObject *get_interfaces_info(PyObject *self __unused, PyObject
*args) {
fetch_devs = calloc(fetch_devs_len+1, sizeof(char *));
for( i = 0; i < fetch_devs_len; i++ ) {
PyObject *elmt = PyTuple_GetItem(inargs, i);
- if( elmt && PyString_Check(elmt) ) {
- fetch_devs[j++] = PyString_AsString(elmt);
+ if( elmt && PyBytes_Check(elmt) ) {
+ fetch_devs[j++] = PyBytes_AsString(elmt);
}
}
fetch_devs_len = j;
@@ -241,8 +242,8 @@ static PyObject *get_interfaces_info(PyObject *self __unused, PyObject
*args) {
fetch_devs = calloc(fetch_devs_len+1, sizeof(char *));
for( i = 0; i < fetch_devs_len; i++ ) {
PyObject *elmt = PyList_GetItem(inargs, i);
- if( elmt && PyString_Check(elmt) ) {
- fetch_devs[j++] = PyString_AsString(elmt);
+ if( elmt && PyBytes_Check(elmt) ) {
+ fetch_devs[j++] = PyBytes_AsString(elmt);
}
}
fetch_devs_len = j;
@@ -267,7 +268,7 @@ static PyObject *get_interfaces_info(PyObject *self __unused, PyObject
*args) {
free(fetch_devs);
return NULL;
}
- dev->device = PyString_FromString(fetch_devs[i]);
+ dev->device = PyBytes_FromString(fetch_devs[i]);
dev->hwaddress = NULL;
dev->index = -1;
@@ -350,7 +351,7 @@ static PyObject *get_netmask (PyObject *self __unused, PyObject
*args)
(unsigned int)ifr.ifr_netmask.sa_data[4] % 256,
(unsigned int)ifr.ifr_netmask.sa_data[5] % 256);
- return PyString_FromString(netmask);
+ return PyBytes_FromString(netmask);
}
static PyObject *get_broadcast(PyObject *self __unused, PyObject *args)
@@ -390,7 +391,7 @@ static PyObject *get_broadcast(PyObject *self __unused, PyObject
*args)
(unsigned int)ifr.ifr_broadaddr.sa_data[4] % 256,
(unsigned int)ifr.ifr_broadaddr.sa_data[5] % 256);
- return PyString_FromString(broadcast);
+ return PyBytes_FromString(broadcast);
}
static PyObject *get_module(PyObject *self __unused, PyObject *args)
@@ -455,12 +456,12 @@ static PyObject *get_module(PyObject *self __unused, PyObject
*args)
return NULL;
} else {
PyErr_Clear();
- return PyString_FromString(driver);
+ return PyBytes_FromString(driver);
}
}
close(fd);
- return PyString_FromString(((struct ethtool_drvinfo *)buf)->driver);
+ return PyBytes_FromString(((struct ethtool_drvinfo *)buf)->driver);
}
static PyObject *get_businfo(PyObject *self __unused, PyObject *args)
@@ -499,7 +500,7 @@ static PyObject *get_businfo(PyObject *self __unused, PyObject *args)
}
close(fd);
- return PyString_FromString(((struct ethtool_drvinfo *)buf)->bus_info);
+ return PyBytes_FromString(((struct ethtool_drvinfo *)buf)->bus_info);
}
static int send_command(int cmd, const char *devname, void *value)
diff --git a/python-ethtool/netlink-address.c b/python-ethtool/netlink-address.c
index 50a96d7..2febc54 100644
--- a/python-ethtool/netlink-address.c
+++ b/python-ethtool/netlink-address.c
@@ -15,6 +15,7 @@
/* Python object corresponding to a (struct rtnl_addr) */
#include <Python.h>
+#include <bytesobject.h>
#include "structmember.h"
#include <arpa/inet.h>
@@ -54,7 +55,7 @@ PyNetlinkIPaddress_from_rtnl_addr(struct rtnl_addr *addr)
PyErr_SetFromErrno(PyExc_RuntimeError);
goto error;
}
- py_obj->local = PyString_FromString(buf);
+ py_obj->local = PyBytes_FromString(buf);
if (!py_obj->local) {
goto error;
}
@@ -63,7 +64,7 @@ PyNetlinkIPaddress_from_rtnl_addr(struct rtnl_addr *addr)
memset(&buf, 0, sizeof(buf));
if ((peer_addr = rtnl_addr_get_peer(addr))) {
nl_addr2str(peer_addr, buf, sizeof(buf));
- py_obj->peer = PyString_FromString(buf);
+ py_obj->peer = PyBytes_FromString(buf);
if (!py_obj->local) {
goto error;
}
@@ -84,7 +85,7 @@ PyNetlinkIPaddress_from_rtnl_addr(struct rtnl_addr *addr)
PyErr_SetFromErrno(PyExc_RuntimeError);
goto error;
}
- py_obj->ipv4_broadcast = PyString_FromString(buf);
+ py_obj->ipv4_broadcast = PyBytes_FromString(buf);
if (!py_obj->ipv4_broadcast) {
goto error;
}
@@ -93,7 +94,7 @@ PyNetlinkIPaddress_from_rtnl_addr(struct rtnl_addr *addr)
/* Set IP address scope: */
memset(&buf, 0, sizeof(buf));
rtnl_scope2str(rtnl_addr_get_scope(addr), buf, sizeof(buf));
- py_obj->scope = PyString_FromString(buf);
+ py_obj->scope = PyBytes_FromString(buf);
return (PyObject*)py_obj;
@@ -119,41 +120,41 @@ netlink_ip_address_dealloc(PyNetlinkIPaddress *obj)
static PyObject*
netlink_ip_address_repr(PyNetlinkIPaddress *obj)
{
- PyObject *result = PyString_FromString("ethtool.NetlinkIPaddress(family=");
+ PyObject *result = PyBytes_FromString("ethtool.NetlinkIPaddress(family=");
char buf[256];
memset(&buf, 0, sizeof(buf));
nl_af2str(obj->family, buf, sizeof(buf));
- PyString_ConcatAndDel(&result,
- PyString_FromFormat("%s, address='", buf));
- PyString_Concat(&result, obj->local);
+ PyBytes_ConcatAndDel(&result,
+ PyBytes_FromFormat("%s, address='", buf));
+ PyBytes_Concat(&result, obj->local);
if (obj->family == AF_INET) {
- PyString_ConcatAndDel(&result,
- PyString_FromFormat("', netmask=%d",
+ PyBytes_ConcatAndDel(&result,
+ PyBytes_FromFormat("', netmask=%d",
obj->prefixlen));
} else if (obj->family == AF_INET6) {
- PyString_ConcatAndDel(&result,
- PyString_FromFormat("/%d'",
+ PyBytes_ConcatAndDel(&result,
+ PyBytes_FromFormat("/%d'",
obj->prefixlen));
}
if (obj->peer) {
- PyString_ConcatAndDel(&result, PyString_FromString(",
peer_address='"));
- PyString_Concat(&result, obj->peer);
- PyString_ConcatAndDel(&result, PyString_FromString("'"));
+ PyBytes_ConcatAndDel(&result, PyBytes_FromString(",
peer_address='"));
+ PyBytes_Concat(&result, obj->peer);
+ PyBytes_ConcatAndDel(&result, PyBytes_FromString("'"));
}
if (obj->family == AF_INET && obj->ipv4_broadcast) {
- PyString_ConcatAndDel(&result, PyString_FromString(",
broadcast='"));
- PyString_Concat(&result, obj->ipv4_broadcast);
- PyString_ConcatAndDel(&result, PyString_FromString("'"));
+ PyBytes_ConcatAndDel(&result, PyBytes_FromString(", broadcast='"));
+ PyBytes_Concat(&result, obj->ipv4_broadcast);
+ PyBytes_ConcatAndDel(&result, PyBytes_FromString("'"));
}
- PyString_ConcatAndDel(&result, PyString_FromString(", scope="));
- PyString_Concat(&result, obj->scope);
+ PyBytes_ConcatAndDel(&result, PyBytes_FromString(", scope="));
+ PyBytes_Concat(&result, obj->scope);
- PyString_ConcatAndDel(&result, PyString_FromString(")"));
+ PyBytes_ConcatAndDel(&result, PyBytes_FromString(")"));
return result;
}
--
1.9.3