Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mRemoteNG/PuTTYNG.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'utils/seat_dialog_text.c')
-rw-r--r--utils/seat_dialog_text.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/utils/seat_dialog_text.c b/utils/seat_dialog_text.c
new file mode 100644
index 00000000..03890b93
--- /dev/null
+++ b/utils/seat_dialog_text.c
@@ -0,0 +1,41 @@
+/*
+ * Helper routines for dealing with SeatDialogText structures.
+ */
+
+#include <stdarg.h>
+
+#include "putty.h"
+
+SeatDialogText *seat_dialog_text_new(void)
+{
+ SeatDialogText *sdt = snew(SeatDialogText);
+ sdt->nitems = sdt->itemsize = 0;
+ sdt->items = NULL;
+ return sdt;
+}
+
+void seat_dialog_text_free(SeatDialogText *sdt)
+{
+ for (size_t i = 0; i < sdt->nitems; i++)
+ sfree(sdt->items[i].text);
+ sfree(sdt->items);
+ sfree(sdt);
+}
+
+static void seat_dialog_text_append_v(
+ SeatDialogText *sdt, SeatDialogTextType type, const char *fmt, va_list ap)
+{
+ sgrowarray(sdt->items, sdt->itemsize, sdt->nitems);
+ SeatDialogTextItem *item = &sdt->items[sdt->nitems++];
+ item->type = type;
+ item->text = dupvprintf(fmt, ap);
+}
+
+void seat_dialog_text_append(SeatDialogText *sdt, SeatDialogTextType type,
+ const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ seat_dialog_text_append_v(sdt, type, fmt, ap);
+ va_end(ap);
+}