summaryrefslogtreecommitdiff
path: root/libc/pwd_grp/pwd_grp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/pwd_grp/pwd_grp.c')
-rw-r--r--libc/pwd_grp/pwd_grp.c130
1 files changed, 98 insertions, 32 deletions
diff --git a/libc/pwd_grp/pwd_grp.c b/libc/pwd_grp/pwd_grp.c
index 601568599..ced5051f8 100644
--- a/libc/pwd_grp/pwd_grp.c
+++ b/libc/pwd_grp/pwd_grp.c
@@ -18,6 +18,8 @@
*
*/
+#define setgroups __setgroups
+
#define _GNU_SOURCE
#include <features.h>
#include <stdio.h>
@@ -38,6 +40,15 @@
#include <pthread.h>
#endif
+extern int __getspnam_r (__const char *__name, struct spwd *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct spwd **__result) attribute_hidden;
+
+extern int __getpwuid_r (__uid_t __uid,
+ struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct passwd **__restrict __result) attribute_hidden;
+
/**********************************************************************/
/* Sizes for staticly allocated buffers. */
@@ -73,7 +84,7 @@ extern int __pgsreader(int (*__parserfunc)(void *d, char *line), void *data,
/**********************************************************************/
#ifdef L_fgetpwent_r
-int fgetpwent_r(FILE *__restrict stream, struct passwd *__restrict resultbuf,
+int attribute_hidden __fgetpwent_r(FILE *__restrict stream, struct passwd *__restrict resultbuf,
char *__restrict buffer, size_t buflen,
struct passwd **__restrict result)
{
@@ -87,12 +98,13 @@ int fgetpwent_r(FILE *__restrict stream, struct passwd *__restrict resultbuf,
return rv;
}
+strong_alias(__fgetpwent_r,fgetpwent_r)
#endif
/**********************************************************************/
#ifdef L_fgetgrent_r
-int fgetgrent_r(FILE *__restrict stream, struct group *__restrict resultbuf,
+int attribute_hidden __fgetgrent_r(FILE *__restrict stream, struct group *__restrict resultbuf,
char *__restrict buffer, size_t buflen,
struct group **__restrict result)
{
@@ -106,12 +118,13 @@ int fgetgrent_r(FILE *__restrict stream, struct group *__restrict resultbuf,
return rv;
}
+strong_alias(__fgetgrent_r,fgetgrent_r)
#endif
/**********************************************************************/
#ifdef L_fgetspent_r
-int fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf,
+int attribute_hidden __fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf,
char *__restrict buffer, size_t buflen,
struct spwd **__restrict result)
{
@@ -125,6 +138,7 @@ int fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf,
return rv;
}
+strong_alias(__fgetspent_r,fgetspent_r)
#endif
/**********************************************************************/
@@ -134,13 +148,18 @@ int fgetspent_r(FILE *__restrict stream, struct spwd *__restrict resultbuf,
/**********************************************************************/
#ifdef L_fgetpwent
+extern int __fgetpwent_r (FILE *__restrict __stream,
+ struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct passwd **__restrict __result) attribute_hidden;
+
struct passwd *fgetpwent(FILE *stream)
{
static char buffer[PWD_BUFFER_SIZE];
static struct passwd resultbuf;
struct passwd *result;
- fgetpwent_r(stream, &resultbuf, buffer, sizeof(buffer), &result);
+ __fgetpwent_r(stream, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -148,13 +167,18 @@ struct passwd *fgetpwent(FILE *stream)
/**********************************************************************/
#ifdef L_fgetgrent
+extern int __fgetgrent_r (FILE *__restrict __stream,
+ struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct group **__restrict __result) attribute_hidden;
+
struct group *fgetgrent(FILE *stream)
{
static char buffer[GRP_BUFFER_SIZE];
static struct group resultbuf;
struct group *result;
- fgetgrent_r(stream, &resultbuf, buffer, sizeof(buffer), &result);
+ __fgetgrent_r(stream, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -162,13 +186,17 @@ struct group *fgetgrent(FILE *stream)
/**********************************************************************/
#ifdef L_fgetspent
+extern int __fgetspent_r (FILE *__stream, struct spwd *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct spwd **__result) attribute_hidden;
+
struct spwd *fgetspent(FILE *stream)
{
static char buffer[PWD_BUFFER_SIZE];
static struct spwd resultbuf;
struct spwd *result;
- fgetspent_r(stream, &resultbuf, buffer, sizeof(buffer), &result);
+ __fgetspent_r(stream, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -176,7 +204,7 @@ struct spwd *fgetspent(FILE *stream)
/**********************************************************************/
#ifdef L_sgetspent_r
-int sgetspent_r(const char *string, struct spwd *result_buf,
+int attribute_hidden __sgetspent_r(const char *string, struct spwd *result_buf,
char *buffer, size_t buflen, struct spwd **result)
{
int rv = ERANGE;
@@ -203,6 +231,7 @@ int sgetspent_r(const char *string, struct spwd *result_buf,
DONE:
return rv;
}
+strong_alias(__sgetspent_r,sgetspent_r)
#endif
/**********************************************************************/
@@ -212,9 +241,10 @@ int sgetspent_r(const char *string, struct spwd *result_buf,
#endif
#ifdef L_getpwnam_r
-#define GETXXKEY_R_FUNC getpwnam_r
+#define GETXXKEY_R_FUNC_HIDDEN __getpwnam_r
+#define GETXXKEY_R_FUNC getpwnam_r
#define GETXXKEY_R_PARSER __parsepwent
-#define GETXXKEY_R_ENTTYPE struct passwd
+#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
@@ -222,9 +252,10 @@ int sgetspent_r(const char *string, struct spwd *result_buf,
#endif
#ifdef L_getgrnam_r
-#define GETXXKEY_R_FUNC getgrnam_r
+#define GETXXKEY_R_FUNC_HIDDEN __getgrnam_r
+#define GETXXKEY_R_FUNC getgrnam_r
#define GETXXKEY_R_PARSER __parsegrent
-#define GETXXKEY_R_ENTTYPE struct group
+#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
@@ -232,9 +263,10 @@ int sgetspent_r(const char *string, struct spwd *result_buf,
#endif
#ifdef L_getspnam_r
-#define GETXXKEY_R_FUNC getspnam_r
+#define GETXXKEY_R_FUNC_HIDDEN __getspnam_r
+#define GETXXKEY_R_FUNC getspnam_r
#define GETXXKEY_R_PARSER __parsespent
-#define GETXXKEY_R_ENTTYPE struct spwd
+#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
@@ -242,9 +274,10 @@ int sgetspent_r(const char *string, struct spwd *result_buf,
#endif
#ifdef L_getpwuid_r
-#define GETXXKEY_R_FUNC getpwuid_r
+#define GETXXKEY_R_FUNC_HIDDEN __getpwuid_r
+#define GETXXKEY_R_FUNC getpwuid_r
#define GETXXKEY_R_PARSER __parsepwent
-#define GETXXKEY_R_ENTTYPE struct passwd
+#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
@@ -252,9 +285,10 @@ int sgetspent_r(const char *string, struct spwd *result_buf,
#endif
#ifdef L_getgrgid_r
-#define GETXXKEY_R_FUNC getgrgid_r
+#define GETXXKEY_R_FUNC_HIDDEN __getgrgid_r
+#define GETXXKEY_R_FUNC getgrgid_r
#define GETXXKEY_R_PARSER __parsegrent
-#define GETXXKEY_R_ENTTYPE struct group
+#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
@@ -270,7 +304,7 @@ struct passwd *getpwuid(uid_t uid)
static struct passwd resultbuf;
struct passwd *result;
- getpwuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result);
+ __getpwuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -278,13 +312,17 @@ struct passwd *getpwuid(uid_t uid)
/**********************************************************************/
#ifdef L_getgrgid
+extern int __getgrgid_r (__gid_t __gid, struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct group **__restrict __result) attribute_hidden;
+
struct group *getgrgid(gid_t gid)
{
static char buffer[GRP_BUFFER_SIZE];
static struct group resultbuf;
struct group *result;
- getgrgid_r(gid, &resultbuf, buffer, sizeof(buffer), &result);
+ __getgrgid_r(gid, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -306,8 +344,8 @@ int getspuid_r(uid_t uid, struct spwd *__restrict resultbuf,
char pwd_buff[PWD_BUFFER_SIZE];
*result = NULL;
- if (!(rv = getpwuid_r(uid, &password, pwd_buff, sizeof(pwd_buff), &pp))) {
- rv = getspnam_r(password.pw_name, resultbuf, buffer, buflen, result);
+ if (!(rv = __getpwuid_r(uid, &password, pwd_buff, sizeof(pwd_buff), &pp))) {
+ rv = __getspnam_r(password.pw_name, resultbuf, buffer, buflen, result);
}
return rv;
@@ -334,13 +372,18 @@ struct spwd *getspuid(uid_t uid)
/**********************************************************************/
#ifdef L_getpwnam
+extern int __getpwnam_r (__const char *__restrict __name,
+ struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct passwd **__restrict __result) attribute_hidden;
+
struct passwd *getpwnam(const char *name)
{
static char buffer[PWD_BUFFER_SIZE];
static struct passwd resultbuf;
struct passwd *result;
- getpwnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
+ __getpwnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -348,13 +391,18 @@ struct passwd *getpwnam(const char *name)
/**********************************************************************/
#ifdef L_getgrnam
+extern int __getgrnam_r (__const char *__restrict __name,
+ struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct group **__restrict __result) attribute_hidden;
+
struct group *getgrnam(const char *name)
{
static char buffer[GRP_BUFFER_SIZE];
static struct group resultbuf;
struct group *result;
- getgrnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
+ __getgrnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -368,7 +416,7 @@ struct spwd *getspnam(const char *name)
static struct spwd resultbuf;
struct spwd *result;
- getspnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
+ __getspnam_r(name, &resultbuf, buffer, sizeof(buffer), &result);
return result;
}
@@ -384,7 +432,7 @@ int getpw(uid_t uid, char *buf)
if (!buf) {
__set_errno(EINVAL);
- } else if (!getpwuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result)) {
+ } else if (!__getpwuid_r(uid, &resultbuf, buffer, sizeof(buffer), &result)) {
if (sprintf(buf, "%s:%s:%lu:%lu:%s:%s:%s\n",
resultbuf.pw_name, resultbuf.pw_passwd,
(unsigned long)(resultbuf.pw_uid),
@@ -434,7 +482,7 @@ void endpwent(void)
}
-int getpwent_r(struct passwd *__restrict resultbuf,
+int attribute_hidden __getpwent_r(struct passwd *__restrict resultbuf,
char *__restrict buffer, size_t buflen,
struct passwd **__restrict result)
{
@@ -462,6 +510,7 @@ int getpwent_r(struct passwd *__restrict resultbuf,
return rv;
}
+strong_alias(__getpwent_r,getpwent_r)
#endif
/**********************************************************************/
@@ -488,7 +537,7 @@ void endgrent(void)
UNLOCK;
}
-int getgrent_r(struct group *__restrict resultbuf,
+int attribute_hidden __getgrent_r(struct group *__restrict resultbuf,
char *__restrict buffer, size_t buflen,
struct group **__restrict result)
{
@@ -516,6 +565,7 @@ int getgrent_r(struct group *__restrict resultbuf,
return rv;
}
+strong_alias(__getgrent_r,getgrent_r)
#endif
/**********************************************************************/
@@ -542,7 +592,7 @@ void endspent(void)
UNLOCK;
}
-int getspent_r(struct spwd *resultbuf, char *buffer,
+int attribute_hidden __getspent_r(struct spwd *resultbuf, char *buffer,
size_t buflen, struct spwd **result)
{
int rv;
@@ -569,10 +619,15 @@ int getspent_r(struct spwd *resultbuf, char *buffer,
return rv;
}
+strong_alias(__getspent_r,getspent_r)
#endif
/**********************************************************************/
#ifdef L_getpwent
+
+extern int __getpwent_r (struct passwd *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct passwd **__restrict __result) attribute_hidden;
struct passwd *getpwent(void)
{
@@ -580,7 +635,7 @@ struct passwd *getpwent(void)
static struct passwd pwd;
struct passwd *result;
- getpwent_r(&pwd, line_buff, sizeof(line_buff), &result);
+ __getpwent_r(&pwd, line_buff, sizeof(line_buff), &result);
return result;
}
@@ -588,13 +643,17 @@ struct passwd *getpwent(void)
/**********************************************************************/
#ifdef L_getgrent
+extern int __getgrent_r (struct group *__restrict __resultbuf,
+ char *__restrict __buffer, size_t __buflen,
+ struct group **__restrict __result) attribute_hidden;
+
struct group *getgrent(void)
{
static char line_buff[GRP_BUFFER_SIZE];
static struct group gr;
struct group *result;
- getgrent_r(&gr, line_buff, sizeof(line_buff), &result);
+ __getgrent_r(&gr, line_buff, sizeof(line_buff), &result);
return result;
}
@@ -602,13 +661,16 @@ struct group *getgrent(void)
/**********************************************************************/
#ifdef L_getspent
+extern int __getspent_r (struct spwd *__result_buf, char *__buffer,
+ size_t __buflen, struct spwd **__result) attribute_hidden;
+
struct spwd *getspent(void)
{
static char line_buff[PWD_BUFFER_SIZE];
static struct spwd spwd;
struct spwd *result;
- getspent_r(&spwd, line_buff, sizeof(line_buff), &result);
+ __getspent_r(&spwd, line_buff, sizeof(line_buff), &result);
return result;
}
@@ -616,13 +678,17 @@ struct spwd *getspent(void)
/**********************************************************************/
#ifdef L_sgetspent
+extern int __sgetspent_r (__const char *__string, struct spwd *__result_buf,
+ char *__buffer, size_t __buflen,
+ struct spwd **__result) attribute_hidden;
+
struct spwd *sgetspent(const char *string)
{
static char line_buff[PWD_BUFFER_SIZE];
static struct spwd spwd;
struct spwd *result;
- sgetspent_r(string, &spwd, line_buff, sizeof(line_buff), &result);
+ __sgetspent_r(string, &spwd, line_buff, sizeof(line_buff), &result);
return result;
}