diff options
Diffstat (limited to 'newlib/libc/unix/getpwent.c')
-rw-r--r-- | newlib/libc/unix/getpwent.c | 128 |
1 files changed, 0 insertions, 128 deletions
diff --git a/newlib/libc/unix/getpwent.c b/newlib/libc/unix/getpwent.c deleted file mode 100644 index 90ce30e..0000000 --- a/newlib/libc/unix/getpwent.c +++ /dev/null @@ -1,128 +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; - 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); -} |