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, MEM_MALLOC, MEM_MMAP,
       or MEM_MMAP_FILE.  The default is MEM_SELF_MANAGED which means no
       action is taken on the memory block.  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.

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
       2025-08-11.  (At that time, the date of the most recent commit
       that was found in the repository was 2025-08-09.)  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)