Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


OPENPAM_READLINEV(3)       Library Functions Manual       OPENPAM_READLINEV(3)

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/orgrav <des@des.no>.

NetBSD 10.99                     June 27, 2023                    NetBSD 10.99