Skip to content

Commit 505bca3

Browse files
celebdorDavid Sommerseth
authored andcommitted
exceptions: Simplify errno derived exception handling
Errnos are missing from some exceptions and in others the code could be simplified by just using the convenience method PyErr_FromErrno. Signed-off-by: Antoni S. Puimedon <asegurap@redhat.com> Acked-by: David Sommerseth <davids@redhat.com> Message-Id: 1389997662-8460-1-git-send-email-asegurap@redhat.com Signed-off-by: David Sommerseth <davids@redhat.com>
1 parent f6cb491 commit 505bca3

File tree

1 file changed

+23
-63
lines changed

1 file changed

+23
-63
lines changed

python-ethtool/ethtool.c

Lines changed: 23 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,8 @@ static PyObject *get_active_devices(PyObject *self __unused, PyObject *args __un
5555
PyObject *list;
5656
struct ifaddrs *ifaddr, *ifa;
5757

58-
if (getifaddrs(&ifaddr) == -1) {
59-
PyErr_SetString(PyExc_OSError, strerror(errno));
60-
return NULL;
61-
}
58+
if (getifaddrs(&ifaddr) == -1)
59+
return PyErr_SetFromErrno(PyExc_OSError);
6260

6361
list = PyList_New(0);
6462
for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) {
@@ -83,15 +81,13 @@ static PyObject *get_devices(PyObject *self __unused, PyObject *args __unused)
8381
FILE *fd = fopen(_PATH_PROCNET_DEV, "r");
8482

8583
if (fd == NULL) {
86-
PyErr_SetString(PyExc_OSError, strerror(errno));
87-
return NULL;
84+
return PyErr_SetFromErrno(PyExc_OSError);
8885
}
8986
/* skip over first two lines */
9087
ret = fgets(buffer, 256, fd);
9188
ret = fgets(buffer, 256, fd);
9289
if( !ret ) {
93-
PyErr_SetString(PyExc_OSError, strerror(errno));
94-
return NULL;
90+
return PyErr_SetFromErrno(PyExc_OSError);
9591
}
9692

9793
while (!feof(fd)) {
@@ -134,18 +130,13 @@ static PyObject *get_hwaddress(PyObject *self __unused, PyObject *args)
134130
/* Open control socket. */
135131
fd = socket(AF_INET, SOCK_DGRAM, 0);
136132
if (fd < 0) {
137-
PyErr_SetString(PyExc_OSError, strerror(errno));
138-
return NULL;
133+
return PyErr_SetFromErrno(PyExc_OSError);
139134
}
140135

141136
/* Get current settings. */
142137
err = ioctl(fd, SIOCGIFHWADDR, &ifr);
143138
if (err < 0) {
144-
char buf[2048];
145-
int eno = errno;
146-
147-
snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
148-
PyErr_SetString(PyExc_IOError, buf);
139+
PyErr_SetFromErrno(PyExc_IOError);
149140
close(fd);
150141
return NULL;
151142
}
@@ -181,17 +172,13 @@ static PyObject *get_ipaddress(PyObject *self __unused, PyObject *args)
181172
/* Open control socket. */
182173
fd = socket(AF_INET, SOCK_DGRAM, 0);
183174
if (fd < 0) {
184-
PyErr_SetString(PyExc_OSError, strerror(errno));
185-
return NULL;
175+
return PyErr_SetFromErrno(PyExc_OSError);
186176
}
187177

188178
/* Get current settings. */
189179
err = ioctl(fd, SIOCGIFADDR, &ifr);
190180
if (err < 0) {
191-
char buf[2048];
192-
int eno = errno;
193-
snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
194-
PyErr_SetString(PyExc_IOError, buf);
181+
PyErr_SetFromErrno(PyExc_IOError);
195182
close(fd);
196183
return NULL;
197184
}
@@ -276,7 +263,7 @@ static PyObject *get_interfaces_info(PyObject *self __unused, PyObject *args) {
276263

277264
dev = PyObject_New(PyEtherInfo, &PyEtherInfo_Type);
278265
if( !dev ) {
279-
PyErr_SetString(PyExc_OSError, strerror(errno));
266+
PyErr_SetFromErrno(PyExc_OSError);
280267
free(fetch_devs);
281268
return NULL;
282269
}
@@ -311,15 +298,11 @@ static PyObject *get_flags (PyObject *self __unused, PyObject *args)
311298
/* Open control socket. */
312299
fd = socket(AF_INET, SOCK_DGRAM, 0);
313300
if (fd < 0) {
314-
PyErr_SetString(PyExc_OSError, strerror(errno));
315-
return NULL;
301+
return PyErr_SetFromErrno(PyExc_OSError);
316302
}
317303
err = ioctl(fd, SIOCGIFFLAGS, &ifr);
318304
if(err < 0) {
319-
char buf[2048];
320-
int eno = errno;
321-
snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
322-
PyErr_SetString(PyExc_IOError, buf);
305+
PyErr_SetFromErrno(PyExc_IOError);
323306
close(fd);
324307
return NULL;
325308
}
@@ -348,17 +331,13 @@ static PyObject *get_netmask (PyObject *self __unused, PyObject *args)
348331
/* Open control socket. */
349332
fd = socket(AF_INET, SOCK_DGRAM, 0);
350333
if (fd < 0) {
351-
PyErr_SetString(PyExc_OSError, strerror(errno));
352-
return NULL;
334+
return PyErr_SetFromErrno(PyExc_OSError);
353335
}
354336

355337
/* Get current settings. */
356338
err = ioctl(fd, SIOCGIFNETMASK, &ifr);
357339
if (err < 0) {
358-
char buf[2048];
359-
int eno = errno;
360-
snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
361-
PyErr_SetString(PyExc_IOError, buf);
340+
PyErr_SetFromErrno(PyExc_IOError);
362341
close(fd);
363342
return NULL;
364343
}
@@ -392,17 +371,13 @@ static PyObject *get_broadcast(PyObject *self __unused, PyObject *args)
392371
/* Open control socket. */
393372
fd = socket(AF_INET, SOCK_DGRAM, 0);
394373
if (fd < 0) {
395-
PyErr_SetString(PyExc_OSError, strerror(errno));
396-
return NULL;
374+
return PyErr_SetFromErrno(PyExc_OSError);
397375
}
398376

399377
/* Get current settings. */
400378
err = ioctl(fd, SIOCGIFBRDADDR, &ifr);
401379
if (err < 0) {
402-
char buf[2048];
403-
int eno = errno;
404-
snprintf(buf, sizeof(buf), "[Errno %d] %s", eno, strerror(eno));
405-
PyErr_SetString(PyExc_IOError, buf);
380+
PyErr_SetFromErrno(PyExc_IOError);
406381
close(fd);
407382
return NULL;
408383
}
@@ -441,16 +416,14 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
441416
/* Open control socket. */
442417
fd = socket(AF_INET, SOCK_DGRAM, 0);
443418
if (fd < 0) {
444-
PyErr_SetString(PyExc_OSError, strerror(errno));
445-
return NULL;
419+
return PyErr_SetFromErrno(PyExc_OSError);
446420
}
447421

448422
/* Get current settings. */
449423
err = ioctl(fd, SIOCETHTOOL, &ifr);
450424

451425
if (err < 0) { /* failed? */
452-
int eno = errno;
453-
PyObject *err_obj;
426+
PyErr_SetFromErrno(PyExc_IOError);
454427
FILE *file;
455428
int found = 0;
456429
char driver[101], dev[101];
@@ -459,11 +432,6 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
459432
/* Before bailing, maybe it is a PCMCIA/PC Card? */
460433
file = fopen("/var/lib/pcmcia/stab", "r");
461434
if (file == NULL) {
462-
err_obj = Py_BuildValue("(is)", eno, strerror(eno));
463-
if (err_obj != NULL) {
464-
PyErr_SetObject(PyExc_IOError, err_obj);
465-
Py_DECREF(err_obj);
466-
}
467435
return NULL;
468436
}
469437

@@ -484,14 +452,11 @@ static PyObject *get_module(PyObject *self __unused, PyObject *args)
484452
}
485453
fclose(file);
486454
if (!found) {
487-
err_obj = Py_BuildValue("(is)", eno, strerror(eno));
488-
if (err_obj != NULL) {
489-
PyErr_SetObject(PyExc_IOError, err_obj);
490-
Py_DECREF(err_obj);
491-
}
492455
return NULL;
493-
} else
456+
} else {
457+
PyErr_Clear();
494458
return PyString_FromString(driver);
459+
}
495460
}
496461

497462
close(fd);
@@ -528,11 +493,8 @@ static PyObject *get_businfo(PyObject *self __unused, PyObject *args)
528493
err = ioctl(fd, SIOCETHTOOL, &ifr);
529494

530495
if (err < 0) { /* failed? */
531-
int eno = errno;
496+
PyErr_SetFromErrno(PyExc_IOError);
532497
close(fd);
533-
534-
sprintf(buf, "[Errno %d] %s", eno, strerror(eno));
535-
PyErr_SetString(PyExc_IOError, buf);
536498
return NULL;
537499
}
538500

@@ -556,16 +518,14 @@ static int send_command(int cmd, const char *devname, void *value)
556518
/* Open control socket. */
557519
fd = socket(AF_INET, SOCK_DGRAM, 0), err;
558520
if (fd < 0) {
559-
PyErr_SetString(PyExc_OSError, strerror(errno));
521+
PyErr_SetFromErrno(PyExc_OSError);
560522
return -1;
561523
}
562524

563525
/* Get current settings. */
564526
err = ioctl(fd, SIOCETHTOOL, &ifr);
565527
if (err < 0) {
566-
char buf[2048];
567-
sprintf(buf, "[Errno %d] %s", errno, strerror(errno));
568-
PyErr_SetString(PyExc_IOError, buf);
528+
PyErr_SetFromErrno(PyExc_IOError);
569529
}
570530

571531
close(fd);

0 commit comments

Comments
 (0)