diff options
Diffstat (limited to 'vchat-ui.c')
| -rw-r--r-- | vchat-ui.c | 31 |
1 files changed, 28 insertions, 3 deletions
| @@ -91,6 +91,7 @@ struct sb_data { | |||
| 91 | static struct sb_data *sb_pub = NULL; | 91 | static struct sb_data *sb_pub = NULL; |
| 92 | static struct sb_data *sb_priv = NULL; | 92 | static struct sb_data *sb_priv = NULL; |
| 93 | static struct sb_data *sb_out = NULL; | 93 | static struct sb_data *sb_out = NULL; |
| 94 | static struct sb_data *sb_connect = NULL; | ||
| 94 | 95 | ||
| 95 | /* Tells, which window is active */ | 96 | /* Tells, which window is active */ |
| 96 | static int sb_win = 0; /* 0 for pub, 1 for priv */ | 97 | static 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 | /* |
| 316 | sb_clear ( struct sb_data **sb ) { | 320 | static 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 | ||
| 322 | static struct sb_entry *sb_add(struct sb_data *sb, const char *line, | 327 | static 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 | ||
| 421 | void 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 | |||
| 432 | void flushconnect() { | ||
| 433 | sb_flush(sb_connect); | ||
| 434 | } | ||
| 435 | |||
| 413 | int writepriv(char *str, int maybeep) { | 436 | int 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()) { |
