summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Richard <johnny@johnnyrichard.com>2022-04-22 00:52:53 +0200
committerJohnny Richard <johnny@johnnyrichard.com>2022-04-22 01:00:51 +0200
commite3585f9080a2083080ebf3c8efc45a63123d4a8d (patch)
tree63e45288949e22bb580559e356cf812c0d1dc609
parent2269e8904b56ae0dd80461cc7a0507862b33e34e (diff)
string_view: Add string_view format macros
-rw-r--r--server.c2
-rw-r--r--string_view.c2
-rw-r--r--string_view.h4
-rw-r--r--test/string_view_test.c8
4 files changed, 9 insertions, 7 deletions
diff --git a/server.c b/server.c
index b7c70cb..4ada741 100644
--- a/server.c
+++ b/server.c
@@ -246,7 +246,7 @@ server_on_ping_msg(server_t *server,
client_t *client,
string_view_t msg)
{
- client_send_msg(client, "PONG %.*s\n", msg.size, msg.data);
+ client_send_msg(client, "PONG "SVFMT"\n", SVARG(&msg));
}
static void
diff --git a/string_view.c b/string_view.c
index 4de1a98..6335cb9 100644
--- a/string_view.c
+++ b/string_view.c
@@ -42,7 +42,7 @@ string_view_from_cstr(const char *cstr)
bool
string_view_to_cstr(string_view_t *sv, char *ret)
{
- return sprintf(ret, "%.*s", sv->size, sv->data) < 0;
+ return sprintf(ret, SVFMT, SVARG(sv)) < 0;
}
bool
diff --git a/string_view.h b/string_view.h
index 413cb24..9a66bfc 100644
--- a/string_view.h
+++ b/string_view.h
@@ -18,6 +18,9 @@
#ifndef STRING_VIEW_H
#define STRING_VIEW_H
+#define SVFMT "%.*s"
+#define SVARG(sv) (sv)->size, (sv)->data
+
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
@@ -27,7 +30,6 @@ typedef struct string_view {
const char *data;
} string_view_t;
-
string_view_t string_view_new(const char *cstr, size_t size);
string_view_t string_view_from_cstr(const char *cstr);
diff --git a/test/string_view_test.c b/test/string_view_test.c
index 7b2400c..82c9706 100644
--- a/test/string_view_test.c
+++ b/test/string_view_test.c
@@ -88,10 +88,10 @@ test_chop_by_delim_when_has_delim(const MunitParameter params[],
string_view_t result = string_view_chop_by_delim(&sv, ' ');
char actual[10];
- sprintf(actual, "%.*s", sv.size, sv.data);
+ sprintf(actual, SVFMT, SVARG(&sv));
assert_string_equal(actual, "world");
- sprintf(actual, "%.*s", result.size, result.data);
+ sprintf(actual, SVFMT, SVARG(&result));
assert_string_equal(actual, "hello");
return MUNIT_OK;
@@ -105,10 +105,10 @@ test_chop_by_delim_when_has_no_delim(const MunitParameter params[],
string_view_t result = string_view_chop_by_delim(&sv, ' ');
char actual[10];
- sprintf(actual, "%.*s", sv.size, sv.data);
+ sprintf(actual, SVFMT, SVARG(&sv));
assert_string_equal(actual, "");
- sprintf(actual, "%.*s", result.size, result.data);
+ sprintf(actual, SVFMT, SVARG(&result));
assert_string_equal(actual, "helloworld");
return MUNIT_OK;