diff options
| -rw-r--r-- | libc/pwd_grp/fgetgrent.c | 12 | ||||
| -rw-r--r-- | libc/pwd_grp/fgetpwent.c | 12 | ||||
| -rw-r--r-- | libc/pwd_grp/fgetspent.c | 6 | ||||
| -rw-r--r-- | libc/pwd_grp/getgrent.c | 5 | ||||
| -rw-r--r-- | libc/pwd_grp/getgrgid.c | 6 | ||||
| -rw-r--r-- | libc/pwd_grp/getgrgid_r.c | 7 | ||||
| -rw-r--r-- | libc/pwd_grp/getgrnam.c | 6 | ||||
| -rw-r--r-- | libc/pwd_grp/getgrnam_r.c | 7 | ||||
| -rw-r--r-- | libc/pwd_grp/getpwent.c | 5 | ||||
| -rw-r--r-- | libc/pwd_grp/getpwnam.c | 7 | ||||
| -rw-r--r-- | libc/pwd_grp/getpwnam_r.c | 7 | ||||
| -rw-r--r-- | libc/pwd_grp/getpwuid.c | 6 | ||||
| -rw-r--r-- | libc/pwd_grp/getpwuid_r.c | 7 | ||||
| -rw-r--r-- | libc/pwd_grp/getspent.c | 5 | ||||
| -rw-r--r-- | libc/pwd_grp/getspnam.c | 6 | ||||
| -rw-r--r-- | libc/pwd_grp/getspnam_r.c | 7 | ||||
| -rw-r--r-- | libc/pwd_grp/pwd_grp.c | 263 | ||||
| -rw-r--r-- | libc/pwd_grp/pwd_grp_internal.c | 49 | ||||
| -rw-r--r-- | libc/pwd_grp/sgetspent.c | 6 | 
19 files changed, 143 insertions, 286 deletions
diff --git a/libc/pwd_grp/fgetgrent.c b/libc/pwd_grp/fgetgrent.c index 695aee119..6a45799bc 100644 --- a/libc/pwd_grp/fgetgrent.c +++ b/libc/pwd_grp/fgetgrent.c @@ -4,5 +4,15 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_fgetgrent +#include <features.h> + +#ifdef __USE_SVID + +#define GETXXKEY_FUNC		fgetgrent +#define GETXXKEY_ENTTYPE	struct group +#define GETXXKEY_ADD_PARAMS	FILE *stream +#define GETXXKEY_ADD_VARIABLES	stream +#define GETXXKEY_BUFLEN		__UCLIBC_GRP_BUFFER_SIZE__  #include "pwd_grp.c" + +#endif diff --git a/libc/pwd_grp/fgetpwent.c b/libc/pwd_grp/fgetpwent.c index ddcc7ffb7..6f65cf672 100644 --- a/libc/pwd_grp/fgetpwent.c +++ b/libc/pwd_grp/fgetpwent.c @@ -4,5 +4,15 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_fgetpwent +#include <features.h> + +#ifdef __USE_SVID + +#define GETXXKEY_FUNC		fgetpwent +#define GETXXKEY_ENTTYPE	struct passwd +#define GETXXKEY_ADD_PARAMS	FILE *stream +#define GETXXKEY_ADD_VARIABLES	stream +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__  #include "pwd_grp.c" + +#endif diff --git a/libc/pwd_grp/fgetspent.c b/libc/pwd_grp/fgetspent.c index b7c1ef24f..77ca0b895 100644 --- a/libc/pwd_grp/fgetspent.c +++ b/libc/pwd_grp/fgetspent.c @@ -4,5 +4,9 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_fgetspent +#define GETXXKEY_FUNC		fgetspent +#define GETXXKEY_ENTTYPE	struct spwd +#define GETXXKEY_ADD_PARAMS	FILE *stream +#define GETXXKEY_ADD_VARIABLES	stream +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getgrent.c b/libc/pwd_grp/getgrent.c index 808e4e817..5b03b31a0 100644 --- a/libc/pwd_grp/getgrent.c +++ b/libc/pwd_grp/getgrent.c @@ -4,5 +4,8 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getgrent +#define GETXXKEY_FUNC		getgrent +#define GETXXKEY_ENTTYPE	struct group +#define GETXXKEY_ADD_PARAMS	void +#define GETXXKEY_BUFLEN		__UCLIBC_GRP_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getgrgid.c b/libc/pwd_grp/getgrgid.c index 96ce9039d..298845270 100644 --- a/libc/pwd_grp/getgrgid.c +++ b/libc/pwd_grp/getgrgid.c @@ -4,5 +4,9 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getgrgid +#define GETXXKEY_FUNC		getgrgid +#define GETXXKEY_ENTTYPE	struct group +#define GETXXKEY_ADD_PARAMS	gid_t git +#define GETXXKEY_ADD_VARIABLES	git +#define GETXXKEY_BUFLEN		__UCLIBC_GRP_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getgrgid_r.c b/libc/pwd_grp/getgrgid_r.c index a962f4cec..b0f0c9aa6 100644 --- a/libc/pwd_grp/getgrgid_r.c +++ b/libc/pwd_grp/getgrgid_r.c @@ -4,5 +4,10 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getgrgid_r +#define GETXXKEY_R_FUNC		getgrgid_r +#define GETXXKEY_R_PARSER	__parsegrent +#define GETXXKEY_R_ENTTYPE	struct group +#define GETXXKEY_R_TEST(ENT)	((ENT)->gr_gid == key) +#define DO_GETXXKEY_R_KEYTYPE	gid_t +#define DO_GETXXKEY_R_PATHNAME  _PATH_GROUP  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getgrnam.c b/libc/pwd_grp/getgrnam.c index 3b47d9a9f..f6ce45953 100644 --- a/libc/pwd_grp/getgrnam.c +++ b/libc/pwd_grp/getgrnam.c @@ -4,5 +4,9 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getgrnam +#define GETXXKEY_FUNC		getgrnam +#define GETXXKEY_ENTTYPE	struct group +#define GETXXKEY_ADD_PARAMS	const char *name +#define GETXXKEY_ADD_VARIABLES	name +#define GETXXKEY_BUFLEN		__UCLIBC_GRP_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getgrnam_r.c b/libc/pwd_grp/getgrnam_r.c index 592a66c47..35121e70e 100644 --- a/libc/pwd_grp/getgrnam_r.c +++ b/libc/pwd_grp/getgrnam_r.c @@ -4,5 +4,10 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getgrnam_r +#define GETXXKEY_R_FUNC		getgrnam_r +#define GETXXKEY_R_PARSER	__parsegrent +#define GETXXKEY_R_ENTTYPE	struct group +#define GETXXKEY_R_TEST(ENT)	(!strcmp((ENT)->gr_name, key)) +#define DO_GETXXKEY_R_KEYTYPE	const char *__restrict +#define DO_GETXXKEY_R_PATHNAME  _PATH_GROUP  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getpwent.c b/libc/pwd_grp/getpwent.c index a617bc8b2..7ddc8ee8a 100644 --- a/libc/pwd_grp/getpwent.c +++ b/libc/pwd_grp/getpwent.c @@ -4,5 +4,8 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getpwent +#define GETXXKEY_FUNC		getpwent +#define GETXXKEY_ENTTYPE	struct passwd +#define GETXXKEY_ADD_PARAMS	void +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getpwnam.c b/libc/pwd_grp/getpwnam.c index d00640b54..e3e8c027d 100644 --- a/libc/pwd_grp/getpwnam.c +++ b/libc/pwd_grp/getpwnam.c @@ -4,5 +4,10 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getpwnam +#define GETXXKEY_FUNC		getpwnam +#define GETXXKEY_ENTTYPE	struct passwd +#define GETXXKEY_ADD_PARAMS	const char *name +#define GETXXKEY_ADD_VARIABLES	name +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__ +#define GETXXKEY_FUNC_HIDDEN  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getpwnam_r.c b/libc/pwd_grp/getpwnam_r.c index a4440e756..bc5e3d5cf 100644 --- a/libc/pwd_grp/getpwnam_r.c +++ b/libc/pwd_grp/getpwnam_r.c @@ -4,5 +4,10 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getpwnam_r +#define GETXXKEY_R_FUNC		getpwnam_r +#define GETXXKEY_R_PARSER	__parsepwent +#define GETXXKEY_R_ENTTYPE	struct passwd +#define GETXXKEY_R_TEST(ENT)	(!strcmp((ENT)->pw_name, key)) +#define DO_GETXXKEY_R_KEYTYPE	const char *__restrict +#define DO_GETXXKEY_R_PATHNAME  _PATH_PASSWD  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getpwuid.c b/libc/pwd_grp/getpwuid.c index 16ac50f72..1ad26888b 100644 --- a/libc/pwd_grp/getpwuid.c +++ b/libc/pwd_grp/getpwuid.c @@ -4,5 +4,9 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getpwuid +#define GETXXKEY_FUNC		getpwuid +#define GETXXKEY_ENTTYPE	struct passwd +#define GETXXKEY_ADD_PARAMS	uid_t uid +#define GETXXKEY_ADD_VARIABLES	uid +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getpwuid_r.c b/libc/pwd_grp/getpwuid_r.c index 21d39ed7f..0a5aa962a 100644 --- a/libc/pwd_grp/getpwuid_r.c +++ b/libc/pwd_grp/getpwuid_r.c @@ -4,5 +4,10 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getpwuid_r +#define GETXXKEY_R_FUNC		getpwuid_r +#define GETXXKEY_R_PARSER	__parsepwent +#define GETXXKEY_R_ENTTYPE	struct passwd +#define GETXXKEY_R_TEST(ENT)	((ENT)->pw_uid == key) +#define DO_GETXXKEY_R_KEYTYPE	uid_t +#define DO_GETXXKEY_R_PATHNAME  _PATH_PASSWD  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getspent.c b/libc/pwd_grp/getspent.c index 5699b67d6..4feb9f988 100644 --- a/libc/pwd_grp/getspent.c +++ b/libc/pwd_grp/getspent.c @@ -4,5 +4,8 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getspent +#define GETXXKEY_FUNC		getspent +#define GETXXKEY_ENTTYPE	struct spwd +#define GETXXKEY_ADD_PARAMS	void +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getspnam.c b/libc/pwd_grp/getspnam.c index 19e40c737..a0a01ec63 100644 --- a/libc/pwd_grp/getspnam.c +++ b/libc/pwd_grp/getspnam.c @@ -4,5 +4,9 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getspnam +#define GETXXKEY_FUNC		getspnam +#define GETXXKEY_ENTTYPE	struct spwd +#define GETXXKEY_ADD_PARAMS	const char *name +#define GETXXKEY_ADD_VARIABLES	name +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__  #include "pwd_grp.c" diff --git a/libc/pwd_grp/getspnam_r.c b/libc/pwd_grp/getspnam_r.c index 053b697ea..ea23848fe 100644 --- a/libc/pwd_grp/getspnam_r.c +++ b/libc/pwd_grp/getspnam_r.c @@ -4,5 +4,10 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_getspnam_r +#define GETXXKEY_R_FUNC		getspnam_r +#define GETXXKEY_R_PARSER	__parsespent +#define GETXXKEY_R_ENTTYPE	struct spwd +#define GETXXKEY_R_TEST(ENT)	(!strcmp((ENT)->sp_namp, key)) +#define DO_GETXXKEY_R_KEYTYPE	const char *__restrict +#define DO_GETXXKEY_R_PATHNAME  _PATH_SHADOW  #include "pwd_grp.c" diff --git a/libc/pwd_grp/pwd_grp.c b/libc/pwd_grp/pwd_grp.c index 0e7c7f73b..acdb08d39 100644 --- a/libc/pwd_grp/pwd_grp.c +++ b/libc/pwd_grp/pwd_grp.c @@ -127,59 +127,6 @@ libc_hidden_def(fgetspent_r)  #endif  /**********************************************************************/ -/* For the various fget??ent funcs, return NULL on failure and a - * pointer to the appropriate struct (statically allocated) on success. - */ -/**********************************************************************/ -#ifdef L_fgetpwent - -#ifdef __USE_SVID - -struct passwd *fgetpwent(FILE *stream) -{ -	static char buffer[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct passwd resultbuf; -	struct passwd *result; - -	fgetpwent_r(stream, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} -#endif - -#endif -/**********************************************************************/ -#ifdef L_fgetgrent - -#ifdef __USE_SVID - -struct group *fgetgrent(FILE *stream) -{ -	static char buffer[__UCLIBC_GRP_BUFFER_SIZE__]; -	static struct group resultbuf; -	struct group *result; - -	fgetgrent_r(stream, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} -#endif - -#endif -/**********************************************************************/ -#ifdef L_fgetspent - - -struct spwd *fgetspent(FILE *stream) -{ -	static char buffer[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct spwd resultbuf; -	struct spwd *result; - -	fgetspent_r(stream, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} - -#endif -/**********************************************************************/  #ifdef L_sgetspent_r  int sgetspent_r(const char *string, struct spwd *result_buf, @@ -213,92 +160,6 @@ libc_hidden_def(sgetspent_r)  #endif  /**********************************************************************/ - -#ifdef GETXXKEY_R_FUNC -#error GETXXKEY_R_FUNC is already defined! -#endif - -#ifdef L_getpwnam_r -#define GETXXKEY_R_FUNC		getpwnam_r -#define GETXXKEY_R_PARSER	__parsepwent -#define GETXXKEY_R_ENTTYPE	struct passwd -#define GETXXKEY_R_TEST(ENT)	(!strcmp((ENT)->pw_name, key)) -#define DO_GETXXKEY_R_KEYTYPE	const char *__restrict -#define DO_GETXXKEY_R_PATHNAME  _PATH_PASSWD -#include "pwd_grp_internal.c" -#endif - -#ifdef L_getgrnam_r -#define GETXXKEY_R_FUNC		getgrnam_r -#define GETXXKEY_R_PARSER	__parsegrent -#define GETXXKEY_R_ENTTYPE	struct group -#define GETXXKEY_R_TEST(ENT)	(!strcmp((ENT)->gr_name, key)) -#define DO_GETXXKEY_R_KEYTYPE	const char *__restrict -#define DO_GETXXKEY_R_PATHNAME  _PATH_GROUP -#include "pwd_grp_internal.c" -#endif - -#ifdef L_getspnam_r -#define GETXXKEY_R_FUNC		getspnam_r -#define GETXXKEY_R_PARSER	__parsespent -#define GETXXKEY_R_ENTTYPE	struct spwd -#define GETXXKEY_R_TEST(ENT)	(!strcmp((ENT)->sp_namp, key)) -#define DO_GETXXKEY_R_KEYTYPE	const char *__restrict -#define DO_GETXXKEY_R_PATHNAME  _PATH_SHADOW -#include "pwd_grp_internal.c" -#endif - -#ifdef L_getpwuid_r -#define GETXXKEY_R_FUNC		getpwuid_r -#define GETXXKEY_R_PARSER	__parsepwent -#define GETXXKEY_R_ENTTYPE	struct passwd -#define GETXXKEY_R_TEST(ENT)	((ENT)->pw_uid == key) -#define DO_GETXXKEY_R_KEYTYPE	uid_t -#define DO_GETXXKEY_R_PATHNAME  _PATH_PASSWD -#include "pwd_grp_internal.c" -#endif - -#ifdef L_getgrgid_r -#define GETXXKEY_R_FUNC		getgrgid_r -#define GETXXKEY_R_PARSER	__parsegrent -#define GETXXKEY_R_ENTTYPE	struct group -#define GETXXKEY_R_TEST(ENT)	((ENT)->gr_gid == key) -#define DO_GETXXKEY_R_KEYTYPE	gid_t -#define DO_GETXXKEY_R_PATHNAME  _PATH_GROUP -#include "pwd_grp_internal.c" -#endif - -/**********************************************************************/ -#ifdef L_getpwuid - - -struct passwd *getpwuid(uid_t uid) -{ -	static char buffer[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct passwd resultbuf; -	struct passwd *result; - -	getpwuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} - -#endif -/**********************************************************************/ -#ifdef L_getgrgid - - -struct group *getgrgid(gid_t gid) -{ -	static char buffer[__UCLIBC_GRP_BUFFER_SIZE__]; -	static struct group resultbuf; -	struct group *result; - -	getgrgid_r(gid, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} - -#endif -/**********************************************************************/  #ifdef L_getspuid_r  /* This function is non-standard and is currently not built.  It seems @@ -325,69 +186,6 @@ int getspuid_r(uid_t uid, struct spwd *__restrict resultbuf,  #endif  /**********************************************************************/ -#ifdef L_getspuid - -/* This function is non-standard and is currently not built. - * Why it was added, I do not know. */ - -struct spwd *getspuid(uid_t uid) -{ -	static char buffer[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct spwd resultbuf; -	struct spwd *result; - -	getspuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} - -#endif -/**********************************************************************/ -#ifdef L_getpwnam - - -struct passwd *getpwnam(const char *name) -{ -	static char buffer[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct passwd resultbuf; -	struct passwd *result; - -	getpwnam_r(name, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} -libc_hidden_def(getpwnam) - -#endif -/**********************************************************************/ -#ifdef L_getgrnam - - -struct group *getgrnam(const char *name) -{ -	static char buffer[__UCLIBC_GRP_BUFFER_SIZE__]; -	static struct group resultbuf; -	struct group *result; - -	getgrnam_r(name, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} - -#endif -/**********************************************************************/ -#ifdef L_getspnam - - -struct spwd *getspnam(const char *name) -{ -	static char buffer[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct spwd resultbuf; -	struct spwd *result; - -	getspnam_r(name, &resultbuf, buffer, sizeof(buffer), &result); -	return result; -} - -#endif -/**********************************************************************/  #ifdef L_getpw @@ -585,65 +383,14 @@ libc_hidden_def(getspent_r)  #endif  /**********************************************************************/ -#ifdef L_getpwent - - -struct passwd *getpwent(void) -{ -	static char line_buff[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct passwd pwd; -	struct passwd *result; - -	getpwent_r(&pwd, line_buff, sizeof(line_buff), &result); -	return result; -} - -#endif -/**********************************************************************/ -#ifdef L_getgrent - - -struct group *getgrent(void) -{ -	static char line_buff[__UCLIBC_GRP_BUFFER_SIZE__]; -	static struct group gr; -	struct group *result; - -	getgrent_r(&gr, line_buff, sizeof(line_buff), &result); -	return result; -} - -#endif +/* For the various fget??ent funcs, return NULL on failure and a + * pointer to the appropriate struct (statically allocated) on success. + */  /**********************************************************************/ -#ifdef L_getspent - - -struct spwd *getspent(void) -{ -	static char line_buff[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct spwd spwd; -	struct spwd *result; - -	getspent_r(&spwd, line_buff, sizeof(line_buff), &result); -	return result; -} - +#if defined(GETXXKEY_FUNC) || defined(GETXXKEY_R_FUNC) +#include "pwd_grp_internal.c"  #endif -/**********************************************************************/ -#ifdef L_sgetspent - - -struct spwd *sgetspent(const char *string) -{ -	static char line_buff[__UCLIBC_PWD_BUFFER_SIZE__]; -	static struct spwd spwd; -	struct spwd *result; - -	sgetspent_r(string, &spwd, line_buff, sizeof(line_buff), &result); -	return result; -} -#endif  /**********************************************************************/  #ifdef L___getgrouplist_internal diff --git a/libc/pwd_grp/pwd_grp_internal.c b/libc/pwd_grp/pwd_grp_internal.c index d2fde1171..104f532e4 100644 --- a/libc/pwd_grp/pwd_grp_internal.c +++ b/libc/pwd_grp/pwd_grp_internal.c @@ -36,18 +36,10 @@  #endif  /**********************************************************************/ -/* Sizes for statically allocated buffers. */ - -/* If you change these values, also change _SC_GETPW_R_SIZE_MAX and - * _SC_GETGR_R_SIZE_MAX in libc/unistd/sysconf.c to match */ -#define PWD_BUFFER_SIZE 256 -#define GRP_BUFFER_SIZE 256 - -/**********************************************************************/  /* Prototypes for internal functions. */ -#ifndef GETXXKEY_R_FUNC -#error GETXXKEY_R_FUNC is not defined! +#if !defined(GETXXKEY_R_FUNC) && !defined(GETXXKEY_FUNC) +#error GETXXKEY_R_FUNC/GETXXKEY_FUNC are not defined!  #endif  /**********************************************************************/  #ifdef GETXXKEY_R_FUNC @@ -89,9 +81,44 @@ int GETXXKEY_R_FUNC(DO_GETXXKEY_R_KEYTYPE key,  }  libc_hidden_def(GETXXKEY_R_FUNC) +#endif /* GETXXKEY_R_FUNC */ + +/**********************************************************************/ +#ifdef GETXXKEY_FUNC + +#define REENTRANT_NAME APPEND_R(GETXXKEY_FUNC) +#define APPEND_R(name) APPEND_R1(name) +#define APPEND_R1(name) name##_r + +GETXXKEY_ENTTYPE *GETXXKEY_FUNC(GETXXKEY_ADD_PARAMS) +{ +	static char buffer[GETXXKEY_BUFLEN]; +	static GETXXKEY_ENTTYPE resultbuf; +	GETXXKEY_ENTTYPE *result; + +# ifdef GETXXKEY_ADD_VARIABLES +	REENTRANT_NAME(GETXXKEY_ADD_VARIABLES, &resultbuf, buffer, sizeof(buffer), &result); +# else +	REENTRANT_NAME(&resultbuf, buffer, sizeof(buffer), &result); +# endif +	return result; +} +#ifdef GETXXKEY_FUNC_HIDDEN +libc_hidden_def(GETXXKEY_FUNC)  #endif + +#undef REENTRANT_NAME +#undef APPEND_R +#undef APPEND_R1 +#endif /* GETXXKEY_FUNC */ +  /**********************************************************************/ -#undef GETXXKEY_R_FUNC_HIDDEN +#undef GETXXKEY_FUNC +#undef GETXXKEY_ENTTYPE +#undef GETXXKEY_BUFLEN +#undef GETXXKEY_FUNC_HIDDEN +#undef GETXXKEY_ADD_PARAMS +#undef GETXXKEY_ADD_VARIABLES  #undef GETXXKEY_R_FUNC  #undef GETXXKEY_R_PARSER  #undef GETXXKEY_R_ENTTYPE diff --git a/libc/pwd_grp/sgetspent.c b/libc/pwd_grp/sgetspent.c index 877a2478a..990c0b6a4 100644 --- a/libc/pwd_grp/sgetspent.c +++ b/libc/pwd_grp/sgetspent.c @@ -4,5 +4,9 @@   * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.   */ -#define L_sgetspent +#define GETXXKEY_FUNC		sgetspent +#define GETXXKEY_ENTTYPE	struct spwd +#define GETXXKEY_ADD_PARAMS	const char *string +#define GETXXKEY_ADD_VARIABLES	string +#define GETXXKEY_BUFLEN		__UCLIBC_PWD_BUFFER_SIZE__  #include "pwd_grp.c"  | 
