summaryrefslogtreecommitdiff
path: root/vchat-ui.c
diff options
context:
space:
mode:
authorDirk Engling <erdgeist@erdgeist.org>2024-01-20 02:41:39 +0100
committerDirk Engling <erdgeist@erdgeist.org>2024-01-20 02:41:39 +0100
commit82f142c0acc87e55373102687aa718effcbf7cb9 (patch)
treeb8fe3524eb323ebd9cb52734baa8c17203a98ba7 /vchat-ui.c
parentc9e63d4003a58f41367fef1f0672756cbb44ddfa (diff)
Remember lines that were printed during connect so they can be output in case of an error
Diffstat (limited to 'vchat-ui.c')
-rw-r--r--vchat-ui.c31
1 files changed, 28 insertions, 3 deletions
diff --git a/vchat-ui.c b/vchat-ui.c
index bb33287..185cad0 100644
--- a/vchat-ui.c
+++ b/vchat-ui.c
@@ -91,6 +91,7 @@ struct sb_data {
91static struct sb_data *sb_pub = NULL; 91static struct sb_data *sb_pub = NULL;
92static struct sb_data *sb_priv = NULL; 92static struct sb_data *sb_priv = NULL;
93static struct sb_data *sb_out = NULL; 93static struct sb_data *sb_out = NULL;
94static struct sb_data *sb_connect = NULL;
94 95
95/* Tells, which window is active */ 96/* Tells, which window is active */
96static int sb_win = 0; /* 0 for pub, 1 for priv */ 97static int sb_win = 0; /* 0 for pub, 1 for priv */
@@ -310,14 +311,18 @@ static void sb_flush(struct sb_data *sb) {
310 now = tmp; 311 now = tmp;
311 } 312 }
312 sb->entries = NULL; 313 sb->entries = NULL;
314 sb->last = NULL;
315 sb->count = 0;
316 sb->scroll = 0;
313} 317}
314 318
315/*static void 319/*
316sb_clear ( struct sb_data **sb ) { 320static void sb_clear ( struct sb_data **sb ) {
317 sb_flush(*sb); 321 sb_flush(*sb);
318 free( *sb ); 322 free( *sb );
319 *sb = NULL; 323 *sb = NULL;
320}*/ 324}
325*/
321 326
322static struct sb_entry *sb_add(struct sb_data *sb, const char *line, 327static struct sb_entry *sb_add(struct sb_data *sb, const char *line,
323 time_t when) { 328 time_t when) {
@@ -407,9 +412,27 @@ int writecf(formtstr id, char *str) {
407 else 412 else
408 consoleline(NULL); 413 consoleline(NULL);
409 414
415 if (!loggedin)
416 sb_add(sb_connect, str, now);
417
410 return i; 418 return i;
411} 419}
412 420
421void dumpconnect() {
422 struct sb_entry *now = sb_connect->entries, *prev = NULL, *tmp;
423 while (now) {
424 tmp = (struct sb_entry *)((unsigned long)prev ^ (unsigned long)now->link);
425 fputs(now->what, stderr);
426 fputc(10, stderr);
427 prev = now;
428 now = tmp;
429 }
430}
431
432void flushconnect() {
433 sb_flush(sb_connect);
434}
435
413int writepriv(char *str, int maybeep) { 436int writepriv(char *str, int maybeep) {
414 int i = 0; 437 int i = 0;
415 if (private) { 438 if (private) {
@@ -1222,6 +1245,7 @@ void initui(void) {
1222 /* Prepare our scrollback buffers */ 1245 /* Prepare our scrollback buffers */
1223 sb_pub = (struct sb_data *)malloc(sizeof(struct sb_data)); 1246 sb_pub = (struct sb_data *)malloc(sizeof(struct sb_data));
1224 sb_out = (struct sb_data *)malloc(sizeof(struct sb_data)); 1247 sb_out = (struct sb_data *)malloc(sizeof(struct sb_data));
1248 sb_connect = (struct sb_data *)malloc(sizeof(struct sb_data));
1225 if (privheight) 1249 if (privheight)
1226 sb_priv = (struct sb_data *)malloc(sizeof(struct sb_data)); 1250 sb_priv = (struct sb_data *)malloc(sizeof(struct sb_data));
1227 else 1251 else
@@ -1230,6 +1254,7 @@ void initui(void) {
1230 memset(sb_pub, 0, sizeof(struct sb_data)); 1254 memset(sb_pub, 0, sizeof(struct sb_data));
1231 memset(sb_priv, 0, sizeof(struct sb_data)); 1255 memset(sb_priv, 0, sizeof(struct sb_data));
1232 memset(sb_out, 0, sizeof(struct sb_data)); 1256 memset(sb_out, 0, sizeof(struct sb_data));
1257 memset(sb_connect, 0, sizeof(struct sb_data));
1233 1258
1234 /* set colors for windows */ 1259 /* set colors for windows */
1235 if (has_colors()) { 1260 if (has_colors()) {