]> git.ipfire.org Git - thirdparty/glibc.git/blame - pwd/putpwent.c
Update copyright dates with scripts/update-copyrights.
[thirdparty/glibc.git] / pwd / putpwent.c
CommitLineData
b168057a 1/* Copyright (C) 1991-2015 Free Software Foundation, Inc.
c84142e8 2 This file is part of the GNU C Library.
28f540f4 3
c84142e8 4 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
28f540f4 8
c84142e8
UD
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 12 Lesser General Public License for more details.
28f540f4 13
41bdb6e2 14 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
15 License along with the GNU C Library; if not, see
16 <http://www.gnu.org/licenses/>. */
28f540f4 17
28f540f4
RM
18#include <errno.h>
19#include <stdio.h>
20#include <pwd.h>
21
537e7234 22#define _S(x) x ?: ""
28f540f4
RM
23
24/* Write an entry to the given stream.
25 This must know the format of the password file. */
26int
c4029823 27putpwent (p, stream)
c84142e8 28 const struct passwd *p;
c4029823 29 FILE *stream;
28f540f4
RM
30{
31 if (p == NULL || stream == NULL)
32 {
c4029823 33 __set_errno (EINVAL);
28f540f4
RM
34 return -1;
35 }
36
537e7234
UD
37 if (p->pw_name[0] == '+' || p->pw_name[0] == '-')
38 {
39 if (fprintf (stream, "%s:%s:::%s:%s:%s\n",
40 p->pw_name, _S (p->pw_passwd),
41 _S (p->pw_gecos), _S (p->pw_dir), _S (p->pw_shell)) < 0)
42 return -1;
43 }
44 else
45 {
46 if (fprintf (stream, "%s:%s:%lu:%lu:%s:%s:%s\n",
47 p->pw_name, _S (p->pw_passwd),
48 (unsigned long int) p->pw_uid,
49 (unsigned long int) p->pw_gid,
50 _S (p->pw_gecos), _S (p->pw_dir), _S (p->pw_shell)) < 0)
51 return -1;
52 }
c84142e8 53 return 0;
28f540f4 54}