Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions include/bfdev/xprintf.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/* SPDX-License-Identifier: LGPL-3.0-or-later */
/*
* Copyright(c) 2025 John Sanpe <sanpeqf@gmail.com>
*/

#ifndef _BFDEV_XPRINTF_H_
#define _BFDEV_XPRINTF_H_

#include <bfdev/config.h>
#include <bfdev/types.h>
#include <bfdev/stddef.h>
#include <bfdev/stdarg.h>

BFDEV_BEGIN_DECLS

typedef struct bfdev_vxprintf bfdev_vxprintf_t;

typedef void
(*bfdev_vxprintf_write)(const char *buff, bfdev_size_t len, void *pdata);

struct bfdev_vxprintf {
bfdev_vxprintf_write write;
void *pdata;
};

extern __bfdev_printf(2, 0) bfdev_size_t
bfdev_vxfprintf(bfdev_vxprintf_t *ctx, const char *fmt, bfdev_va_list args);

extern __bfdev_printf(2, 3) bfdev_size_t
bfdev_xfprintf(bfdev_vxprintf_t *ctx, const char *fmt, ...);

extern __bfdev_printf(3, 0) bfdev_size_t
bfdev_xnprintf(char *buff, bfdev_size_t size, const char *fmt, bfdev_va_list args);

extern __bfdev_printf(3, 4) bfdev_size_t
bfdev_xprintf(char *buff, bfdev_size_t size, const char *fmt, ...);

BFDEV_END_DECLS

#endif /* _BFDEV_XPRINTF_H_ */
3 changes: 2 additions & 1 deletion port/generic/stdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* Copyright(c) 2025 John Sanpe <sanpeqf@gmail.com>
*/

#include <bfdev/xprintf.h>
#include <port/stdio.h>
#include <export.h>

Expand All @@ -12,5 +13,5 @@ __bfdev_weak int
bfport_vsnprintf(char *s, bfdev_size_t maxlen, const char *fmt,
bfdev_va_list arg)
{
return 0;
return bfdev_xnprintf(s, maxlen, fmt, arg);
}
2 changes: 2 additions & 0 deletions src/libc/build.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,6 @@ set(BFDEV_SOURCE
${CMAKE_CURRENT_LIST_DIR}/ctype.c
${CMAKE_CURRENT_LIST_DIR}/strdup.c
${CMAKE_CURRENT_LIST_DIR}/string.c
${CMAKE_CURRENT_LIST_DIR}/xfprintf.c
${CMAKE_CURRENT_LIST_DIR}/xprintf.c
)
Loading
Loading