1#pragma once
2
3#ifdef __cplusplus
4extern "C" {
5#endif
6
7#include <features.h>
8
9#define __NEED_size_t
10#define __NEED_uid_t
11#define __NEED_gid_t
12
13#ifdef _GNU_SOURCE
14#define __NEED_FILE
15#endif
16
17#include <bits/alltypes.h>
18
19struct passwd {
20    char* pw_name;
21    char* pw_passwd;
22    uid_t pw_uid;
23    gid_t pw_gid;
24    char* pw_gecos;
25    char* pw_dir;
26    char* pw_shell;
27};
28
29void setpwent(void);
30void endpwent(void);
31struct passwd* getpwent(void);
32
33struct passwd* getpwuid(uid_t);
34struct passwd* getpwnam(const char*);
35int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);
36int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);
37
38#ifdef _GNU_SOURCE
39struct passwd* fgetpwent(FILE*);
40int putpwent(const struct passwd*, FILE*);
41#endif
42
43#ifdef __cplusplus
44}
45#endif
46