X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=inline;f=tests%2Ftest-userspec.c;h=65f60da5c39585f58d720fc66f60131da4a0f153;hb=4ba5a2c9819f7bb429a2910f0289976932c6a6cf;hp=3e101f3c40143a717bf488e33a75543cd0b5ca6f;hpb=c96d2778819f17724b099eebf105f960f74d1c42;p=gnulib.git diff --git a/tests/test-userspec.c b/tests/test-userspec.c index 3e101f3c4..65f60da5c 100644 --- a/tests/test-userspec.c +++ b/tests/test-userspec.c @@ -1,5 +1,5 @@ /* Test userspec.c - Copyright (C) 2009-2010 Free Software Foundation, Inc. + Copyright (C) 2009-2011 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,12 +35,12 @@ struct test { - char *in; + const char *in; uid_t uid; gid_t gid; - char *user_name; - char *group_name; - char *result; + const char *user_name; + const char *group_name; + const char *result; }; static struct test T[] = @@ -101,36 +101,41 @@ main (void) { unsigned int i; int fail = 0; - uid_t uid; /* Find a UID that has both a user name and login group name, but skip UID 0. */ - for (uid = 1200; 0 < uid; uid--) - { - struct group *gr; - struct passwd *pw = getpwuid (uid); - unsigned int j; - size_t len; - if (!pw || !pw->pw_name || !(gr = getgrgid (pw->pw_gid)) || !gr->gr_name) - continue; - j = ARRAY_CARDINALITY (T) - 2; - assert (T[j].in == NULL); - assert (T[j+1].in == NULL); - len = strlen (pw->pw_name); - - /* Store "username:" in T[j].in. */ - T[j].in = xmalloc (len + 1 + 1); - memcpy (T[j].in, pw->pw_name, len); - T[j].in[len] = ':'; - T[j].in[len+1] = '\0'; - - T[j].uid = uid; - T[j].gid = gr->gr_gid; - T[j].user_name = xstrdup (pw->pw_name); - T[j].group_name = xstrdup (gr->gr_name); - T[j].result = NULL; - break; - } + { + uid_t uid; + for (uid = 1200; 0 < uid; uid--) + { + struct group *gr; + struct passwd *pw = getpwuid (uid); + unsigned int j; + size_t len; + if (!pw || !pw->pw_name || !(gr = getgrgid (pw->pw_gid)) || !gr->gr_name) + continue; + j = ARRAY_CARDINALITY (T) - 2; + assert (T[j].in == NULL); + assert (T[j+1].in == NULL); + len = strlen (pw->pw_name); + + /* Store "username:" in T[j].in. */ + { + char *t = xmalloc (len + 1 + 1); + memcpy (t, pw->pw_name, len); + t[len] = ':'; + t[len+1] = '\0'; + T[j].in = t; + } + + T[j].uid = uid; + T[j].gid = gr->gr_gid; + T[j].user_name = xstrdup (pw->pw_name); + T[j].group_name = xstrdup (gr->gr_name); + T[j].result = NULL; + break; + } + } for (i = 0; T[i].in; i++) {