84 |
server->autojoin = NULL; |
server->autojoin = NULL; |
85 |
server->autorejoin = 0; |
server->autorejoin = 0; |
86 |
server->notify_levels = NULL; |
server->notify_levels = NULL; |
87 |
|
server->charset_decode_iso = NULL; |
88 |
|
server->charset_decode_utf = NULL; |
89 |
|
server->charset_encode = NULL; |
90 |
|
|
91 |
/* internal vars */ |
/* internal vars */ |
92 |
server->child_pid = 0; |
server->child_pid = 0; |
297 |
free (server->autojoin); |
free (server->autojoin); |
298 |
if (server->notify_levels) |
if (server->notify_levels) |
299 |
free (server->notify_levels); |
free (server->notify_levels); |
300 |
|
if (server->charset_decode_iso) |
301 |
|
free (server->charset_decode_iso); |
302 |
|
if (server->charset_decode_utf) |
303 |
|
free (server->charset_decode_utf); |
304 |
|
if (server->charset_encode) |
305 |
|
free (server->charset_encode); |
306 |
if (server->unterminated_message) |
if (server->unterminated_message) |
307 |
free (server->unterminated_message); |
free (server->unterminated_message); |
308 |
if (server->nick) |
if (server->nick) |
364 |
int command_line, char *address, int port, int ipv6, int ssl, char *password, |
int command_line, char *address, int port, int ipv6, int ssl, char *password, |
365 |
char *nick1, char *nick2, char *nick3, char *username, |
char *nick1, char *nick2, char *nick3, char *username, |
366 |
char *realname, char *command, int command_delay, char *autojoin, |
char *realname, char *command, int command_delay, char *autojoin, |
367 |
int autorejoin, char *notify_levels) |
int autorejoin, char *notify_levels, char *charset_decode_iso, |
368 |
|
char *charset_decode_utf, char *charset_encode) |
369 |
{ |
{ |
370 |
t_irc_server *new_server; |
t_irc_server *new_server; |
371 |
|
|
375 |
#ifdef DEBUG |
#ifdef DEBUG |
376 |
weechat_log_printf ("Creating new server (name:%s, address:%s, port:%d, pwd:%s, " |
weechat_log_printf ("Creating new server (name:%s, address:%s, port:%d, pwd:%s, " |
377 |
"nick1:%s, nick2:%s, nick3:%s, username:%s, realname:%s, " |
"nick1:%s, nick2:%s, nick3:%s, username:%s, realname:%s, " |
378 |
"command:%s, autojoin:%s, autorejoin:%s, notify_levels:%s)\n", |
"command:%s, autojoin:%s, autorejoin:%s, notify_levels:%s, " |
379 |
|
"decode_iso:%s, decode_utf:%s, encode:%s)\n", |
380 |
name, address, port, (password) ? password : "", |
name, address, port, (password) ? password : "", |
381 |
(nick1) ? nick1 : "", (nick2) ? nick2 : "", (nick3) ? nick3 : "", |
(nick1) ? nick1 : "", (nick2) ? nick2 : "", (nick3) ? nick3 : "", |
382 |
(username) ? username : "", (realname) ? realname : "", |
(username) ? username : "", (realname) ? realname : "", |
383 |
(command) ? command : "", (autojoin) ? autojoin : "", |
(command) ? command : "", (autojoin) ? autojoin : "", |
384 |
(autorejoin) ? "on" : "off", (notify_levels) ? notify_levels : ""); |
(autorejoin) ? "on" : "off", (notify_levels) ? notify_levels : "", |
385 |
|
(charset_decode_iso) ? charset_decode_iso : "", |
386 |
|
(charset_decode_utf) ? charset_decode_utf : "", |
387 |
|
(charset_encode) ? charset_encode : ""); |
388 |
#endif |
#endif |
389 |
|
|
390 |
if ((new_server = server_alloc ())) |
if ((new_server = server_alloc ())) |
414 |
new_server->autorejoin = autorejoin; |
new_server->autorejoin = autorejoin; |
415 |
new_server->notify_levels = |
new_server->notify_levels = |
416 |
(notify_levels) ? strdup (notify_levels) : NULL; |
(notify_levels) ? strdup (notify_levels) : NULL; |
417 |
|
new_server->charset_decode_iso = |
418 |
|
(charset_decode_iso) ? strdup (charset_decode_iso) : NULL; |
419 |
|
new_server->charset_decode_utf = |
420 |
|
(charset_decode_utf) ? strdup (charset_decode_utf) : NULL; |
421 |
|
new_server->charset_encode = |
422 |
|
(charset_encode) ? strdup (charset_encode) : NULL; |
423 |
} |
} |
424 |
else |
else |
425 |
return NULL; |
return NULL; |
427 |
} |
} |
428 |
|
|
429 |
/* |
/* |
430 |
|
* server_get_charset_decode_iso: get decode iso value for server |
431 |
|
* if not found for server, look for global |
432 |
|
*/ |
433 |
|
|
434 |
|
char * |
435 |
|
server_get_charset_decode_iso (t_irc_server *server) |
436 |
|
{ |
437 |
|
char *pos, *result; |
438 |
|
int length; |
439 |
|
|
440 |
|
if (!server) |
441 |
|
return (cfg_look_charset_decode_iso) ? |
442 |
|
strdup (cfg_look_charset_decode_iso) : strdup (""); |
443 |
|
|
444 |
|
config_option_list_get_value (&(server->charset_decode_iso), |
445 |
|
"server", &pos, &length); |
446 |
|
if (pos && (length > 0)) |
447 |
|
{ |
448 |
|
result = strdup (pos); |
449 |
|
result[length] = '\0'; |
450 |
|
return result; |
451 |
|
} |
452 |
|
|
453 |
|
return (cfg_look_charset_decode_iso) ? |
454 |
|
strdup (cfg_look_charset_decode_iso) : strdup (""); |
455 |
|
} |
456 |
|
|
457 |
|
/* |
458 |
|
* server_get_charset_decode_utf: get decode utf value for server |
459 |
|
* if not found for server, look for global |
460 |
|
*/ |
461 |
|
|
462 |
|
char * |
463 |
|
server_get_charset_decode_utf (t_irc_server *server) |
464 |
|
{ |
465 |
|
char *pos, *result; |
466 |
|
int length; |
467 |
|
|
468 |
|
if (!server) |
469 |
|
return (cfg_look_charset_decode_utf) ? |
470 |
|
strdup (cfg_look_charset_decode_utf) : strdup (""); |
471 |
|
|
472 |
|
config_option_list_get_value (&(server->charset_decode_utf), |
473 |
|
"server", &pos, &length); |
474 |
|
if (pos && (length > 0)) |
475 |
|
{ |
476 |
|
result = strdup (pos); |
477 |
|
result[length] = '\0'; |
478 |
|
return result; |
479 |
|
} |
480 |
|
|
481 |
|
return (cfg_look_charset_decode_utf) ? |
482 |
|
strdup (cfg_look_charset_decode_utf) : strdup (""); |
483 |
|
} |
484 |
|
|
485 |
|
/* |
486 |
|
* server_get_charset_encode: get encode value for server |
487 |
|
* if not found for server, look for global |
488 |
|
*/ |
489 |
|
|
490 |
|
char * |
491 |
|
server_get_charset_encode (t_irc_server *server) |
492 |
|
{ |
493 |
|
char *pos, *result; |
494 |
|
int length; |
495 |
|
|
496 |
|
if (!server) |
497 |
|
return (cfg_look_charset_encode) ? |
498 |
|
strdup (cfg_look_charset_encode) : strdup (""); |
499 |
|
|
500 |
|
config_option_list_get_value (&(server->charset_encode), |
501 |
|
"server", &pos, &length); |
502 |
|
if (pos && (length > 0)) |
503 |
|
{ |
504 |
|
result = strdup (pos); |
505 |
|
result[length] = '\0'; |
506 |
|
return result; |
507 |
|
} |
508 |
|
|
509 |
|
return (cfg_look_charset_encode) ? |
510 |
|
strdup (cfg_look_charset_encode) : strdup (""); |
511 |
|
} |
512 |
|
|
513 |
|
/* |
514 |
* server_send: send data to IRC server |
* server_send: send data to IRC server |
515 |
*/ |
*/ |
516 |
|
|
537 |
{ |
{ |
538 |
va_list args; |
va_list args; |
539 |
static char buffer[4096]; |
static char buffer[4096]; |
|
char *buf2; |
|
540 |
int size_buf; |
int size_buf; |
541 |
|
|
542 |
if (!server) |
if (!server) |
557 |
gui_printf (server->buffer, "[DEBUG] Sending to server >>> %s\n", buffer); |
gui_printf (server->buffer, "[DEBUG] Sending to server >>> %s\n", buffer); |
558 |
buffer[size_buf - 2] = '\r'; |
buffer[size_buf - 2] = '\r'; |
559 |
#endif |
#endif |
560 |
buf2 = weechat_convert_encoding ((cfg_look_charset_internal && cfg_look_charset_internal[0]) ? |
if (server_send (server, buffer, strlen (buffer)) <= 0) |
|
cfg_look_charset_internal : local_charset, |
|
|
cfg_look_charset_encode, |
|
|
buffer); |
|
|
if (server_send (server, buf2, strlen (buf2)) <= 0) |
|
561 |
{ |
{ |
562 |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
irc_display_prefix (server, server->buffer, PREFIX_ERROR); |
563 |
gui_printf (server->buffer, _("%s error sending data to IRC server\n"), |
gui_printf (server->buffer, _("%s error sending data to IRC server\n"), |
564 |
WEECHAT_ERROR); |
WEECHAT_ERROR); |
565 |
} |
} |
|
free (buf2); |
|
566 |
} |
} |
567 |
|
|
568 |
/* |
/* |
1880 |
weechat_log_printf (" autojoin. . . . . . : '%s'\n", server->autojoin); |
weechat_log_printf (" autojoin. . . . . . : '%s'\n", server->autojoin); |
1881 |
weechat_log_printf (" autorejoin. . . . . : %d\n", server->autorejoin); |
weechat_log_printf (" autorejoin. . . . . : %d\n", server->autorejoin); |
1882 |
weechat_log_printf (" notify_levels . . . : %s\n", server->notify_levels); |
weechat_log_printf (" notify_levels . . . : %s\n", server->notify_levels); |
1883 |
|
weechat_log_printf (" charset_decode_iso. : %s\n", server->charset_decode_iso); |
1884 |
|
weechat_log_printf (" charset_decode_utf. : %s\n", server->charset_decode_utf); |
1885 |
|
weechat_log_printf (" charset_encode. . . : %s\n", server->charset_encode); |
1886 |
weechat_log_printf (" child_pid . . . . . : %d\n", server->child_pid); |
weechat_log_printf (" child_pid . . . . . : %d\n", server->child_pid); |
1887 |
weechat_log_printf (" child_read . . . . : %d\n", server->child_read); |
weechat_log_printf (" child_read . . . . : %d\n", server->child_read); |
1888 |
weechat_log_printf (" child_write . . . . : %d\n", server->child_write); |
weechat_log_printf (" child_write . . . . : %d\n", server->child_write); |