1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /*
- * 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)
- {
- size_t i; // WINSCP
- for (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);
- { // WINSCP
- SeatDialogTextItem *item = &sdt->items[sdt->nitems++];
- item->type = type;
- item->text = dupvprintf(fmt, ap);
- } // WINSCP
- }
- 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);
- }
|