summaryrefslogtreecommitdiffstats
path: root/otherlibs/unix/readdir.c
diff options
context:
space:
mode:
Diffstat (limited to 'otherlibs/unix/readdir.c')
-rw-r--r--otherlibs/unix/readdir.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/otherlibs/unix/readdir.c b/otherlibs/unix/readdir.c
new file mode 100644
index 000000000..41093f95a
--- /dev/null
+++ b/otherlibs/unix/readdir.c
@@ -0,0 +1,22 @@
+#include <mlvalues.h>
+#include <fail.h>
+#include <alloc.h>
+#include "unix.h"
+#include <sys/types.h>
+#ifdef HAS_DIRENT
+#include <dirent.h>
+typedef struct dirent directory_entry;
+#else
+#include <sys/dir.h>
+typedef struct direct directory_entry;
+#endif
+
+value unix_readdir(d) /* ML */
+ value d;
+{
+ directory_entry * e;
+
+ e = readdir((DIR *) d);
+ if (e == (directory_entry *) NULL) mlraise(Atom(END_OF_FILE_EXN));
+ return copy_string(e->d_name);
+}