diff options
Diffstat (limited to 'ocaml-binary-annot/otherlibs/unix/readdir.c')
| -rw-r--r-- | ocaml-binary-annot/otherlibs/unix/readdir.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/ocaml-binary-annot/otherlibs/unix/readdir.c b/ocaml-binary-annot/otherlibs/unix/readdir.c new file mode 100644 index 0000000000..fb8a67b20e --- /dev/null +++ b/ocaml-binary-annot/otherlibs/unix/readdir.c @@ -0,0 +1,39 @@ +/***********************************************************************/ +/* */ +/* Objective Caml */ +/* */ +/* Xavier Leroy, projet Cristal, INRIA Rocquencourt */ +/* */ +/* Copyright 1996 Institut National de Recherche en Informatique et */ +/* en Automatique. All rights reserved. This file is distributed */ +/* under the terms of the GNU Library General Public License, with */ +/* the special exception on linking described in file ../../LICENSE. */ +/* */ +/***********************************************************************/ + +/* $Id$ */ + +#include <mlvalues.h> +#include <fail.h> +#include <alloc.h> +#include "unixsupport.h" +#include <errno.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 + +CAMLprim value unix_readdir(value vd) +{ + DIR * d; + directory_entry * e; + d = DIR_Val(vd); + if (d == (DIR *) NULL) unix_error(EBADF, "readdir", Nothing); + e = readdir((DIR *) d); + if (e == (directory_entry *) NULL) raise_end_of_file(); + return copy_string(e->d_name); +} |
