]> granicus.if.org Git - shadow/commitdiff
* src/useradd.c, src/usermod.c, libmisc/getgr_nam_gid.c,
authornekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Fri, 10 Apr 2009 22:34:10 +0000 (22:34 +0000)
committernekral-guest <nekral-guest@5a98b0ae-9ef6-0310-add3-de5d479b70d7>
Fri, 10 Apr 2009 22:34:10 +0000 (22:34 +0000)
libmisc/Makefile.am, lib/prototypes.h: Moved getgr_nam_gid() from
src/useradd.c and src/usermod.c to libmisc/getgr_nam_gid.c.

ChangeLog
lib/prototypes.h
libmisc/Makefile.am
libmisc/getgr_nam_gid.c [new file with mode: 0644]
src/useradd.c
src/usermod.c

index e00d11106927e68dc39ad73b53693722ca415a41..99be15cbe413180ae1a9be1be8b75f31a49395ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-04-06  Nicolas François  <nicolas.francois@centraliens.net>
+
+       * src/useradd.c, src/usermod.c, libmisc/getgr_nam_gid.c,
+       libmisc/Makefile.am, lib/prototypes.h: Moved getgr_nam_gid() from
+       src/useradd.c and src/usermod.c to libmisc/getgr_nam_gid.c.
+
 2009-04-06  Nicolas François  <nicolas.francois@centraliens.net>
 
        * src/useradd.c: Re-indent.
index dbb7801aeea869ef6c14989ec8c065be010ca1f8..f4e6a8aea19869926c3d80652b2aa124a6c639c3 100644 (file)
@@ -143,6 +143,9 @@ extern int find_new_uid (bool sys_user, uid_t *uid, uid_t const *preferred_uid);
 /* get_gid.c */
 extern int get_gid (const char *gidstr, gid_t *gid);
 
+/* getgr_nam_gid.c */
+extern struct group *getgr_nam_gid (const char *grname);
+
 /* getlong.c */
 extern int getlong (const char *numstr, long int *result);
 
index e8cd77bf34a3be350e1ab6bf0ec9850f1438a902..c04125e7a4e72f6b31bdad6b0baa5f42e26efc41 100644 (file)
@@ -28,6 +28,7 @@ libmisc_a_SOURCES = \
        find_new_uid.c \
        getdate.h \
        getdate.y \
+       getgr_nam_gid.c \
        getlong.c \
        getrange.c \
        hushed.c \
diff --git a/libmisc/getgr_nam_gid.c b/libmisc/getgr_nam_gid.c
new file mode 100644 (file)
index 0000000..7120304
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * Copyright (c) 1991 - 1994, Julianne Frances Haugh
+ * Copyright (c) 1996 - 2000, Marek Michałkiewicz
+ * Copyright (c) 2000 - 2006, Tomasz Kłoczko
+ * Copyright (c) 2007 - 2009, Nicolas François
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. The name of the copyright holders or contributors may not be used to
+ *    endorse or promote products derived from this software without
+ *    specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <config.h>
+
+#ident "$Id$"
+
+#include <stdlib.h>
+#include <errno.h>
+#include <grp.h>
+#include "prototypes.h"
+
+/*
+ * getgr_nam_gid - Return a pointer to the group specified by a string.
+ * The string may be a valid GID or a valid groupname.
+ * If the group does not exist on the system, NULL is returned.
+ */
+extern struct group *getgr_nam_gid (const char *grname)
+{
+       long long int gid;
+       char *endptr;
+
+       errno = 0;
+       gid = strtoll (grname, &endptr, 10);
+       if (   ('\0' != *grname)
+           && ('\0' == *endptr)
+           && (ERANGE != errno)
+           && (gid == (gid_t)gid)) {
+               return xgetgrgid ((gid_t) gid);
+       }
+       return xgetgrnam (grname);
+}
+
index dce0d1f49fb129f121f9dc6c9a5426308a8f1441..debc8eefbecf666b35a5c997455b1a5f47c4ade5 100644 (file)
@@ -169,7 +169,6 @@ static bool home_added = false;
 
 /* local function prototypes */
 static void fail_exit (int);
-static struct group *getgr_nam_gid (const char *);
 static void get_defaults (void);
 static void show_defaults (void);
 static int set_defaults (void);
@@ -264,22 +263,6 @@ static void fail_exit (int code)
        exit (code);
 }
 
-static struct group *getgr_nam_gid (const char *grname)
-{
-       long long int gid;
-       char *endptr;
-
-       errno = 0;
-       gid = strtoll (grname, &endptr, 10);
-       if (   ('\0' != *grname)
-           && ('\0' == *endptr)
-           && (ERANGE != errno)
-           && (gid == (gid_t)gid)) {
-               return xgetgrgid ((gid_t) gid);
-       }
-       return xgetgrnam (grname);
-}
-
 #define MATCH(x,y) (strncmp((x),(y),strlen(y)) == 0)
 
 /*
index 3f41b6b88d3e777438cf3c187920ff7ce6f85846..39695637352cdc1f69b14678b19f8a11d7f903cc 100644 (file)
@@ -184,26 +184,6 @@ static void date_to_str (char *buf, size_t maxsize,
        }
        buf[maxsize - 1] = '\0';
 }
-/*
- * Had to move this over from useradd.c since we have groups named
- * "56k-family"... ergh.
- * --Pac.
- */
-static struct group *getgr_nam_gid (const char *grname)
-{
-       long long int val;
-       char *endptr;
-
-       errno = 0;
-       val = strtoll (grname, &endptr, 10);
-       if (   ('\0' != *grname)
-           && ('\0' == *endptr)
-           && (ERANGE != errno)
-           && (val == (gid_t)val)) {
-               return xgetgrgid ((gid_t) val);
-       }
-       return xgetgrnam (grname);
-}
 
 /*
  * get_groups - convert a list of group names to an array of group IDs