Cygwin: inline get_socket_flags()

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2018-02-21 22:00:04 +01:00
parent 8906a4d335
commit a5dfbc6940
4 changed files with 33 additions and 20 deletions

View File

@ -10,6 +10,8 @@ details. */
#include "pinfo.h"
#include "tty.h"
#include <cygwin/_socketflags.h>
/* 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;

View File

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

View File

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

View File

@ -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 <cygwin/_socketflags.h>
/* Supported address families. */
/*