From 4a5a4ed0bfb8a0f8a14c5e93a4d34a950755c53e Mon Sep 17 00:00:00 2001 From: calvin Date: Wed, 18 Jun 2008 09:51:54 +0000 Subject: [PATCH] Fix compilation and usage under Windows system. git-svn-id: https://linkchecker.svn.sourceforge.net/svnroot/linkchecker/trunk/linkchecker@3827 e7d03fd6-7b0d-0410-9947-9c21f3af8025 --- linkcheck/network/__init__.py | 2 +- linkcheck/network/_network.c | 96 +++++++++++++++++++---------------- 2 files changed, 53 insertions(+), 45 deletions(-) diff --git a/linkcheck/network/__init__.py b/linkcheck/network/__init__.py index b792b628..cfe0d7d0 100644 --- a/linkcheck/network/__init__.py +++ b/linkcheck/network/__init__.py @@ -4,7 +4,6 @@ import socket import errno import array -import fcntl import struct from _network import ifreq_size from .. import log, LOG_DNS @@ -45,6 +44,7 @@ class IfConfig (object): self.ifr_size = ifreq_size() def _ioctl (self, func, args): + import fcntl return fcntl.ioctl(self.sockfd.fileno(), func, args) def _getifreq (self, ifname): diff --git a/linkcheck/network/_network.c b/linkcheck/network/_network.c index f6bdce39..d4297c09 100644 --- a/linkcheck/network/_network.c +++ b/linkcheck/network/_network.c @@ -1,44 +1,52 @@ -/* Copyright (C) 2000-2008 Bastian Kleineidam - - 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; either version 2 of the License, or - (at your option) any later version. - - 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., 675 Mass Ave, Cambridge, MA 02139, USA. -*/ - -#include "Python.h" -#include -#include - - -/* The struct ifreq size varies on different platforms, so we need - this helper function to determine the size of it. - */ -static PyObject* network_ifreq_size (PyObject* self, PyObject* args) -{ - if (!PyArg_ParseTuple(args, "")) - return NULL; - return Py_BuildValue("i", sizeof(struct ifreq)); -} - - -static PyMethodDef _functions[] = { - {"ifreq_size", network_ifreq_size, METH_VARARGS, - "Return sizeof(struct ifreq)."}, - {NULL, NULL, 0, NULL} /* Sentinel */ -}; - - -PyMODINIT_FUNC init_network(void) -{ - (void) Py_InitModule("_network", _functions); -} +/* Copyright (C) 2000-2008 Bastian Kleineidam + + 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; either version 2 of the License, or + (at your option) any later version. + + 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., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "Python.h" +#ifndef WIN32 +#include +#include +#endif + +/* The struct ifreq size varies on different platforms, so we need + this helper function to determine the size of it. + On Windows platforms this function returns zero. + */ +static PyObject* network_ifreq_size (PyObject* self, PyObject* args) +{ + if (!PyArg_ParseTuple(args, "")) + return NULL; + return Py_BuildValue("i", +#ifdef WIN32 +0 +#else +sizeof(struct ifreq) +#endif + ); +} + + +static PyMethodDef _functions[] = { + {"ifreq_size", network_ifreq_size, METH_VARARGS, + "Return sizeof(struct ifreq)."}, + {NULL, NULL, 0, NULL} /* Sentinel */ +}; + + +PyMODINIT_FUNC init_network(void) +{ + (void) Py_InitModule("_network", _functions); +}