NAME
openpam_readlinev —
read a line from a
file and split it into words
SYNOPSIS
#include <sys/types.h>
#include <stdio.h>
#include <security/pam_appl.h>
#include <security/openpam.h>
char **
openpam_readlinev(
FILE
*f,
int *lineno,
int *lenp);
DESCRIPTION
The
openpam_readlinev() function reads a line from a file,
splits it into words according to the rules described in the
openpam_readword(3)
manual page, and returns a list of those words.
If
lineno is not
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.
If
lenp is not
NULL
, the number of
words on the line is stored in the variable to which it points.
RETURN VALUES
If successful, the
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
NULL
pointer.
The caller is responsible for freeing both the array and the individual strings
by passing each of them to
free(3).
If the end of the line was reached before any words were read,
openpam_readlinev() returns a pointer to a dynamically
allocated array containing a single
NULL
pointer.
The
openpam_readlinev() function can fail and return
NULL
for one of four reasons:
- The end of the file was reached before any words were
read; errno is zero,
ferror(3) returns zero, and
feof(3) returns a non-zero
value.
- The end of the file was reached while a quote or
backslash escape was in effect; errno is set to
EINVAL
,
ferror(3) returns zero, and
feof(3) returns a non-zero
value.
- An error occurred while reading from the file;
errno is non-zero,
ferror(3) returns a non-zero
value and feof(3) returns
zero.
- A
malloc(3) or
realloc(3) call failed;
errno is set to
ENOMEM
,
ferror(3) returns a non-zero
value, and feof(3) may or may
not return a non-zero value.
SEE ALSO
openpam_readline(3),
openpam_readword(3),
pam(3)
STANDARDS
The
openpam_readlinev() function is an OpenPAM extension.
AUTHORS
The
openpam_readlinev() function and this manual page were
developed by
Dag-Erling Smørgrav
<
des@des.no>.