From 57e1a2770c4d85edd377488906c437f6d1e9b369 Mon Sep 17 00:00:00 2001 From: "kay.sievers@vrfy.org" Date: Sun, 6 Mar 2005 06:16:52 +0100 Subject: [PATCH] remove Makefile magic for klibc integration The new libsysfs and klibc don't need that anymore. Wrap getpwnam(), so we can use the built-in /etc/passwd parser for statically compiled glibc binaries too. --- klibc_fixups/klibc_fixups.c | 127 -------------------------------------------- klibc_fixups/pwd.h | 27 ---------- 2 files changed, 154 deletions(-) delete mode 100644 klibc_fixups/klibc_fixups.c delete mode 100644 klibc_fixups/pwd.h (limited to 'klibc_fixups') diff --git a/klibc_fixups/klibc_fixups.c b/klibc_fixups/klibc_fixups.c deleted file mode 100644 index 175cf27fe4..0000000000 --- a/klibc_fixups/klibc_fixups.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * klibc_fixups.c - very simple implementation of stuff missing in klibc - * - * Copyright (C) 2003 Greg Kroah-Hartman - * Copyright (C) 2004 Kay Sievers - * - * 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 the - * Free Software Foundation version 2 of the License. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 675 Mass Ave, Cambridge, MA 02139, USA. - * - */ - -#ifdef __KLIBC__ - -#include -#include -#include -#include -#include -#include - -#include "pwd.h" -#include "../udev.h" -#include "../udev_utils.h" -#include "../logging.h" - -#define PW_FILE "/etc/passwd" -#define GR_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 = -1; - 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) { - dbg("reading '%s' as db file", dbfile); - } else { - dbg("can't open '%s' as db file", dbfile); - return -1; - } - - /* 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 >= LINE_SIZE) - continue; - - strncpy(line, bufline, count); - line[count] = '\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 = -1; - else - dbg("id for '%s' is '%li'", name, id); - break; - } - } - - file_unmap(buf, bufsize); - return id; -} - -struct passwd *getpwnam(const char *name) -{ - static struct passwd pw; - - memset(&pw, 0x00, sizeof(struct passwd)); - pw.pw_uid = (uid_t) get_id_by_name(name, PW_FILE); - if (pw.pw_uid < 0) - return NULL; - else - return &pw; -} - -struct group *getgrnam(const char *name) -{ - static struct group gr; - - memset(&gr, 0x00, sizeof(struct group)); - gr.gr_gid = (gid_t) get_id_by_name(name, GR_FILE); - if (gr.gr_gid < 0) - return NULL; - else - return &gr; -} - -#endif /* __KLIBC__ */ diff --git a/klibc_fixups/pwd.h b/klibc_fixups/pwd.h deleted file mode 100644 index f5de6c50b8..0000000000 --- a/klibc_fixups/pwd.h +++ /dev/null @@ -1,27 +0,0 @@ -#ifdef __KLIBC__ - -#ifndef _PWD_H -#define _PWD_H - -struct passwd { - char *pw_name; /* user name */ - char *pw_passwd; /* user password */ - uid_t pw_uid; /* user id */ - gid_t pw_gid; /* group id */ - char *pw_gecos; /* real name */ - char *pw_dir; /* home directory */ - char *pw_shell; /* shell program */ -}; - -struct group { - char *gr_name; /* group name */ - char *gr_passwd; /* group password */ - gid_t gr_gid; /* group id */ - char **gr_mem; /* group members */ -}; - -struct passwd *getpwnam(const char *name); -struct group *getgrnam(const char *name); - -#endif /* _PWD_H */ -#endif /* __KLIBC__ */ -- cgit v1.2.3-54-g00ecf