Change internal uid datatype from __uid16_t to __uid32_t

throughout.
	* cygwin.din: Export new symbols getpwuid32, getpwuid_r32, getuid32,
	geteuid32, setuid32, seteuid32.
	* passwd.cc (getpwuid32): New function.
	(getpwuid_r32): Ditto.
	* syscalls.cc (seteuid32): Ditto.
	(setuid32): Ditto.
	* uinfo.cc (getuid32): Ditto.
	(geteuid32): Ditto.
	* winsup.h (uid16touid32): New macro, correclt casting from __uid16_t
	to __uid32_t.
	(gid16togid32): Ditto fir gids.
	(getuid32): Declare.
	(geteuid32): Ditto.
	(getpwuid32): Ditto.
	* include/sys/cygwin.h (struct external_pinfo): Add members uid32 and
	gid32.
This commit is contained in:
Corinna Vinschen
2002-05-29 15:04:29 +00:00
parent 9854c44c43
commit a8d7ae61e7
17 changed files with 135 additions and 55 deletions

View File

@@ -186,7 +186,7 @@ read_etc_passwd ()
/* Cygwin internal */
/* If this ever becomes non-reentrant, update all the getpw*_r functions */
static struct passwd *
search_for (__uid16_t uid, const char *name)
search_for (__uid32_t uid, const char *name)
{
struct passwd *res = 0;
struct passwd *default_pw = 0;
@@ -202,7 +202,7 @@ search_for (__uid16_t uid, const char *name)
if (strcasematch (name, res->pw_name))
return res;
}
else if (uid == res->pw_uid)
else if (uid == (__uid32_t) res->pw_uid)
return res;
}
@@ -217,7 +217,7 @@ search_for (__uid16_t uid, const char *name)
}
extern "C" struct passwd *
getpwuid (__uid16_t uid)
getpwuid32 (__uid32_t uid)
{
if (passwd_state <= initializing)
read_etc_passwd ();
@@ -227,8 +227,14 @@ getpwuid (__uid16_t uid)
return search_for (uid, 0);
}
extern "C" struct passwd *
getpwuid (__uid16_t uid)
{
return getpwuid32 (uid16touid32 (uid));
}
extern "C" int
getpwuid_r (__uid16_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result)
getpwuid_r32 (__uid32_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result)
{
*result = NULL;
@@ -269,6 +275,12 @@ getpwuid_r (__uid16_t uid, struct passwd *pwd, char *buffer, size_t bufsize, str
return 0;
}
extern "C" int
getpwuid_r (__uid16_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result)
{
return getpwuid_r32 (uid16touid32 (uid), pwd, buffer, bufsize, result);
}
extern "C" struct passwd *
getpwnam (const char *name)
{