[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[COMMITTED 1/2] poked: Change the function prototype of `usock_out`
From: |
Mohammad-Reza Nabipoor |
Subject: |
[COMMITTED 1/2] poked: Change the function prototype of `usock_out` |
Date: |
Fri, 11 Mar 2022 19:00:45 +0330 |
2022-03-11 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* poked/usock.h (usock_out): Change the function prototype: re-order
`kind` and `chan`; change type of `data` to `const void *`.
* poked/usock.c (usock_out): Likewise.
* poked/poked.c (poked_buf_send): Adapt to new function prototype.
And remove unused variable.
(iteration_send): Adapt to new function prototype.
(main): Likewise.
(tif_puts): Likewise.
(tif_printf): Likewise.
(tif_indent): Likewise.
(tif_class): Likewise.
(tif_class_end): Likewise.
---
ChangeLog | 15 +++++++++++++++
poked/poked.c | 22 +++++++++-------------
poked/usock.c | 9 +++++----
poked/usock.h | 2 +-
4 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 31bc3996..c38a681e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2022-03-11 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
+
+ * poked/usock.h (usock_out): Change the function prototype: re-order
+ `kind` and `chan`; change type of `data` to `const void *`.
+ * poked/usock.c (usock_out): Likewise.
+ * poked/poked.c (poked_buf_send): Adapt to new function prototype.
+ And remove unused variable.
+ (iteration_send): Adapt to new function prototype.
+ (main): Likewise.
+ (tif_puts): Likewise.
+ (tif_printf): Likewise.
+ (tif_indent): Likewise.
+ (tif_class): Likewise.
+ (tif_class_end): Likewise.
+
2022-03-11 Mohammad-Reza Nabipoor <mnabipoor@gnu.org>
* poked/poked.c (main): Don't send empty EVAL msgs in the
diff --git a/poked/poked.c b/poked/poked.c
index f65eef1c..0f18ce0a 100644
--- a/poked/poked.c
+++ b/poked/poked.c
@@ -88,19 +88,15 @@ poked_buf_send (void)
pk_val arr = pk_decl_val (pkc, "__chan_send_buf");
uint16_t nelem = (uint16_t)pk_uint_value (pk_array_nelem (arr));
uint8_t chan = pk_uint_value (pk_decl_val (pkc, "__chan_send_chan")) & 0x7f;
- uint8_t lbuf[2];
uint8_t *mem;
pk_val exc;
- lbuf[0] = nelem;
- lbuf[1] = nelem >> 8;
-
mem = malloc (nelem);
if (mem == NULL)
err (1, "malloc() failed");
for (uint16_t i = 0; i < nelem; ++i)
mem[i] = pk_uint_value (pk_array_elem_value (arr, i));
- usock_out (srv, /*no kind*/ 0, chan, mem, nelem);
+ usock_out (srv, chan, /*no kind*/ 0, mem, nelem);
free (mem);
(void)pk_call (pkc, pk_decl_val (pkc, "__chan_send_reset"), NULL, &exc, 0);
@@ -116,8 +112,8 @@ iteration_send (struct usock *srv, uint64_t n_iteration,
int begin_p)
#undef b
};
- usock_out (srv, begin_p ? OUTCMD_ITER_BEGIN : OUTCMD_ITER_END,
- USOCK_CHAN_OUT_OUT, buf, sizeof (buf));
+ usock_out (srv, USOCK_CHAN_OUT_OUT,
+ begin_p ? OUTCMD_ITER_BEGIN : OUTCMD_ITER_END, buf, sizeof (buf));
}
static void
@@ -237,7 +233,7 @@ poked_restart:
}
if (pk_int_value (pk_decl_val (pkc, "__vu_do_p")))
{
- usock_out (srv, VUKIND_CLEAR, USOCK_CHAN_OUT_VU, "", 1);
+ usock_out (srv, USOCK_CHAN_OUT_VU, VUKIND_CLEAR, "", 1);
termout_vu_append ();
(void)pk_call (pkc, pk_decl_val (pkc, "__vu_dump"), NULL, &exc,
0);
@@ -295,7 +291,7 @@ static void
tif_puts (const char *s)
{
printf (">(p) '%s'\n", s);
- usock_out (srv, termout_cmdkind, termout_chan, s, strlen (s) + 1);
+ usock_out (srv, termout_chan, termout_cmdkind, s, strlen (s) + 1);
}
static void
tif_printf (const char *fmt, ...)
@@ -311,7 +307,7 @@ tif_printf (const char *fmt, ...)
assert (n >= 0);
printf (">(P) '%.*s'\n", n, data);
- usock_out (srv, termout_cmdkind, termout_chan, data, n + 1);
+ usock_out (srv, termout_chan, termout_cmdkind, data, n + 1);
free (data);
}
static void
@@ -324,20 +320,20 @@ tif_indent (unsigned int level, unsigned int step)
assert (data);
data[0] = '\n';
memset (data + 1, ' ', len - 1);
- usock_out (srv, termout_cmdkind, termout_chan, data, len);
+ usock_out (srv, termout_chan, termout_cmdkind, data, len);
free (data);
}
static void
tif_class (const char *name)
{
if (termout_chan == USOCK_CHAN_OUT_OUT)
- usock_out (srv, OUTCMD_CLS_BEGIN, termout_chan, name, strlen (name) + 1);
+ usock_out (srv, termout_chan, OUTCMD_CLS_BEGIN, name, strlen (name) + 1);
}
static int
tif_class_end (const char *name)
{
if (termout_chan == USOCK_CHAN_OUT_OUT)
- usock_out (srv, OUTCMD_CLS_END, termout_chan, name, strlen (name) + 1);
+ usock_out (srv, termout_chan, OUTCMD_CLS_END, name, strlen (name) + 1);
return 1;
}
static void
diff --git a/poked/usock.c b/poked/usock.c
index 1b70f6ea..f605bf04 100644
--- a/poked/usock.c
+++ b/poked/usock.c
@@ -715,7 +715,7 @@ usock_done (struct usock *u)
// API
void
-usock_out (struct usock *u, uint32_t kind, uint8_t chan, const char *data,
+usock_out (struct usock *u, uint8_t chan, uint32_t kind, const void *data,
size_t len)
{
assert (u);
@@ -725,10 +725,11 @@ usock_out (struct usock *u, uint32_t kind, uint8_t chan,
const char *data,
assert (kind <= 0x7f); // TODO implement ULEB128
- uint16_t len16 = (len & 0xffff) + (data[len - 1] != '\0') + (kind != 0);
+ uint16_t len16
+ = (kind != 0) + (len & 0xffff) + (((char *)data)[len - 1] != '\0');
uint8_t prefix[/*len*/ 2 + /*kind*/ 5] = { len16, len16 >> 8, kind & 0x7f };
- struct usock_buf *buf = usock_buf_new_prefix (prefix, 2 + (kind != 0), data,
- len & 0xffff);
+ struct usock_buf *buf
+ = usock_buf_new_prefix (prefix, 2 + (kind != 0), data, len & 0xffff);
buf->len = 0; // cursor for how much data has been written
buf->tag = chan;
diff --git a/poked/usock.h b/poked/usock.h
index d7597062..a2341d97 100644
--- a/poked/usock.h
+++ b/poked/usock.h
@@ -56,7 +56,7 @@ struct usock_buf *usock_in (struct usock *u);
// channel CHAN.
// Non-zero KIND will be encoded as ULEB128 number before DATA.
// This call is non-blocking.
-void usock_out (struct usock *u, uint32_t kind, uint8_t chan, const char *data,
+void usock_out (struct usock *u, uint8_t chan, uint32_t kind, const void *data,
size_t len);
#endif
--
2.35.1
- [COMMITTED 1/2] poked: Change the function prototype of `usock_out`,
Mohammad-Reza Nabipoor <=