Add #ifdef checks for code that might not exist
authorJosh Peterson <petersonjm1@gmail.com>
Tue, 18 Apr 2017 15:14:00 +0000 (11:14 -0400)
committerJosh Peterson <petersonjm1@gmail.com>
Wed, 19 Apr 2017 18:25:12 +0000 (14:25 -0400)
* Some platforms don't support these features, so guard them.
* For platforms that do support them, no changes should occur.

mono/metadata/mono-security.c
mono/metadata/w32socket.c

index 7a03a77ef05d99254025e00f2e7c185875dd765f..d5b40a927b659b1ea2174ba8127f7ea1e8903d51 100644 (file)
@@ -77,6 +77,8 @@ GetTokenName (uid_t uid)
 {
        gchar *uname = NULL;
 
+#ifdef HAVE_PWD_H
+
 #ifdef HAVE_GETPWUID_R
        struct passwd pwd;
        size_t fbufsize;
@@ -109,9 +111,13 @@ GetTokenName (uid_t uid)
        g_free (fbuf);
 #endif
 
+#endif /* HAVE_PWD_H */
+
        return uname;
 }
 
+#ifdef HAVE_GRP_H
+
 static gboolean
 IsMemberInList (uid_t user, struct group *g) 
 {
@@ -138,9 +144,15 @@ IsMemberInList (uid_t user, struct group *g)
        return result;
 }
 
+#endif /* HAVE_GRP_H */
+
 static gboolean
 IsDefaultGroup (uid_t user, gid_t group)
 {
+       gboolean result = FALSE;
+
+#ifdef HAVE_PWD_H
+
 #ifdef HAVE_GETPWUID_R
        struct passwd pwd;
        size_t fbufsize;
@@ -148,7 +160,6 @@ IsDefaultGroup (uid_t user, gid_t group)
        gint32 retval;
 #endif
        struct passwd *p = NULL;
-       gboolean result;
 
 #ifdef HAVE_GETPWUID_R
 #ifdef _SC_GETPW_R_SIZE_MAX
@@ -174,9 +185,13 @@ IsDefaultGroup (uid_t user, gid_t group)
        g_free (fbuf);
 #endif
 
+#endif /* HAVE_PWD_H */
+
        return result;
 }
 
+#ifdef HAVE_GRP_H
+
 static gboolean
 IsMemberOf (gid_t user, struct group *g) 
 {
@@ -190,6 +205,9 @@ IsMemberOf (gid_t user, struct group *g)
        /* is the user in the group list */
        return IsMemberInList (user, g);
 }
+
+#endif /* HAVE_GRP_H */
+
 #endif /* !HOST_WIN32 */
 
 /* ICALLS */
