From 2a99c5a093737b7905d71ee2df24d3a17b1d83e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 12 Feb 2021 09:25:29 +0100 Subject: [PATCH] =?UTF-8?q?user-notification:=20add=20new=20function=20?= =?UTF-8?q?=E2=80=98user=5Fnotification=5Fadd()=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meson.build | 2 +- user-notification.c | 38 ++++++++++++++++++++++++++++++++++++++ user-notification.h | 7 +++++++ 3 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 user-notification.c diff --git a/meson.build b/meson.build index 1465fa3e..f17ab7ef 100644 --- a/meson.build +++ b/meson.build @@ -181,7 +181,7 @@ executable( 'spawn.c', 'spawn.h', 'tokenize.c', 'tokenize.h', 'url-mode.c', 'url-mode.h', - 'user-notification.h', + 'user-notification.c', 'user-notification.h', 'wayland.c', 'wayland.h', wl_proto_src + wl_proto_headers, version, dependencies: [math, threads, libepoll, pixman, wayland_client, wayland_cursor, xkb, fontconfig, diff --git a/user-notification.c b/user-notification.c new file mode 100644 index 00000000..497aa08c --- /dev/null +++ b/user-notification.c @@ -0,0 +1,38 @@ +#include "user-notification.h" +#include +#include + +static bool +user_notification_add_va(user_notifications_t *notifications, + enum user_notification_kind kind, const char *fmt, + va_list ap) +{ + va_list ap2; + va_copy(ap2, ap); + int cnt = vsnprintf(NULL, 0, fmt, ap2); + va_end(ap2); + + if (cnt < 0) + return false; + + char *text = malloc(cnt + 1); + vsnprintf(text, cnt + 1, fmt, ap); + + struct user_notification not = { + .kind = kind, + .text = text, + }; + tll_push_back(*notifications, not); + return true; +} + +bool +user_notification_add(user_notifications_t *notifications, + enum user_notification_kind kind, const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + bool ret = user_notification_add_va(notifications, kind, fmt, ap); + va_end(ap); + return ret; +} diff --git a/user-notification.h b/user-notification.h index f184871e..507c1791 100644 --- a/user-notification.h +++ b/user-notification.h @@ -1,7 +1,10 @@ #pragma once +#include #include +#include "macros.h" + enum user_notification_kind { USER_NOTIFICATION_DEPRECATED, USER_NOTIFICATION_WARNING, @@ -22,3 +25,7 @@ user_notifications_free(user_notifications_t *notifications) free(it->item.text); tll_free(*notifications); } + +bool user_notification_add(user_notifications_t *notifications, + enum user_notification_kind kind, + const char *fmt, ...) PRINTF(3);