From a5dfbc69407d5a60f5b0c4d92ada6d022f23bee1 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Wed, 21 Feb 2018 22:00:04 +0100 Subject: [PATCH] Cygwin: inline get_socket_flags() Signed-off-by: Corinna Vinschen --- winsup/cygwin/fhandler.h | 13 +++++++++++-- winsup/cygwin/fhandler_socket.cc | 11 ----------- winsup/cygwin/include/cygwin/_socketflags.h | 20 ++++++++++++++++++++ winsup/cygwin/include/cygwin/socket.h | 9 ++------- 4 files changed, 33 insertions(+), 20 deletions(-) create mode 100644 winsup/cygwin/include/cygwin/_socketflags.h diff --git a/winsup/cygwin/fhandler.h b/winsup/cygwin/fhandler.h index d912e1cb7..c50667ca9 100644 --- a/winsup/cygwin/fhandler.h +++ b/winsup/cygwin/fhandler.h @@ -10,6 +10,8 @@ details. */ #include "pinfo.h" #include "tty.h" +#include + /* fcntl flags used only internaly. */ #define O_NOSYMLINK 0x080000 #define O_DIROPEN 0x100000 @@ -488,8 +490,15 @@ class fhandler_socket: public fhandler_base int addr_family; int type; virtual int af_local_connect () = 0; - int get_socket_flags (); - + inline int get_socket_flags () + { + int ret = 0; + if (is_nonblocking ()) + ret |= SOCK_NONBLOCK; + if (close_on_exec ()) + ret |= SOCK_CLOEXEC; + return ret; + } wsa_event *wsock_events; HANDLE wsock_mtx; HANDLE wsock_evt; diff --git a/winsup/cygwin/fhandler_socket.cc b/winsup/cygwin/fhandler_socket.cc index 371cc398c..aafc09c43 100644 --- a/winsup/cygwin/fhandler_socket.cc +++ b/winsup/cygwin/fhandler_socket.cc @@ -720,17 +720,6 @@ fhandler_socket::link (const char *newpath) return fhandler_base::link (newpath); } -int -fhandler_socket::get_socket_flags () -{ - int ret = 0; - if (is_nonblocking ()) - ret |= SOCK_NONBLOCK; - if (close_on_exec ()) - ret |= SOCK_CLOEXEC; - return ret; -} - int fhandler_socket::shutdown (int how) { diff --git a/winsup/cygwin/include/cygwin/_socketflags.h b/winsup/cygwin/include/cygwin/_socketflags.h new file mode 100644 index 000000000..07a5e8b22 --- /dev/null +++ b/winsup/cygwin/include/cygwin/_socketflags.h @@ -0,0 +1,20 @@ +/* cygwin/_socketflags.h + +This file is part of Cygwin. + +This software is a copyrighted work licensed under the terms of the +Cygwin license. Please consult the file "CYGWIN_LICENSE" for +details. */ + +#ifndef _CYGWIN__SOCKETFLAGS_H +#define _CYGWIN__SOCKETFLAGS_H + +/* GNU extension flags. Or them to the type parameter in calls to + socket(2) to mark socket as nonblocking and/or close-on-exec. */ +#define SOCK_NONBLOCK 0x01000000 +#define SOCK_CLOEXEC 0x02000000 +#ifdef __INSIDE_CYGWIN__ +#define _SOCK_FLAG_MASK 0xff000000 /* Bits left for more extensions */ +#endif + +#endif /* _CYGWIN__SOCKETFLAGS_H */ diff --git a/winsup/cygwin/include/cygwin/socket.h b/winsup/cygwin/include/cygwin/socket.h index 87cee0747..b1ab5c28c 100644 --- a/winsup/cygwin/include/cygwin/socket.h +++ b/winsup/cygwin/include/cygwin/socket.h @@ -130,13 +130,8 @@ struct OLD_msghdr #define SOCK_RDM 4 /* reliably-delivered message */ #define SOCK_SEQPACKET 5 /* sequential packet socket */ -/* GNU extension flags. Or them to the type parameter in calls to - socket(2) to mark socket as nonblocking and/or close-on-exec. */ -#define SOCK_NONBLOCK 0x01000000 -#define SOCK_CLOEXEC 0x02000000 -#ifdef __INSIDE_CYGWIN__ -#define _SOCK_FLAG_MASK 0xff000000 /* Bits left for more extensions */ -#endif +/* defines SOCK_NONBLOCK / SOCK_CLOEXEC */ +#include /* Supported address families. */ /*