auplugin_fgets(3) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | BACKGROUND | SEE ALSO | COLOPHON

AUPLUGIN_FGETS(3)            Linux Audit API            AUPLUGIN_FGETS(3)

NAME         top

       auplugin_fgets, auplugin_fgets_more, auplugin_fgets_eof,
       auplugin_fgets_clear, auplugin_setvbuf, auplugin_setvbuf_r -
       buffered line reader helpers

SYNOPSIS         top

       #include <auplugin.h>

       int auplugin_fgets(char *buf, size_t blen, int fd);
       int auplugin_fgets_more(size_t blen);
       int auplugin_fgets_eof(void);
       void auplugin_fgets_clear(void);
       int auplugin_setvbuf(void *buf, size_t buff_size, enum
       auplugin_mem how);
       int auplugin_setvbuf_r(auplugin_fgets_state_t *st, void *buf,
       size_t buff_size, enum auplugin_mem how);

DESCRIPTION         top

       auplugin_fgets reads from fd into buf up to blen bytes or through
       the next newline. Text is accumulated across calls in an internal
       buffer so that complete lines can be returned. The string is NUL
       terminated.

       auplugin_fgets_more checks whether the buffer holds a newline or
       at least blen - 1 bytes.

       auplugin_fgets_eof indicates whether end of file was reached on fd

       auplugin_fgets_clear resets the internal buffer and EOF state,
       discarding any stored text. When the memory type is MEM_MMAP_FILE
       , the buffer is rewound to the beginning making the entire file
       available again.

       auplugin_setvbuf points the internal buffer at buf and sets how it
       will be released when auplugin_fgets_destroy is called. The how
       parameter should be one of

              MEM_SELF_MANAGED  -  Internal buffer owned by fgets

              MEM_MALLOC  -  User-supplied malloc buffer; fgets frees it

              MEM_MMAP  -  User-supplied mmap buffer; fgets munmaps it

              MEM_MMAP_FILE  -  Read-only mmap file data

       The default is MEM_SELF_MANAGED which means its lifecycle is
       automatically handled. When MEM_MMAP_FILE is used, the buffer is
       treated as a preloaded buffer (the entire file) and no reads will
       be performed on the descriptor provided to auplugin_fgets_r.  The
       reentrant form auplugin_setvbuf_r operates on an explicit state
       handle.

       These functions maintain static state and are therefore not thread
       safe. For thread-safety, use the re-entrant variants.

RETURN VALUE         top

       auplugin_fgets returns -1 on error, 0 when no data is available,
       or the number of characters copied otherwise.

       auplugin_fgets_more and auplugin_fgets_eof return 1 for true and 0
       for false.

       auplugin_fgets_clear returns no value.

       auplugin_setvbuf returns 0 on success and 1 on failure.

BACKGROUND         top

        The reason that this family of functions was created is because
       in  auditd plugins, the event stream is stdin, which is
       descriptor 0.  A typical pattern is to call select, poll, or epoll
       to wait for a  record to arrive. As soon as it does, you need to
       read it. If you  use fgets, you will wind up with big problems
       because you cannot mix  low level descriptors with high level
       constructs like struct FILE.  This family of functions allows you
       to correctly work only using descriptors but with the convenience
       of fgets.

SEE ALSO         top

       fgets(3)

COLOPHON         top

       This page is part of the audit (Linux Audit) project.  Information
       about the project can be found at 
       ⟨http://people.redhat.com/sgrubb/audit/⟩.  If you have a bug report
       for this manual page, send it to linux-audit@redhat.com.  This
       page was obtained from the project's upstream Git repository
       ⟨https://github.com/linux-audit/audit-userspace.git⟩ on
       2026-05-24.  (At that time, the date of the most recent commit
       that was found in the repository was 2026-05-17.)  If you discover
       any rendering problems in this HTML version of the page, or you
       believe there is a better or more up-to-date source for the page,
       or you have corrections or improvements to the information in this
       COLOPHON (which is not part of the original manual page), send a
       mail to man-pages@man7.org

Red Hat                         June 2025               AUPLUGIN_FGETS(3)

Pages that refer to this page: auplugin(3)