OSDN Git Service

* grp.cc (getgrgid_r): Simplify code by using stpcpy.
authorcorinna <corinna>
Mon, 26 Jan 2009 13:20:46 +0000 (13:20 +0000)
committercorinna <corinna>
Mon, 26 Jan 2009 13:20:46 +0000 (13:20 +0000)
(getgrnam_r): Ditto.
* passwd.cc (getpwuid_r32): Simplify code by using stpcpy.
(getpwnam_r): Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/grp.cc
winsup/cygwin/passwd.cc

index 73eb35a..c63b89f 100644 (file)
@@ -1,5 +1,12 @@
 2009-01-26  Corinna Vinschen  <corinna@vinschen.de>
 
+       * grp.cc (getgrgid_r): Simplify code by using stpcpy.
+       (getgrnam_r): Ditto.
+       * passwd.cc (getpwuid_r32): Simplify code by using stpcpy.
+       (getpwnam_r): Ditto.
+
+2009-01-26  Corinna Vinschen  <corinna@vinschen.de>
+
        * uinfo.cc (pwdgrp::load): Open file with FILE_OPEN_FOR_BACKUP_INTENT
        flag.
 
index d9fe4f3..970e626 100644 (file)
@@ -1,7 +1,7 @@
 /* grp.cc
 
    Copyright 1996, 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-   2007 Red Hat, Inc.
+   2007, 2008, 2009 Red Hat, Inc.
 
    Original stubs by Jason Molenda of Cygnus Support, crash@cygnus.com
    First implementation by Gunther Ebert, gunther.ebert@ixos-leipzig.de
@@ -195,20 +195,13 @@ getgrgid_r (__gid32_t gid, struct __group32 *grp, char *buffer, size_t bufsize,
   /* make a copy of tempgr */
   *result = grp;
   grp->gr_gid = tempgr->gr_gid;
-  grp->gr_name = buffer;
-  grp->gr_passwd = grp->gr_name + strlen (tempgr->gr_name) + 1;
-  grp->gr_mem = (char **) (grp->gr_passwd + strlen (tempgr->gr_passwd) + 1);
-  char *mem = (char *) grp->gr_mem + (i + 1) * sizeof (char *);
+  buffer = stpcpy (grp->gr_name = buffer, tempgr->gr_name);
+  buffer = stpcpy (grp->gr_passwd = buffer + 1, tempgr->gr_passwd);
+  grp->gr_mem = (char **) (buffer + 1);
+  buffer = (char *) grp->gr_mem + (i + 1) * sizeof (char *);
   for (i = 0; tempgr->gr_mem[i]; ++i)
-    {
-      grp->gr_mem[i] = mem;
-      mem += strlen (tempgr->gr_mem[i]) + 1;
-    }
+    buffer = stpcpy (grp->gr_mem[i] = buffer, tempgr->gr_mem[i]) + 1;
   grp->gr_mem[i] = NULL;
-  strcpy (grp->gr_name, tempgr->gr_name);
-  strcpy (grp->gr_passwd, tempgr->gr_passwd);
-  for (i = 0; tempgr->gr_mem[i]; ++i)
-    strcpy (grp->gr_mem[i], tempgr->gr_mem[i]);
   return 0;
 }
 
@@ -252,20 +245,13 @@ getgrnam_r (const char *nam, struct __group32 *grp, char *buffer,
   /* make a copy of tempgr */
   *result = grp;
   grp->gr_gid = tempgr->gr_gid;
-  grp->gr_name = buffer;
-  grp->gr_passwd = grp->gr_name + strlen (tempgr->gr_name) + 1;
-  grp->gr_mem = (char **) (grp->gr_passwd + strlen (tempgr->gr_passwd) + 1);
-  char *mem = (char *) grp->gr_mem + (i + 1) * sizeof (char *);
+  buffer = stpcpy (grp->gr_name = buffer, tempgr->gr_name);
+  buffer = stpcpy (grp->gr_passwd = buffer + 1, tempgr->gr_passwd);
+  grp->gr_mem = (char **) (buffer + 1);
+  buffer = (char *) grp->gr_mem + (i + 1) * sizeof (char *);
   for (i = 0; tempgr->gr_mem[i]; ++i)
-    {
-      grp->gr_mem[i] = mem;
-      mem += strlen (tempgr->gr_mem[i]) + 1;
-    }
+    buffer = stpcpy (grp->gr_mem[i] = buffer, tempgr->gr_mem[i]) + 1;
   grp->gr_mem[i] = NULL;
-  strcpy (grp->gr_name, tempgr->gr_name);
-  strcpy (grp->gr_passwd, tempgr->gr_passwd);
-  for (i = 0; tempgr->gr_mem[i]; ++i)
-    strcpy (grp->gr_mem[i], tempgr->gr_mem[i]);
   return 0;
 }
 
index b034cf4..8c51c22 100644 (file)
@@ -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;
 }