1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
.\" Generated from openpam_readlinev.c by gendoc.pl
.\" $Id: openpam_readlinev.c 648 2013-03-05 17:54:27Z des $
.Dd September 12, 2014
.Dt OPENPAM_READLINEV 3
.Os
.Sh NAME
.Nm openpam_readlinev
.Nd read a line from a file and split it into words
.Sh LIBRARY
.Lb libpam
.Sh SYNOPSIS
.In sys/types.h
.In stdio.h
.In security/pam_appl.h
.In security/openpam.h
.Ft "char **"
.Fn openpam_readlinev "FILE *f" "int *lineno" "int *lenp"
.Sh DESCRIPTION
The
.Fn openpam_readlinev
function reads a line from a file, splits it
into words according to the rules described in the
.Xr openpam_readword 3
manual page, and returns a list of those words.
.Pp
If
.Fa lineno
is not
.Dv NULL ,
the integer variable it points to is
incremented every time a newline character is read.
This includes quoted or escaped newline characters and the newline
character at the end of the line.
.Pp
If
.Fa lenp
is not
.Dv NULL ,
the number of words on the line is stored in the
variable to which it points.
.Sh RETURN VALUES
If successful, the
.Fn openpam_readlinev
function returns a pointer to a
dynamically allocated array of pointers to individual dynamically
allocated NUL-terminated strings, each containing a single word, in the
order in which they were encountered on the line.
The array is terminated by a
.Dv NULL
pointer.
.Pp
The caller is responsible for freeing both the array and the individual
strings by passing each of them to
.Xr free 3 .
.Pp
If the end of the line was reached before any words were read,
.Fn openpam_readlinev
returns a pointer to a dynamically allocated array
containing a single
.Dv NULL
pointer.
.Pp
The
.Fn openpam_readlinev
function can fail and return
.Dv NULL
for one of
four reasons:
.Bl -bullet
.It
The end of the file was reached before any words were read;
.Va errno
is
zero,
.Xr ferror 3
returns zero, and
.Xr feof 3
returns a non-zero value.
.It
The end of the file was reached while a quote or backslash escape
was in effect;
.Va errno
is set to
.Dv EINVAL ,
.Xr ferror 3
returns zero, and
.Xr feof 3
returns a non-zero value.
.It
An error occurred while reading from the file;
.Va errno
is non-zero,
.Xr ferror 3
returns a non-zero value and
.Xr feof 3
returns zero.
.It
A
.Xr malloc 3
or
.Xr realloc 3
call failed;
.Va errno
is set to
.Dv ENOMEM ,
.Xr ferror 3
returns a non-zero value, and
.Xr feof 3
may or may not return
a non-zero value.
.El
.Sh SEE ALSO
.Xr openpam_readline 3 ,
.Xr openpam_readword 3 ,
.Xr pam 3
.Sh STANDARDS
The
.Fn openpam_readlinev
function is an OpenPAM extension.
.Sh AUTHORS
The
.Fn openpam_readlinev
function and this manual page were
developed by
.An Dag-Erling Sm\(/orgrav Aq des@des.no .
|