Updated: 2022/Sep/29

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


OPENPAM_STRADDCH(3)        Library Functions Manual        OPENPAM_STRADDCH(3)

NAME
     openpam_straddch - add a character to a string, expanding the buffer if
     needed

SYNOPSIS
     #include <sys/types.h>
     #include <security/pam_appl.h>
     #include <security/openpam.h>

     int
     openpam_straddch(char **str, size_t *size, size_t *len, int ch);

DESCRIPTION
     The openpam_straddch() function appends a character to a dynamically
     allocated NUL-terminated buffer, reallocating the buffer as needed.

     The str argument points to a variable containing either a pointer to an
     existing buffer or NULL.  If the value of the variable pointed to by str
     is NULL, a new buffer is allocated.

     The size and len argument point to variables used to hold the size of the
     buffer and the length of the string it contains, respectively.

     The final argument, ch, is the character that should be appended to the
     string.  If ch is 0, nothing is appended, but a new buffer is still
     allocated if str is NULL.  This can be used to "bootstrap" the string.

     If a new buffer is allocated or an existing buffer is reallocated to make
     room for the additional character, str and size are updated accordingly.

     The openpam_straddch() function ensures that the buffer is always NUL-
     terminated.

     If the openpam_straddch() function is successful, it increments the
     integer variable pointed to by len (unless ch was 0) and returns 0.
     Otherwise, it leaves the variables pointed to by str, size and len
     unmodified, sets errno to ENOMEM and returns -1.

RETURN VALUES
     The openpam_straddch() function returns 0 on success and -1 on failure.

SEE ALSO
     pam(3), pam_strerror(3)

STANDARDS
     The openpam_straddch() function is an OpenPAM extension.

AUTHORS
     The openpam_straddch() function and this manual page were developed by
     Dag-Erling Sm/orgrav <des@des.no>.

NetBSD 10.99                     June 27, 2023                    NetBSD 10.99