projects
/
gnulib.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
new version from FSF
[gnulib.git]
/
lib
/
userspec.c
diff --git
a/lib/userspec.c
b/lib/userspec.c
index
c704532
..
c6a49fa
100644
(file)
--- a/
lib/userspec.c
+++ b/
lib/userspec.c
@@
-18,38
+18,43
@@
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
\f
#ifdef HAVE_CONFIG_H
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
\f
#ifdef HAVE_CONFIG_H
-#if defined (CONFIG_BROKETS)
-/* We use <config.h> 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 <config.h>
#include <config.h>
-#else
-#include "config.h"
-#endif
#endif
#endif
-/* FIXME: include alloca junk. */
+#ifdef __GNUC__
+# define alloca __builtin_alloca
+#else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# ifdef _AIX
+ #pragma alloca
+# else
+char *alloca ();
+# endif
+# endif
+#endif
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
#include <stdio.h>
#include <sys/types.h>
#include <pwd.h>
#include <grp.h>
-#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
-#include <string.h>
-#ifndef index
-#define index strchr
-#endif
+#ifdef HAVE_STRING_H
+# include <string.h>
#else
#else
-#include <strings.h>
+# include <strings.h>
+# ifndef strchr
+# define strchr index
+# endif
#endif
#ifdef STDC_HEADERS
#endif
#ifdef STDC_HEADERS
-#include <stdlib.h>
+#
include <stdlib.h>
#endif
#ifdef HAVE_UNISTD_H
#endif
#ifdef HAVE_UNISTD_H
-#include <unistd.h>
+#
include <unistd.h>
#endif
#ifndef _POSIX_VERSION
#endif
#ifndef _POSIX_VERSION
@@
-58,9
+63,12
@@
struct group *getgrnam ();
struct group *getgrgid ();
#endif
struct group *getgrgid ();
#endif
-#ifdef _POSIX_SOURCE
-#define endpwent()
-#define endgrent()
+#ifndef HAVE_ENDGRENT
+# define endgrent() ((void) 0)
+#endif
+
+#ifndef HAVE_ENDPWENT
+# define endpwent() ((void) 0)
#endif
/* Perform the equivalent of the statement `dest = strdup (src);',
#endif
/* Perform the equivalent of the statement `dest = strdup (src);',
@@
-83,7
+91,7
@@
char *strdup ();
otherwise return 0. */
static int
otherwise return 0. */
static int
-isnumber (str)
+is
_
number (str)
const char *str;
{
for (; *str; str++)
const char *str;
{
for (; *str; str++)
@@
-116,7
+124,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;
char *spec; /* A copy we can write on. */
struct passwd *pwd;
struct group *grp;
- int spec_len;
char *g, *u, *separator;
char *groupname;
char *g, *u, *separator;
char *groupname;
@@
-124,15
+131,12
@@
parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg)
*username_arg = *groupname_arg = NULL;
groupname = NULL;
*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. */
/* Find the separator if there is one. */
- separator =
index
(spec, ':');
+ separator =
strchr
(spec, ':');
if (separator == NULL)
if (separator == NULL)
- separator =
index
(spec, '.');
+ separator =
strchr
(spec, '.');
/* Replace separator with a NUL. */
if (separator != NULL)
/* Replace separator with a NUL. */
if (separator != NULL)
@@
-155,7
+159,7
@@
parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg)
if (pwd == NULL)
{
if (pwd == NULL)
{
- if (!isnumber (u))
+ if (!is
_
number (u))
error_msg = "invalid user";
else
{
error_msg = "invalid user";
else
{
@@
-201,7
+205,7
@@
parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg)
grp = getgrnam (g);
if (grp == NULL)
{
grp = getgrnam (g);
if (grp == NULL)
{
- if (!isnumber (g))
+ if (!is
_
number (g))
error_msg = "invalid group";
else
*gid = atoi (g);
error_msg = "invalid group";
else
*gid = atoi (g);
@@
-241,7
+245,7
@@
parse_user_spec (spec_arg, uid, gid, username_arg, groupname_arg)
return error_msg;
}
return error_msg;
}
-#ifdef TEST
ING
+#ifdef TEST
#define NULL_CHECK(s) ((s) == NULL ? "(null)" : (s))
#define NULL_CHECK(s) ((s) == NULL ? "(null)" : (s))