[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[COMMITTED 4/7] poked: add new function `usock_out_printf'
From: |
Mohammad-Reza Nabipoor |
Subject: |
[COMMITTED 4/7] poked: add new function `usock_out_printf' |
Date: |
Sun, 4 Dec 2022 23:04:59 +0100 |
2022-12-04 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* poked/usock.h (usock_out_printf): New function.
* poked/usock.c (usock_out_printf): Likewise.
---
ChangeLog | 5 +++++
poked/usock.c | 20 ++++++++++++++++++++
poked/usock.h | 5 +++++
3 files changed, 30 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index f6ffd156..9b09555d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2022-12-04 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
+
+ * poked/usock.h (usock_out_printf): New function.
+ * poked/usock.c (usock_out_printf): Likewise.
+
2022-12-04 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* poked/usock.h (USOCK_CHAN_IN_AUTOCMPL): Remove macro.
diff --git a/poked/usock.c b/poked/usock.c
index f605bf04..d767aaad 100644
--- a/poked/usock.c
+++ b/poked/usock.c
@@ -20,7 +20,9 @@
#include <assert.h>
#include <errno.h>
#include <inttypes.h>
+#include <stdarg.h>
#include <stdint.h>
+#include <stdio.h> // vasprintf
#include <stdlib.h>
#include <string.h>
@@ -740,6 +742,24 @@ usock_out (struct usock *u, uint8_t chan, uint32_t kind,
const void *data,
usock_notify (u);
}
+void
+usock_out_printf (struct usock *u, uint8_t chan, uint32_t kind,
+ const char *fmt, ...)
+{
+ char *data = NULL;
+ va_list ap;
+ int n;
+
+ va_start (ap, fmt);
+ n = vasprintf (&data, fmt, ap);
+ va_end (ap);
+ if (n == -1)
+ err (1, "%s: vasprintf () failed", __func__);
+
+ usock_out (u, chan, kind, data, n);
+ free (data);
+}
+
// API
struct usock_buf *
usock_in (struct usock *u)
diff --git a/poked/usock.h b/poked/usock.h
index c8080603..7618458b 100644
--- a/poked/usock.h
+++ b/poked/usock.h
@@ -62,4 +62,9 @@ struct usock_buf *usock_in (struct usock *u);
void usock_out (struct usock *u, uint8_t chan, uint32_t kind, const void *data,
size_t len);
+// Like `usock_out' but with a printf-like interface.
+void usock_out_printf (struct usock *u, uint8_t chan, uint32_t kind,
+ const char *fmt, ...)
+ __attribute__ ((format (printf, 4, 5)));
+
#endif
--
2.38.1
- [COMMITTED 1/7] poked: print PDAP version and define `poked_pdap_version', Mohammad-Reza Nabipoor, 2022/12/04
- [COMMITTED 2/7] poked: move `poked_libpoke_version' def to `poked.pk', Mohammad-Reza Nabipoor, 2022/12/04
- [COMMITTED 3/7] poked: update poked output channel numbers, Mohammad-Reza Nabipoor, 2022/12/04
- [COMMITTED 4/7] poked: add new function `usock_out_printf',
Mohammad-Reza Nabipoor <=
- [COMMITTED 5/7] poked: re-organize the OUTCMD_* kinds, Mohammad-Reza Nabipoor, 2022/12/04
- [COMMITTED 7/7] poked: plet_disasm: add assertion for valid arches, Mohammad-Reza Nabipoor, 2022/12/04
- [COMMITTED 6/7] poked: add Poke disasm pokelet, Mohammad-Reza Nabipoor, 2022/12/04