/*
- * $Id: squid_mswin.h,v 1.10 2008/02/26 21:49:33 amosjeffries Exp $
+ * $Id$
*
* AUTHOR: Andrey Shorin <tolsty@tushino.com>
* AUTHOR: Guido Serassio <serassio@squid-cache.org>
* 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., 59 Temple Place, Suite 330, Boston, MA 02111, USA.
};
struct statfs {
- long f_type; /* type of filesystem (see below) */
- long f_bsize; /* optimal transfer block size */
- long f_blocks; /* total data blocks in file system */
- long f_bfree; /* free blocks in fs */
- long f_bavail; /* free blocks avail to non-superuser */
- long f_files; /* total file nodes in file system */
- long f_ffree; /* free file nodes in fs */
- long f_fsid; /* file system id */
- long f_namelen; /* maximum length of filenames */
- long f_spare[6]; /* spare for later */
+ long f_type; /* type of filesystem (see below) */
+ long f_bsize; /* optimal transfer block size */
+ long f_blocks; /* total data blocks in file system */
+ long f_bfree; /* free blocks in fs */
+ long f_bavail; /* free blocks avail to non-superuser */
+ long f_files; /* total file nodes in file system */
+ long f_ffree; /* free file nodes in fs */
+ long f_fsid; /* file system id */
+ long f_namelen; /* maximum length of filenames */
+ long f_spare[6]; /* spare for later */
};
#ifndef HAVE_GETTIMEOFDAY
-struct timezone
- {
+struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of dst correction */
- };
+};
#endif
#define CHANGE_FD_SETSIZE 1
#undef FD_READ
#undef FD_WRITE
#define EISCONN WSAEISCONN
-#define EINPROGRESS WSAEINPROGRESS
+#define EINPROGRESS WSAEINPROGRESS
#define EWOULDBLOCK WSAEWOULDBLOCK
#define EALREADY WSAEALREADY
#define ETIMEDOUT WSAETIMEDOUT
/* internal to Microsoft CRTLIB */
typedef struct {
- long osfhnd; /* underlying OS file HANDLE */
- char osfile; /* attributes of file (e.g., open in text mode?) */
- char pipech; /* one char buffer for handles opened on pipes */
+ long osfhnd; /* underlying OS file HANDLE */
+ char osfile; /* attributes of file (e.g., open in text mode?) */
+ char pipech; /* one char buffer for handles opened on pipes */
#ifdef _MT
- int lockinitflag;
- CRITICAL_SECTION lock;
+ int lockinitflag;
+ CRITICAL_SECTION lock;
#endif /* _MT */
- } ioinfo;
+} ioinfo;
#define IOINFO_L2E 5
#define IOINFO_ARRAY_ELTS (1 << IOINFO_L2E)
#define _pioinfo(i) ( __pioinfo[(i) >> IOINFO_L2E] + ((i) & (IOINFO_ARRAY_ELTS - 1)) )
int l_so_type_siz = sizeof(l_so_type);
SOCKET sock = _get_osfhandle(fd);
- if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0){
+ if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0) {
int result = 0;
- if (closesocket(sock) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- result = 1;
- }
- _free_osfhnd(fd);
- _osfile(fd) = 0;
- return result;
- }
- else
- return _close(fd);
+ if (closesocket(sock) == SOCKET_ERROR) {
+ errno = WSAGetLastError();
+ result = 1;
+ }
+ _free_osfhnd(fd);
+ _osfile(fd) = 0;
+ return result;
+ } else
+ return _close(fd);
}
#if defined(_MSC_VER) /* Microsoft C Compiler ONLY */
SOCKET sock = _get_osfhandle(fd);
if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0)
- return ::recv(sock, (char FAR *) buf, (int)siz, 0);
+ return ::recv(sock, (char FAR *) buf, (int)siz, 0);
else
- return _read(fd, buf, (unsigned int)siz);
+ return _read(fd, buf, (unsigned int)siz);
}
inline
SOCKET sock = _get_osfhandle(fd);
if (::getsockopt(sock, SOL_SOCKET, SO_TYPE, l_so_type, &l_so_type_siz) == 0)
- return ::send(sock, (char FAR *) buf, siz, 0);
+ return ::send(sock, (char FAR *) buf, siz, 0);
else
- return _write(fd, buf, siz);
+ return _write(fd, buf, siz);
}
-inline
+inline
char *index(const char *s, int c)
{
return (char *)strchr(s,c);
}
/** \cond AUTODOCS-IGNORE */
-namespace Squid {
+namespace Squid
+{
/** \endcond */
inline
{
SOCKET result;
if ((result = ::accept(_get_osfhandle(s), a, (int *)l)) == INVALID_SOCKET) {
- if (WSAEMFILE == (errno = WSAGetLastError()))
- errno = EMFILE;
- return -1;
- }
- else
- return _open_osfhandle(result, 0);
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
}
inline
int bind(int s, struct sockaddr * n, int l)
{
if (::bind(_get_osfhandle(s),n,l) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
- return 0;
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
}
inline
int connect(int s, const struct sockaddr * n, int l)
{
if (::connect(_get_osfhandle(s),n,l) == SOCKET_ERROR) {
- if (WSAEMFILE == (errno = WSAGetLastError()))
- errno = EMFILE;
- return -1;
- }
- else
- return 0;
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return 0;
}
-inline
-struct hostent * gethostbyname (const char *n)
-{
- HOSTENT FAR * result;
+inline
+struct hostent * gethostbyname (const char *n) {
+ HOSTENT FAR * result;
if ((result = ::gethostbyname(n)) == NULL)
- errno = WSAGetLastError();
+ errno = WSAGetLastError();
return result;
}
#define gethostbyname(n) Squid::gethostbyname(n)
{
SERVENT FAR * result;
if ((result = ::getservbyname(n, p)) == NULL)
- errno = WSAGetLastError();
+ errno = WSAGetLastError();
return result;
}
#define getservbyname(n,p) Squid::getservbyname(n,p)
{
HOSTENT FAR * result;
if ((result = ::gethostbyaddr(a, l, t)) == NULL)
- errno = WSAGetLastError();
+ errno = WSAGetLastError();
return result;
}
#define gethostbyaddr(a,l,t) Squid::gethostbyaddr(a,l,t)
int getsockname(int s, struct sockaddr * n, size_t * l)
{
if ((::getsockname(_get_osfhandle(s), n, (int *)l)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
- return 0;
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
}
inline
int gethostname(char * n, size_t l)
{
if ((::gethostname(n, l)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
- return 0;
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
}
#define gethostname(n,l) Squid::gethostname(n,l)
{
Sleep(1);
if ((::getsockopt(_get_osfhandle(s), l, o,(char *) v, n)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
- return 0;
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
}
/* Simple ioctl() emulation */
int ioctl(int s, int c, void * a)
{
if ((::ioctlsocket(_get_osfhandle(s), c, (u_long FAR *)a)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
- return 0;
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
}
inline
int ioctlsocket(int s, long c, u_long FAR * a)
{
if ((::ioctlsocket(_get_osfhandle(s), c, a)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
- return 0;
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
}
inline
int listen(int s, int b)
{
if (::listen(_get_osfhandle(s), b) == SOCKET_ERROR) {
- if (WSAEMFILE == (errno = WSAGetLastError()))
- errno = EMFILE;
- return -1;
- }
- else
- return 0;
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return 0;
}
#define listen(s,b) Squid::listen(s,b)
{
int result;
if ((result = ::recv(_get_osfhandle(s), (char *)b, l, f)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
+ errno = WSAGetLastError();
return -1;
- }
- else
+ } else
return result;
}
{
int result;
if ((result = ::recvfrom(_get_osfhandle(s), (char *)b, l, f, fr, (int *)fl)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
+ errno = WSAGetLastError();
+ return -1;
+ } else
return result;
}
{
int result;
if ((result = ::select(n,r,w,e,t)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
+ errno = WSAGetLastError();
+ return -1;
+ } else
return result;
}
#define select(n,r,w,e,t) Squid::select(n,r,w,e,t)
{
int result;
if ((result = ::send(_get_osfhandle(s), (char *)b, l, f)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
+ errno = WSAGetLastError();
+ return -1;
+ } else
return result;
}
{
int result;
if ((result = ::sendto(_get_osfhandle(s), (char *)b, l, f, t, tl)) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
+ errno = WSAGetLastError();
+ return -1;
+ } else
return result;
}
if (::setsockopt(socket, l, o, v, n) == SOCKET_ERROR) {
errno = WSAGetLastError();
return -1;
- }
- else
+ } else
return 0;
}
#define setsockopt(s,l,o,v,n) Squid::setsockopt(s,l,o,v,n)
int shutdown(int s, int h)
{
if (::shutdown(_get_osfhandle(s),h) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
- return 0;
+ errno = WSAGetLastError();
+ return -1;
+ } else
+ return 0;
}
inline
{
SOCKET result;
if ((result = ::socket(f, t, p)) == INVALID_SOCKET) {
- if (WSAEMFILE == (errno = WSAGetLastError()))
- errno = EMFILE;
- return -1;
- }
- else
- return _open_osfhandle(result, 0);
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
}
#define socket(f,t,p) Squid::socket(f,t,p)
int WSAAsyncSelect(int s, HWND h, unsigned int w, long e)
{
if (::WSAAsyncSelect(_get_osfhandle(s), h, w, e) == SOCKET_ERROR) {
- errno = WSAGetLastError();
- return -1;
- }
- else
+ errno = WSAGetLastError();
+ return -1;
+ } else
return 0;
}
#else
if (::WSADuplicateSocketA(_get_osfhandle(s), n, l) == SOCKET_ERROR) {
#endif
- errno = WSAGetLastError();
- return -1;
- }
- else
+ errno = WSAGetLastError();
+ return -1;
+ } else
return 0;
}
#undef WSASocket
inline
-int WSASocket(int a, int t, int p, LPWSAPROTOCOL_INFO i, GROUP g, DWORD f)
-{
+int WSASocket(int a, int t, int p, LPWSAPROTOCOL_INFO i, GROUP g, DWORD f) {
SOCKET result;
#ifdef UNICODE
if ((result = ::WSASocketW(a, t, p, i, g, f)) == INVALID_SOCKET) {
#else
if ((result = ::WSASocketA(a, t, p, i, g, f)) == INVALID_SOCKET) {
#endif
- if (WSAEMFILE == (errno = WSAGetLastError()))
- errno = EMFILE;
- return -1;
- }
- else
- return _open_osfhandle(result, 0);
+ if (WSAEMFILE == (errno = WSAGetLastError()))
+ errno = EMFILE;
+ return -1;
+ } else
+ return _open_osfhandle(result, 0);
}
} /* namespace Squid */
#define RUSAGE_CHILDREN -1 /* terminated child processes */
struct rusage {
- struct timeval ru_utime; /* user time used */
- struct timeval ru_stime; /* system time used */
- long ru_maxrss; /* integral max resident set size */
- long ru_ixrss; /* integral shared text memory size */
- long ru_idrss; /* integral unshared data size */
- long ru_isrss; /* integral unshared stack size */
- long ru_minflt; /* page reclaims */
- long ru_majflt; /* page faults */
- long ru_nswap; /* swaps */
- long ru_inblock; /* block input operations */
- long ru_oublock; /* block output operations */
- long ru_msgsnd; /* messages sent */
- long ru_msgrcv; /* messages received */
- long ru_nsignals; /* signals received */
- long ru_nvcsw; /* voluntary context switches */
- long ru_nivcsw; /* involuntary context switches */
+ struct timeval ru_utime; /* user time used */
+ struct timeval ru_stime; /* system time used */
+ long ru_maxrss; /* integral max resident set size */
+ long ru_ixrss; /* integral shared text memory size */
+ long ru_idrss; /* integral unshared data size */
+ long ru_isrss; /* integral unshared stack size */
+ long ru_minflt; /* page reclaims */
+ long ru_majflt; /* page faults */
+ long ru_nswap; /* swaps */
+ long ru_inblock; /* block input operations */
+ long ru_oublock; /* block output operations */
+ long ru_msgsnd; /* messages sent */
+ long ru_msgrcv; /* messages received */
+ long ru_nsignals; /* signals received */
+ long ru_nvcsw; /* voluntary context switches */
+ long ru_nivcsw; /* involuntary context switches */
};
#undef ACL