From: <abe...@us...> - 2016-02-01 12:46:10
|
Revision: 7491 http://sourceforge.net/p/astlinux/code/7491 Author: abelbeck Date: 2016-02-01 12:46:08 +0000 (Mon, 01 Feb 2016) Log Message: ----------- build system, package/makedevs: use the rooted /etc/passwd and /etc/group Ref: https://git.busybox.net/buildroot/commit/package?id=95dda394d9f2487d54c6ec529c3f9a7fd341a582 Modified Paths: -------------- branches/1.0/package/makedevs/makedevs.c Modified: branches/1.0/package/makedevs/makedevs.c =================================================================== --- branches/1.0/package/makedevs/makedevs.c 2016-02-01 12:27:16 UTC (rev 7490) +++ branches/1.0/package/makedevs/makedevs.c 2016-02-01 12:46:08 UTC (rev 7491) @@ -37,6 +37,9 @@ const char *bb_applet_name; +#define PASSWD_PATH "etc/passwd" /* MUST be relative */ +#define GROUP_PATH "etc/group" /* MUST be relative */ + void bb_verror_msg(const char *s, va_list p) { fflush(stdout); @@ -251,10 +254,20 @@ long my_getpwnam(const char *name) { struct passwd *myuser; + FILE *stream; - myuser = getpwnam(name); - if (myuser==NULL) - bb_error_msg_and_die("unknown user name: %s", name); + stream = bb_xfopen(PASSWD_PATH, "r"); + while(1) { + errno = 0; + myuser = fgetpwent(stream); + if (myuser == NULL) + bb_error_msg_and_die("unknown user name: %s", name); + if (errno) + bb_perror_msg_and_die("fgetpwent"); + if (!strcmp(name, myuser->pw_name)) + break; + } + fclose(stream); return myuser->pw_uid; } @@ -262,12 +275,22 @@ long my_getgrnam(const char *name) { struct group *mygroup; + FILE *stream; - mygroup = getgrnam(name); - if (mygroup==NULL) - bb_error_msg_and_die("unknown group name: %s", name); + stream = bb_xfopen(GROUP_PATH, "r"); + while(1) { + errno = 0; + mygroup = fgetgrent(stream); + if (mygroup == NULL) + bb_error_msg_and_die("unknown group name: %s", name); + if (errno) + bb_perror_msg_and_die("fgetgrent"); + if (!strcmp(name, mygroup->gr_name)) + break; + } + fclose(stream); - return (mygroup->gr_gid); + return mygroup->gr_gid; } unsigned long get_ug_id(const char *s, long (*my_getxxnam)(const char *)) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |