Path: blob/main/sys/compat/linuxkpi/common/src/linux_seq_buf.c
96339 views
/*1* Copyright (c) 2025-2026 The FreeBSD Foundation2* Copyright (c) 2025-2026 Jean-Sébastien Pédron <[email protected]>3*4* This software was developed by Jean-Sébastien Pédron under sponsorship5* from the FreeBSD Foundation.6*7* SPDX-License-Identifier: BSD-2-Clause8*/910#include <linux/seq_buf.h>1112void13linuxkpi_seq_buf_init(struct seq_buf *s, char *buf, unsigned int size)14{15s->buffer = buf;16s->size = size;1718seq_buf_clear(s);19}2021int22linuxkpi_seq_buf_printf(struct seq_buf *s, const char *fmt, ...)23{24int ret;25va_list args;2627va_start(args, fmt);28ret = seq_buf_vprintf(s, fmt, args);29va_end(args);3031return (ret);32}3334int35linuxkpi_seq_buf_vprintf(struct seq_buf *s, const char *fmt, va_list args)36{37int ret;3839if (!seq_buf_has_overflowed(s)) {40ret = vsnprintf(s->buffer + s->len, s->size - s->len, fmt, args);41if (s->len + ret < s->size) {42s->len += ret;43return (0);44}45}4647seq_buf_set_overflow(s);48return (-1);49}5051const char *52linuxkpi_seq_buf_str(struct seq_buf *s)53{54if (s->size == 0)55return ("");5657if (seq_buf_buffer_left(s))58s->buffer[s->len] = '\0';59else60s->buffer[s->size - 1] = '\0';6162return (s->buffer);63}646566