diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-03 17:39:24 -0700 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-01-03 17:39:24 -0700 |
commit | a6c1ed4716cf02626ea035beb6dd4a921642ba80 (patch) | |
tree | ef582c1b52819e27bdd16097ec03b69799d04ede /newlib/libc/unix/getpwent.c | |
parent | f6c9a624fa8a6878a7fb2b02f55e4990a20feb59 (diff) |
Use libc from agbcc instead of standalone newlib\nYou must have AGBCC commit 80d029caec189587f8b9294b6c8a5a489b8f5f88 in order to compile pmd_red.gbalibc
Diffstat (limited to 'newlib/libc/unix/getpwent.c')
-rw-r--r-- | newlib/libc/unix/getpwent.c | 129 |
1 files changed, 0 insertions, 129 deletions
diff --git a/newlib/libc/unix/getpwent.c b/newlib/libc/unix/getpwent.c deleted file mode 100644 index 23a35f4..0000000 --- a/newlib/libc/unix/getpwent.c +++ /dev/null @@ -1,129 +0,0 @@ -#include <stdio.h> -#include <sys/types.h> -#include <pwd.h> -#include <errno.h> -#include <unistd.h> -#include <stdlib.h> -#include <string.h> -#include <limits.h> - -static struct passwd pw_passwd; /* password structure */ -static FILE *passwd_fp; - -static char logname[8]; -static char password[1024]; -static char comment[1024]; -static char gecos[1024]; -static char dir[1024]; -static char shell[1024]; - -struct passwd * -getpwnam (name) - const char *name; -{ - FILE *fp; - int uid, gid; - char buf[1024]; - - if ((fp = fopen ("/etc/passwd", "r")) == NULL) - { - return NULL; - } - - while (fgets (buf, sizeof (buf), fp)) - { - sscanf (buf, "%[^:]:%[^:]:%d:%d:%[^:]:%[^:]:%s\n", - logname, password, &pw_passwd.pw_uid, - &pw_passwd.pw_gid, comment, gecos, - dir, shell); - pw_passwd.pw_name = logname; - pw_passwd.pw_passwd = password; - pw_passwd.pw_comment = comment; - pw_passwd.pw_gecos = gecos; - pw_passwd.pw_dir = dir; - pw_passwd.pw_shell = shell; - - if (!strcmp (logname, name)) - { - fclose (fp); - return &pw_passwd; - } - } - fclose (fp); - return NULL; -} - -struct passwd * -getpwuid (uid_t uid) -{ - FILE *fp; - char buf[1024]; - - if ((fp = fopen ("/etc/passwd", "r")) == NULL) - { - return NULL; - } - - while (fgets (buf, sizeof (buf), fp)) - { - sscanf (buf, "%[^:]:%[^:]:%d:%d:%[^:]:%[^:]:%s\n", - logname, password, &pw_passwd.pw_uid, - &pw_passwd.pw_gid, comment, gecos, - dir, shell); - pw_passwd.pw_name = logname; - pw_passwd.pw_passwd = password; - pw_passwd.pw_comment = comment; - pw_passwd.pw_gecos = gecos; - pw_passwd.pw_dir = dir; - pw_passwd.pw_shell = shell; - - if (uid == pw_passwd.pw_uid) - { - fclose (fp); - return &pw_passwd; - } - } - fclose (fp); - return NULL; -} - -struct passwd * -getpwent () -{ - char buf[1024]; - - if (passwd_fp == NULL) - return NULL; - - if (fgets (buf, sizeof (buf), passwd_fp) == NULL) - return NULL; - - sscanf (buf, "%[^:]:%[^:]:%d:%d:%[^:]:%[^:]:%s\n", - logname, password, &pw_passwd.pw_uid, - &pw_passwd.pw_gid, comment, gecos, - dir, shell); - pw_passwd.pw_name = logname; - pw_passwd.pw_passwd = password; - pw_passwd.pw_comment = comment; - pw_passwd.pw_gecos = gecos; - pw_passwd.pw_dir = dir; - pw_passwd.pw_shell = shell; - - return &pw_passwd; -} - -void -setpwent () -{ - if (passwd_fp != NULL) - fclose (passwd_fp); - - passwd_fp = fopen ("/etc/passwd", "r"); -} - -void -endpwent () -{ - if (passwd_fp != NULL) - fclose (passwd_fp); -} |