Annotation of embedaddon/libiconv/srclib/careadlinkat.h, revision 1.1.1.2
1.1 misho 1: /* Read symbolic links into a buffer without size limitation, relative to fd.
2:
1.1.1.2 ! misho 3: Copyright (C) 2011-2019 Free Software Foundation, Inc.
1.1 misho 4:
5: This program is free software: you can redistribute it and/or modify
6: it under the terms of the GNU General Public License as published by
7: the Free Software Foundation; either version 3 of the License, or
8: (at your option) any later version.
9:
10: This program is distributed in the hope that it will be useful,
11: but WITHOUT ANY WARRANTY; without even the implied warranty of
12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13: GNU General Public License for more details.
14:
15: You should have received a copy of the GNU General Public License
1.1.1.2 ! misho 16: along with this program. If not, see <https://www.gnu.org/licenses/>. */
1.1 misho 17:
18: /* Written by Paul Eggert, Bruno Haible, and Jim Meyering. */
19:
20: #ifndef _GL_CAREADLINKAT_H
21: #define _GL_CAREADLINKAT_H
22:
23: #include <fcntl.h>
24: #include <unistd.h>
25:
26: struct allocator;
27:
28: /* Assuming the current directory is FD, get the symbolic link value
29: of FILENAME as a null-terminated string and put it into a buffer.
30: If FD is AT_FDCWD, FILENAME is interpreted relative to the current
31: working directory, as in openat.
32:
33: If the link is small enough to fit into BUFFER put it there.
34: BUFFER's size is BUFFER_SIZE, and BUFFER can be null
35: if BUFFER_SIZE is zero.
36:
37: If the link is not small, put it into a dynamically allocated
38: buffer managed by ALLOC. It is the caller's responsibility to free
39: the returned value if it is nonnull and is not BUFFER.
40:
41: The PREADLINKAT function specifies how to read links. It operates
42: like POSIX readlinkat()
43: <http://pubs.opengroup.org/onlinepubs/9699919799/functions/readlink.html>
44: but can assume that its first argument is the same as FD.
45:
46: If successful, return the buffer address; otherwise return NULL and
47: set errno. */
48:
49: char *careadlinkat (int fd, char const *filename,
50: char *buffer, size_t buffer_size,
51: struct allocator const *alloc,
52: ssize_t (*preadlinkat) (int, char const *,
53: char *, size_t));
54:
1.1.1.2 ! misho 55: /* Suitable value for careadlinkat's FD argument. */
1.1 misho 56: #if HAVE_READLINKAT
57: /* AT_FDCWD is declared in <fcntl.h>. */
58: #else
59: /* Define AT_FDCWD independently, so that the careadlinkat module does
1.1.1.2 ! misho 60: not depend on the fcntl-h module. We might as well use the same value
1.1 misho 61: as fcntl-h. */
62: # ifndef AT_FDCWD
63: # define AT_FDCWD (-3041965)
64: # endif
65: #endif
66:
67: #endif /* _GL_CAREADLINKAT_H */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>