1 # SOME DESCRIPTIVE TITLE
2 # Copyright (C) YEAR Free Software Foundation, Inc.
3 # This file is distributed under the same license as the PACKAGE package.
4 # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
9 "Project-Id-Version: PACKAGE VERSION\n"
10 "POT-Creation-Date: 2012-04-25 05:36+0900\n"
11 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
12 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13 "Language-Team: LANGUAGE <LL@li.org>\n"
16 "Content-Type: text/plain; charset=CHARSET\n"
17 "Content-Transfer-Encoding: 8bit\n"
20 #: build/C/man3/fgetgrent.3:28
26 #: build/C/man3/fgetgrent.3:28 build/C/man3/fgetpwent.3:31
32 #: build/C/man3/fgetgrent.3:28 build/C/man3/fgetpwent.3:31 build/C/man3/getgrent_r.3:23 build/C/man3/getgrouplist.3:27 build/C/man3/getpw.3:30 build/C/man3/getpwent.3:31 build/C/man3/getpwent_r.3:23 build/C/man3/getpwnam.3:35 build/C/man3/getspnam.3:6 build/C/man3/initgroups.3:30 build/C/man3/putgrent.3:4 build/C/man3/putpwent.3:28 build/C/man3/setaliasent.3:6
38 #: build/C/man3/fgetgrent.3:28 build/C/man3/fgetpwent.3:31 build/C/man5/ftpusers.5:17 build/C/man3/getgrent.3:28 build/C/man3/getgrent_r.3:23 build/C/man3/getgrnam.3:31 build/C/man3/getgrouplist.3:27 build/C/man3/getpw.3:30 build/C/man3/getpwent.3:31 build/C/man3/getpwent_r.3:23 build/C/man3/getpwnam.3:35 build/C/man3/getspnam.3:6 build/C/man5/group.5:25 build/C/man3/initgroups.3:30 build/C/man5/passwd.5:29 build/C/man3/putgrent.3:4 build/C/man3/putpwent.3:28 build/C/man3/setaliasent.3:6
40 msgid "Linux Programmer's Manual"
44 #: build/C/man3/fgetgrent.3:29 build/C/man3/fgetpwent.3:32 build/C/man5/ftpusers.5:18 build/C/man3/getgrent.3:29 build/C/man3/getgrent_r.3:24 build/C/man3/getgrnam.3:32 build/C/man3/getgrouplist.3:28 build/C/man3/getpw.3:31 build/C/man3/getpwent.3:32 build/C/man3/getpwent_r.3:24 build/C/man3/getpwnam.3:36 build/C/man3/getspnam.3:7 build/C/man5/group.5:26 build/C/man3/initgroups.3:31 build/C/man5/passwd.5:30 build/C/man3/putgrent.3:5 build/C/man3/putpwent.3:29 build/C/man3/setaliasent.3:7
50 #: build/C/man3/fgetgrent.3:31
51 msgid "fgetgrent - get group file entry"
55 #: build/C/man3/fgetgrent.3:31 build/C/man3/fgetpwent.3:34 build/C/man3/getgrent.3:31 build/C/man3/getgrent_r.3:26 build/C/man3/getgrnam.3:34 build/C/man3/getgrouplist.3:30 build/C/man3/getpw.3:33 build/C/man3/getpwent.3:34 build/C/man3/getpwent_r.3:26 build/C/man3/getpwnam.3:38 build/C/man3/getspnam.3:11 build/C/man3/initgroups.3:33 build/C/man3/putgrent.3:7 build/C/man3/putpwent.3:31 build/C/man3/setaliasent.3:10
61 #: build/C/man3/fgetgrent.3:36
64 "B<#include E<lt>stdio.hE<gt>>\n"
65 "B<#include E<lt>sys/types.hE<gt>>\n"
66 "B<#include E<lt>grp.hE<gt>>\n"
70 #: build/C/man3/fgetgrent.3:38
72 msgid "B<struct group *fgetgrent(FILE *>I<stream>B<);>\n"
76 #: build/C/man3/fgetgrent.3:43 build/C/man3/fgetpwent.3:46 build/C/man3/getgrent.3:46 build/C/man3/getgrent_r.3:42 build/C/man3/getgrnam.3:55 build/C/man3/getgrouplist.3:40 build/C/man3/getpwent.3:49 build/C/man3/getpwent_r.3:42 build/C/man3/getpwnam.3:59 build/C/man3/getspnam.3:59 build/C/man3/initgroups.3:44 build/C/man3/putpwent.3:43
77 msgid "Feature Test Macro Requirements for glibc (see B<feature_test_macros>(7)):"
81 #: build/C/man3/fgetgrent.3:47
82 msgid "B<fgetgrent>(): _SVID_SOURCE"
86 #: build/C/man3/fgetgrent.3:47 build/C/man3/fgetpwent.3:50 build/C/man5/ftpusers.5:20 build/C/man3/getgrent.3:66 build/C/man3/getgrent_r.3:50 build/C/man3/getgrnam.3:65 build/C/man3/getgrouplist.3:44 build/C/man3/getpw.3:41 build/C/man3/getpwent.3:60 build/C/man3/getpwent_r.3:49 build/C/man3/getpwnam.3:69 build/C/man3/getspnam.3:70 build/C/man5/group.5:28 build/C/man3/initgroups.3:48 build/C/man5/passwd.5:32 build/C/man3/putgrent.3:13 build/C/man3/putpwent.3:47 build/C/man3/setaliasent.3:28
92 #: build/C/man3/fgetgrent.3:61
94 "The B<fgetgrent>() function returns a pointer to a structure containing the "
95 "group information from the file referred to by I<stream>. The first time it "
96 "is called it returns the first entry; thereafter, it returns successive "
97 "entries. The file referred to by I<stream> must have the same format as "
98 "I</etc/group> (see B<group>(5))."
102 #: build/C/man3/fgetgrent.3:63 build/C/man3/getgrent.3:90 build/C/man3/getgrent_r.3:67 build/C/man3/getgrnam.3:84
103 msgid "The I<group> structure is defined in I<E<lt>grp.hE<gt>> as follows:"
107 #: build/C/man3/fgetgrent.3:72
111 " char *gr_name; /* group name */\n"
112 " char *gr_passwd; /* group password */\n"
113 " gid_t gr_gid; /* group ID */\n"
114 " char **gr_mem; /* group members */\n"
119 #: build/C/man3/fgetgrent.3:74 build/C/man3/fgetpwent.3:79 build/C/man3/getgrent.3:104 build/C/man3/getgrent_r.3:100 build/C/man3/getgrnam.3:128 build/C/man3/getgrouplist.3:76 build/C/man3/getpw.3:70 build/C/man3/getpwent.3:101 build/C/man3/getpwent_r.3:102 build/C/man3/getpwnam.3:135 build/C/man3/getspnam.3:212 build/C/man3/initgroups.3:60 build/C/man3/putgrent.3:35 build/C/man3/putpwent.3:68 build/C/man3/setaliasent.3:85
125 #: build/C/man3/fgetgrent.3:81
127 "The B<fgetgrent>() function returns a pointer to a I<group> structure, or "
128 "NULL if there are no more entries or an error occurs."
132 #: build/C/man3/fgetgrent.3:81 build/C/man3/fgetpwent.3:86 build/C/man3/getgrent.3:127 build/C/man3/getgrent_r.3:107 build/C/man3/getgrnam.3:166 build/C/man3/getpw.3:76 build/C/man3/getpwent.3:123 build/C/man3/getpwent_r.3:109 build/C/man3/getpwnam.3:173 build/C/man3/getspnam.3:223 build/C/man3/initgroups.3:67 build/C/man3/putpwent.3:73
138 #: build/C/man3/fgetgrent.3:82 build/C/man3/fgetpwent.3:87 build/C/man3/getgrent.3:140 build/C/man3/getgrnam.3:188 build/C/man3/getpw.3:85 build/C/man3/getpwent.3:138 build/C/man3/getpwnam.3:195 build/C/man3/initgroups.3:68
144 #. to allocate the group structure, or to allocate buffers
146 #: build/C/man3/fgetgrent.3:87 build/C/man3/getgrent.3:146 build/C/man3/getgrnam.3:195
147 msgid "Insufficient memory to allocate I<group> structure."
151 #: build/C/man3/fgetgrent.3:87 build/C/man3/fgetpwent.3:96 build/C/man3/getgrent.3:153 build/C/man3/getgrent_r.3:115 build/C/man3/getgrnam.3:202 build/C/man3/getgrouplist.3:96 build/C/man3/getpw.3:94 build/C/man3/getpwent.3:152 build/C/man3/getpwent_r.3:117 build/C/man3/getpwnam.3:209 build/C/man3/getspnam.3:240 build/C/man3/initgroups.3:80 build/C/man3/putgrent.3:37 build/C/man3/putpwent.3:77 build/C/man3/setaliasent.3:97
153 msgid "CONFORMING TO"
157 #: build/C/man3/fgetgrent.3:89 build/C/man3/fgetpwent.3:98 build/C/man3/putpwent.3:79
162 #: build/C/man3/fgetgrent.3:89 build/C/man3/fgetpwent.3:98 build/C/man5/ftpusers.5:47 build/C/man3/getgrent.3:155 build/C/man3/getgrent_r.3:182 build/C/man3/getgrnam.3:225 build/C/man3/getgrouplist.3:187 build/C/man3/getpw.3:103 build/C/man3/getpwent.3:157 build/C/man3/getpwent_r.3:179 build/C/man3/getpwnam.3:305 build/C/man3/getspnam.3:244 build/C/man5/group.5:60 build/C/man3/initgroups.3:82 build/C/man5/passwd.5:131 build/C/man3/putgrent.3:39 build/C/man3/putpwent.3:79 build/C/man3/setaliasent.3:141
168 #: build/C/man3/fgetgrent.3:98
170 "B<endgrent>(3), B<fgetgrent_r>(3), B<fopen>(3), B<getgrent>(3), "
171 "B<getgrgid>(3), B<getgrnam>(3), B<putgrent>(3), B<setgrent>(3), B<group>(5)"
175 #: build/C/man3/fgetpwent.3:31
181 #: build/C/man3/fgetpwent.3:34
182 msgid "fgetpwent - get password file entry"
186 #: build/C/man3/fgetpwent.3:39 build/C/man3/putpwent.3:36
189 "B<#include E<lt>stdio.hE<gt>>\n"
190 "B<#include E<lt>sys/types.hE<gt>>\n"
191 "B<#include E<lt>pwd.hE<gt>>\n"
195 #: build/C/man3/fgetpwent.3:41
197 msgid "B<struct passwd *fgetpwent(FILE *>I<stream>B<);>\n"
201 #: build/C/man3/fgetpwent.3:50
202 msgid "B<fgetpwent>(): _SVID_SOURCE"
206 #: build/C/man3/fgetpwent.3:63
208 "The B<fgetpwent>() function returns a pointer to a structure containing the "
209 "broken out fields of a line in the file I<stream>. The first time it is "
210 "called it returns the first entry; thereafter, it returns successive "
211 "entries. The file referred to by I<stream> must have the same format as "
212 "I</etc/passwd> (see B<passwd>(5))."
216 #: build/C/man3/fgetpwent.3:65 build/C/man3/getpw.3:53 build/C/man3/getpwent.3:84 build/C/man3/getpwent_r.3:66 build/C/man3/getpwnam.3:88 build/C/man3/putpwent.3:54
217 msgid "The I<passwd> structure is defined in I<E<lt>pwd.hE<gt>> as follows:"
221 #: build/C/man3/fgetpwent.3:77
225 " char *pw_name; /* username */\n"
226 " char *pw_passwd; /* user password */\n"
227 " uid_t pw_uid; /* user ID */\n"
228 " gid_t pw_gid; /* group ID */\n"
229 " char *pw_gecos; /* real name */\n"
230 " char *pw_dir; /* home directory */\n"
231 " char *pw_shell; /* shell program */\n"
236 #: build/C/man3/fgetpwent.3:86
238 "The B<fgetpwent>() function returns a pointer to a I<passwd> structure, or "
239 "NULL if there are no more entries or an error occurs."
243 #. This structure is static, allocated 0 or 1 times. No memory leak. (libc45)
245 #: build/C/man3/fgetpwent.3:92 build/C/man3/getpw.3:90 build/C/man3/getpwent.3:145 build/C/man3/getpwnam.3:202
246 msgid "Insufficient memory to allocate I<passwd> structure."
250 #: build/C/man3/fgetpwent.3:92 build/C/man5/ftpusers.5:45 build/C/man3/getgrent.3:149 build/C/man3/getgrnam.3:198 build/C/man3/getpw.3:90 build/C/man3/getpwent.3:148 build/C/man3/getpwnam.3:205 build/C/man3/getspnam.3:227 build/C/man5/group.5:52 build/C/man3/initgroups.3:76 build/C/man5/passwd.5:111 build/C/man3/setaliasent.3:91
256 #: build/C/man3/fgetpwent.3:93 build/C/man3/getpw.3:91 build/C/man3/getpwent.3:149 build/C/man3/getpwnam.3:206 build/C/man5/passwd.5:113
258 msgid "I</etc/passwd>"
262 #: build/C/man3/fgetpwent.3:96 build/C/man3/getpw.3:94
263 msgid "password database file"
267 #: build/C/man3/fgetpwent.3:108
269 "B<endpwent>(3), B<fgetpwent_r>(3), B<fopen>(3), B<getpw>(3), B<getpwent>(3), "
270 "B<getpwnam>(3), B<getpwuid>(3), B<putpwent>(3), B<setpwent>(3), B<passwd>(5)"
274 #: build/C/man5/ftpusers.5:17
280 #: build/C/man5/ftpusers.5:17
286 #: build/C/man5/ftpusers.5:17 build/C/man5/group.5:25 build/C/man5/passwd.5:29
292 #: build/C/man5/ftpusers.5:20
293 msgid "ftpusers - list of users that may not log in via the FTP daemon"
297 #: build/C/man5/ftpusers.5:39
299 "The text file B<ftpusers> contains a list of users that may not log in using "
300 "the File Transfer Protocol (FTP) server daemon. This file is used not "
301 "merely for system administration purposes but for improving security within "
302 "a TCP/IP networked environment. It will typically contain a list of the "
303 "users that either have no business using ftp or have too many privileges to "
304 "be allowed to log in through the FTP server daemon. Such users usually "
305 "include root, daemon, bin, uucp, and news. If your FTP server daemon "
306 "doesn't use B<ftpusers> then it is suggested that you read its documentation "
307 "to find out how to block access for certain users. Washington University "
308 "FTP server Daemon (wuftpd) and Professional FTP Daemon (proftpd) are known "
309 "to make use of B<ftpusers>."
313 #: build/C/man5/ftpusers.5:39
319 #: build/C/man5/ftpusers.5:45
321 "The format of B<ftpusers> is very simple. There is one account name (or "
322 "username) per line. Lines starting with a # are ignored."
326 #: build/C/man5/ftpusers.5:47
327 msgid "I</etc/ftpusers>"
331 #: build/C/man5/ftpusers.5:50
332 msgid "B<passwd>(5), B<proftpd>(8), B<wuftpd>(8)"
336 #: build/C/man3/getgrent.3:28
342 #: build/C/man3/getgrent.3:28 build/C/man3/getgrent_r.3:23 build/C/man3/getgrnam.3:31 build/C/man3/getpw.3:30 build/C/man3/getpwent.3:31 build/C/man3/getpwent_r.3:23 build/C/man3/getpwnam.3:35 build/C/man5/group.5:25
348 #: build/C/man3/getgrent.3:31
349 msgid "getgrent, setgrent, endgrent - get group file entry"
353 #: build/C/man3/getgrent.3:35 build/C/man3/getgrnam.3:38 build/C/man3/initgroups.3:37
356 "B<#include E<lt>sys/types.hE<gt>>\n"
357 "B<#include E<lt>grp.hE<gt>>\n"
361 #: build/C/man3/getgrent.3:37
363 msgid "B<struct group *getgrent(void);>\n"
367 #: build/C/man3/getgrent.3:39
369 msgid "B<void setgrent(void);>\n"
373 #: build/C/man3/getgrent.3:41
375 msgid "B<void endgrent(void);>\n"
379 #: build/C/man3/getgrent.3:51
380 msgid "B<setgrent>():"
384 #: build/C/man3/getgrent.3:54
386 "_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
387 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED ||"
391 #: build/C/man3/getgrent.3:56
392 msgid "/* Since glibc 2.12: */ _POSIX_C_SOURCE\\ E<gt>=\\ 200809L"
396 #: build/C/man3/getgrent.3:60
397 msgid "B<getgrent>(), B<endgrent>():"
401 #: build/C/man3/getgrent.3:63
403 "_SVID_SOURCE || _BSD_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
404 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
408 #: build/C/man3/getgrent.3:78
410 "The B<getgrent>() function returns a pointer to a structure containing the "
411 "broken-out fields of a record in the group database (e.g., the local group "
412 "file I</etc/group>, NIS, and LDAP). The first time B<getgrent>() is "
413 "called, it returns the first entry; thereafter, it returns successive "
418 #: build/C/man3/getgrent.3:83
420 "The B<setgrent>() function rewinds to the beginning of the group database, "
421 "to allow repeated scans."
425 #: build/C/man3/getgrent.3:88
427 "The B<endgrent>() function is used to close the group database after all "
428 "processing has been performed."
432 #: build/C/man3/getgrent.3:99 build/C/man3/getgrnam.3:93
436 " char *gr_name; /* group name */\n"
437 " char *gr_passwd; /* group password */\n"
438 " gid_t gr_gid; /* group ID */\n"
439 " char **gr_mem; /* group members */\n"
444 #: build/C/man3/getgrent.3:104 build/C/man3/getgrent_r.3:81 build/C/man3/getgrnam.3:98
445 msgid "For more information about the fields of this structure, see B<group>(5)."
449 #: build/C/man3/getgrent.3:111
451 "The B<getgrent>() function returns a pointer to a I<group> structure, or "
452 "NULL if there are no more entries or an error occurs."
456 #: build/C/man3/getgrent.3:118
458 "Upon error, I<errno> may be set. If one wants to check I<errno> after the "
459 "call, it should be set to zero before the call."
463 #: build/C/man3/getgrent.3:127
465 "The return value may point to a static area, and may be overwritten by "
466 "subsequent calls to B<getgrent>(), B<getgrgid>(3), or B<getgrnam>(3). (Do "
467 "not pass the returned pointer to B<free>(3).)"
471 #: build/C/man3/getgrent.3:128 build/C/man3/getgrnam.3:174 build/C/man3/getpwent.3:124 build/C/man3/getpwnam.3:181
477 #: build/C/man3/getgrent.3:131 build/C/man3/getgrnam.3:177 build/C/man3/getpwent.3:127 build/C/man3/getpwnam.3:184
478 msgid "A signal was caught."
482 #: build/C/man3/getgrent.3:131 build/C/man3/getgrnam.3:177 build/C/man3/getpwent.3:127 build/C/man3/getpwnam.3:184
488 #: build/C/man3/getgrent.3:134 build/C/man3/getgrnam.3:180 build/C/man3/getpwent.3:130 build/C/man3/getpwnam.3:187
493 #: build/C/man3/getgrent.3:134 build/C/man3/getgrnam.3:180 build/C/man3/getpwent.3:130 build/C/man3/getpwnam.3:187
499 #: build/C/man3/getgrent.3:137
500 msgid "The calling process already has too many open files."
504 #: build/C/man3/getgrent.3:137 build/C/man3/getgrnam.3:185 build/C/man3/getpwent.3:135 build/C/man3/getpwnam.3:192
510 #: build/C/man3/getgrent.3:140
511 msgid "Too many open files in the system."
515 #: build/C/man3/getgrent.3:146 build/C/man3/getgrent_r.3:111 build/C/man3/getgrnam.3:195 build/C/man3/getpwent.3:145 build/C/man3/getpwent_r.3:113 build/C/man3/getpwnam.3:202 build/C/man3/getspnam.3:224
521 #: build/C/man3/getgrent.3:149 build/C/man3/getgrnam.3:198 build/C/man3/getpwent.3:148 build/C/man3/getpwnam.3:205
522 msgid "Insufficient buffer space supplied."
526 #: build/C/man3/getgrent.3:150 build/C/man3/getgrnam.3:199
528 msgid "I</etc/group>"
532 #: build/C/man3/getgrent.3:153 build/C/man3/getgrnam.3:202
533 msgid "local group database file"
537 #: build/C/man3/getgrent.3:155 build/C/man3/getgrnam.3:204
538 msgid "SVr4, 4.3BSD, POSIX.1-2001."
542 #: build/C/man3/getgrent.3:162
544 "B<fgetgrent>(3), B<getgrent_r>(3), B<getgrgid>(3), B<getgrnam>(3), "
545 "B<getgrouplist>(3), B<putgrent>(3), B<group>(5)"
549 #: build/C/man3/getgrent_r.3:23
555 #: build/C/man3/getgrent_r.3:26
556 msgid "getgrent_r, fgetgrent_r - get group file entry reentrantly"
560 #: build/C/man3/getgrent_r.3:29
562 msgid "B<#include E<lt>grp.hE<gt>>\n"
566 #: build/C/man3/getgrent_r.3:31
568 msgid "B<int getgrent_r(struct group *>I<gbuf>B<, char *>I<buf>B<,>\n"
572 #: build/C/man3/getgrent_r.3:33
574 msgid "B< size_t >I<buflen>B<, struct group **>I<gbufp>B<);>\n"
578 #: build/C/man3/getgrent_r.3:35
581 "B<int fgetgrent_r(FILE *>I<fp>B<, struct group *>I<gbuf>B<, char "
586 #: build/C/man3/getgrent_r.3:37
588 msgid "B< size_t >I<buflen>B<, struct group **>I<gbufp>B<);>\n"
591 #. FIXME . The FTM requirements seem inconsistent here. File a glibc bug?
593 #: build/C/man3/getgrent_r.3:47
594 msgid "B<getgrent_r>(): _GNU_SOURCE"
598 #: build/C/man3/getgrent_r.3:50
599 msgid "B<fgetgrent_r>(): _SVID_SOURCE"
603 #: build/C/man3/getgrent_r.3:63
605 "The functions B<getgrent_r>() and B<fgetgrent_r>() are the reentrant "
606 "versions of B<getgrent>(3) and B<fgetgrent>(3). The former reads the next "
607 "group entry from the stream initialized by B<setgrent>(3). The latter reads "
608 "the next group entry from the stream I<fp>."
612 #: build/C/man3/getgrent_r.3:76
616 " char *gr_name; /* group name */\n"
617 " char *gr_passwd; /* group password */\n"
618 " gid_t gr_gid; /* group ID */\n"
619 " char **gr_mem; /* group members */\n"
624 #: build/C/man3/getgrent_r.3:100
626 "The nonreentrant functions return a pointer to static storage, where this "
627 "static storage contains further pointers to group name, password and "
628 "members. The reentrant functions described here return all of that in "
629 "caller-provided buffers. First of all there is the buffer I<gbuf> that can "
630 "hold a I<struct group>. And next the buffer I<buf> of size I<buflen> that "
631 "can hold additional strings. The result of these functions, the I<struct "
632 "group> read from the stream, is stored in the provided buffer I<*gbuf>, and "
633 "a pointer to this I<struct group> is returned in I<*gbufp>."
637 #: build/C/man3/getgrent_r.3:107
639 "On success, these functions return 0 and I<*gbufp> is a pointer to the "
640 "I<struct group>. On error, these functions return an error value and "
645 #: build/C/man3/getgrent_r.3:108 build/C/man3/getpw.3:81 build/C/man3/getpwent_r.3:110
651 #: build/C/man3/getgrent_r.3:111 build/C/man3/getpwent_r.3:113
652 msgid "No more entries."
656 #: build/C/man3/getgrent_r.3:115 build/C/man3/getpwent_r.3:117
657 msgid "Insufficient buffer space supplied. Try again with larger buffer."
661 #: build/C/man3/getgrent_r.3:120 build/C/man3/getpwent_r.3:122
663 "These functions are GNU extensions, done in a style resembling the POSIX "
664 "version of functions like B<getpwnam_r>(3). Other systems use prototype"
668 #: build/C/man3/getgrent_r.3:125
671 "struct group *getgrent_r(struct group *grp, char *buf,\n"
676 #: build/C/man3/getgrent_r.3:129 build/C/man3/getpwent_r.3:131
681 #: build/C/man3/getgrent_r.3:134
684 "int getgrent_r(struct group *grp, char *buf, int buflen,\n"
689 #: build/C/man3/getgrent_r.3:136 build/C/man3/getgrnam.3:204 build/C/man3/getpwent_r.3:139 build/C/man3/getpwnam.3:214 build/C/man5/passwd.5:113
695 #: build/C/man3/getgrent_r.3:141
697 "The function B<getgrent_r>() is not really reentrant since it shares the "
698 "reading position in the stream with all other threads."
702 #: build/C/man3/getgrent_r.3:141 build/C/man3/getgrouplist.3:107 build/C/man3/getpwent_r.3:144 build/C/man3/getpwnam.3:253 build/C/man3/setaliasent.3:111
708 #: build/C/man3/getgrent_r.3:148
711 "#define _GNU_SOURCE\n"
712 "#include E<lt>grp.hE<gt>\n"
713 "#include E<lt>stdio.hE<gt>\n"
714 "#include E<lt>stdlib.hE<gt>\n"
715 "#define BUFLEN 4096\n"
719 #: build/C/man3/getgrent_r.3:155
725 " struct group grp, *grpp;\n"
726 " char buf[BUFLEN];\n"
731 #: build/C/man3/getgrent_r.3:172
736 " i = getgrent_r(&grp, buf, BUFLEN, &grpp);\n"
739 " printf(\"%s (%d):\", grpp-E<gt>gr_name, grpp-E<gt>gr_gid);\n"
740 " for (i = 0; ; i++) {\n"
741 " if (grpp-E<gt>gr_mem[i] == NULL)\n"
743 " printf(\" %s\", grpp-E<gt>gr_mem[i]);\n"
745 " printf(\"\\en\");\n"
748 " exit(EXIT_SUCCESS);\n"
753 #: build/C/man3/getgrent_r.3:188
755 "B<fgetgrent>(3), B<getgrent>(3), B<getgrgid>(3), B<getgrnam>(3), "
756 "B<putgrent>(3), B<group>(5)"
760 #: build/C/man3/getgrnam.3:31
766 #: build/C/man3/getgrnam.3:34
767 msgid "getgrnam, getgrnam_r, getgrgid, getgrgid_r - get group file entry"
771 #: build/C/man3/getgrnam.3:40
773 msgid "B<struct group *getgrnam(const char *>I<name>B<);>\n"
777 #: build/C/man3/getgrnam.3:42
779 msgid "B<struct group *getgrgid(gid_t >I<gid>B<);>\n"
783 #: build/C/man3/getgrnam.3:44
785 msgid "B<int getgrnam_r(const char *>I<name>B<, struct group *>I<grp>B<,>\n"
789 #: build/C/man3/getgrnam.3:46 build/C/man3/getgrnam.3:50
792 "B< char *>I<buf>B<, size_t >I<buflen>B<, struct group "
793 "**>I<result>B<);>\n"
797 #: build/C/man3/getgrnam.3:48
799 msgid "B<int getgrgid_r(gid_t >I<gid>B<, struct group *>I<grp>B<,>\n"
803 #: build/C/man3/getgrnam.3:60
804 msgid "B<getgrnam_r>(), B<getgrgid_r>():"
808 #: build/C/man3/getgrnam.3:63 build/C/man3/getpwnam.3:67
810 "_POSIX_C_SOURCE\\ E<gt>=\\ 1 || _XOPEN_SOURCE || _BSD_SOURCE || _SVID_SOURCE "
815 #: build/C/man3/getgrnam.3:75
817 "The B<getgrnam>() function returns a pointer to a structure containing the "
818 "broken-out fields of the record in the group database (e.g., the local group "
819 "file I</etc/group>, NIS, and LDAP) that matches the group name I<name>."
823 #: build/C/man3/getgrnam.3:82
825 "The B<getgrgid>() function returns a pointer to a structure containing the "
826 "broken-out fields of the record in the group database that matches the group "
831 #: build/C/man3/getgrnam.3:121
833 "The B<getgrnam_r>() and B<getgrgid_r>() functions obtain the same "
834 "information as B<getgrnam>() and B<getgrgid>(), but store the retrieved "
835 "I<group> structure in the space pointed to by I<grp>. The string fields "
836 "pointed to by the members of the I<group> structure are stored in the buffer "
837 "I<buf> of size I<buflen>. A pointer to the result (in case of success) or "
838 "NULL (in case no entry was found or an error occurred) is stored in "
843 #: build/C/man3/getgrnam.3:128
845 "The maximum needed size for I<buf> can be found using B<sysconf>(3) with "
846 "the argument B<_SC_GETGR_R_SIZE_MAX>."
850 #: build/C/man3/getgrnam.3:143
852 "The B<getgrnam>() and B<getgrgid>() functions return a pointer to a "
853 "I<group> structure, or NULL if the matching entry is not found or an error "
854 "occurs. If an error occurs, I<errno> is set appropriately. If one wants to "
855 "check I<errno> after the call, it should be set to zero before the call."
859 #: build/C/man3/getgrnam.3:152
861 "The return value may point to a static area, and may be overwritten by "
862 "subsequent calls to B<getgrent>(3), B<getgrgid>(), or B<getgrnam>(). (Do "
863 "not pass the returned pointer to B<free>(3).)"
867 #: build/C/man3/getgrnam.3:166
869 "On success, B<getgrnam_r>() and B<getgrgid_r>() return zero, and set "
870 "I<*result> to I<grp>. If no matching group record was found, these "
871 "functions return 0 and store NULL in I<*result>. In case of error, an error "
872 "number is returned, and NULL is stored in I<*result>."
876 #: build/C/man3/getgrnam.3:167 build/C/man3/getpwnam.3:174
878 msgid "B<0> or B<ENOENT> or B<ESRCH> or B<EBADF> or B<EPERM> or ... "
882 #: build/C/man3/getgrnam.3:174
883 msgid "The given I<name> or I<gid> was not found."
887 #: build/C/man3/getgrnam.3:185 build/C/man3/getpwent.3:135 build/C/man3/getpwnam.3:192
889 "The maximum number (B<OPEN_MAX>) of files was open already in the calling "
894 #: build/C/man3/getgrnam.3:188 build/C/man3/getpwent.3:138 build/C/man3/getpwnam.3:195
895 msgid "The maximum number of files was open already in the system."
899 #. AIX 5.1 - gives ESRCH
900 #. OSF1 4.0g - gives EWOULDBLOCK
901 #. libc, glibc up to version 2.6, Irix 6.5 - give ENOENT
902 #. glibc since version 2.7 - give 0
903 #. FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM
904 #. SunOS 5.8 - gives EBADF
905 #. Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0
907 #: build/C/man3/getgrnam.3:225
909 "The formulation given above under \"RETURN VALUE\" is from POSIX.1-2001. It "
910 "does not call \"not found\" an error, hence does not specify what value "
911 "I<errno> might have in this situation. But that makes it impossible to "
912 "recognize errors. One might argue that according to POSIX I<errno> should "
913 "be left unchanged if an entry is not found. Experiments on various "
914 "UNIX-like systems shows that lots of different values occur in this "
915 "situation: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM and probably others."
919 #: build/C/man3/getgrnam.3:231
921 "B<endgrent>(3), B<fgetgrent>(3), B<getgrent>(3), B<getpwnam>(3), "
922 "B<setgrent>(3), B<group>(5)"
926 #: build/C/man3/getgrouplist.3:27
932 #: build/C/man3/getgrouplist.3:27
938 #: build/C/man3/getgrouplist.3:30
939 msgid "getgrouplist - get list of groups to which a user belongs"
943 #: build/C/man3/getgrouplist.3:32 build/C/man3/putgrent.3:11
944 msgid "B<#include E<lt>grp.hE<gt>>"
948 #: build/C/man3/getgrouplist.3:34
949 msgid "B<int getgrouplist(const char *>I<user>B<, gid_t >I<group>B<,>"
953 #: build/C/man3/getgrouplist.3:36
954 msgid "B< gid_t *>I<groups>B<, int *>I<ngroups>B<);>"
958 #: build/C/man3/getgrouplist.3:44
959 msgid "B<getgrouplist>(): _BSD_SOURCE"
963 #: build/C/man3/getgrouplist.3:56
965 "The B<getgrouplist>() function scans the group database (see B<group>(5)) "
966 "to obtain the list of groups that I<user> belongs to. Up to I<*ngroups> of "
967 "these groups are returned in the array I<groups>."
971 #: build/C/man3/getgrouplist.3:66
973 "If it was not among the groups defined for I<user> in the group database, "
974 "then I<group> is included in the list of groups returned by "
975 "B<getgrouplist>(); typically this argument is specified as the group ID from "
976 "the password record for I<user>."
980 #: build/C/man3/getgrouplist.3:76
982 "The I<ngroups> argument is a value-result argument: on return it always "
983 "contains the number of groups found for I<user>, including I<group>; this "
984 "value may be greater than the number of groups stored in I<groups>."
988 #: build/C/man3/getgrouplist.3:84
990 "If the number of groups of which I<user> is a member is less than or equal "
991 "to I<*ngroups>, then the value I<*ngroups> is returned."
995 #: build/C/man3/getgrouplist.3:94
997 "If the user is a member of more than I<*ngroups> groups, then "
998 "B<getgrouplist>() returns -1. In this case the value returned in "
999 "I<*ngroups> can be used to resize the buffer passed to a further call "
1000 "B<getgrouplist>()."
1004 #: build/C/man3/getgrouplist.3:94
1010 #: build/C/man3/getgrouplist.3:96
1011 msgid "This function is present since glibc 2.2.4."
1015 #: build/C/man3/getgrouplist.3:98
1016 msgid "This function is nonstandard; it appears on most BSDs."
1020 #: build/C/man3/getgrouplist.3:98 build/C/man3/getpw.3:96 build/C/man5/group.5:54
1026 #: build/C/man3/getgrouplist.3:107
1028 "In glibc versions before 2.3.3, the implementation of this function contains "
1029 "a buffer-overrun bug: it returns the complete list of groups for I<user> in "
1030 "the array I<groups>, even when the number of groups exceeds I<*ngroups>."
1034 #: build/C/man3/getgrouplist.3:116
1036 "The program below displays the group list for the user named in its first "
1037 "command-line argument. The second command-line argument specifies the "
1038 "I<ngroups> value to be supplied to B<getgrouplist>(). The following shell "
1039 "session shows examples of the use of this program:"
1043 #: build/C/man3/getgrouplist.3:126
1046 "$B< ./a.out cecilia 0>\n"
1047 "getgrouplist() returned -1; ngroups = 3\n"
1048 "$B< ./a.out cecilia 3>\n"
1056 #: build/C/man3/getgrouplist.3:128
1058 msgid "Program source"
1062 #: build/C/man3/getgrouplist.3:135
1065 "#include E<lt>stdio.hE<gt>\n"
1066 "#include E<lt>stdlib.hE<gt>\n"
1067 "#include E<lt>grp.hE<gt>\n"
1068 "#include E<lt>pwd.hE<gt>\n"
1072 #: build/C/man3/getgrouplist.3:143
1076 "main(int argc, char *argv[])\n"
1078 " int j, ngroups;\n"
1080 " struct passwd *pw;\n"
1081 " struct group *gr;\n"
1085 #: build/C/man3/getgrouplist.3:148
1088 " if (argc != 3) {\n"
1089 " fprintf(stderr, \"Usage: %s E<lt>userE<gt> E<lt>ngroupsE<gt>\\en\", "
1091 " exit(EXIT_FAILURE);\n"
1096 #: build/C/man3/getgrouplist.3:150
1098 msgid " ngroups = atoi(argv[2]);\n"
1102 #: build/C/man3/getgrouplist.3:156
1105 " groups = malloc(ngroups * sizeof (gid_t));\n"
1106 " if (groups == NULL) {\n"
1107 " perror(\"malloc\");\n"
1108 " exit(EXIT_FAILURE);\n"
1113 #: build/C/man3/getgrouplist.3:158
1115 msgid " /* Fetch passwd structure (contains first group ID for user) */\n"
1119 #: build/C/man3/getgrouplist.3:164
1122 " pw = getpwnam(argv[1]);\n"
1123 " if (pw == NULL) {\n"
1124 " perror(\"getpwnam\");\n"
1125 " exit(EXIT_SUCCESS);\n"
1130 #: build/C/man3/getgrouplist.3:166
1132 msgid " /* Retrieve group list */\n"
1136 #: build/C/man3/getgrouplist.3:172
1139 " if (getgrouplist(argv[1], pw-E<gt>pw_gid, groups, &ngroups) == -1) {\n"
1140 " fprintf(stderr, \"getgrouplist() returned -1; ngroups = %d\\en\",\n"
1142 "\texit(EXIT_FAILURE);\n"
1147 #: build/C/man3/getgrouplist.3:174
1149 msgid " /* Display list of retrieved groups, along with group names */\n"
1153 #: build/C/man3/getgrouplist.3:183
1156 " fprintf(stderr, \"ngroups = %d\\en\", ngroups);\n"
1157 " for (j = 0; j E<lt> ngroups; j++) {\n"
1158 " printf(\"%d\", groups[j]);\n"
1159 " gr = getgrgid(groups[j]);\n"
1160 " if (gr != NULL)\n"
1161 " printf(\" (%s)\", gr-E<gt>gr_name);\n"
1162 " printf(\"\\en\");\n"
1167 #: build/C/man3/getgrouplist.3:186
1170 " exit(EXIT_SUCCESS);\n"
1175 #: build/C/man3/getgrouplist.3:192
1176 msgid "B<getgroups>(2), B<setgroups>(2), B<getgrent>(3), B<group>(5), B<passwd>(5)"
1180 #: build/C/man3/getpw.3:30
1186 #: build/C/man3/getpw.3:33
1187 msgid "getpw - Re-construct password line entry"
1191 #: build/C/man3/getpw.3:38
1194 "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */\n"
1195 "B<#include E<lt>sys/types.hE<gt>>\n"
1196 "B<#include E<lt>pwd.hE<gt>>\n"
1200 #: build/C/man3/getpw.3:40
1202 msgid "B<int getpw(uid_t >I<uid>B<, char *>I<buf>B<);>\n"
1206 #: build/C/man3/getpw.3:47
1208 "The B<getpw>() function reconstructs the password line entry for the given "
1209 "user ID I<uid> in the buffer I<buf>. The returned buffer contains a line of "
1214 #: build/C/man3/getpw.3:50
1215 msgid "B<name:passwd:uid:gid:gecos:dir:shell>"
1219 #: build/C/man3/getpw.3:65 build/C/man3/getpwent.3:96 build/C/man3/getpwnam.3:100
1223 " char *pw_name; /* username */\n"
1224 " char *pw_passwd; /* user password */\n"
1225 " uid_t pw_uid; /* user ID */\n"
1226 " gid_t pw_gid; /* group ID */\n"
1227 " char *pw_gecos; /* user information */\n"
1228 " char *pw_dir; /* home directory */\n"
1229 " char *pw_shell; /* shell program */\n"
1234 #: build/C/man3/getpw.3:70 build/C/man3/getpwent.3:101 build/C/man3/getpwent_r.3:83
1235 msgid "For more information about the fields of this structure, see B<passwd>(5)."
1239 #: build/C/man3/getpw.3:76
1241 "The B<getpw>() function returns 0 on success; on error, it returns -1, and "
1242 "I<errno> is set to indicate the error."
1246 #: build/C/man3/getpw.3:77 build/C/man3/putpwent.3:74
1252 #: build/C/man3/getpw.3:81
1253 msgid "I<buf> is NULL."
1257 #: build/C/man3/getpw.3:85
1258 msgid "No user corresponding to I<uid>."
1262 #: build/C/man3/getpw.3:96
1267 #: build/C/man3/getpw.3:103
1269 "The B<getpw>() function is dangerous as it may overflow the provided buffer "
1270 "I<buf>. It is obsoleted by B<getpwuid>(3)."
1274 #: build/C/man3/getpw.3:111
1276 "B<endpwent>(3), B<fgetpwent>(3), B<getpwent>(3), B<getpwnam>(3), "
1277 "B<getpwuid>(3), B<putpwent>(3), B<setpwent>(3), B<passwd>(5)"
1281 #: build/C/man3/getpwent.3:31
1287 #: build/C/man3/getpwent.3:34
1288 msgid "getpwent, setpwent, endpwent - get password file entry"
1292 #: build/C/man3/getpwent.3:38 build/C/man3/getpwnam.3:42
1295 "B<#include E<lt>sys/types.hE<gt>>\n"
1296 "B<#include E<lt>pwd.hE<gt>>\n"
1300 #: build/C/man3/getpwent.3:40
1302 msgid "B<struct passwd *getpwent(void);>\n"
1306 #: build/C/man3/getpwent.3:42
1308 msgid "B<void setpwent(void);>\n"
1312 #: build/C/man3/getpwent.3:44
1314 msgid "B<void endpwent(void);>\n"
1318 #: build/C/man3/getpwent.3:55
1319 msgid "B<getpwent>(), B<setpwent>(), B<endpwent>():"
1323 #: build/C/man3/getpwent.3:58
1325 "_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE\\ E<gt>=\\ 500 || "
1326 "_XOPEN_SOURCE\\ &&\\ _XOPEN_SOURCE_EXTENDED"
1330 #: build/C/man3/getpwent.3:72
1332 "The B<getpwent>() function returns a pointer to a structure containing the "
1333 "broken-out fields of a record from the password database (e.g., the local "
1334 "password file I</etc/passwd>, NIS, and LDAP). The first time B<getpwent>() "
1335 "is called, it returns the first entry; thereafter, it returns successive "
1340 #: build/C/man3/getpwent.3:77
1342 "The B<setpwent>() function rewinds to the beginning of the password "
1347 #: build/C/man3/getpwent.3:82
1349 "The B<endpwent>() function is used to close the password database after all "
1350 "processing has been performed."
1354 #: build/C/man3/getpwent.3:114
1356 "The B<getpwent>() function returns a pointer to a I<passwd> structure, or "
1357 "NULL if there are no more entries or an error occurs. If an error occurs, "
1358 "I<errno> is set appropriately. If one wants to check I<errno> after the "
1359 "call, it should be set to zero before the call."
1363 #: build/C/man3/getpwent.3:123
1365 "The return value may point to a static area, and may be overwritten by "
1366 "subsequent calls to B<getpwent>(), B<getpwnam>(3), or B<getpwuid>(3). (Do "
1367 "not pass the returned pointer to B<free>(3).)"
1371 #: build/C/man3/getpwent.3:152 build/C/man3/getpwnam.3:209
1372 msgid "local password database file"
1376 #: build/C/man3/getpwent.3:157 build/C/man3/getpwnam.3:214
1378 "SVr4, 4.3BSD, POSIX.1-2001. The I<pw_gecos> field is not specified in "
1379 "POSIX, but is present on most implementations."
1383 #: build/C/man3/getpwent.3:164
1385 "B<fgetpwent>(3), B<getpw>(3), B<getpwent_r>(3), B<getpwnam>(3), "
1386 "B<getpwuid>(3), B<putpwent>(3), B<passwd>(5)"
1390 #: build/C/man3/getpwent_r.3:23
1396 #: build/C/man3/getpwent_r.3:26
1397 msgid "getpwent_r, fgetpwent_r - get passwd file entry reentrantly"
1401 #: build/C/man3/getpwent_r.3:29
1403 msgid "B<#include E<lt>pwd.hE<gt>>\n"
1407 #: build/C/man3/getpwent_r.3:31
1409 msgid "B<int getpwent_r(struct passwd *>I<pwbuf>B<, char *>I<buf>B<,>\n"
1413 #: build/C/man3/getpwent_r.3:33
1415 msgid "B< size_t >I<buflen>B<, struct passwd **>I<pwbufp>B<);>\n"
1419 #: build/C/man3/getpwent_r.3:35
1422 "B<int fgetpwent_r(FILE *>I<fp>B<, struct passwd *>I<pwbuf>B<, char "
1427 #: build/C/man3/getpwent_r.3:37
1429 msgid "B< size_t >I<buflen>B<, struct passwd **>I<pwbufp>B<);>\n"
1433 #: build/C/man3/getpwent_r.3:46
1434 msgid "B<getpwent_r>(), _BSD_SOURCE || _SVID_SOURCE"
1438 #: build/C/man3/getpwent_r.3:49
1439 msgid "B<fgetpwent_r>(): _SVID_SOURCE"
1443 #: build/C/man3/getpwent_r.3:62
1445 "The functions B<getpwent_r>() and B<fgetpwent_r>() are the reentrant "
1446 "versions of B<getpwent>(3) and B<fgetpwent>(3). The former reads the next "
1447 "passwd entry from the stream initialized by B<setpwent>(3). The latter "
1448 "reads the next passwd entry from the stream I<fp>."
1452 #: build/C/man3/getpwent_r.3:78
1456 " char *pw_name; /* username */\n"
1457 " char *pw_passwd; /* user password */\n"
1458 " uid_t pw_uid; /* user ID */\n"
1459 " gid_t pw_gid; /* group ID */\n"
1460 " char *pw_gecos; /* user information */\n"
1461 " char *pw_dir; /* home directory */\n"
1462 " char *pw_shell; /* shell program */\n"
1467 #: build/C/man3/getpwent_r.3:102
1469 "The nonreentrant functions return a pointer to static storage, where this "
1470 "static storage contains further pointers to user name, password, gecos "
1471 "field, home directory and shell. The reentrant functions described here "
1472 "return all of that in caller-provided buffers. First of all there is the "
1473 "buffer I<pwbuf> that can hold a I<struct passwd>. And next the buffer "
1474 "I<buf> of size I<buflen> that can hold additional strings. The result of "
1475 "these functions, the I<struct passwd> read from the stream, is stored in the "
1476 "provided buffer I<*pwbuf>, and a pointer to this I<struct passwd> is "
1477 "returned in I<*pwbufp>."
1481 #: build/C/man3/getpwent_r.3:109
1483 "On success, these functions return 0 and I<*pwbufp> is a pointer to the "
1484 "I<struct passwd>. On error, these functions return an error value and "
1485 "I<*pwbufp> is NULL."
1489 #: build/C/man3/getpwent_r.3:127
1493 "getpwent_r(struct passwd *pwd, char *buf, int buflen);\n"
1497 #: build/C/man3/getpwent_r.3:137
1501 "getpwent_r(struct passwd *pwd, char *buf, int buflen,\n"
1506 #: build/C/man3/getpwent_r.3:144
1508 "The function B<getpwent_r>() is not really reentrant since it shares the "
1509 "reading position in the stream with all other threads."
1513 #: build/C/man3/getpwent_r.3:150
1516 "#define _GNU_SOURCE\n"
1517 "#include E<lt>pwd.hE<gt>\n"
1518 "#include E<lt>stdio.hE<gt>\n"
1519 "#define BUFLEN 4096\n"
1523 #: build/C/man3/getpwent_r.3:157
1529 " struct passwd pw, *pwp;\n"
1530 " char buf[BUFLEN];\n"
1535 #: build/C/man3/getpwent_r.3:169
1540 " i = getpwent_r(&pw, buf, BUFLEN, &pwp);\n"
1543 " printf(\"%s (%d)\\etHOME %s\\etSHELL %s\\en\", pwp-E<gt>pw_name,\n"
1544 " pwp-E<gt>pw_uid, pwp-E<gt>pw_dir, pwp-E<gt>pw_shell);\n"
1547 " exit(EXIT_SUCCESS);\n"
1552 #: build/C/man3/getpwent_r.3:186
1554 "B<fgetpwent>(3), B<getpw>(3), B<getpwent>(3), B<getpwnam>(3), "
1555 "B<getpwuid>(3), B<putpwent>(3), B<passwd>(5)"
1559 #: build/C/man3/getpwnam.3:35
1565 #: build/C/man3/getpwnam.3:38
1566 msgid "getpwnam, getpwnam_r, getpwuid, getpwuid_r - get password file entry"
1570 #: build/C/man3/getpwnam.3:44
1572 msgid "B<struct passwd *getpwnam(const char *>I<name>B<);>\n"
1576 #: build/C/man3/getpwnam.3:46
1578 msgid "B<struct passwd *getpwuid(uid_t >I<uid>B<);>\n"
1582 #: build/C/man3/getpwnam.3:48
1584 msgid "B<int getpwnam_r(const char *>I<name>B<, struct passwd *>I<pwd>B<,>\n"
1588 #: build/C/man3/getpwnam.3:50 build/C/man3/getpwnam.3:54
1591 "B< char *>I<buf>B<, size_t >I<buflen>B<, struct passwd "
1592 "**>I<result>B<);>\n"
1596 #: build/C/man3/getpwnam.3:52
1598 msgid "B<int getpwuid_r(uid_t >I<uid>B<, struct passwd *>I<pwd>B<,>\n"
1602 #: build/C/man3/getpwnam.3:64
1603 msgid "B<getpwnam_r>(), B<getpwuid_r>():"
1607 #: build/C/man3/getpwnam.3:79
1609 "The B<getpwnam>() function returns a pointer to a structure containing the "
1610 "broken-out fields of the record in the password database (e.g., the local "
1611 "password file I</etc/passwd>, NIS, and LDAP) that matches the username "
1616 #: build/C/man3/getpwnam.3:86
1618 "The B<getpwuid>() function returns a pointer to a structure containing the "
1619 "broken-out fields of the record in the password database that matches the "
1624 #: build/C/man3/getpwnam.3:106
1625 msgid "See B<passwd>(5) for more information about these fields."
1629 #: build/C/man3/getpwnam.3:128
1631 "The B<getpwnam_r>() and B<getpwuid_r>() functions obtain the same "
1632 "information as B<getpwnam>() and B<getpwuid>(), but store the retrieved "
1633 "I<passwd> structure in the space pointed to by I<pwd>. The string fields "
1634 "pointed to by the members of the I<passwd> structure are stored in the "
1635 "buffer I<buf> of size I<buflen>. A pointer to the result (in case of "
1636 "success) or NULL (in case no entry was found or an error occurred) is stored "
1641 #: build/C/man3/getpwnam.3:135
1643 "The maximum size needed for I<buf> can be found using B<sysconf>(3) with "
1644 "the argument B<_SC_GETPW_R_SIZE_MAX>."
1648 #: build/C/man3/getpwnam.3:150
1650 "The B<getpwnam>() and B<getpwuid>() functions return a pointer to a "
1651 "I<passwd> structure, or NULL if the matching entry is not found or an error "
1652 "occurs. If an error occurs, I<errno> is set appropriately. If one wants to "
1653 "check I<errno> after the call, it should be set to zero before the call."
1657 #: build/C/man3/getpwnam.3:159
1659 "The return value may point to a static area, and may be overwritten by "
1660 "subsequent calls to B<getpwent>(3), B<getpwnam>(), or B<getpwuid>(). (Do "
1661 "not pass the returned pointer to B<free>(3).)"
1665 #: build/C/man3/getpwnam.3:173
1667 "On success, B<getpwnam_r>() and B<getpwuid_r>() return zero, and set "
1668 "I<*result> to I<pwd>. If no matching password record was found, these "
1669 "functions return 0 and store NULL in I<*result>. In case of error, an error "
1670 "number is returned, and NULL is stored in I<*result>."
1674 #: build/C/man3/getpwnam.3:181
1675 msgid "The given I<name> or I<uid> was not found."
1679 #. AIX 5.1 - gives ESRCH
1680 #. OSF1 4.0g - gives EWOULDBLOCK
1681 #. libc, glibc up to version 2.6, Irix 6.5 - give ENOENT
1682 #. glibc since version 2.7 - give 0
1683 #. FreeBSD 4.8, OpenBSD 3.2, NetBSD 1.6 - give EPERM
1684 #. SunOS 5.8 - gives EBADF
1685 #. Tru64 5.1b, HP-UX-11i, SunOS 5.7 - give 0
1687 #: build/C/man3/getpwnam.3:235
1689 "The formulation given above under \"RETURN VALUE\" is from POSIX.1-2001. It "
1690 "does not call \"not found\" an error, and hence does not specify what value "
1691 "I<errno> might have in this situation. But that makes it impossible to "
1692 "recognize errors. One might argue that according to POSIX I<errno> should "
1693 "be left unchanged if an entry is not found. Experiments on various "
1694 "UNIX-like systems show that lots of different values occur in this "
1695 "situation: 0, ENOENT, EBADF, ESRCH, EWOULDBLOCK, EPERM and probably others."
1699 #: build/C/man3/getpwnam.3:253
1701 "The I<pw_dir> field contains the name of the initial working directory of "
1702 "the user. Login programs use the value of this field to initialize the "
1703 "B<HOME> environment variable for the login shell. An application that wants "
1704 "to determine its user's home directory should inspect the value of B<HOME> "
1705 "(rather than the value I<getpwuid(getuid())-E<gt>pw_dir>) since this allows "
1706 "the user to modify their notion of \"the home directory\" during a login "
1707 "session. To determine the (initial) home directory of another user, it is "
1708 "necessary to use I<getpwnam(\"username\")-E<gt>pw_dir> or similar."
1712 #: build/C/man3/getpwnam.3:258
1714 "The program below demonstrates the use of B<getpwnam_r>() to find the full "
1715 "username and user ID for the username supplied as a command-line argument."
1719 #: build/C/man3/getpwnam.3:265
1722 "#include E<lt>pwd.hE<gt>\n"
1723 "#include E<lt>stdio.hE<gt>\n"
1724 "#include E<lt>stdlib.hE<gt>\n"
1725 "#include E<lt>unistd.hE<gt>\n"
1726 "#include E<lt>errno.hE<gt>\n"
1730 #: build/C/man3/getpwnam.3:274
1734 "main(int argc, char *argv[])\n"
1736 " struct passwd pwd;\n"
1737 " struct passwd *result;\n"
1739 " size_t bufsize;\n"
1744 #: build/C/man3/getpwnam.3:279
1747 " if (argc != 2) {\n"
1748 " fprintf(stderr, \"Usage: %s username\\en\", argv[0]);\n"
1749 " exit(EXIT_FAILURE);\n"
1754 #: build/C/man3/getpwnam.3:283
1757 " bufsize = sysconf(_SC_GETPW_R_SIZE_MAX);\n"
1758 " if (bufsize == -1) /* Value was indeterminate */\n"
1759 " bufsize = 16384; /* Should be more than enough */\n"
1763 #: build/C/man3/getpwnam.3:289
1766 " buf = malloc(bufsize);\n"
1767 " if (buf == NULL) {\n"
1768 " perror(\"malloc\");\n"
1769 " exit(EXIT_FAILURE);\n"
1774 #: build/C/man3/getpwnam.3:300
1777 " s = getpwnam_r(argv[1], &pwd, buf, bufsize, &result);\n"
1778 " if (result == NULL) {\n"
1780 " printf(\"Not found\\en\");\n"
1783 " perror(\"getpwnam_r\");\n"
1785 " exit(EXIT_FAILURE);\n"
1790 #: build/C/man3/getpwnam.3:304
1793 " printf(\"Name: %s; UID: %ld\\en\", pwd.pw_gecos, (long) pwd.pw_uid);\n"
1794 " exit(EXIT_SUCCESS);\n"
1799 #: build/C/man3/getpwnam.3:314
1801 "B<endpwent>(3), B<fgetpwent>(3), B<getgrnam>(3), B<getpw>(3), "
1802 "B<getpwent>(3), B<getspnam>(3), B<putpwent>(3), B<setpwent>(3), B<passwd>(5)"
1806 #: build/C/man3/getspnam.3:6
1812 #: build/C/man3/getspnam.3:6
1818 #: build/C/man3/getspnam.3:11
1820 "getspnam, getspnam_r, getspent, getspent_r, setspent, endspent, fgetspent, "
1821 "fgetspent_r, sgetspent, sgetspent_r, putspent, lckpwdf, ulckpwdf - get "
1822 "shadow password file entry"
1826 #: build/C/man3/getspnam.3:14
1828 msgid "/* General shadow password file API */\n"
1832 #: build/C/man3/getspnam.3:16 build/C/man3/getspnam.3:38
1834 msgid "B<#include E<lt>shadow.hE<gt>>\n"
1838 #: build/C/man3/getspnam.3:18
1840 msgid "B<struct spwd *getspnam(const char *>I<name>B<);>\n"
1844 #: build/C/man3/getspnam.3:20
1846 msgid "B<struct spwd *getspent(void);>\n"
1850 #: build/C/man3/getspnam.3:22
1852 msgid "B<void setspent(void);>\n"
1856 #: build/C/man3/getspnam.3:24
1858 msgid "B<void endspent(void);>\n"
1862 #: build/C/man3/getspnam.3:26
1864 msgid "B<struct spwd *fgetspent(FILE *>I<fp>B<);>\n"
1868 #: build/C/man3/getspnam.3:28
1870 msgid "B<struct spwd *sgetspent(const char *>I<s>B<);>\n"
1874 #: build/C/man3/getspnam.3:30
1876 msgid "B<int putspent(struct spwd *>I<p>B<, FILE *>I<fp>B<);>\n"
1880 #: build/C/man3/getspnam.3:32
1882 msgid "B<int lckpwdf(void);>\n"
1886 #: build/C/man3/getspnam.3:34
1888 msgid "B<int ulckpwdf(void);>\n"
1892 #: build/C/man3/getspnam.3:36
1894 msgid "/* GNU extension */\n"
1898 #: build/C/man3/getspnam.3:40
1900 msgid "B<int getspent_r(struct spwd *>I<spbuf>B<,>\n"
1904 #: build/C/man3/getspnam.3:42 build/C/man3/getspnam.3:46 build/C/man3/getspnam.3:50 build/C/man3/getspnam.3:54
1907 "B< char *>I<buf>B<, size_t >I<buflen>B<, struct spwd "
1908 "**>I<spbufp>B<);>\n"
1912 #: build/C/man3/getspnam.3:44
1914 msgid "B<int getspnam_r(const char *>I<name>B<, struct spwd *>I<spbuf>B<,>\n"
1918 #: build/C/man3/getspnam.3:48
1920 msgid "B<int fgetspent_r(FILE *>I<fp>B<, struct spwd *>I<spbuf>B<,>\n"
1924 #: build/C/man3/getspnam.3:52
1926 msgid "B<int sgetspent_r(const char *>I<s>B<, struct spwd *>I<spbuf>B<,>\n"
1930 #: build/C/man3/getspnam.3:66
1931 msgid "B<getspent_r>(), B<getspnam_r>(), B<fgetspent_r>(), B<sgetspent_r>():"
1935 #: build/C/man3/getspnam.3:68
1936 msgid "_BSD_SOURCE || _SVID_SOURCE"
1940 #: build/C/man3/getspnam.3:82
1942 "Long ago it was considered safe to have encrypted passwords openly visible "
1943 "in the password file. When computers got faster and people got more "
1944 "security-conscious, this was no longer acceptable. Julianne Frances Haugh "
1945 "implemented the shadow password suite that keeps the encrypted passwords in "
1946 "the shadow password database (e.g., the local shadow password file "
1947 "I</etc/shadow>, NIS, and LDAP), readable only by root."
1950 #. FIXME I've commented out the following for the
1951 #. moment. The relationship between PAM and nsswitch.conf needs
1952 #. to be clearly documented in one place, which is pointed to by
1953 #. the pages for the user, group, and shadow password functions.
1956 #. This shadow password setup has been superseded by PAM
1957 #. (pluggable authentication modules), and the file
1958 #. .I /etc/nsswitch.conf
1959 #. now describes the sources to be used.
1961 #: build/C/man3/getspnam.3:99
1963 "The functions described below resemble those for the traditional password "
1964 "database (e.g., see B<getpwnam>(3) and B<getpwent>(3))."
1968 #: build/C/man3/getspnam.3:106
1970 "The B<getspnam>() function returns a pointer to a structure containing the "
1971 "broken-out fields of the record in the shadow password database that matches "
1972 "the username I<name>."
1975 #. some systems require a call of setspent() before the first getspent()
1978 #: build/C/man3/getspnam.3:118
1980 "The B<getspent>() function returns a pointer to the next entry in the "
1981 "shadow password database. The position in the input stream is initialized "
1982 "by B<setspent>(). When done reading, the program may call B<endspent>() so "
1983 "that resources can be deallocated."
1987 #: build/C/man3/getspnam.3:125
1989 "The B<fgetspent>() function is similar to B<getspent>() but uses the "
1990 "supplied stream instead of the one implicitly opened by B<setspent>()."
1994 #: build/C/man3/getspnam.3:132
1996 "The B<sgetspent>() function parses the supplied string I<s> into a struct "
2001 #: build/C/man3/getspnam.3:142
2003 "The B<putspent>() function writes the contents of the supplied struct "
2004 "I<spwd> I<*p> as a text line in the shadow password file format to the "
2005 "stream I<fp>. String entries with value NULL and numerical entries with "
2006 "value -1 are written as an empty string."
2010 #: build/C/man3/getspnam.3:157
2012 "The B<lckpwdf>() function is intended to protect against multiple "
2013 "simultaneous accesses of the shadow password database. It tries to acquire "
2014 "a lock, and returns 0 on success, or -1 on failure (lock not obtained within "
2015 "15 seconds). The B<ulckpwdf>() function releases the lock again. Note "
2016 "that there is no protection against direct access of the shadow password "
2017 "file. Only programs that use B<lckpwdf>() will notice the lock."
2021 #. SUN doesn't have sgetspent()
2023 #: build/C/man3/getspnam.3:162
2025 "These were the functions that formed the original shadow API. They are "
2030 #: build/C/man3/getspnam.3:162
2032 msgid "Reentrant versions"
2036 #: build/C/man3/getspnam.3:179
2038 "Analogous to the reentrant functions for the password database, glibc also "
2039 "has reentrant functions for the shadow password database. The "
2040 "B<getspnam_r>() function is like B<getspnam>() but stores the retrieved "
2041 "shadow password structure in the space pointed to by I<spbuf>. This shadow "
2042 "password structure contains pointers to strings, and these strings are "
2043 "stored in the buffer I<buf> of size I<buflen>. A pointer to the result (in "
2044 "case of success) or NULL (in case no entry was found or an error occurred) "
2045 "is stored in I<*spbufp>."
2049 #: build/C/man3/getspnam.3:186
2051 "The functions B<getspent_r>(), B<fgetspent_r>(), and B<sgetspent_r>() are "
2052 "similarly analogous to their nonreentrant counterparts."
2055 #. SUN doesn't have sgetspent_r()
2057 #: build/C/man3/getspnam.3:190
2059 "Some non-glibc systems also have functions with these names, often with "
2060 "different prototypes."
2064 #: build/C/man3/getspnam.3:190
2070 #: build/C/man3/getspnam.3:192
2072 "The shadow password structure is defined in I<E<lt>shadow.hE<gt>> as "
2077 #: build/C/man3/getspnam.3:210
2081 " char *sp_namp; /* Login name */\n"
2082 " char *sp_pwdp; /* Encrypted password */\n"
2083 " long sp_lstchg; /* Date of last change (measured\n"
2084 " in days since 1970-01-01 00:00:00 +0000 (UTC)) "
2086 " long sp_min; /* Min # of days between changes */\n"
2087 " long sp_max; /* Max # of days between changes */\n"
2088 " long sp_warn; /* # of days before password expires\n"
2089 " to warn user to change it */\n"
2090 " long sp_inact; /* # of days after password expires\n"
2091 " until account is disabled */\n"
2092 " long sp_expire; /* Date when account expires (measured\n"
2093 " in days since 1970-01-01 00:00:00 +0000 (UTC)) "
2095 " unsigned long sp_flag; /* Reserved */\n"
2100 #: build/C/man3/getspnam.3:217
2102 "The functions that return a pointer return NULL if no more entries are "
2103 "available or if an error occurs during processing. The functions which have "
2104 "I<int> as the return value return 0 for success and -1 for failure."
2108 #: build/C/man3/getspnam.3:220
2110 "For the nonreentrant functions, the return value may point to static area, "
2111 "and may be overwritten by subsequent calls to these functions."
2115 #: build/C/man3/getspnam.3:223
2117 "The reentrant functions return zero on success. In case of error, an error "
2118 "number is returned."
2122 #: build/C/man3/getspnam.3:227
2123 msgid "Supplied buffer is too small."
2127 #: build/C/man3/getspnam.3:228
2129 msgid "I</etc/shadow>"
2133 #: build/C/man3/getspnam.3:231
2134 msgid "local shadow password database file"
2138 #: build/C/man3/getspnam.3:231
2140 msgid "I</etc/.pwd.lock>"
2144 #: build/C/man3/getspnam.3:234
2149 #: build/C/man3/getspnam.3:240
2151 "The include file I<E<lt>paths.hE<gt>> defines the constant B<_PATH_SHADOW> "
2152 "to the pathname of the shadow password file."
2156 #: build/C/man3/getspnam.3:244
2158 "The shadow password database and its associated API are not specified in "
2159 "POSIX.1-2001. However, many other systems provide a similar API."
2163 #: build/C/man3/getspnam.3:248
2164 msgid "B<getgrnam>(3), B<getpwnam>(3), B<getpwnam_r>(3), B<shadow>(5)"
2168 #: build/C/man5/group.5:25
2174 #: build/C/man5/group.5:28
2175 msgid "group - user group file"
2179 #: build/C/man5/group.5:33
2181 "The I</etc/group> file is a text file that defines the groups on the "
2182 "system. There is one entry per line, with the following format:"
2186 #: build/C/man5/group.5:36
2187 msgid "group_name:password:GID:user_list"
2191 #: build/C/man5/group.5:39
2192 msgid "The fields are as follows:"
2196 #: build/C/man5/group.5:39
2198 msgid "I<group_name>"
2202 #: build/C/man5/group.5:42
2203 msgid "the name of the group."
2207 #: build/C/man5/group.5:42 build/C/man5/passwd.5:75
2213 #: build/C/man5/group.5:46
2215 "the (encrypted) group password. If this field is empty, no password is "
2220 #: build/C/man5/group.5:46 build/C/man5/passwd.5:84
2226 #: build/C/man5/group.5:49
2227 msgid "the numeric group ID."
2231 #: build/C/man5/group.5:49
2233 msgid "I<user_list>"
2237 #: build/C/man5/group.5:52
2238 msgid "a list of the usernames that are members of this group, separated by commas."
2242 #: build/C/man5/group.5:54
2247 #: build/C/man5/group.5:60
2249 "As the 4.2BSD B<initgroups>(3) man page says: No-one seems to keep "
2250 "I</etc/group> up-to-date."
2254 #: build/C/man5/group.5:65
2255 msgid "B<login>(1), B<newgrp>(1), B<getgrent>(3), B<getgrnam>(3), B<passwd>(5)"
2259 #: build/C/man3/initgroups.3:30
2265 #: build/C/man3/initgroups.3:30 build/C/man3/putpwent.3:28
2271 #: build/C/man3/initgroups.3:33
2272 msgid "initgroups - initialize the supplementary group access list"
2276 #: build/C/man3/initgroups.3:39
2278 msgid "B<int initgroups(const char *>I<user>B<, gid_t >I<group>B<);>\n"
2282 #: build/C/man3/initgroups.3:48
2283 msgid "B<initgroups>(): _BSD_SOURCE"
2287 #: build/C/man3/initgroups.3:56
2289 "The B<initgroups>() function initializes the group access list by reading "
2290 "the group database I</etc/group> and using all groups of which I<user> is a "
2291 "member. The additional group I<group> is also added to the list."
2295 #: build/C/man3/initgroups.3:60
2296 msgid "The I<user> argument must be non-NULL."
2300 #: build/C/man3/initgroups.3:67
2302 "The B<initgroups>() function returns 0 on success. On error, -1 is "
2303 "returned, and I<errno> is set appropriately."
2307 #: build/C/man3/initgroups.3:71
2308 msgid "Insufficient memory to allocate group information structure."
2312 #: build/C/man3/initgroups.3:71
2318 #: build/C/man3/initgroups.3:76
2320 "The calling process has insufficient privilege. See the underlying system "
2321 "call B<setgroups>(2)."
2325 #: build/C/man3/initgroups.3:79
2327 msgid "I</etc/group>\t\tgroup database file\n"
2331 #: build/C/man3/initgroups.3:82
2332 msgid "SVr4, 4.3BSD."
2336 #: build/C/man3/initgroups.3:85
2337 msgid "B<getgroups>(2), B<setgroups>(2), B<credentials>(7)"
2341 #: build/C/man5/passwd.5:29
2347 #: build/C/man5/passwd.5:29
2353 #: build/C/man5/passwd.5:32
2354 msgid "passwd - password file"
2358 #: build/C/man5/passwd.5:40
2360 "The I</etc/passwd> file is a text file that describes user login accounts "
2361 "for the system. It should have read permission allowed for all users (many "
2362 "utilities, like B<ls>(1) use it to map user IDs to usernames), but write "
2363 "access only for the superuser."
2367 #: build/C/man5/passwd.5:52
2369 "In the good old days there was no great problem with this general read "
2370 "permission. Everybody could read the encrypted passwords, but the hardware "
2371 "was too slow to crack a well-chosen password, and moreover the basic "
2372 "assumption used to be that of a friendly user-community. These days many "
2373 "people run some version of the shadow password suite, where I</etc/passwd> "
2374 "has an \\(aqx\\(aq character in the password field, and the encrypted "
2375 "passwords are in I</etc/shadow>, which is readable by the superuser only."
2379 #: build/C/man5/passwd.5:58
2381 "Regardless of whether shadow passwords are used, many system administrators "
2382 "use an asterisk (*) in the encrypted password field to make sure that this "
2383 "user can not authenticate him- or herself using a password. (But see NOTES "
2388 #: build/C/man5/passwd.5:63
2390 "If you create a new login, first put an asterisk (*) in the password field, "
2391 "then use B<passwd>(1) to set it."
2395 #: build/C/man5/passwd.5:65
2396 msgid "Each line of the file describes a single user, and has the following format:"
2400 #: build/C/man5/passwd.5:68
2401 msgid "account:password:UID:GID:GECOS:directory:shell"
2405 #: build/C/man5/passwd.5:71
2406 msgid "The field are as follows:"
2410 #: build/C/man5/passwd.5:71
2416 #: build/C/man5/passwd.5:75
2417 msgid "the name of the user on the system. It should not contain capital letters."
2421 #: build/C/man5/passwd.5:81
2423 "the encrypted user password, an asterisk (*), or the letter \\(aqx\\(aq. "
2424 "(See B<pwconv>(8) for an explanation of \\(aqx\\(aq.)"
2428 #: build/C/man5/passwd.5:81
2434 #: build/C/man5/passwd.5:84
2435 msgid "the numeric user ID."
2439 #: build/C/man5/passwd.5:87
2440 msgid "the numeric primary group ID for this user."
2444 #: build/C/man5/passwd.5:87
2450 #: build/C/man5/passwd.5:99
2452 "This field is optional and used only for informational purposes. Usually, "
2453 "it contains the full username. GECOS stands for \"General Electric "
2454 "Comprehensive Operating System\", which was renamed to GCOS when GE's large "
2455 "systems division was sold to Honeywell. Dennis Ritchie has reported: "
2456 "\"Sometimes we sent printer output or batch jobs to the GCOS machine. The "
2457 "gcos field in the password file was a place to stash the information for the "
2458 "$IDENTcard. Not elegant.\""
2462 #: build/C/man5/passwd.5:99
2464 msgid "I<directory>"
2468 #: build/C/man5/passwd.5:104
2469 msgid "the user's B<$HOME> directory."
2473 #: build/C/man5/passwd.5:104
2479 #: build/C/man5/passwd.5:111
2481 "the program to run at login (if empty, use I</bin/sh>). If set to a "
2482 "nonexistent executable, the user will be unable to login through "
2487 #: build/C/man5/passwd.5:117
2489 "If you want to create user groups, there must be an entry in I</etc/group>, "
2490 "or no group will exist."
2494 #: build/C/man5/passwd.5:131
2496 "If the encrypted password is set to an asterisk (*), the user will be unable "
2497 "to login using B<login>(1), but may still login using B<rlogin>(1), run "
2498 "existing processes and initiate new ones through B<rsh>(1), B<cron>(8), "
2499 "B<at>(1), or mail filters, etc. Trying to lock an account by simply "
2500 "changing the shell field yields the same result and additionally allows the "
2505 #: build/C/man5/passwd.5:138
2507 "B<login>(1), B<passwd>(1), B<su>(1), B<getpwent>(3), B<getpwnam>(3), "
2508 "B<group>(5), B<shadow>(5)"
2512 #: build/C/man3/putgrent.3:4
2518 #: build/C/man3/putgrent.3:4 build/C/man3/setaliasent.3:6
2524 #: build/C/man3/putgrent.3:7
2525 msgid "putgrent - write a group database entry to a file"
2529 #: build/C/man3/putgrent.3:9
2530 msgid "B<#define _GNU_SOURCE> /* See feature_test_macros(7) */"
2534 #: build/C/man3/putgrent.3:13
2535 msgid "B<int putgrent(const struct group *>I<grp>B<, FILE *>I<fp>B<);>"
2539 #: build/C/man3/putgrent.3:22
2541 "The B<putgrent>() function is the counterpart for B<fgetgrent>(3). The "
2542 "function writes the content of the provided I<struct group> into the file "
2543 "pointed to by I<fp>. The list of group members must be NULL-terminated or "
2548 #: build/C/man3/putgrent.3:24
2549 msgid "The I<struct group> is defined as follows:"
2553 #: build/C/man3/putgrent.3:33
2557 " char *gr_name; /* group name */\n"
2558 " char *gr_passwd; /* group password */\n"
2559 " gid_t gr_gid; /* group ID */\n"
2560 " char **gr_mem; /* group members */\n"
2565 #: build/C/man3/putgrent.3:37
2566 msgid "The function returns zero on success, and a nonzero value on error."
2570 #: build/C/man3/putgrent.3:39
2571 msgid "This function is a GNU extension."
2575 #: build/C/man3/putgrent.3:42
2576 msgid "B<fgetgrent>(3), B<getgrent>(3), B<group>(5)"
2580 #: build/C/man3/putpwent.3:28
2586 #: build/C/man3/putpwent.3:31
2587 msgid "putpwent - write a password file entry"
2591 #: build/C/man3/putpwent.3:38
2593 msgid "B<int putpwent(const struct passwd *>I<p>B<, FILE *>I<stream>B<);>\n"
2597 #: build/C/man3/putpwent.3:47
2598 msgid "B<putpwent>(): _SVID_SOURCE"
2602 #: build/C/man3/putpwent.3:52
2604 "The B<putpwent>() function writes a password entry from the structure I<p> "
2605 "in the file associated with I<stream>."
2609 #: build/C/man3/putpwent.3:66
2613 " char *pw_name; /* username */\n"
2614 " char *pw_passwd; /* user password */\n"
2615 " uid_t pw_uid; /* user ID */\n"
2616 " gid_t pw_gid; /* group ID */\n"
2617 " char *pw_gecos; /* real name */\n"
2618 " char *pw_dir; /* home directory */\n"
2619 " char *pw_shell; /* shell program */\n"
2624 #: build/C/man3/putpwent.3:73
2625 msgid "The B<putpwent>() function returns 0 on success, or -1 if an error occurs."
2629 #: build/C/man3/putpwent.3:77
2630 msgid "Invalid (NULL) argument given."
2634 #: build/C/man3/putpwent.3:86
2636 "B<endpwent>(3), B<fgetpwent>(3), B<getpw>(3), B<getpwent>(3), "
2637 "B<getpwnam>(3), B<getpwuid>(3), B<setpwent>(3)"
2641 #: build/C/man3/setaliasent.3:6
2647 #: build/C/man3/setaliasent.3:10
2649 "setaliasent, endaliasent, getaliasent, getaliasent_r, getaliasbyname, "
2650 "getaliasbyname_r - read an alias entry"
2654 #: build/C/man3/setaliasent.3:12
2655 msgid "B<#include E<lt>aliases.hE<gt>>"
2659 #: build/C/man3/setaliasent.3:14
2660 msgid "B<void setaliasent(void);>"
2664 #: build/C/man3/setaliasent.3:16
2665 msgid "B<void endaliasent(void);>"
2669 #: build/C/man3/setaliasent.3:18
2670 msgid "B<struct aliasent *getaliasent(void);>"
2674 #: build/C/man3/setaliasent.3:20
2675 msgid "B<int getaliasent_r(struct aliasent *>I<result>B<,>"
2679 #: build/C/man3/setaliasent.3:22 build/C/man3/setaliasent.3:28
2680 msgid "B< char *>I<buffer>B<, size_t >I<buflen>B<, struct aliasent **>I<res>B<);>"
2684 #: build/C/man3/setaliasent.3:24
2685 msgid "B<struct aliasent *getaliasbyname(const char *>I<name>B<);>"
2689 #: build/C/man3/setaliasent.3:26
2691 "B<int getaliasbyname_r(const char *>I<name>B<, struct aliasent "
2696 #: build/C/man3/setaliasent.3:33
2698 "One of the databases available with the Name Service Switch (NSS) is the "
2699 "aliases database, that contains mail aliases. (To find out which databases "
2700 "are supported, try I<getent --help>.) Six functions are provided to access "
2701 "the aliases database."
2705 #: build/C/man3/setaliasent.3:40
2707 "The B<getaliasent>() function returns a pointer to a structure containing "
2708 "the group information from the aliases database. The first time it is "
2709 "called it returns the first entry; thereafter, it returns successive "
2714 #: build/C/man3/setaliasent.3:45
2716 "The B<setaliasent>() function rewinds the file pointer to the beginning of "
2717 "the aliases database."
2721 #: build/C/man3/setaliasent.3:49
2722 msgid "The B<endaliasent>() function closes the aliases database."
2726 #: build/C/man3/setaliasent.3:56
2728 "B<getaliasent_r>() is the reentrant version of the previous function. The "
2729 "requested structure is stored via the first argument but the programmer "
2730 "needs to fill the other arguments also. Not providing enough space causes "
2731 "the function to fail."
2735 #: build/C/man3/setaliasent.3:62
2737 "The function B<getaliasbyname>() takes the name argument and searches the "
2738 "aliases database. The entry is returned as a pointer to a I<struct "
2743 #: build/C/man3/setaliasent.3:69
2745 "B<getaliasbyname_r>() is the reentrant version of the previous function. "
2746 "The requested structure is stored via the second argument but the programmer "
2747 "needs to fill the other arguments also. Not providing enough space causes "
2748 "the function to fail."
2752 #: build/C/man3/setaliasent.3:74
2753 msgid "The I<struct aliasent> is defined in I<E<lt>aliases.hE<gt>>:"
2757 #: build/C/man3/setaliasent.3:83
2760 "struct aliasent {\n"
2761 " char *alias_name; /* alias name */\n"
2762 " size_t alias_members_len;\n"
2763 " char **alias_members; /* alias name list */\n"
2764 " int alias_local;\n"
2769 #: build/C/man3/setaliasent.3:91
2771 "The functions B<getaliasent_r>() and B<getaliasbyname_r>() return a "
2772 "nonzero value on error."
2776 #: build/C/man3/setaliasent.3:97
2778 "The default alias database is the file I</etc/aliases>. This can be changed "
2779 "in the I</etc/nsswitch.conf> file."
2783 #: build/C/man3/setaliasent.3:100
2784 msgid "These routines are glibc-specific. The NeXT system has similar routines:"
2788 #: build/C/man3/setaliasent.3:104
2790 msgid "#include E<lt>aliasdb.hE<gt>\n"
2794 #: build/C/man3/setaliasent.3:109
2797 "void alias_setent(void);\n"
2798 "void alias_endent(void);\n"
2799 "alias_ent *alias_getent(void);\n"
2800 "alias_ent *alias_getbyname(char *name);\n"
2804 #: build/C/man3/setaliasent.3:115
2806 "The following example compiles with I<gcc example.c -o example>. It will "
2807 "dump all names in the alias database."
2811 #: build/C/man3/setaliasent.3:121
2814 "#include E<lt>aliases.hE<gt>\n"
2815 "#include E<lt>stdio.hE<gt>\n"
2816 "#include E<lt>stdlib.hE<gt>\n"
2817 "#include E<lt>errno.hE<gt>\n"
2821 #: build/C/man3/setaliasent.3:140
2827 " struct aliasent *al;\n"
2830 " al = getaliasent();\n"
2831 " if (al == NULL)\n"
2833 " printf(\"Name: %s\\en\", al-E<gt>alias_name);\n"
2836 " perror(\"reading alias\");\n"
2837 " exit(EXIT_FAILURE);\n"
2840 " exit(EXIT_SUCCESS);\n"
2845 #: build/C/man3/setaliasent.3:145
2846 msgid "B<getgrent>(3), B<getpwent>(3), B<getspent>(3), B<aliases>(5)"