@@ -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