Add async_safe_format_fd_va_list
Bug: none
Test: bionic unit tests
Change-Id: I8c6b2d1d118f4182dd7bf1cbfba78f20b3cefc79
diff --git a/libc/async_safe/async_safe_log.cpp b/libc/async_safe/async_safe_log.cpp
index 5f22c74..207035a 100644
--- a/libc/async_safe/async_safe_log.cpp
+++ b/libc/async_safe/async_safe_log.cpp
@@ -424,13 +424,18 @@
return buffer_len;
}
-int async_safe_format_fd(int fd, const char* format, ...) {
+int async_safe_format_fd_va_list(int fd, const char* format, va_list args) {
FdOutputStream os(fd);
+ out_vformat(os, format, args);
+ return os.total;
+}
+
+int async_safe_format_fd(int fd, const char* format, ...) {
va_list args;
va_start(args, format);
- out_vformat(os, format, args);
+ int result = async_safe_format_fd_va_list(fd, format, args);
va_end(args);
- return os.total;
+ return result;
}
static int write_stderr(const char* tag, const char* msg) {
diff --git a/libc/async_safe/include/async_safe/log.h b/libc/async_safe/include/async_safe/log.h
index 415b48e..df68062 100644
--- a/libc/async_safe/include/async_safe/log.h
+++ b/libc/async_safe/include/async_safe/log.h
@@ -90,6 +90,7 @@
int async_safe_format_buffer_va_list(char* buffer, size_t buffer_size, const char* format, va_list args);
int async_safe_format_fd(int fd, const char* format , ...) __printflike(2, 3);
+int async_safe_format_fd_va_list(int fd, const char* format, va_list args);
int async_safe_format_log(int pri, const char* tag, const char* fmt, ...) __printflike(3, 4);
int async_safe_format_log_va_list(int pri, const char* tag, const char* fmt, va_list ap);
int async_safe_write_log(int pri, const char* tag, const char* msg);