annotate lib/savedir.c @ 15727:144db791c6fa

Ensure EBADF returns for socket functions on mingw. * lib/accept.c (rpl_accept): Fail with error EBADF if the file descriptor is invalid. * lib/bind.c (rpl_bind): Likewise. * lib/connect.c (rpl_connect): Likewise. * lib/getpeername.c (rpl_getpeername): Likewise. * lib/getsockname.c (rpl_getsockname): Likewise. * lib/getsockopt.c (rpl_getsockopt): Likewise. * lib/listen.c (rpl_listen): Likewise. * lib/recv.c (rpl_recv): Likewise. * lib/recvfrom.c (rpl_recvfrom): Likewise. * lib/send.c (rpl_send): Likewise. * lib/sendto.c (rpl_sendto): Likewise. * lib/setsockopt.c (rpl_setsockopt): Likewise. * lib/shutdown.c (rpl_shutdown): Likewise.
author Bruno Haible <bruno@clisp.org>
date Wed, 21 Sep 2011 00:20:59 +0200
parents 97fc9a21a8fb
children 8250f2777afc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
1 /* savedir.c -- save the list of files in a directory in a string
3417
31622ae708da (savedir): Remove size parameter, as POSIX says that
Jim Meyering <jim@meyering.net>
parents: 2658
diff changeset
2
14079
97fc9a21a8fb maint: update almost all copyright ranges to include 2011
Jim Meyering <meyering@redhat.com>
parents: 13670
diff changeset
3 Copyright (C) 1990, 1997-2001, 2003-2006, 2009-2011 Free Software
12559
c2cbabec01dd update nearly all FSF copyright year lists to include 2010
Jim Meyering <meyering@redhat.com>
parents: 12518
diff changeset
4 Foundation, Inc.
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
5
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7863
diff changeset
6 This program is free software: you can redistribute it and/or modify
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
7 it under the terms of the GNU General Public License as published by
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7863
diff changeset
8 the Free Software Foundation; either version 3 of the License, or
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7863
diff changeset
9 (at your option) any later version.
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
10
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
11 This program is distributed in the hope that it will be useful,
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
14 GNU General Public License for more details.
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
15
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
16 You should have received a copy of the GNU General Public License
9309
bbbbbf4cd1c5 Change copyright notice from GPLv2+ to GPLv3+.
Bruno Haible <bruno@clisp.org>
parents: 7863
diff changeset
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
18
285
Jim Meyering <jim@meyering.net>
parents: 5
diff changeset
19 /* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
Jim Meyering <jim@meyering.net>
parents: 5
diff changeset
20
7302
8a1a9361108c * _fpending.c: Include <config.h> unconditionally, since we no
Paul Eggert <eggert@cs.ucla.edu>
parents: 7151
diff changeset
21 #include <config.h>
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
22
4665
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4333
diff changeset
23 #include "savedir.h"
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4333
diff changeset
24
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
25 #include <sys/types.h>
285
Jim Meyering <jim@meyering.net>
parents: 5
diff changeset
26
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
27 #include <errno.h>
285
Jim Meyering <jim@meyering.net>
parents: 5
diff changeset
28
11938
7cbcde229d97 backupfile, chdir-long, fts, savedir: make safer
Eric Blake <ebb9@byu.net>
parents: 11934
diff changeset
29 #include "dirent--.h"
6949
96af1224c6fa * backupfile.c, dirfd.h, fts.c, getcwd.c, glob.c, glob_.h:
Paul Eggert <eggert@cs.ucla.edu>
parents: 6934
diff changeset
30 #ifndef _D_EXACT_NAMLEN
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
31 # define _D_EXACT_NAMLEN(dp) strlen ((dp)->d_name)
329
Jim Meyering <jim@meyering.net>
parents: 316
diff changeset
32 #endif
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
33
4333
fcd34d3861a4 in lib:
Paul Eggert <eggert@cs.ucla.edu>
parents: 3417
diff changeset
34 #include <stddef.h>
4665
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4333
diff changeset
35 #include <stdlib.h>
dc6d827f3011 Remove K&R cruft.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4333
diff changeset
36 #include <string.h>
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
37
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
38 #include "xalloc.h"
1051
af67c42d555a (savedir): Declare DIR parameter to be const.
Jim Meyering <jim@meyering.net>
parents: 650
diff changeset
39
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
40 #ifndef NAME_SIZE_DEFAULT
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
41 # define NAME_SIZE_DEFAULT 512
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
42 #endif
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
43
6458
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
44 /* Return a freshly allocated string containing the file names
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
45 in directory DIRP, separated by '\0' characters;
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
46 the end is marked by two '\0' characters in a row.
13670
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
47 Return NULL (setting errno) if DIRP cannot be read.
6458
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
48 If DIRP is NULL, return NULL without affecting errno. */
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
49
13670
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
50 char *
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
51 streamsavedir (DIR *dirp)
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
52 {
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
53 char *name_space;
3417
31622ae708da (savedir): Remove size parameter, as POSIX says that
Jim Meyering <jim@meyering.net>
parents: 2658
diff changeset
54 size_t allocated = NAME_SIZE_DEFAULT;
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
55 size_t used = 0;
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
56 int save_errno;
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
57
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
58 if (dirp == NULL)
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
59 return NULL;
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
60
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
61 name_space = xmalloc (allocated);
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
62
6437
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
63 for (;;)
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
64 {
6437
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
65 struct dirent const *dp;
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
66 char const *entry;
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
67
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
68 errno = 0;
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
69 dp = readdir (dirp);
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
70 if (! dp)
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
71 break;
6437
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
72
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
73 /* Skip "", ".", and "..". "" is returned by at least one buggy
5159
a535859efd14 Merge from coreutils.
Paul Eggert <eggert@cs.ucla.edu>
parents: 4665
diff changeset
74 implementation: Solaris 2.4 readdir on NFS file systems. */
6437
12eea1649f15 * savedir.c (savedir): Don't assume that xrealloc etc. leave
Paul Eggert <eggert@cs.ucla.edu>
parents: 6259
diff changeset
75 entry = dp->d_name;
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
76 if (entry[entry[0] != '.' ? 0 : entry[1] != '.' ? 1 : 2] != '\0')
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
77 {
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
78 size_t entry_size = _D_EXACT_NAMLEN (dp) + 1;
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
79 if (used + entry_size < used)
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
80 xalloc_die ();
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
81 if (allocated <= used + entry_size)
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
82 {
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
83 do
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
84 {
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
85 if (2 * allocated < allocated)
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
86 xalloc_die ();
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
87 allocated *= 2;
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
88 }
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
89 while (allocated <= used + entry_size);
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
90
12421
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
91 name_space = xrealloc (name_space, allocated);
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
92 }
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
93 memcpy (name_space + used, entry, entry_size);
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
94 used += entry_size;
e8d2c6fc33ad Use spaces for indentation, not tabs.
Bruno Haible <bruno@clisp.org>
parents: 11938
diff changeset
95 }
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
96 }
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
97 name_space[used] = '\0';
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
98 save_errno = errno;
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
99 if (save_errno != 0)
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
100 {
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
101 free (name_space);
2658
eea9e16a185f savedir now sets errno on failure and invokes xmalloc to get memory.
Jim Meyering <jim@meyering.net>
parents: 2342
diff changeset
102 errno = save_errno;
5
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
103 return NULL;
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
104 }
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
105 return name_space;
41c9d08b09d7 Initial revision
Jim Meyering <jim@meyering.net>
parents:
diff changeset
106 }
6458
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
107
13670
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
108 /* Like savedirstreamp (DIRP), except also close DIRP. */
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
109
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
110 static char *
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
111 savedirstream (DIR *dirp)
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
112 {
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
113 char *name_space = streamsavedir (dirp);
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
114 if (dirp && closedir (dirp) != 0)
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
115 {
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
116 int save_errno = errno;
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
117 free (name_space);
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
118 errno = save_errno;
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
119 return NULL;
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
120 }
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
121 return name_space;
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
122 }
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
123
6458
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
124 /* Return a freshly allocated string containing the file names
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
125 in directory DIR, separated by '\0' characters;
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
126 the end is marked by two '\0' characters in a row.
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
127 Return NULL (setting errno) if DIR cannot be opened, read, or closed. */
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
128
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
129 char *
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
130 savedir (char const *dir)
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
131 {
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
132 return savedirstream (opendir (dir));
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
133 }
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
134
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
135 /* Return a freshly allocated string containing the file names
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
136 in directory FD, separated by '\0' characters;
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
137 the end is marked by two '\0' characters in a row.
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
138 Return NULL (setting errno) if FD cannot be read or closed. */
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
139
13670
a930c356f503 savedir: add streamsavedir, deprecate fdsavedir
Paul Eggert <eggert@cs.ucla.edu>
parents: 12559
diff changeset
140 /* deprecated */
6458
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
141 char *
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
142 fdsavedir (int fd)
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
143 {
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
144 return savedirstream (fdopendir (fd));
eaa31dc34937 * modules/savedir (Depends-on): Add openat.
Paul Eggert <eggert@cs.ucla.edu>
parents: 6437
diff changeset
145 }