Mercurial > hg > octave-nkf > gnulib-hg
comparison lib/rewinddir.c @ 15610:de2ecfd7fc4a
New modules 'opendir', 'readdir', 'rewinddir', 'closedir'.
* lib/dirent.in.h (struct dirent): New type.
(DT_UNKNOWN, DT_FIFO, DT_CHR, DT_DIR, DT_BLK, DT_REG, DT_LNK, DT_SOCK,
DT_WHT): New macros.
(DIR): New type.
(opendir, closedir): Declare only if the module 'opendir' is enabled.
(readdir, rewinddir): New declarations.
* lib/dirent-private.h: New file.
* lib/opendir.c: New file.
* lib/readdir.c: New file.
* lib/rewinddir.c: New file.
* lib/closedir.c: New file.
* lib/fchdir.c (rpl_closedir, rpl_opendir): Remove functions.
* m4/opendir.m4: New file.
* m4/readdir.m4: New file.
* m4/rewinddir.m4: New file.
* m4/closedir.m4: New file.
* m4/fchdir.m4 (gl_FUNC_FCHDIR): Don't set REPLACE_OPENDIR,
REPLACE_CLOSEDIR here.
* m4/dirent_h.m4 (gl_DIRENT_H): Also check whether closedir, opendir,
readdir, rewinddir are declared.
(gl_DIRENT_H_DEFAULTS): Initialize GNULIB_OPENDIR, GNULIB_READDIR,
GNULIB_REWINDDIR, GNULIB_CLOSEDIR, HAVE_OPENDIR, HAVE_READDIR,
HAVE_REWINDDIR, HAVE_CLOSEDIR.
* modules/dirent (Makefile.am): Substitute GNULIB_OPENDIR,
GNULIB_READDIR, GNULIB_REWINDDIR, GNULIB_CLOSEDIR, HAVE_OPENDIR,
HAVE_READDIR, HAVE_REWINDDIR, HAVE_CLOSEDIR.
* modules/opendir: New file.
* modules/readdir: New file.
* modules/rewinddir: New file.
* modules/closedir: New file.
* doc/posix-functions/opendir.texi: Mention the 'opendir' module.
* doc/posix-functions/readdir.texi: Mention the 'readdir' module.
* doc/posix-functions/rewinddir.texi: Mention the 'rewinddir' module.
* doc/posix-functions/closedir.texi: Mention the 'closedir' module.
* NEWS: Mention the 'fchdir' change.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Tue, 13 Sep 2011 01:37:35 +0200 |
parents | |
children | 8250f2777afc |
comparison
equal
deleted
inserted
replaced
15609:eb8d35d87eb5 | 15610:de2ecfd7fc4a |
---|---|
1 /* Restart reading the entries of a directory from the beginning. | |
2 Copyright (C) 2011 Free Software Foundation, Inc. | |
3 | |
4 This program is free software: you can redistribute it and/or modify | |
5 it under the terms of the GNU General Public License as published by | |
6 the Free Software Foundation; either version 3 of the License, or | |
7 (at your option) any later version. | |
8 | |
9 This program is distributed in the hope that it will be useful, | |
10 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
12 GNU General Public License for more details. | |
13 | |
14 You should have received a copy of the GNU General Public License | |
15 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
16 | |
17 #include <config.h> | |
18 | |
19 /* Specification. */ | |
20 #include <dirent.h> | |
21 | |
22 #include <errno.h> | |
23 | |
24 #include "dirent-private.h" | |
25 | |
26 void | |
27 rewinddir (DIR *dirp) | |
28 { | |
29 /* Like in closedir(). */ | |
30 if (dirp->current != INVALID_HANDLE_VALUE) | |
31 FindClose (dirp->current); | |
32 | |
33 /* Like in opendir(). */ | |
34 dirp->status = -1; | |
35 dirp->current = FindFirstFile (dirp->dir_name_mask, &dirp->entry); | |
36 if (dirp->current == INVALID_HANDLE_VALUE) | |
37 { | |
38 switch (GetLastError ()) | |
39 { | |
40 case ERROR_FILE_NOT_FOUND: | |
41 dirp->status = -2; | |
42 break; | |
43 default: | |
44 /* Save the error code for the next readdir() call. */ | |
45 dirp->status = ENOENT; | |
46 break; | |
47 } | |
48 } | |
49 } |