diff --git a/cbits/HsUnix.c b/cbits/HsUnix.c index e54bccf05f6c1fdfd468fc630e6421b7b058fbbc..09cfc9cd1d3af38e980a604e104d4ae460029607 100644 --- a/cbits/HsUnix.c +++ b/cbits/HsUnix.c @@ -35,25 +35,22 @@ int __hsunix_getpwuid_r(uid_t uid, struct passwd *pw, char *buffer, #endif #ifdef HAVE_PTSNAME -// I cannot figure out how to make the definitions of the following -// functions visible in <stdlib.h> on Linux. But these definitions -// follow the POSIX specs, and everything links and runs. +// On Linux (and others), <stdlib.h> needs to be included while +// `_XOPEN_SOURCE` is already defined. However, GHCs before GHC 8.0 +// didn't do that yet for CApiFFI, so we need this workaround here. char *__hsunix_ptsname(int fd) { - extern char *ptsname(int); return ptsname(fd); } int __hsunix_grantpt(int fd) { - extern int grantpt(int); return grantpt(fd); } int __hsunix_unlockpt(int fd) { - extern int unlockpt(int); return unlockpt(fd); } #endif diff --git a/include/HsUnix.h b/include/HsUnix.h index 7b404fc74e5957f8da3bfd8b36e21b1ab1439882..98990b286143404daf3550f32b8e2c13800989be 100644 --- a/include/HsUnix.h +++ b/include/HsUnix.h @@ -126,10 +126,6 @@ int __hsunix_getpwuid_r(uid_t, struct passwd *, char *, size_t, #endif #ifdef HAVE_PTSNAME -// I cannot figure out how to make the definitions of the following -// functions visible in <stdlib.h> on Linux. But these definitions -// follow the POSIX specs, and everything links and runs. - char *__hsunix_ptsname(int fd); int __hsunix_grantpt(int fd); int __hsunix_unlockpt(int fd);