Usermode/libpsocket - getnameinfo and other definitions
authorJohn Hodge <[email protected]>
Fri, 26 Apr 2013 05:25:53 +0000 (13:25 +0800)
committerJohn Hodge <[email protected]>
Fri, 26 Apr 2013 05:25:53 +0000 (13:25 +0800)
Usermode/Libraries/libpsocket.so_src/getaddrinfo.c
Usermode/Libraries/libpsocket.so_src/include_exp/netdb.h
Usermode/Libraries/libpsocket.so_src/include_exp/netinet/in.h
Usermode/Libraries/libpsocket.so_src/include_exp/netinet/ip.h [new file with mode: 0644]
Usermode/Libraries/libpsocket.so_src/include_exp/sys/socket.h

index 57120f0..c26ce32 100644 (file)
@@ -126,6 +126,45 @@ void freeaddrinfo(struct addrinfo *res)
        
 }
 
+int getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags)
+{
+       // Determine hostname
+       if( host )
+       {
+               if( hostlen == 0 )
+                       return EAI_OVERFLOW;
+               host[0] = '\0';
+               if( !(flags & NI_NUMERICHOST) )
+               {
+                       // Handle NI_NOFQDN
+               }
+               // Numeric hostname or the hostname was unresolvable
+               if( host[0] == '\0' )
+               {
+                       if( (flags & NI_NAMEREQD) )
+                               return EAI_NONAME;
+               }
+       }
+       
+       // Determine service name
+       if( serv )
+       {
+               if( servlen == 0 )
+                       return EAI_OVERFLOW;
+               serv[0] = '\0';
+               if( !(flags & NI_NUMERICSERV) )
+               {
+                       // Handle NI_DGRAM
+               }
+               if( serv[0] == '\0' )
+               {
+                       
+               }
+       }
+       return EAI_SUCCESS;
+}
+
+
 const char *gai_strerror(int errnum)
 {
        switch(errnum)
index e9cf788..0968181 100644 (file)
@@ -8,6 +8,12 @@
 #define AI_ADDRCONFIG  0x004
 #define AI_NUMERICHOST 0x008
 
+#define NI_NAMEREQD    (1<<0)
+#define NI_DGRAM       (1<<1)
+#define NI_NOFQDN      (1<<2)
+#define        NI_NUMERICHOST  (1<<3)
+#define NI_NUMERICSERV (1<<4)
+
 enum
 {
        EAI_SUCCESS,
@@ -22,7 +28,8 @@ enum
        EAI_NODATA,
        EAI_NONAME,
        EAI_SERVICE,
-       EAI_SYSTEM
+       EAI_SYSTEM,
+       EAI_OVERFLOW
 };
 
 struct addrinfo
@@ -37,6 +44,7 @@ struct addrinfo
        struct addrinfo *ai_next;
 };
 
+extern int     getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host, size_t hostlen, char *serv, size_t servlen, int flags);
 extern int     getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res);
 extern void    freeaddrinfo(struct addrinfo *res);
 const char     *gai_strerror(int errorcode);
index 33e7865..3a289eb 100644 (file)
@@ -1,3 +1,10 @@
+/*
+ * Acess2 POSIX Sockets Emulation
+ * - By John Hodge (thePowersGang)
+ *
+ * netinet/in.h
+ * - ?Addressing?
+ */
 #ifndef _LIBPSOCKET__NETINET__IN_H_
 #define _LIBPSOCKET__NETINET__IN_H_
 
diff --git a/Usermode/Libraries/libpsocket.so_src/include_exp/netinet/ip.h b/Usermode/Libraries/libpsocket.so_src/include_exp/netinet/ip.h
new file mode 100644 (file)
index 0000000..433b16d
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Acess2 POSIX Sockets Emulation
+ * - By John Hodge (thePowersGang)
+ *
+ * netinet/ip.h
+ * - ???
+ */
+#ifndef _LIBPSOCKET__NETINET__IP_H_
+#define _LIBPSOCKET__NETINET__IP_H_
+
+#endif
+
index 4d2a1c2..70eafd1 100644 (file)
@@ -9,7 +9,9 @@
 #define _SYS_SOCKETS_H_
 
 #include <sys/types.h>
+#ifndef size_t
 #include <stddef.h>    // size_t
+#endif
 #include <stdint.h>    // uint32_t
 
 typedef uint32_t       socklen_t;
@@ -93,7 +95,16 @@ enum
 enum
 {
        SO_REUSEADDR,
-       SO_LINGER
+       SO_LINGER,
+       SO_ERROR
+};
+
+// shutdown how
+enum
+{
+       SHUT_RD,
+       SHUT_WR,
+       SHUT_RDWR
 };
 
 /**
@@ -102,6 +113,11 @@ enum
  */
 extern int     socket(int domain, int type, int protocol);
 
+/**
+ * 
+ */
+extern int     shutdown(int socket, int how);
+
 /**
  * \brief Bind a socket to an address
  */
@@ -133,5 +149,12 @@ extern int getsockopt(int socket, int level, int option_name, void *option_value
 extern int     getsockname(int socket, struct sockaddr *addr, socklen_t *addrlen);
 extern int     getpeername(int socket, struct sockaddr *addr, socklen_t *addrlen);
 
+extern struct hostent *gethostbyaddr(const void *addr, socklen_t len, int type);
+extern void    sethostent(int stayopen);
+extern void    endhostent(void);
+extern void    herror(const char *s);
+extern const char      *hstrerror(int err);
+extern struct hostent *gethostent(void);
+
 #endif
 

UCC git Repository :: git.ucc.asn.au