1 /* vi: set sw=4 ts=4: */
2 /* Copyright (C) 2003 Manuel Novoa III
4 * Licensed under GPL v2, or later. See file LICENSE in this tarball.
7 /* Nov 6, 2003 Initial version.
9 * NOTE: This implementation is quite strict about requiring all
10 * field seperators. It also does not allow leading whitespace
11 * except when processing the numeric fields. glibc is more
12 * lenient. See the various glibc difference comments below.
15 * Move to dynamic allocation of (currently statically allocated)
16 * buffers; especially for the group-related functions since
17 * large group member lists will cause error returns.
21 #ifndef GETXXKEY_R_FUNC
22 #error GETXXKEY_R_FUNC is not defined!
25 int GETXXKEY_R_FUNC(GETXXKEY_R_KEYTYPE key,
26 GETXXKEY_R_ENTTYPE *__restrict resultbuf,
27 char *__restrict buffer, size_t buflen,
28 GETXXKEY_R_ENTTYPE **__restrict result)
35 stream = fopen_for_read(GETXXKEY_R_PATHNAME);
39 rv = bb__pgsreader(GETXXKEY_R_PARSER, resultbuf, buffer, buflen, stream);
41 if (GETXXKEY_R_TEST(resultbuf)) { /* Found key? */
46 if (rv == ENOENT) { /* end-of-file encountered. */
57 #undef GETXXKEY_R_FUNC
58 #undef GETXXKEY_R_PARSER
59 #undef GETXXKEY_R_ENTTYPE
60 #undef GETXXKEY_R_TEST
61 #undef GETXXKEY_R_KEYTYPE
62 #undef GETXXKEY_R_PATHNAME