Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2009-01-26 16:20:46 +0300
committerCorinna Vinschen <corinna@vinschen.de>2009-01-26 16:20:46 +0300
commitb89fb103f2ceabe3eb47e5220056c7500e3e95bd (patch)
tree2f091d2b7a559f86c30d999530fdc88769c1608d /winsup/cygwin/passwd.cc
parent93e884989afd2f702c758a9b635c9ea9ca394280 (diff)
* grp.cc (getgrgid_r): Simplify code by using stpcpy.
(getgrnam_r): Ditto. * passwd.cc (getpwuid_r32): Simplify code by using stpcpy. (getpwnam_r): Ditto.
Diffstat (limited to 'winsup/cygwin/passwd.cc')
-rw-r--r--winsup/cygwin/passwd.cc44
1 files changed, 17 insertions, 27 deletions
diff --git a/winsup/cygwin/passwd.cc b/winsup/cygwin/passwd.cc
index b034cf412..8c51c22a0 100644
--- a/winsup/cygwin/passwd.cc
+++ b/winsup/cygwin/passwd.cc
@@ -1,6 +1,6 @@
/* passwd.cc: getpwnam () and friends
- Copyright 1996, 1997, 1998, 2001, 2002, 2003, 2007 Red Hat, Inc.
+ Copyright 1996, 1997, 1998, 2001, 2002, 2003, 2007, 2008, 2009 Red Hat, Inc.
This file is part of Cygwin.
@@ -159,9 +159,9 @@ getpwuid_r32 (__uid32_t uid, struct passwd *pwd, char *buffer, size_t bufsize, s
return 0;
/* check needed buffer size. */
- size_t needsize = strlen (temppw->pw_name) + strlen (temppw->pw_dir) +
- strlen (temppw->pw_shell) + strlen (temppw->pw_gecos) +
- strlen (temppw->pw_passwd) + 5;
+ size_t needsize = strlen (temppw->pw_name) + strlen (temppw->pw_passwd)
+ + strlen (temppw->pw_gecos) + strlen (temppw->pw_dir)
+ + strlen (temppw->pw_shell) + 5;
if (needsize > bufsize)
return ERANGE;
@@ -169,17 +169,12 @@ getpwuid_r32 (__uid32_t uid, struct passwd *pwd, char *buffer, size_t bufsize, s
*result = pwd;
pwd->pw_uid = temppw->pw_uid;
pwd->pw_gid = temppw->pw_gid;
- pwd->pw_name = buffer;
- pwd->pw_dir = pwd->pw_name + strlen (temppw->pw_name) + 1;
- pwd->pw_shell = pwd->pw_dir + strlen (temppw->pw_dir) + 1;
- pwd->pw_gecos = pwd->pw_shell + strlen (temppw->pw_shell) + 1;
+ buffer = stpcpy (pwd->pw_name = buffer, temppw->pw_name);
+ buffer = stpcpy (pwd->pw_passwd = buffer + 1, temppw->pw_passwd);
+ buffer = stpcpy (pwd->pw_gecos = buffer + 1, temppw->pw_gecos);
+ buffer = stpcpy (pwd->pw_dir = buffer + 1, temppw->pw_dir);
+ stpcpy (pwd->pw_shell = buffer + 1, temppw->pw_shell);
pwd->pw_comment = NULL;
- pwd->pw_passwd = pwd->pw_gecos + strlen (temppw->pw_gecos) + 1;
- strcpy (pwd->pw_name, temppw->pw_name);
- strcpy (pwd->pw_dir, temppw->pw_dir);
- strcpy (pwd->pw_shell, temppw->pw_shell);
- strcpy (pwd->pw_gecos, temppw->pw_gecos);
- strcpy (pwd->pw_passwd, temppw->pw_passwd);
return 0;
}
@@ -217,9 +212,9 @@ getpwnam_r (const char *nam, struct passwd *pwd, char *buffer, size_t bufsize, s
return 0;
/* check needed buffer size. */
- size_t needsize = strlen (temppw->pw_name) + strlen (temppw->pw_dir) +
- strlen (temppw->pw_shell) + strlen (temppw->pw_gecos) +
- strlen (temppw->pw_passwd) + 5;
+ size_t needsize = strlen (temppw->pw_name) + strlen (temppw->pw_passwd)
+ + strlen (temppw->pw_gecos) + strlen (temppw->pw_dir)
+ + strlen (temppw->pw_shell) + 5;
if (needsize > bufsize)
return ERANGE;
@@ -227,17 +222,12 @@ getpwnam_r (const char *nam, struct passwd *pwd, char *buffer, size_t bufsize, s
*result = pwd;
pwd->pw_uid = temppw->pw_uid;
pwd->pw_gid = temppw->pw_gid;
- pwd->pw_name = buffer;
- pwd->pw_dir = pwd->pw_name + strlen (temppw->pw_name) + 1;
- pwd->pw_shell = pwd->pw_dir + strlen (temppw->pw_dir) + 1;
- pwd->pw_gecos = pwd->pw_shell + strlen (temppw->pw_shell) + 1;
+ buffer = stpcpy (pwd->pw_name = buffer, temppw->pw_name);
+ buffer = stpcpy (pwd->pw_passwd = buffer + 1, temppw->pw_passwd);
+ buffer = stpcpy (pwd->pw_gecos = buffer + 1, temppw->pw_gecos);
+ buffer = stpcpy (pwd->pw_dir = buffer + 1, temppw->pw_dir);
+ stpcpy (pwd->pw_shell = buffer + 1, temppw->pw_shell);
pwd->pw_comment = NULL;
- pwd->pw_passwd = pwd->pw_gecos + strlen (temppw->pw_gecos) + 1;
- strcpy (pwd->pw_name, temppw->pw_name);
- strcpy (pwd->pw_dir, temppw->pw_dir);
- strcpy (pwd->pw_shell, temppw->pw_shell);
- strcpy (pwd->pw_gecos, temppw->pw_gecos);
- strcpy (pwd->pw_passwd, temppw->pw_passwd);
return 0;
}