1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */ 2 /* dbus-sockets.h Wrappers around socket features (internal to D-BUS implementation) 3 * 4 * Copyright (C) 2005 Novell, Inc. 5 * 6 * Licensed under the Academic Free License version 2.1 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 * 22 */ 23 24 #ifndef DBUS_SOCKETS_H 25 #define DBUS_SOCKETS_H 26 27 #if defined(DBUS_WIN) || defined(DBUS_WINCE) 28 29 30 31 #ifndef STRICT 32 #define STRICT 33 #include <winsock2.h> 34 #undef STRICT 35 #endif 36 #include <winsock2.h> 37 38 #undef interface 39 40 #if HAVE_ERRNO_H 41 #include <errno.h> 42 #endif 43 44 /* Make use of the fact that the WSAE* error codes don't 45 * overlap with errno E* codes. Wrapper functions store 46 * the return value from WSAGetLastError() in errno. 47 */ 48 #if defined(EPROTONOSUPPORT) || \ 49 defined(EAFNOSUPPORT) || \ 50 defined(EWOULDBLOCK) 51 #error This does not look like Win32 and the Microsoft C library 52 #endif 53 54 #define DBUS_SOCKET_IS_INVALID(s) ((SOCKET)(s) == INVALID_SOCKET) 55 #define DBUS_SOCKET_API_RETURNS_ERROR(n) ((n) == SOCKET_ERROR) 56 #define DBUS_SOCKET_SET_ERRNO() (_dbus_win_set_errno (WSAGetLastError())) 57 58 #define DBUS_CLOSE_SOCKET(s) closesocket(s) 59 60 #else 61 62 #include <sys/socket.h> 63 #include <sys/un.h> 64 #include <netinet/in.h> 65 #include <netdb.h> 66 #include <errno.h> 67 68 #define DBUS_SOCKET_IS_INVALID(s) ((s) < 0) 69 #define DBUS_SOCKET_API_RETURNS_ERROR(n) ((n) < 0) 70 #define DBUS_SOCKET_SET_ERRNO() /* empty */ 71 72 #define DBUS_CLOSE_SOCKET(s) close(s) 73 74 #endif /* !Win32 */ 75 76 #endif /* DBUS_SOCKETS_H */ 77