X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fuserspec.c;h=c5ac3096c475a35b3e623db87f4f422da542bb65;hb=9399ec2583eedf5a9f9b76baae196d613d6035d7;hp=c7045324549b415d57642370758bbbe6792a8b4d;hpb=26a0ec5ba4c1399b08249a830626c1296896bdcd;p=gnulib.git diff --git a/lib/userspec.c b/lib/userspec.c index c70453245..c5ac3096c 100644 --- a/lib/userspec.c +++ b/lib/userspec.c @@ -18,38 +18,43 @@ /* Written by David MacKenzie . */ #ifdef HAVE_CONFIG_H -#if defined (CONFIG_BROKETS) -/* We use instead of "config.h" so that a compilation - using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h - (which it would do because it found this file in $srcdir). */ #include -#else -#include "config.h" -#endif #endif -/* FIXME: include alloca junk. */ +#ifdef __GNUC__ +# define alloca __builtin_alloca +#else +# ifdef HAVE_ALLOCA_H +# include +# else +# ifdef _AIX + #pragma alloca +# else +char *alloca (); +# endif +# endif +#endif #include #include #include #include -#if defined(STDC_HEADERS) || defined(HAVE_STRING_H) -#include -#ifndef index -#define index strchr -#endif +#ifdef HAVE_STRING_H +# include #else -#include +# include +# ifndef strchr +# define strchr index +# endif #endif #ifdef STDC_HEADERS -#include +# include #endif #ifdef HAVE_UNISTD_H -#include +# include #endif #ifndef _POSIX_VERSION @@ -116,7 +121,6 @@ parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg) char *spec; /* A copy we can write on. */ struct passwd *pwd; struct group *grp; - int spec_len; char *g, *u, *separator; char *groupname; @@ -124,15 +128,12 @@ parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg) *username_arg = *groupname_arg = NULL; groupname = NULL; - /* FIXME: use this instead: V_STRDUP (spec, spec_arg); */ - spec_len = strlen (spec_arg); - spec = (char *) alloca (strlen (spec_arg) + 1); - strcpy (spec, spec_arg); + V_STRDUP (spec, spec_arg); /* Find the separator if there is one. */ - separator = index (spec, ':'); + separator = strchr (spec, ':'); if (separator == NULL) - separator = index (spec, '.'); + separator = strchr (spec, '.'); /* Replace separator with a NUL. */ if (separator != NULL) @@ -241,7 +242,7 @@ parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg) return error_msg; } -#ifdef TESTING +#ifdef TEST #define NULL_CHECK(s) ((s) == NULL ? "(null)" : (s))