/[weechat]/weechat/src/common/command.c
ViewVC logotype

Diff of /weechat/src/common/command.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.91 by flashcode, Sat Dec 10 09:41:18 2005 UTC revision 1.92 by flashcode, Sun Dec 11 00:52:33 2005 UTC
# Line 57  t_weechat_command weechat_commands[] = Line 57  t_weechat_command weechat_commands[] =
57         "server,channel: jump to buffer by server and/or channel name\n"         "server,channel: jump to buffer by server and/or channel name\n"
58         "number: jump to buffer by number"),         "number: jump to buffer by number"),
59      0, MAX_ARGS, weechat_cmd_buffer, NULL },      0, MAX_ARGS, weechat_cmd_buffer, NULL },
60      { "charset", N_("change charset for server or channel"),
61        N_("[(decode_iso | decode_utf | encode) charset]"),
62        N_("decode_iso: charset used for decoding ISO\n"
63           "decode_utf: charset used for decoding UTF\n"
64           "    encode: charset used for encoding messages"),
65        0, 2, weechat_cmd_charset, NULL },
66    { "clear", N_("clear window(s)"),    { "clear", N_("clear window(s)"),
67      N_("[-all]"),      N_("[-all]"),
68      N_("-all: clear all windows"),      N_("-all: clear all windows"),
# Line 500  free_exploded_string (char **exploded_st Line 506  free_exploded_string (char **exploded_st
506   */   */
507    
508  int  int
509  exec_weechat_command (t_irc_server *server, char *string)  exec_weechat_command (t_gui_window *window, t_irc_server *server, char *string)
510  {  {
511      int i, argc, return_code, length1, length2;      int i, argc, return_code, length1, length2;
512      char *command, *pos, *ptr_args, *ptr_args_color, **argv, *alias_command;      char *command, *pos, *ptr_args, *ptr_args_color, **argv, *alias_command;
# Line 589  exec_weechat_command (t_irc_server *serv Line 595  exec_weechat_command (t_irc_server *serv
595                  {                  {
596                      if (weechat_commands[i].cmd_function_args)                      if (weechat_commands[i].cmd_function_args)
597                          return_code = (int) (weechat_commands[i].cmd_function_args)                          return_code = (int) (weechat_commands[i].cmd_function_args)
598                                              (argc, argv);                                              (window, argc, argv);
599                      else                      else
600                          return_code = (int) (weechat_commands[i].cmd_function_1arg)                          return_code = (int) (weechat_commands[i].cmd_function_1arg)
601                                              (ptr_args);                                              (window, ptr_args);
602                      if (return_code < 0)                      if (return_code < 0)
603                      {                      {
604                          irc_display_prefix (NULL, NULL, PREFIX_ERROR);                          irc_display_prefix (NULL, NULL, PREFIX_ERROR);
# Line 693  exec_weechat_command (t_irc_server *serv Line 699  exec_weechat_command (t_irc_server *serv
699                          alias_command[length1] = ' ';                          alias_command[length1] = ' ';
700                          strcpy (alias_command + length1 + 1, ptr_args);                          strcpy (alias_command + length1 + 1, ptr_args);
701                      }                      }
702                      (void) exec_weechat_command (server, alias_command);                      (void) exec_weechat_command (window, server, alias_command);
703                      if (alias_command)                      if (alias_command)
704                          free (alias_command);                          free (alias_command);
705                  }                  }
706                  else                  else
707                      (void) exec_weechat_command (server, ptr_alias->alias_command);                      (void) exec_weechat_command (window, server,
708                                                     ptr_alias->alias_command);
709                                    
710                  free_exploded_string (argv);                  free_exploded_string (argv);
711                  free (command);                  free (command);
# Line 726  exec_weechat_command (t_irc_server *serv Line 733  exec_weechat_command (t_irc_server *serv
733   */   */
734    
735  void  void
736  user_command (t_irc_server *server, t_gui_buffer *buffer, char *command)  user_command (t_gui_window *window, t_irc_server *server, char *command)
737  {  {
738      t_irc_nick *ptr_nick;      t_irc_nick *ptr_nick;
739      int plugin_args_length;      int plugin_args_length;
# Line 738  user_command (t_irc_server *server, t_gu Line 745  user_command (t_irc_server *server, t_gu
745      if ((command[0] == '/') && (command[1] != '/'))      if ((command[0] == '/') && (command[1] != '/'))
746      {      {
747          /* WeeChat internal command (or IRC command) */          /* WeeChat internal command (or IRC command) */
748          (void) exec_weechat_command (server, command);          (void) exec_weechat_command (window, server, command);
749      }      }
750      else      else
751      {      {
752          if (!buffer)          if (!window)
753              buffer = gui_current_window->buffer;              window = gui_current_window;
754                    
755          if ((command[0] == '/') && (command[1] == '/'))          if ((command[0] == '/') && (command[1] == '/'))
756              command++;              command++;
757                    
758          if (server && (!BUFFER_IS_SERVER(buffer)))          if (server && (!BUFFER_IS_SERVER(window->buffer)))
759          {          {
760              command_with_colors = (cfg_irc_colors_send) ?              command_with_colors = (cfg_irc_colors_send) ?
761                  (char *)gui_color_encode ((unsigned char *)command) : NULL;                  (char *)gui_color_encode ((unsigned char *)command) : NULL;
762                            
763              if (CHANNEL(buffer)->dcc_chat)              if (CHANNEL(window->buffer)->dcc_chat)
764                  dcc_chat_sendf ((t_irc_dcc *)(CHANNEL(buffer)->dcc_chat),                  dcc_chat_sendf ((t_irc_dcc *)(CHANNEL(window->buffer)->dcc_chat),
765                                  "%s\r\n",                                  "%s\r\n",
766                                  (command_with_colors) ? command_with_colors : command);                                  (command_with_colors) ? command_with_colors : command);
767              else              else
768                  server_sendf (server, "PRIVMSG %s :%s\r\n",                  server_sendf (server, "PRIVMSG %s :%s\r\n",
769                                CHANNEL(buffer)->name,                                CHANNEL(window->buffer)->name,
770                                (command_with_colors) ?                                (command_with_colors) ?
771                                command_with_colors : command);                                command_with_colors : command);
772                            
773              command_with_colors2 = (command_with_colors) ?              command_with_colors2 = (command_with_colors) ?
774                  (char *)gui_color_decode ((unsigned char *)command_with_colors, 1) : NULL;                  (char *)gui_color_decode ((unsigned char *)command_with_colors, 1) : NULL;
775                            
776              if (CHANNEL(buffer)->type == CHANNEL_TYPE_PRIVATE)              if (CHANNEL(window->buffer)->type == CHANNEL_TYPE_PRIVATE)
777              {              {
778                  gui_printf_type (CHANNEL(buffer)->buffer,                  gui_printf_type (window->buffer,
779                                   MSG_TYPE_NICK,                                   MSG_TYPE_NICK,
780                                   "%s<%s%s%s> ",                                   "%s<%s%s%s> ",
781                                   GUI_COLOR(COLOR_WIN_CHAT_DARK),                                   GUI_COLOR(COLOR_WIN_CHAT_DARK),
782                                   GUI_COLOR(COLOR_WIN_NICK_SELF),                                   GUI_COLOR(COLOR_WIN_NICK_SELF),
783                                   server->nick,                                   server->nick,
784                                   GUI_COLOR(COLOR_WIN_CHAT_DARK));                                   GUI_COLOR(COLOR_WIN_CHAT_DARK));
785                  gui_printf_type (CHANNEL(buffer)->buffer,                  gui_printf_type (window->buffer,
786                                   MSG_TYPE_MSG,                                   MSG_TYPE_MSG,
787                                   "%s%s\n",                                   "%s%s\n",
788                                   GUI_COLOR(COLOR_WIN_CHAT),                                   GUI_COLOR(COLOR_WIN_CHAT),
# Line 784  user_command (t_irc_server *server, t_gu Line 791  user_command (t_irc_server *server, t_gu
791              }              }
792              else              else
793              {              {
794                  ptr_nick = nick_search (CHANNEL(buffer), server->nick);                  ptr_nick = nick_search (CHANNEL(window->buffer), server->nick);
795                  if (ptr_nick)                  if (ptr_nick)
796                  {                  {
797                      irc_display_nick (CHANNEL(buffer)->buffer, ptr_nick, NULL,                      irc_display_nick (CHANNEL(window->buffer)->buffer, ptr_nick, NULL,
798                                        MSG_TYPE_NICK, 1, 1, 0);                                        MSG_TYPE_NICK, 1, 1, 0);
799                      gui_printf (CHANNEL(buffer)->buffer,                      gui_printf (CHANNEL(window->buffer)->buffer,
800                                  "%s\n",                                  "%s\n",
801                                  (command_with_colors2) ?                                  (command_with_colors2) ?
802                                  command_with_colors2 : command);                                  command_with_colors2 : command);
# Line 853  user_command (t_irc_server *server, t_gu Line 860  user_command (t_irc_server *server, t_gu
860   */   */
861    
862  int  int
863  weechat_cmd_alias (char *arguments)  weechat_cmd_alias (t_gui_window *window, char *arguments)
864  {  {
865      char *pos;      char *pos;
866      t_weechat_alias *ptr_alias;      t_weechat_alias *ptr_alias;
867            
868        /* make gcc happy */
869        (void) window;
870        
871      if (arguments && arguments[0])      if (arguments && arguments[0])
872      {      {
873          /* Define new alias */          /* Define new alias */
# Line 982  weechat_cmd_buffer_display_info (t_gui_b Line 992  weechat_cmd_buffer_display_info (t_gui_b
992   */   */
993    
994  int  int
995  weechat_cmd_buffer (int argc, char **argv)  weechat_cmd_buffer (t_gui_window *window, int argc, char **argv)
996  {  {
997      t_gui_buffer *ptr_buffer;      t_gui_buffer *ptr_buffer;
998      t_irc_server *ptr_server;      t_irc_server *ptr_server;
# Line 1028  weechat_cmd_buffer (int argc, char **arg Line 1038  weechat_cmd_buffer (int argc, char **arg
1038              if ((error) && (error[0] == '\0'))              if ((error) && (error[0] == '\0'))
1039              {              {
1040                  if (argv[1][0] == '+')                  if (argv[1][0] == '+')
1041                      gui_buffer_move_to_number (gui_current_window,                      gui_buffer_move_to_number (window,
1042                                                 gui_current_window->buffer->number + ((int) number));                                                 window->buffer->number + ((int) number));
1043                  else if (argv[1][0] == '-')                  else if (argv[1][0] == '-')
1044                      gui_buffer_move_to_number (gui_current_window,                      gui_buffer_move_to_number (window,
1045                                                 gui_current_window->buffer->number - ((int) number));                                                 window->buffer->number - ((int) number));
1046                  else                  else
1047                      gui_buffer_move_to_number (gui_current_window, (int) number);                      gui_buffer_move_to_number (window, (int) number);
1048              }              }
1049              else              else
1050              {              {
# Line 1049  weechat_cmd_buffer (int argc, char **arg Line 1059  weechat_cmd_buffer (int argc, char **arg
1059          {          {
1060              /* close buffer (server or channel/private) */              /* close buffer (server or channel/private) */
1061                            
1062              if ((!gui_current_window->buffer->next_buffer)              if ((!window->buffer->next_buffer)
1063                  && (gui_current_window->buffer == gui_buffers)                  && (window->buffer == gui_buffers)
1064                  && ((!gui_current_window->buffer->all_servers)                  && ((!window->buffer->all_servers)
1065                      || (!SERVER(gui_current_window->buffer))))                      || (!SERVER(window->buffer))))
1066              {              {
1067                  irc_display_prefix (NULL, NULL, PREFIX_ERROR);                  irc_display_prefix (NULL, NULL, PREFIX_ERROR);
1068                  gui_printf (NULL,                  gui_printf (NULL,
# Line 1060  weechat_cmd_buffer (int argc, char **arg Line 1070  weechat_cmd_buffer (int argc, char **arg
1070                              WEECHAT_ERROR);                              WEECHAT_ERROR);
1071                  return -1;                  return -1;
1072              }              }
1073              if (BUFFER_IS_SERVER(gui_current_window->buffer))              if (BUFFER_IS_SERVER(window->buffer))
1074              {              {
1075                  if (SERVER(gui_current_window->buffer)->channels)                  if (SERVER(window->buffer)->channels)
1076                  {                  {
1077                      irc_display_prefix (NULL, NULL, PREFIX_ERROR);                      irc_display_prefix (NULL, NULL, PREFIX_ERROR);
1078                      gui_printf (NULL,                      gui_printf (NULL,
# Line 1071  weechat_cmd_buffer (int argc, char **arg Line 1081  weechat_cmd_buffer (int argc, char **arg
1081                                  WEECHAT_ERROR);                                  WEECHAT_ERROR);
1082                      return -1;                      return -1;
1083                  }                  }
1084                  server_disconnect (SERVER(gui_current_window->buffer), 0);                  server_disconnect (SERVER(window->buffer), 0);
1085                  ptr_server = SERVER(gui_current_window->buffer);                  ptr_server = SERVER(window->buffer);
1086                  if (!gui_current_window->buffer->all_servers)                  if (!window->buffer->all_servers)
1087                  {                  {
1088                      gui_buffer_free (gui_current_window->buffer, 1);                      gui_buffer_free (window->buffer, 1);
1089                      ptr_server->buffer = NULL;                      ptr_server->buffer = NULL;
1090                  }                  }
1091                  else                  else
1092                  {                  {
1093                      ptr_server->buffer = NULL;                      ptr_server->buffer = NULL;
1094                      gui_current_window->buffer->server = NULL;                      window->buffer->server = NULL;
1095                      gui_window_switch_server (gui_current_window);                      gui_window_switch_server (window);
1096                  }                  }
1097    
1098              }              }
1099              else              else
1100              {              {
1101                  if (SERVER(gui_current_window->buffer))                  if (SERVER(window->buffer))
1102                  {                  {
1103                      if (SERVER(gui_current_window->buffer)->is_connected                      if (SERVER(window->buffer)->is_connected
1104                          && CHANNEL(gui_current_window->buffer)                          && CHANNEL(window->buffer)
1105                          && CHANNEL(gui_current_window->buffer)->nicks)                          && CHANNEL(window->buffer)->nicks)
1106                          irc_cmd_send_part (SERVER(gui_current_window->buffer), NULL);                          irc_cmd_send_part (SERVER(window->buffer), NULL);
1107                      else                      else
1108                      {                      {
1109                          ptr_channel = channel_search (SERVER(gui_current_window->buffer),                          ptr_channel = channel_search (SERVER(window->buffer),
1110                                                        CHANNEL(gui_current_window->buffer)->name);                                                        CHANNEL(window->buffer)->name);
1111                          if (ptr_channel)                          if (ptr_channel)
1112                              channel_free (SERVER(gui_current_window->buffer),                              channel_free (SERVER(window->buffer),
1113                                            ptr_channel);                                            ptr_channel);
1114                          gui_buffer_free (gui_current_window->buffer, 1);                          gui_buffer_free (window->buffer, 1);
1115                      }                      }
1116                  }                  }
1117                  else                  else
1118                      gui_buffer_free (gui_current_window->buffer, 1);                      gui_buffer_free (window->buffer, 1);
1119              }              }
1120              gui_draw_buffer_status (gui_current_window->buffer, 1);              gui_draw_buffer_status (window->buffer, 1);
1121          }          }
1122          else if (ascii_strcasecmp (argv[0], "notify") == 0)          else if (ascii_strcasecmp (argv[0], "notify") == 0)
1123          {          {
# Line 1148  weechat_cmd_buffer (int argc, char **arg Line 1158  weechat_cmd_buffer (int argc, char **arg
1158                                      WEECHAT_ERROR, NOTIFY_LEVEL_MIN, NOTIFY_LEVEL_MAX);                                      WEECHAT_ERROR, NOTIFY_LEVEL_MIN, NOTIFY_LEVEL_MAX);
1159                          return -1;                          return -1;
1160                      }                      }
1161                      if ((!BUFFER_IS_CHANNEL(gui_current_window->buffer))                      if ((!BUFFER_IS_CHANNEL(window->buffer))
1162                          && (!BUFFER_IS_PRIVATE(gui_current_window->buffer)))                          && (!BUFFER_IS_PRIVATE(window->buffer)))
1163                      {                      {
1164                          /* invalid buffer type (only ok on channel or private) */                          /* invalid buffer type (only ok on channel or private) */
1165                          irc_display_prefix (NULL, NULL, PREFIX_ERROR);                          irc_display_prefix (NULL, NULL, PREFIX_ERROR);
# Line 1157  weechat_cmd_buffer (int argc, char **arg Line 1167  weechat_cmd_buffer (int argc, char **arg
1167                                      WEECHAT_ERROR);                                      WEECHAT_ERROR);
1168                          return -1;                          return -1;
1169                      }                      }
1170                      gui_current_window->buffer->notify_level = number;                      window->buffer->notify_level = number;
1171                      channel_set_notify_level (SERVER(gui_current_window->buffer),                      channel_set_notify_level (SERVER(window->buffer),
1172                                                CHANNEL(gui_current_window->buffer),                                                CHANNEL(window->buffer),
1173                                                number);                                                number);
1174                      irc_display_prefix (NULL, NULL, PREFIX_INFO);                      irc_display_prefix (NULL, NULL, PREFIX_INFO);
1175                      gui_printf (NULL, _("New notify level for %s%s%s: %s%d %s"),                      gui_printf (NULL, _("New notify level for %s%s%s: %s%d %s"),
1176                                  GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),                                  GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
1177                                  CHANNEL(gui_current_window->buffer)->name,                                  CHANNEL(window->buffer)->name,
1178                                  GUI_COLOR(COLOR_WIN_CHAT),                                  GUI_COLOR(COLOR_WIN_CHAT),
1179                                  GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),                                  GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
1180                                  number,                                  number,
# Line 1209  weechat_cmd_buffer (int argc, char **arg Line 1219  weechat_cmd_buffer (int argc, char **arg
1219                  number = strtol (argv[0] + 1, &error, 10);                  number = strtol (argv[0] + 1, &error, 10);
1220                  if ((error) && (error[0] == '\0'))                  if ((error) && (error[0] == '\0'))
1221                  {                  {
1222                      target_buffer = gui_current_window->buffer->number - (int) number;                      target_buffer = window->buffer->number - (int) number;
1223                      if (target_buffer < 1)                      if (target_buffer < 1)
1224                          target_buffer = (last_gui_buffer) ?                          target_buffer = (last_gui_buffer) ?
1225                              last_gui_buffer->number + target_buffer : 1;                              last_gui_buffer->number + target_buffer : 1;
1226                      gui_buffer_switch_by_number (gui_current_window,                      gui_buffer_switch_by_number (window,
1227                                                   target_buffer);                                                   target_buffer);
1228                  }                  }
1229              }              }
# Line 1224  weechat_cmd_buffer (int argc, char **arg Line 1234  weechat_cmd_buffer (int argc, char **arg
1234                  number = strtol (argv[0] + 1, &error, 10);                  number = strtol (argv[0] + 1, &error, 10);
1235                  if ((error) && (error[0] == '\0'))                  if ((error) && (error[0] == '\0'))
1236                  {                  {
1237                      target_buffer = gui_current_window->buffer->number + (int) number;                      target_buffer = window->buffer->number + (int) number;
1238                      if (last_gui_buffer && target_buffer > last_gui_buffer->number)                      if (last_gui_buffer && target_buffer > last_gui_buffer->number)
1239                          target_buffer -= last_gui_buffer->number;                          target_buffer -= last_gui_buffer->number;
1240                      gui_buffer_switch_by_number (gui_current_window,                      gui_buffer_switch_by_number (window,
1241                                                   target_buffer);                                                   target_buffer);
1242                  }                  }
1243              }              }
# Line 1237  weechat_cmd_buffer (int argc, char **arg Line 1247  weechat_cmd_buffer (int argc, char **arg
1247                  error = NULL;                  error = NULL;
1248                  number = strtol (argv[0], &error, 10);                  number = strtol (argv[0], &error, 10);
1249                  if ((error) && (error[0] == '\0'))                  if ((error) && (error[0] == '\0'))
1250                      gui_buffer_switch_by_number (gui_current_window, (int) number);                      gui_buffer_switch_by_number (window, (int) number);
1251                  else                  else
1252                  {                  {
1253                      ptr_buffer = NULL;                      ptr_buffer = NULL;
# Line 1252  weechat_cmd_buffer (int argc, char **arg Line 1262  weechat_cmd_buffer (int argc, char **arg
1262                      }                      }
1263                      if (ptr_buffer)                      if (ptr_buffer)
1264                      {                      {
1265                          gui_switch_to_buffer (gui_current_window, ptr_buffer);                          gui_switch_to_buffer (window, ptr_buffer);
1266                          gui_redraw_buffer (ptr_buffer);                          gui_redraw_buffer (ptr_buffer);
1267                      }                      }
1268                  }                  }
# Line 1264  weechat_cmd_buffer (int argc, char **arg Line 1274  weechat_cmd_buffer (int argc, char **arg
1274  }  }
1275    
1276  /*  /*
1277     * weechat_cmd_charset_display: display charsets for current server or channel
1278     */
1279    
1280    void
1281    weechat_cmd_charset_display (t_gui_window *window)
1282    {
1283        char *server_item = "server", *ptr_item;
1284        char *value, *string, *herited;
1285        int length;
1286        
1287        if (BUFFER_IS_SERVER(window->buffer) ||
1288            BUFFER_IS_CHANNEL(window->buffer) ||
1289            BUFFER_IS_PRIVATE(window->buffer))
1290        {
1291            if (BUFFER_IS_SERVER(window->buffer))
1292            {
1293                gui_printf_nolog (NULL, _("Charsets for server %s%s%s: "),
1294                                  GUI_COLOR(COLOR_WIN_CHAT_SERVER),
1295                                  SERVER(window->buffer)->name,
1296                                  GUI_COLOR(COLOR_WIN_CHAT));
1297                ptr_item = server_item;
1298            }
1299            else if (BUFFER_IS_CHANNEL(window->buffer))
1300            {
1301                gui_printf_nolog (NULL, _("Charsets for channel %s%s%s: "),
1302                                  GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
1303                                  CHANNEL(window->buffer)->name,
1304                                  GUI_COLOR(COLOR_WIN_CHAT));
1305                ptr_item = CHANNEL(window->buffer)->name;
1306            }
1307            else
1308            {
1309                gui_printf_nolog (NULL, _("Charsets for private %s%s%s: "),
1310                                  GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
1311                                  CHANNEL(window->buffer)->name,
1312                                  GUI_COLOR(COLOR_WIN_CHAT));
1313                ptr_item = CHANNEL(window->buffer)->name;
1314            }
1315            
1316            /* decode ISO */
1317            herited = NULL;
1318            config_option_list_get_value (&(SERVER(window->buffer)->charset_decode_iso),
1319                                          ptr_item, &value, &length);
1320            if (value && (length > 0))
1321            {
1322                string = strdup (value);
1323                string[length] = '\0';
1324            }
1325            else
1326            {
1327                string = strdup ("");
1328                herited = channel_get_charset_decode_iso (SERVER(window->buffer),
1329                                                          CHANNEL(window->buffer));
1330            }
1331            gui_printf (NULL, "decode_iso: \"%s%s%s\"",
1332                        GUI_COLOR(COLOR_WIN_CHAT_HOST),
1333                        string,
1334                        GUI_COLOR(COLOR_WIN_CHAT));
1335            if (herited)
1336            {
1337                gui_printf (NULL, _(" (inherited: \"%s%s%s\")"),
1338                            GUI_COLOR(COLOR_WIN_CHAT_HOST),
1339                            herited,
1340                            GUI_COLOR(COLOR_WIN_CHAT));
1341                free (herited);
1342            }
1343            gui_printf (NULL, ", ");
1344            free (string);
1345            
1346            /* decode UTF */
1347            herited = NULL;
1348            config_option_list_get_value (&(SERVER(window->buffer)->charset_decode_utf),
1349                                          ptr_item, &value, &length);
1350            if (value && (length > 0))
1351            {
1352                string = strdup (value);
1353                string[length] = '\0';
1354            }
1355            else
1356            {
1357                string = strdup ("");
1358                herited = channel_get_charset_decode_utf (SERVER(window->buffer),
1359                                                          CHANNEL(window->buffer));
1360            }
1361            gui_printf (NULL, "decode_utf: \"%s%s%s\"",
1362                        GUI_COLOR(COLOR_WIN_CHAT_HOST),
1363                        string,
1364                        GUI_COLOR(COLOR_WIN_CHAT));
1365            if (herited)
1366            {
1367                gui_printf (NULL, _(" (inherited: \"%s%s%s\")"),
1368                            GUI_COLOR(COLOR_WIN_CHAT_HOST),
1369                            herited,
1370                            GUI_COLOR(COLOR_WIN_CHAT));
1371                free (herited);
1372            }
1373            gui_printf (NULL, ", ");
1374            free (string);
1375            
1376            /* encode */
1377            herited = NULL;
1378            config_option_list_get_value (&(SERVER(window->buffer)->charset_encode),
1379                                          ptr_item, &value, &length);
1380            if (value && (length > 0))
1381            {
1382                string = strdup (value);
1383                string[length] = '\0';
1384            }
1385            else
1386            {
1387                string = strdup ("");
1388                herited = channel_get_charset_encode (SERVER(window->buffer),
1389                                                      CHANNEL(window->buffer));
1390            }
1391            gui_printf (NULL, "encode: \"%s%s%s\"",
1392                        GUI_COLOR(COLOR_WIN_CHAT_HOST),
1393                        string,
1394                        GUI_COLOR(COLOR_WIN_CHAT));
1395            if (herited)
1396            {
1397                gui_printf (NULL, _(" (inherited: \"%s%s%s\")"),
1398                            GUI_COLOR(COLOR_WIN_CHAT_HOST),
1399                            herited,
1400                            GUI_COLOR(COLOR_WIN_CHAT));
1401                free (herited);
1402            }
1403            gui_printf (NULL, "\n");
1404            free (string);
1405        }
1406    }
1407    
1408    /*
1409     * weechat_cmd_charset_set: set a charset for server or channel
1410     */
1411    
1412    void
1413    weechat_cmd_charset_set (t_gui_window *window, char **string, char *charset)
1414    {
1415        if (BUFFER_IS_SERVER(window->buffer))
1416        {
1417            if (charset)
1418                config_option_list_set (string, "server", charset);
1419            else
1420                config_option_list_remove (string, "server");
1421            weechat_cmd_charset_display (window);
1422        }
1423        else if (BUFFER_IS_CHANNEL(window->buffer) ||
1424                 BUFFER_IS_PRIVATE(window->buffer))
1425        {
1426            if (charset)
1427                config_option_list_set (string, CHANNEL(window->buffer)->name, charset);
1428            else
1429                config_option_list_remove (string, CHANNEL(window->buffer)->name);
1430            weechat_cmd_charset_display (window);
1431        }
1432    }
1433    
1434    /*
1435     * weechat_cmd_charset: change charset for server or channel
1436     */
1437    
1438    int
1439    weechat_cmd_charset (t_gui_window *window, int argc, char **argv)
1440    {
1441        if (argc == 0)
1442            weechat_cmd_charset_display (window);
1443        else
1444        {
1445            if (ascii_strcasecmp (argv[0], "decode_iso") == 0)
1446                weechat_cmd_charset_set (window,
1447                                         &(SERVER(window->buffer)->charset_decode_iso),
1448                                         (argc > 1) ? argv[1] : NULL);
1449            else if (ascii_strcasecmp (argv[0], "decode_utf") == 0)
1450                weechat_cmd_charset_set (window,
1451                                         &(SERVER(window->buffer)->charset_decode_utf),
1452                                         (argc > 1) ? argv[1] : NULL);
1453            else if (ascii_strcasecmp (argv[0], "encode") == 0)
1454                weechat_cmd_charset_set (window,
1455                                         &(SERVER(window->buffer)->charset_encode),
1456                                         (argc > 1) ? argv[1] : NULL);
1457            else
1458            {
1459                irc_display_prefix (NULL, NULL, PREFIX_ERROR);
1460                gui_printf (NULL,
1461                            _("%s unknown option for \"%s\" command\n"),
1462                            WEECHAT_ERROR, "charset");
1463                return -1;
1464            }
1465        }
1466        return 0;
1467    }
1468    
1469    /*
1470   * weechat_cmd_clear: display or create alias   * weechat_cmd_clear: display or create alias
1471   */   */
1472    
1473  int  int
1474  weechat_cmd_clear (int argc, char **argv)  weechat_cmd_clear (t_gui_window *window, int argc, char **argv)
1475  {  {
1476      if (argc == 1)      if (argc == 1)
1477      {      {
# Line 1278  weechat_cmd_clear (int argc, char **argv Line 1481  weechat_cmd_clear (int argc, char **argv
1481          {          {
1482              irc_display_prefix (NULL, NULL, PREFIX_ERROR);              irc_display_prefix (NULL, NULL, PREFIX_ERROR);
1483              gui_printf (NULL,              gui_printf (NULL,
1484                          _("unknown parameter \"%s\" for \"%s\" command\n"),                          _("%s unknown option for \"%s\" command\n"),
1485                          argv[0], "clear");                          WEECHAT_ERROR, "clear");
1486              return -1;              return -1;
1487          }          }
1488      }      }
1489      else      else
1490          gui_buffer_clear (gui_current_window->buffer);          gui_buffer_clear (window->buffer);
1491      return 0;      return 0;
1492  }  }
1493    
# Line 1293  weechat_cmd_clear (int argc, char **argv Line 1496  weechat_cmd_clear (int argc, char **argv
1496   */   */
1497    
1498  int  int
1499  weechat_cmd_connect (int argc, char **argv)  weechat_cmd_connect (t_gui_window *window, int argc, char **argv)
1500  {  {
1501      t_irc_server *ptr_server;      t_irc_server *ptr_server;
1502            
1503      if (argc == 1)      if (argc == 1)
1504          ptr_server = server_search (argv[0]);          ptr_server = server_search (argv[0]);
1505      else      else
1506          ptr_server = SERVER(gui_current_window->buffer);          ptr_server = SERVER(window->buffer);
1507            
1508      if (ptr_server)      if (ptr_server)
1509      {      {
# Line 1322  weechat_cmd_connect (int argc, char **ar Line 1525  weechat_cmd_connect (int argc, char **ar
1525          }          }
1526          if (!ptr_server->buffer)          if (!ptr_server->buffer)
1527          {          {
1528              if (!gui_buffer_new (gui_current_window, ptr_server, NULL, 0, 1))              if (!gui_buffer_new (window, ptr_server, NULL, 0, 1))
1529                  return -1;                  return -1;
1530          }          }
1531          if (server_connect (ptr_server))          if (server_connect (ptr_server))
# Line 1384  weechat_cmd_debug_display_windows (t_gui Line 1587  weechat_cmd_debug_display_windows (t_gui
1587   */   */
1588    
1589  int  int
1590  weechat_cmd_debug (int argc, char **argv)  weechat_cmd_debug (t_gui_window *window, int argc, char **argv)
1591  {  {
1592        /* make gcc happy */
1593        (void) window;
1594        
1595      if (argc != 1)      if (argc != 1)
1596      {      {
1597          irc_display_prefix (NULL, NULL, PREFIX_ERROR);          irc_display_prefix (NULL, NULL, PREFIX_ERROR);
# Line 1422  weechat_cmd_debug (int argc, char **argv Line 1628  weechat_cmd_debug (int argc, char **argv
1628   */   */
1629    
1630  int  int
1631  weechat_cmd_disconnect (int argc, char **argv)  weechat_cmd_disconnect (t_gui_window *window, int argc, char **argv)
1632  {  {
1633      t_irc_server *ptr_server;      t_irc_server *ptr_server;
1634            
1635      if (argc == 1)      if (argc == 1)
1636          ptr_server = server_search (argv[0]);          ptr_server = server_search (argv[0]);
1637      else      else
1638          ptr_server = SERVER(gui_current_window->buffer);          ptr_server = SERVER(window->buffer);
1639            
1640      if (ptr_server)      if (ptr_server)
1641      {      {
# Line 1449  weechat_cmd_disconnect (int argc, char * Line 1655  weechat_cmd_disconnect (int argc, char *
1655                          _("Auto-reconnection is cancelled\n"));                          _("Auto-reconnection is cancelled\n"));
1656          }          }
1657          server_disconnect (ptr_server, 0);          server_disconnect (ptr_server, 0);
1658          gui_draw_buffer_status (gui_current_window->buffer, 1);          gui_draw_buffer_status (window->buffer, 1);
1659      }      }
1660      else      else
1661      {      {
# Line 1465  weechat_cmd_disconnect (int argc, char * Line 1671  weechat_cmd_disconnect (int argc, char *
1671   */   */
1672    
1673  int  int
1674  weechat_cmd_help (int argc, char **argv)  weechat_cmd_help (t_gui_window *window, int argc, char **argv)
1675  {  {
1676      int i;      int i;
1677  #ifdef PLUGINS  #ifdef PLUGINS
1678      t_weechat_plugin *ptr_plugin;      t_weechat_plugin *ptr_plugin;
1679      t_plugin_handler *ptr_handler;      t_plugin_handler *ptr_handler;
1680  #endif  #endif
1681        
1682        /* make gcc happy */
1683        (void) window;
1684        
1685      switch (argc)      switch (argc)
1686      {      {
1687          case 0:          case 0:
# Line 1629  weechat_cmd_help (int argc, char **argv) Line 1838  weechat_cmd_help (int argc, char **argv)
1838   */   */
1839    
1840  int  int
1841  weechat_cmd_history (int argc, char **argv) {  weechat_cmd_history (t_gui_window *window, int argc, char **argv)
1842    {
1843      t_history *p;      t_history *ptr_history;
1844      int n;      int n;
1845      int n_total;      int n_total;
1846      int n_user = cfg_history_display_default;      int n_user;
1847        
1848        n_user = cfg_history_display_default;
1849        
1850      if (argc == 1)      if (argc == 1)
1851      {      {
1852          if (ascii_strcasecmp (argv[0], "clear") == 0)          if (ascii_strcasecmp (argv[0], "clear") == 0)
1853          {          {
1854              history_buffer_free (gui_current_window->buffer);              history_buffer_free (window->buffer);
1855              return 0;              return 0;
1856          }          }
1857          else          else
1858              n_user = atoi (argv[0]);              n_user = atoi (argv[0]);
1859      }      }
1860    
1861      if (gui_current_window->buffer->history != NULL)      if (window->buffer->history != NULL)
1862      {      {
1863          for(n_total = 1, p = gui_current_window->buffer->history; p->next_history != NULL; p = p->next_history, n_total++);          n_total = 1;
1864          for(n=0; p != NULL; p=p->prev_history, n++)          for (ptr_history = window->buffer->history;
1865                 ptr_history->next_history;
1866                 ptr_history = ptr_history->next_history)
1867          {          {
1868              if (n_user > 0 && (n_total-n_user) > n)              n_total++;
1869            }
1870            for (n = 0; ptr_history; ptr_history = ptr_history->prev_history)
1871            {
1872                if ((n_user > 0) && ((n_total - n_user) > n))
1873                  continue;                  continue;
1874              irc_display_prefix (NULL, gui_current_window->buffer,              irc_display_prefix (NULL, window->buffer, PREFIX_INFO);
1875                                  PREFIX_INFO);              gui_printf_nolog (window->buffer, "%s\n", ptr_history->text);
1876              gui_printf_nolog (gui_current_window->buffer,              n++;
                               "%s\n", p->text);  
1877          }          }
1878      }      }
1879        
1880      return 0;      return 0;
1881  }  }
1882    
# Line 1697  weechat_cmd_ignore_display (char *text, Line 1913  weechat_cmd_ignore_display (char *text,
1913   */   */
1914    
1915  int  int
1916  weechat_cmd_ignore (int argc, char **argv)  weechat_cmd_ignore (t_gui_window *window, int argc, char **argv)
1917  {  {
1918      t_irc_ignore *ptr_ignore;      t_irc_ignore *ptr_ignore;
1919      int i;      int i;
# Line 1733  weechat_cmd_ignore (int argc, char **arg Line 1949  weechat_cmd_ignore (int argc, char **arg
1949              break;              break;
1950          case 1:          case 1:
1951              ptr_ignore = ignore_add (argv[0], "*", "*",              ptr_ignore = ignore_add (argv[0], "*", "*",
1952                                       (SERVER(gui_current_window->buffer)) ?                                       (SERVER(window->buffer)) ?
1953                                       SERVER(gui_current_window->buffer)->name : "*");                                       SERVER(window->buffer)->name : "*");
1954              break;              break;
1955          case 2:          case 2:
1956              ptr_ignore = ignore_add (argv[0], argv[1], "*",              ptr_ignore = ignore_add (argv[0], argv[1], "*",
1957                                       (SERVER(gui_current_window->buffer)) ?                                       (SERVER(window->buffer)) ?
1958                                       SERVER(gui_current_window->buffer)->name : "*");                                       SERVER(window->buffer)->name : "*");
1959              break;              break;
1960          case 3:          case 3:
1961              ptr_ignore = ignore_add (argv[0], argv[1], argv[2],              ptr_ignore = ignore_add (argv[0], argv[1], argv[2],
1962                                       (SERVER(gui_current_window->buffer)) ?                                       (SERVER(window->buffer)) ?
1963                                       SERVER(gui_current_window->buffer)->name : "*");                                       SERVER(window->buffer)->name : "*");
1964              break;              break;
1965          case 4:          case 4:
1966              ptr_ignore = ignore_add (argv[0], argv[1], argv[2], argv[3]);              ptr_ignore = ignore_add (argv[0], argv[1], argv[2], argv[3]);
# Line 1792  weechat_cmd_key_display (t_gui_key *key, Line 2008  weechat_cmd_key_display (t_gui_key *key,
2008   */   */
2009    
2010  int  int
2011  weechat_cmd_key (char *arguments)  weechat_cmd_key (t_gui_window *window, char *arguments)
2012  {  {
2013      char *pos;      char *pos;
2014      int i;      int i;
2015      t_gui_key *ptr_key;      t_gui_key *ptr_key;
2016            
2017        /* make gcc happy */
2018        (void) window;
2019        
2020      if (arguments)      if (arguments)
2021      {      {
2022          while (arguments[0] == ' ')          while (arguments[0] == ' ')
# Line 1904  weechat_cmd_key (char *arguments) Line 2123  weechat_cmd_key (char *arguments)
2123   */   */
2124    
2125  int  int
2126  weechat_cmd_plugin (int argc, char **argv)  weechat_cmd_plugin (t_gui_window *window, int argc, char **argv)
2127  {  {
2128  #ifdef PLUGINS  #ifdef PLUGINS
2129      t_weechat_plugin *ptr_plugin;      t_weechat_plugin *ptr_plugin;
2130      t_plugin_handler *ptr_handler;      t_plugin_handler *ptr_handler;
2131      int handler_found;      int handler_found;
2132            
2133        /* make gcc happy */
2134        (void) window;
2135        
2136      switch (argc)      switch (argc)
2137      {      {
2138          case 0:          case 0:
# Line 2032  weechat_cmd_plugin (int argc, char **arg Line 2254  weechat_cmd_plugin (int argc, char **arg
2254   */   */
2255    
2256  int  int
2257  weechat_cmd_save (int argc, char **argv)  weechat_cmd_save (t_gui_window *window, int argc, char **argv)
2258  {  {
2259        /* make gcc happy */
2260        (void) window;
2261        
2262      return (config_write ((argc == 1) ? argv[0] : NULL));      return (config_write ((argc == 1) ? argv[0] : NULL));
2263  }  }
2264    
# Line 2042  weechat_cmd_save (int argc, char **argv) Line 2267  weechat_cmd_save (int argc, char **argv)
2267   */   */
2268    
2269  int  int
2270  weechat_cmd_server (int argc, char **argv)  weechat_cmd_server (t_gui_window *window, int argc, char **argv)
2271  {  {
2272      int i;      int i;
2273      t_irc_server server, *ptr_server, *server_found, *new_server;      t_irc_server server, *ptr_server, *server_found, *new_server;
# Line 2150  weechat_cmd_server (int argc, char **arg Line 2375  weechat_cmd_server (int argc, char **arg
2375              if (server_name)              if (server_name)
2376                  free (server_name);                  free (server_name);
2377                            
2378              gui_redraw_buffer (gui_current_window->buffer);              gui_redraw_buffer (window->buffer);
2379                            
2380              return 0;              return 0;
2381          }          }
# Line 2286  weechat_cmd_server (int argc, char **arg Line 2511  weechat_cmd_server (int argc, char **arg
2511                                   server.ssl, server.password,                                   server.ssl, server.password,
2512                                   server.nick1, server.nick2, server.nick3,                                   server.nick1, server.nick2, server.nick3,
2513                                   server.username, server.realname,                                   server.username, server.realname,
2514                                   server.command, 1, server.autojoin, 1, NULL);                                   server.command, 1, server.autojoin, 1, NULL,
2515                                     NULL, NULL, NULL);
2516          if (new_server)          if (new_server)
2517          {          {
2518              irc_display_prefix (NULL, NULL, PREFIX_INFO);              irc_display_prefix (NULL, NULL, PREFIX_INFO);
# Line 2307  weechat_cmd_server (int argc, char **arg Line 2533  weechat_cmd_server (int argc, char **arg
2533                    
2534          if (new_server->autoconnect)          if (new_server->autoconnect)
2535          {          {
2536              (void) gui_buffer_new (gui_current_window, new_server, NULL, 0, 1);              (void) gui_buffer_new (window, new_server, NULL, 0, 1);
2537              server_connect (new_server);              server_connect (new_server);
2538          }          }
2539                    
# Line 2391  weechat_cmd_set_display_option (t_config Line 2617  weechat_cmd_set_display_option (t_config
2617                              GUI_COLOR(COLOR_WIN_CHAT_DARK));                              GUI_COLOR(COLOR_WIN_CHAT_DARK));
2618                  free (value2);                  free (value2);
2619              }              }
2620                else
2621                    gui_printf (NULL, "%s\"\"",
2622                                GUI_COLOR(COLOR_WIN_CHAT_DARK));
2623              gui_printf (NULL, "\n");              gui_printf (NULL, "\n");
2624              break;              break;
2625      }      }
# Line 2401  weechat_cmd_set_display_option (t_config Line 2630  weechat_cmd_set_display_option (t_config
2630   */   */
2631    
2632  int  int
2633  weechat_cmd_set (char *arguments)  weechat_cmd_set (t_gui_window *window, char *arguments)
2634  {  {
2635      char *option, *value, *pos;      char *option, *value, *pos;
2636      int i, j, section_displayed;      int i, j, section_displayed;
# Line 2410  weechat_cmd_set (char *arguments) Line 2639  weechat_cmd_set (char *arguments)
2639      char option_name[256];      char option_name[256];
2640      void *ptr_option_value;      void *ptr_option_value;
2641      int last_section, last_option, number_found;      int last_section, last_option, number_found;
2642        
2643        /* make gcc happy */
2644        (void) window;
2645        
2646      option = NULL;      option = NULL;
2647      value = NULL;      value = NULL;
2648      if (arguments && arguments[0])      if (arguments && arguments[0])
# Line 2717  weechat_cmd_set (char *arguments) Line 2949  weechat_cmd_set (char *arguments)
2949   */   */
2950    
2951  int  int
2952  weechat_cmd_unalias (char *arguments)  weechat_cmd_unalias (t_gui_window *window, char *arguments)
2953  {  {
2954      t_weelist *ptr_weelist;      t_weelist *ptr_weelist;
2955      t_weechat_alias *ptr_alias;      t_weechat_alias *ptr_alias;
2956            
2957        /* make gcc happy */
2958        (void) window;
2959        
2960      ptr_weelist = weelist_search (index_commands, arguments);      ptr_weelist = weelist_search (index_commands, arguments);
2961      if (!ptr_weelist)      if (!ptr_weelist)
2962      {      {
# Line 2746  weechat_cmd_unalias (char *arguments) Line 2981  weechat_cmd_unalias (char *arguments)
2981   */   */
2982    
2983  int  int
2984  weechat_cmd_unignore (int argc, char **argv)  weechat_cmd_unignore (t_gui_window *window, int argc, char **argv)
2985  {  {
2986      char *error;      char *error;
2987      int number, ret;      int number, ret;
# Line 2756  weechat_cmd_unignore (int argc, char **a Line 2991  weechat_cmd_unignore (int argc, char **a
2991      {      {
2992          case 0:          case 0:
2993              /* List all ignore */              /* List all ignore */
2994              weechat_cmd_ignore (argc, argv);              weechat_cmd_ignore (window, argc, argv);
2995              return 0;              return 0;
2996              break;              break;
2997          case 1:          case 1:
# Line 2766  weechat_cmd_unignore (int argc, char **a Line 3001  weechat_cmd_unignore (int argc, char **a
3001                  ret = ignore_search_free_by_number (number);                  ret = ignore_search_free_by_number (number);
3002              else              else
3003                  ret = ignore_search_free (argv[0], "*", "*",                  ret = ignore_search_free (argv[0], "*", "*",
3004                                      (SERVER(gui_current_window->buffer)) ?                                            (SERVER(window->buffer)) ?
3005                                       SERVER(gui_current_window->buffer)->name : "*");                                            SERVER(window->buffer)->name : "*");
3006              break;              break;
3007          case 2:          case 2:
3008              ret = ignore_search_free (argv[0], argv[1], "*",              ret = ignore_search_free (argv[0], argv[1], "*",
3009                                        (SERVER(gui_current_window->buffer)) ?                                        (SERVER(window->buffer)) ?
3010                                        SERVER(gui_current_window->buffer)->name : "*");                                        SERVER(window->buffer)->name : "*");
3011              break;              break;
3012          case 3:          case 3:
3013              ret = ignore_search_free (argv[0], argv[1], argv[2],              ret = ignore_search_free (argv[0], argv[1], argv[2],
3014                                        (SERVER(gui_current_window->buffer)) ?                                        (SERVER(window->buffer)) ?
3015                                        SERVER(gui_current_window->buffer)->name : "*");                                        SERVER(window->buffer)->name : "*");
3016              break;              break;
3017          case 4:          case 4:
3018              ret = ignore_search_free (argv[0], argv[1], argv[2], argv[3]);              ret = ignore_search_free (argv[0], argv[1], argv[2], argv[3]);
# Line 2812  weechat_cmd_unignore (int argc, char **a Line 3047  weechat_cmd_unignore (int argc, char **a
3047   */   */
3048    
3049  int  int
3050  weechat_cmd_upgrade (int argc, char **argv)  weechat_cmd_upgrade (t_gui_window *window, int argc, char **argv)
3051  {  {
3052      t_irc_server *ptr_server;      t_irc_server *ptr_server;
3053      int filename_length;      int filename_length;
# Line 2820  weechat_cmd_upgrade (int argc, char **ar Line 3055  weechat_cmd_upgrade (int argc, char **ar
3055      char *exec_args[5] = { NULL, "-a", "--session", NULL, NULL };      char *exec_args[5] = { NULL, "-a", "--session", NULL, NULL };
3056            
3057      /* make gcc happy */      /* make gcc happy */
3058        (void) window;
3059      (void) argc;      (void) argc;
3060      (void) argv;      (void) argv;
3061            
# Line 2828  weechat_cmd_upgrade (int argc, char **ar Line 3064  weechat_cmd_upgrade (int argc, char **ar
3064      {      {
3065          if (ptr_server->child_pid != 0)          if (ptr_server->child_pid != 0)
3066          {          {
3067              irc_display_prefix (NULL, gui_current_window->buffer, PREFIX_ERROR);              irc_display_prefix (NULL, NULL, PREFIX_ERROR);
3068              gui_printf_nolog (NULL,              gui_printf_nolog (NULL,
3069                                _("%s can't upgrade: connection to at least "                                _("%s can't upgrade: connection to at least "
3070                                  "one server is pending"),                                  "one server is pending"),
# Line 2900  weechat_cmd_upgrade (int argc, char **ar Line 3136  weechat_cmd_upgrade (int argc, char **ar
3136   */   */
3137    
3138  int  int
3139  weechat_cmd_uptime (int argc, char **argv)  weechat_cmd_uptime (t_gui_window *window, int argc, char **argv)
3140  {  {
3141      time_t running_time;      time_t running_time;
3142      int day, hour, min, sec;      int day, hour, min, sec;
# Line 2913  weechat_cmd_uptime (int argc, char **arg Line 3149  weechat_cmd_uptime (int argc, char **arg
3149      sec = ((running_time % (60 * 60 * 24)) % (60 * 60)) % 60;      sec = ((running_time % (60 * 60 * 24)) % (60 * 60)) % 60;
3150            
3151      if ((argc == 1) && (strcmp (argv[0], "-o") == 0)      if ((argc == 1) && (strcmp (argv[0], "-o") == 0)
3152          && ((BUFFER_IS_CHANNEL(gui_current_window->buffer))          && ((BUFFER_IS_CHANNEL(window->buffer))
3153              || (BUFFER_IS_PRIVATE(gui_current_window->buffer))))              || (BUFFER_IS_PRIVATE(window->buffer))))
3154      {      {
3155          snprintf (string, sizeof (string),          snprintf (string, sizeof (string),
3156                    _("WeeChat uptime: %d %s %02d:%02d:%02d, started on %s"),                    _("WeeChat uptime: %d %s %02d:%02d:%02d, started on %s"),
# Line 2925  weechat_cmd_uptime (int argc, char **arg Line 3161  weechat_cmd_uptime (int argc, char **arg
3161                    sec,                    sec,
3162                    ctime (&weechat_start_time));                    ctime (&weechat_start_time));
3163          string[strlen (string) - 1] = '\0';          string[strlen (string) - 1] = '\0';
3164          user_command (SERVER(gui_current_window->buffer),          user_command (window, SERVER(window->buffer), string);
                       gui_current_window->buffer,  
                       string);  
3165      }      }
3166      else      else
3167      {      {
3168          irc_display_prefix (NULL, gui_current_window->buffer,          irc_display_prefix (NULL, window->buffer, PREFIX_INFO);
3169                              PREFIX_INFO);          gui_printf_nolog (window->buffer,
         gui_printf_nolog (gui_current_window->buffer,  
3170                            _("WeeChat uptime: %s%d %s%s "                            _("WeeChat uptime: %s%d %s%s "
3171                              "%s%02d%s:%s%02d%s:%s%02d%s, "                              "%s%02d%s:%s%02d%s:%s%02d%s, "
3172                              "started on %s%s"),                              "started on %s%s"),
# Line 2962  weechat_cmd_uptime (int argc, char **arg Line 3195  weechat_cmd_uptime (int argc, char **arg
3195   */   */
3196    
3197  int  int
3198  weechat_cmd_window (int argc, char **argv)  weechat_cmd_window (t_gui_window *window, int argc, char **argv)
3199  {  {
3200      t_gui_window *ptr_win;      t_gui_window *ptr_win;
3201      int i;      int i;
# Line 3009  weechat_cmd_window (int argc, char **arg Line 3242  weechat_cmd_window (int argc, char **arg
3242                  number = strtol (argv[1], &error, 10);                  number = strtol (argv[1], &error, 10);
3243                  if ((error) && (error[0] == '\0')                  if ((error) && (error[0] == '\0')
3244                      && (number > 0) && (number < 100))                      && (number > 0) && (number < 100))
3245                      gui_window_split_horiz (gui_current_window, number);                      gui_window_split_horiz (window, number);
3246              }              }
3247              else              else
3248                  gui_window_split_horiz (gui_current_window, 50);                  gui_window_split_horiz (window, 50);
3249          }          }
3250          else if (ascii_strcasecmp (argv[0], "splitv") == 0)          else if (ascii_strcasecmp (argv[0], "splitv") == 0)
3251          {          {
# Line 3023  weechat_cmd_window (int argc, char **arg Line 3256  weechat_cmd_window (int argc, char **arg
3256                  number = strtol (argv[1], &error, 10);                  number = strtol (argv[1], &error, 10);
3257                  if ((error) && (error[0] == '\0')                  if ((error) && (error[0] == '\0')
3258                      && (number > 0) && (number < 100))                      && (number > 0) && (number < 100))
3259                      gui_window_split_vertic (gui_current_window, number);                      gui_window_split_vertic (window, number);
3260              }              }
3261              else              else
3262                  gui_window_split_vertic (gui_current_window, 50);                  gui_window_split_vertic (window, 50);
3263          }          }
3264          else if (ascii_strcasecmp (argv[0], "resize") == 0)          else if (ascii_strcasecmp (argv[0], "resize") == 0)
3265          {          {
# Line 3037  weechat_cmd_window (int argc, char **arg Line 3270  weechat_cmd_window (int argc, char **arg
3270                  number = strtol (argv[1], &error, 10);                  number = strtol (argv[1], &error, 10);
3271                  if ((error) && (error[0] == '\0')                  if ((error) && (error[0] == '\0')
3272                      && (number > 0) && (number < 100))                      && (number > 0) && (number < 100))
3273                      gui_window_resize (gui_current_window, number);                      gui_window_resize (window, number);
3274              }              }
3275          }          }
3276          else if (ascii_strcasecmp (argv[0], "merge") == 0)          else if (ascii_strcasecmp (argv[0], "merge") == 0)
# Line 3045  weechat_cmd_window (int argc, char **arg Line 3278  weechat_cmd_window (int argc, char **arg
3278              if (argc >= 2)              if (argc >= 2)
3279              {              {
3280                  if (ascii_strcasecmp (argv[1], "all") == 0)                  if (ascii_strcasecmp (argv[1], "all") == 0)
3281                      gui_window_merge_all (gui_current_window);                      gui_window_merge_all (window);
3282                  else                  else
3283                  {                  {
3284                      irc_display_prefix (NULL, NULL, PREFIX_ERROR);                      irc_display_prefix (NULL, NULL, PREFIX_ERROR);
# Line 3057  weechat_cmd_window (int argc, char **arg Line 3290  weechat_cmd_window (int argc, char **arg
3290              }              }
3291              else              else
3292              {              {
3293                  if (!gui_window_merge (gui_current_window))                  if (!gui_window_merge (window))
3294                  {                  {
3295                      irc_display_prefix (NULL, NULL, PREFIX_ERROR);                      irc_display_prefix (NULL, NULL, PREFIX_ERROR);
3296                      gui_printf (NULL,                      gui_printf (NULL,
# Line 3075  weechat_cmd_window (int argc, char **arg Line 3308  weechat_cmd_window (int argc, char **arg
3308              error = NULL;              error = NULL;
3309              number = strtol (argv[0] + 1, &error, 10);              number = strtol (argv[0] + 1, &error, 10);
3310              if ((error) && (error[0] == '\0'))              if ((error) && (error[0] == '\0'))
3311                  gui_window_switch_by_buffer (gui_current_window, number);                  gui_window_switch_by_buffer (window, number);
3312          }          }
3313          else if (ascii_strcasecmp (argv[0], "-1") == 0)          else if (ascii_strcasecmp (argv[0], "-1") == 0)
3314              gui_window_switch_previous (gui_current_window);              gui_window_switch_previous (window);
3315          else if (ascii_strcasecmp (argv[0], "+1") == 0)          else if (ascii_strcasecmp (argv[0], "+1") == 0)
3316              gui_window_switch_next (gui_current_window);              gui_window_switch_next (window);
3317          else if (ascii_strcasecmp (argv[0], "up") == 0)          else if (ascii_strcasecmp (argv[0], "up") == 0)
3318              gui_window_switch_up (gui_current_window);              gui_window_switch_up (window);
3319          else if (ascii_strcasecmp (argv[0], "down") == 0)          else if (ascii_strcasecmp (argv[0], "down") == 0)
3320              gui_window_switch_down (gui_current_window);              gui_window_switch_down (window);
3321          else if (ascii_strcasecmp (argv[0], "left") == 0)          else if (ascii_strcasecmp (argv[0], "left") == 0)
3322              gui_window_switch_left (gui_current_window);              gui_window_switch_left (window);
3323          else if (ascii_strcasecmp (argv[0], "right") == 0)          else if (ascii_strcasecmp (argv[0], "right") == 0)
3324              gui_window_switch_right (gui_current_window);              gui_window_switch_right (window);
3325          else          else
3326          {          {
3327              irc_display_prefix (NULL, NULL, PREFIX_ERROR);              irc_display_prefix (NULL, NULL, PREFIX_ERROR);

Legend:
Removed from v.1.91  
changed lines
  Added in v.1.92

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26