summaryrefslogtreecommitdiff
path: root/udev_sysdeps.c
diff options
context:
space:
mode:
authorKay Sievers <kay.sievers@suse.de>2006-08-20 18:25:57 +0200
committerKay Sievers <kay.sievers@suse.de>2006-08-20 18:25:57 +0200
commit3a020a85da768808a03f1574b001d1d06d55ae07 (patch)
treee17643bf1097ced6d6630a3e0fee1bfb917da6d0 /udev_sysdeps.c
parent5c51e31e0e794d8fcdc1225c65985571c9820949 (diff)
remove built-in /etc/passwd /etc/group parser
Diffstat (limited to 'udev_sysdeps.c')
-rw-r--r--udev_sysdeps.c139
1 files changed, 1 insertions, 138 deletions
diff --git a/udev_sysdeps.c b/udev_sysdeps.c
index 9ec5a73ed9..3cd12277cf 100644
--- a/udev_sysdeps.c
+++ b/udev_sysdeps.c
@@ -29,19 +29,7 @@
#include "udev.h"
-#ifndef __GLIBC__
-#define __OWN_USERDB_PARSER__
-#endif
-
#ifdef __GLIBC__
-#define __OWN_STRLCPYCAT__
-#endif
-
-#ifdef USE_STATIC
-#define __OWN_USERDB_PARSER__
-#endif
-
-#ifdef __OWN_STRLCPYCAT__
size_t strlcpy(char *dst, const char *src, size_t size)
{
size_t bytes = 0;
@@ -85,129 +73,4 @@ size_t strlcat(char *dst, const char *src, size_t size)
*q = '\0';
return bytes;
}
-#endif /* __OWN_STRLCPYCAT__ */
-
-#ifndef __OWN_USERDB_PARSER__
-#include <sys/types.h>
-#include <pwd.h>
-#include <grp.h>
-
-uid_t lookup_user(const char *user)
-{
- struct passwd *pw;
- uid_t uid = 0;
-
- pw = getpwnam(user);
- if (pw == NULL) {
- if (errno == 0 || errno == ENOENT || errno == ESRCH)
- err("specified user unknown '%s'", user);
- else
- err("error resolving user '%s': %s", user, strerror(errno));
- } else
- uid = pw->pw_uid;
-
- return uid;
-}
-
-gid_t lookup_group(const char *group)
-{
- struct group *gr;
- gid_t gid = 0;
-
- gr = getgrnam(group);
- if (gr == NULL) {
- if (errno == 0 || errno == ENOENT || errno == ESRCH)
- err("specified group unknown '%s'", group);
- else
- err("error resolving group '%s': %s", group, strerror(errno));
- } else
- gid = gr->gr_gid;
-
- return gid;
-}
-
-#else /* __OWN_USERDB_PARSER__ */
-
-#define PASSWD_FILE "/etc/passwd"
-#define GROUP_FILE "/etc/group"
-
-/* return the id of a passwd style line, selected by the users name */
-static unsigned long get_id_by_name(const char *uname, const char *dbfile)
-{
- unsigned long id = 0;
- char line[LINE_SIZE];
- char *buf;
- char *bufline;
- size_t bufsize;
- size_t cur;
- size_t count;
- char *pos;
- char *name;
- char *idstr;
- char *tail;
-
- if (file_map(dbfile, &buf, &bufsize) != 0) {
- err("can't open '%s' as db file: %s", dbfile, strerror(errno));
- return 0;
- }
- dbg("search '%s' in '%s'", uname, dbfile);
-
- /* loop through the whole file */
- cur = 0;
- while (cur < bufsize) {
- count = buf_get_line(buf, bufsize, cur);
- bufline = &buf[cur];
- cur += count+1;
-
- if (count >= sizeof(line))
- continue;
-
- memcpy(line, bufline, count-1);
- line[count-1] = '\0';
- pos = line;
-
- /* get name */
- name = strsep(&pos, ":");
- if (name == NULL)
- continue;
-
- /* skip pass */
- if (strsep(&pos, ":") == NULL)
- continue;
-
- /* get id */
- idstr = strsep(&pos, ":");
- if (idstr == NULL)
- continue;
-
- if (strcmp(uname, name) == 0) {
- id = strtoul(idstr, &tail, 10);
- if (tail[0] != '\0') {
- id = 0;
- dbg("no id found for '%s'", name);
- } else
- dbg("id for '%s' is '%li'", name, id);
- break;
- }
- }
-
- file_unmap(buf, bufsize);
- return id;
-}
-
-uid_t lookup_user(const char *user)
-{
- unsigned long id;
-
- id = get_id_by_name(user, PASSWD_FILE);
- return (uid_t) id;
-}
-
-gid_t lookup_group(const char *group)
-{
- unsigned long id;
-
- id = get_id_by_name(group, GROUP_FILE);
- return (gid_t) id;
-}
-#endif /* __OWN_USERDB_PARSER__ */
+#endif /* __GLIBC__ */