poke-devel
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]