aboutsummaryrefslogtreecommitdiffhomepage
path: root/cbits
diff options
context:
space:
mode:
authorGravatar Herbert Valerio Riedel <hvr@gnu.org>2016-01-31 11:31:14 +0100
committerGravatar Herbert Valerio Riedel <hvr@gnu.org>2016-01-31 11:31:14 +0100
commitb54bd5fc4355af6104b80a48353889bbd867ba10 (patch)
treeb1052f1d5f950041747ccc734052924b5346cbab /cbits
parent72774b031084e5260cf0c0df5239ed63d136ba6c (diff)
Merge dirUtils.c into HsUnix.c
Diffstat (limited to 'cbits')
-rw-r--r--cbits/HsUnix.c64
-rw-r--r--cbits/dirUtils.c72
2 files changed, 63 insertions, 73 deletions
diff --git a/cbits/HsUnix.c b/cbits/HsUnix.c
index d689a6e..25fd8ad 100644
--- a/cbits/HsUnix.c
+++ b/cbits/HsUnix.c
@@ -9,7 +9,7 @@
#include "HsUnix.h"
#ifdef HAVE_RTLDNEXT
-void *__hsunix_rtldNext (void) {return RTLD_NEXT;}
+void *__hsunix_rtldNext (void) {return RTLD_NEXT;}
#endif
#ifdef HAVE_RTLDDEFAULT
@@ -71,3 +71,65 @@ HsInt __hsunix_long_path_size(void) {
#endif
}
+
+/*
+ * read an entry from the directory stream; opt for the
+ * re-entrant friendly way of doing this, if available.
+ */
+int __hscore_readdir( DIR *dirPtr, struct dirent **pDirEnt )
+{
+#if HAVE_READDIR_R
+ struct dirent* p;
+ int res;
+ static unsigned int nm_max = (unsigned int)-1;
+
+ if (pDirEnt == NULL) {
+ return -1;
+ }
+ if (nm_max == (unsigned int)-1) {
+#ifdef NAME_MAX
+ nm_max = NAME_MAX + 1;
+#else
+ nm_max = pathconf(".", _PC_NAME_MAX);
+ if (nm_max == -1) { nm_max = 255; }
+ nm_max++;
+#endif
+ }
+ p = (struct dirent*)malloc(sizeof(struct dirent) + nm_max);
+ if (p == NULL) return -1;
+ res = readdir_r(dirPtr, p, pDirEnt);
+ if (res != 0) {
+ *pDirEnt = NULL;
+ free(p);
+ }
+ else if (*pDirEnt == NULL) {
+ // end of stream
+ free(p);
+ }
+ return res;
+#else
+
+ if (pDirEnt == NULL) {
+ return -1;
+ }
+
+ *pDirEnt = readdir(dirPtr);
+ if (*pDirEnt == NULL) {
+ return -1;
+ } else {
+ return 0;
+ }
+#endif
+}
+
+char *__hscore_d_name( struct dirent* d )
+{
+ return (d->d_name);
+}
+
+void __hscore_free_dirent(struct dirent *dEnt)
+{
+#if HAVE_READDIR_R
+ free(dEnt);
+#endif
+}
diff --git a/cbits/dirUtils.c b/cbits/dirUtils.c
deleted file mode 100644
index 0a645eb..0000000
--- a/cbits/dirUtils.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * (c) The University of Glasgow 2002
- *
- * Directory Runtime Support
- */
-
-#include "HsUnix.h"
-
-/*
- * read an entry from the directory stream; opt for the
- * re-entrant friendly way of doing this, if available.
- */
-int
-__hscore_readdir( DIR *dirPtr, struct dirent **pDirEnt )
-{
-#if HAVE_READDIR_R
- struct dirent* p;
- int res;
- static unsigned int nm_max = (unsigned int)-1;
-
- if (pDirEnt == NULL) {
- return -1;
- }
- if (nm_max == (unsigned int)-1) {
-#ifdef NAME_MAX
- nm_max = NAME_MAX + 1;
-#else
- nm_max = pathconf(".", _PC_NAME_MAX);
- if (nm_max == -1) { nm_max = 255; }
- nm_max++;
-#endif
- }
- p = (struct dirent*)malloc(sizeof(struct dirent) + nm_max);
- if (p == NULL) return -1;
- res = readdir_r(dirPtr, p, pDirEnt);
- if (res != 0) {
- *pDirEnt = NULL;
- free(p);
- }
- else if (*pDirEnt == NULL) {
- // end of stream
- free(p);
- }
- return res;
-#else
-
- if (pDirEnt == NULL) {
- return -1;
- }
-
- *pDirEnt = readdir(dirPtr);
- if (*pDirEnt == NULL) {
- return -1;
- } else {
- return 0;
- }
-#endif
-}
-
-char *
-__hscore_d_name( struct dirent* d )
-{
- return (d->d_name);
-}
-
-void
-__hscore_free_dirent(struct dirent *dEnt)
-{
-#if HAVE_READDIR_R
- free(dEnt);
-#endif
-}