@@ -249,13 +267,16 @@ ves_icall_System_Security_Principal_WindowsIdentity_GetTokenName (gpointer token
 gpointer
 ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *username)
 {
+       gpointer token = (gpointer)-2;
+
+#ifdef HAVE_PWD_H
+
 #ifdef HAVE_GETPWNAM_R
        struct passwd pwd;
        size_t fbufsize;
        gchar *fbuf;
        gint32 retval;
 #endif
-       gpointer token = (gpointer) -2;
        struct passwd *p;
        gchar *utf8_name;
        gboolean result;
@@ -287,6 +308,8 @@ ves_icall_System_Security_Principal_WindowsIdentity_GetUserToken (MonoString *us
 #endif
        g_free (utf8_name);
 
+#endif /* HAVE_PWD_H */
+
        return token;
 }
 #endif /* HOST_WIN32 */
@@ -383,6 +406,8 @@ ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupId (gpointer
 {
        gboolean result = FALSE;
 
+#ifdef HAVE_GRP_H
+
 #ifdef HAVE_GETGRGID_R
        struct group grp;
        size_t fbufsize;
@@ -414,6 +439,8 @@ ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupId (gpointer
        g_free (fbuf);
 #endif
 
+#endif /* HAVE_GRP_H */
+
        return result;
 }
 
@@ -421,6 +448,9 @@ gboolean
 ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupName (gpointer user, MonoString *group)
 {
        gboolean result = FALSE;
+
+#ifdef HAVE_GRP_H
+
        gchar *utf8_groupname;
 
        utf8_groupname = mono_unicode_to_external (mono_string_chars (group));
@@ -454,6 +484,8 @@ ves_icall_System_Security_Principal_WindowsPrincipal_IsMemberOfGroupName (gpoint
                g_free (utf8_groupname);
        }
 
+#endif /* HAVE_GRP_H */
+
        return result;
 }
 #endif /* !HOST_WIN32 */
index 90ee4869efeb90136f3b552f0ff7602624153051..a6ec8739afed677df655554f9063c689ca5538d9 100644 (file)
@@ -204,7 +204,11 @@ convert_family (MonoAddressFamily mono_family)
        case AddressFamily_InterNetwork:
                return AF_INET;
        case AddressFamily_AppleTalk:
+#ifdef AF_APPLETALK
                return AF_APPLETALK;
+#else
+               return -1;
+#endif
        case AddressFamily_InterNetworkV6:
                return AF_INET6;
        case AddressFamily_DecNet:
@@ -259,8 +263,10 @@ convert_to_mono_family (guint16 af_family)
        case AF_DECnet:
                return AddressFamily_DecNet;
 #endif
+#ifdef AF_APPLETALK
        case AF_APPLETALK:
                return AddressFamily_AppleTalk;
+#endif
        case AF_INET6:
                return AddressFamily_InterNetworkV6;
 #ifdef AF_IRDA
@@ -290,7 +296,11 @@ convert_type (MonoSocketType mono_type)
                return -1;
 #endif
        case SocketType_Seqpacket:
+#ifdef SOCK_SEQPACKET
                return SOCK_SEQPACKET;
+#else
+               return -1;
+#endif
        case SocketType_Unknown:
                g_warning ("System.Net.Sockets.SocketType has unsupported value 0x%x", mono_type);
                return -1;
@@ -344,8 +354,10 @@ convert_socketflags (gint32 sflags)
                /* Contains invalid flag values */
                return -1;
 
+#ifdef MSG_OOB
        if (sflags & SocketFlags_OutOfBand)
                flags |= MSG_OOB;
+#endif
        if (sflags & SocketFlags_Peek)
                flags |= MSG_PEEK;
        if (sflags & SocketFlags_DontRoute)
@@ -389,9 +401,11 @@ convert_sockopt_level_and_name (MonoSocketOptionLevel mono_level, MonoSocketOpti
                         */
                        *system_name = SO_LINGER;
                        break;
+#ifdef SO_DEBUG
                case SocketOptionName_Debug:
                        *system_name = SO_DEBUG;
                        break;
+#endif
 #ifdef SO_ACCEPTCONN
                case SocketOptionName_AcceptConnection:
                        *system_name = SO_ACCEPTCONN;
@@ -403,18 +417,22 @@ convert_sockopt_level_and_name (MonoSocketOptionLevel mono_level, MonoSocketOpti
                case SocketOptionName_KeepAlive:
                        *system_name = SO_KEEPALIVE;
                        break;
+#ifdef SO_DONTROUTE
                case SocketOptionName_DontRoute:
                        *system_name = SO_DONTROUTE;
                        break;
+#endif
                case SocketOptionName_Broadcast:
                        *system_name = SO_BROADCAST;
                        break;
                case SocketOptionName_Linger:
                        *system_name = SO_LINGER;
                        break;
+#ifdef SO_OOBINLINE
                case SocketOptionName_OutOfBandInline:
                        *system_name = SO_OOBINLINE;
                        break;
+#endif
                case SocketOptionName_SendBuffer:
                        *system_name = SO_SNDBUF;
                        break;
@@ -472,9 +490,11 @@ convert_sockopt_level_and_name (MonoSocketOptionLevel mono_level, MonoSocketOpti
                *system_level = mono_networking_get_ip_protocol ();
                
                switch (mono_name) {
+#ifdef IP_OPTIONS
                case SocketOptionName_IPOptions:
                        *system_name = IP_OPTIONS;
                        break;
+#endif
 #ifdef IP_HDRINCL
                case SocketOptionName_HeaderIncluded:
                        *system_name = IP_HDRINCL;