📄 getpwent.c
字号:
#include <stdio.h>#include <pwd.h>#include <stdlib.h>static char PASSWD[] = "/etc/passwd";static FILE *pwf = NULL;static char line[BUFSIZ+2];static struct passwd passwd;voidsetpwent(void){ if( pwf == NULL ) pwf = fopen( PASSWD, "r" ); else rewind( pwf );}voidendpwent(void){ if( pwf != NULL ){ fclose( pwf ); pwf = NULL; }}static char *pwskip(char *p){ while( *p && *p != ':' && *p != '\n' ) ++p; if( *p ) *p++ = 0; else p[1] = 0; return(p);}struct passwd *pwdecode(char *p){ passwd.pw_name = p; p = pwskip(p); p = pwskip(p); /* passwd */ passwd.pw_uid = atoi(p); p = pwskip(p); passwd.pw_gid = atoi(p); p = pwskip(p); /* comment */ p = pwskip(p); /* gecos */ passwd.pw_dir = p; p = pwskip(p); passwd.pw_shell = p; p = pwskip(p); return(&passwd);}struct passwd *getpwent(void){ register char *p; if (pwf == NULL) { if( (pwf = fopen( PASSWD, "r" )) == NULL ) return(0); } p = fgets(line, BUFSIZ, pwf); if (p==NULL) return(0); return pwdecode (p);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -