summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2012-08-15 15:35:32 -0400
committerRich Felker <dalias@aerifal.cx>2012-08-15 15:35:32 -0400
commit3f80afc50577dada3940b66ef5b67da2f43cc00a (patch)
treef003e434702753eaf0441b5791e687d13c4dbbb8
parent7650390de8f72822ec0d4a9fb5b52efcf0be4698 (diff)
downloadmusl-3f80afc50577dada3940b66ef5b67da2f43cc00a.tar.gz
improve headers to better deal with removed-in-posix-2008 features
with this patch, setting _POSIX_SOURCE, or setting _POSIX_C_SOURCE or _XOPEN_SOURCE to an old version, will bring back the interfaces that were removed in POSIX 2008 - at least the ones i've covered so far, which are gethostby*, usleep, and ualarm. if there are other functions still in widespread use that were removed for which similar changes would be beneficial, they can be added just like this.
-rw-r--r--include/netdb.h27
-rw-r--r--include/unistd.h8
2 files changed, 22 insertions, 13 deletions
diff --git a/include/netdb.h b/include/netdb.h
index 82c78dc8..42a4b682 100644
--- a/include/netdb.h
+++ b/include/netdb.h
@@ -118,21 +118,30 @@ struct protoent *getprotoent (void);
struct protoent *getprotobyname (const char *);
struct protoent *getprotobynumber (int);
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
+ || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE < 200809L) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE < 700)
+struct hostent *gethostbyname (const char *);
+struct hostent *gethostbyaddr (const void *, socklen_t, int);
+#ifdef __GNUC__
+__attribute__((const))
+#endif
+int *__h_errno_location(void);
+#define h_errno (*__h_errno_location())
+#define HOST_NOT_FOUND 1
+#define TRY_AGAIN 2
+#define NO_RECOVERY 3
+#define NO_DATA 4
+#endif
+
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
const char *hstrerror(int);
-struct hostent *gethostbyname (const char *);
int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
struct hostent *gethostbyname2(const char *, int);
-struct hostent *gethostbyaddr (const void *, socklen_t, int);
int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **);
int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **);
-#ifdef __GNUC__
-__attribute__((const))
-#endif
-int *__h_errno_location(void);
-#define h_errno (*__h_errno_location())
#define EAI_NODATA -5
#define EAI_ADDRFAMILY -9
#define EAI_INPROGRESS -100
@@ -143,10 +152,6 @@ int *__h_errno_location(void);
#define EAI_IDN_ENCODE -105
#define NI_MAXHOST 255
#define NI_MAXSERV 32
-#define HOST_NOT_FOUND 1
-#define TRY_AGAIN 2
-#define NO_RECOVERY 3
-#define NO_DATA 4
#endif
diff --git a/include/unistd.h b/include/unistd.h
index 17fe5e7c..12d153b8 100644
--- a/include/unistd.h
+++ b/include/unistd.h
@@ -144,6 +144,12 @@ void encrypt(char *, int);
void swab(const void *, void *, ssize_t);
#endif
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
+ || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE < 700)
+int usleep(unsigned);
+unsigned ualarm(unsigned, unsigned);
+#endif
+
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define L_SET 0
#define L_INCR 1
@@ -157,8 +163,6 @@ int getpagesize(void);
int getdtablesize(void);
int sethostname(const char *, size_t);
int getdomainname(char *, size_t);
-int usleep(unsigned);
-unsigned ualarm(unsigned, unsigned);
int setgroups(size_t, const gid_t []);
char *getpass(const char *);
int daemon(int, int);