mirror of
https://github.com/weechat/weechat.git
synced 2026-06-15 07:34:46 +02:00
Compare commits
73 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| dfea9b208c | |||
| 263f15cf2e | |||
| 36f0aab4d4 | |||
| 1f77a51ddc | |||
| c96eea0f54 | |||
| 87fa5c8b52 | |||
| 6f83c33ed9 | |||
| 23ff266816 | |||
| 8affe52ee4 | |||
| 162565466e | |||
| a2384b3514 | |||
| 219621b8cc | |||
| a3d7bcf804 | |||
| 8978b9c4b9 | |||
| b605e52d0f | |||
| c554ed2da5 | |||
| dde12565e7 | |||
| 34e220df56 | |||
| 537e1781a6 | |||
| d66bfc2458 | |||
| fb3fd5b0eb | |||
| c0762e3b13 | |||
| 4519707904 | |||
| 30e194e41f | |||
| 5e4f45e2a2 | |||
| e339e9020d | |||
| 5332d2ba27 | |||
| 058c026e10 | |||
| dd79c6b8bf | |||
| e867f2dd35 | |||
| ba468f2234 | |||
| 6c67b97fb7 | |||
| 9f5d99f57e | |||
| c79becdc85 | |||
| 7405588a6e | |||
| 4061f0641d | |||
| 5787acad2c | |||
| 5e29f17620 | |||
| 4950d462d0 | |||
| 20b567c3df | |||
| d395846fb7 | |||
| bee62989f6 | |||
| 7579529d94 | |||
| a8fc49bd79 | |||
| d617f1d154 | |||
| 82b3f86c43 | |||
| 812ab4129f | |||
| d6925c982e | |||
| c3e9858d55 | |||
| 7290f0f1ab | |||
| 0093bf0849 | |||
| 3bf3f22928 | |||
| 880e10b6d6 | |||
| 054abdff85 | |||
| 860e9a08f3 | |||
| 148e74d2c3 | |||
| f5fadd9c12 | |||
| 0abe6f0322 | |||
| c74cf01b63 | |||
| eb2e8891cb | |||
| 97a3d47650 | |||
| 4ed02bbdcf | |||
| 63244d9a30 | |||
| fcc885eff0 | |||
| 7feb775299 | |||
| 8da229fd9d | |||
| 398e056029 | |||
| f30fb21175 | |||
| a89ca83306 | |||
| 0e785fe106 | |||
| 3e6e347d13 | |||
| 8d014d66da | |||
| f07c42fff3 |
@@ -0,0 +1,53 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
PROJECT(weechat)
|
||||
|
||||
SET(CMAKE_VERBOSE_MAKEFILE OFF)
|
||||
SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
|
||||
SET(CMAKE_SKIP_RPATH ON)
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -W")
|
||||
IF(PREFIX)
|
||||
SET(CMAKE_INSTALL_PREFIX ${PREFIX} CACHE PATH "Install path prefix" FORCE)
|
||||
ENDIF(PREFIX)
|
||||
|
||||
SET(VERSION 0.2.5-cvs)
|
||||
SET(PKG_STRING "${PROJECT_NAME} ${VERSION}")
|
||||
SET(LIBDIR ${CMAKE_INSTALL_PREFIX}/lib/weechat)
|
||||
SET(SHAREDIR ${CMAKE_INSTALL_PREFIX}/share/weechat)
|
||||
SET(LOCALEDIR ${CMAKE_INSTALL_PREFIX}/share/locale)
|
||||
STRING(REPLACE "\";\"" "\ " PKG_STRING ${PKG_STRING})
|
||||
|
||||
OPTION(DISABLE_NCURSES "Disable Ncurses interface")
|
||||
OPTION(DISABLE_NLS "Disable Native Language Support")
|
||||
OPTION(DISABLE_GNUTLS "Disable SSLv3/TLS connection support")
|
||||
OPTION(DISABLE_PLUGINS "Disable Plugins support")
|
||||
OPTION(DISABLE_PERL "Disable Perl scripting language")
|
||||
OPTION(DISABLE_PYTHON "Disable Python scripting language")
|
||||
OPTION(DISABLE_RUBY "Disable Ruby scripting language")
|
||||
OPTION(DISABLE_LUA "Disable Lua scripting language")
|
||||
OPTION(DISABLE_ASPELL "Disable Aspell plugin")
|
||||
OPTION(DISABLE_CHARSET "Disable Charset plugin")
|
||||
OPTION(DISABLE_DOC "Disable Doc")
|
||||
|
||||
ADD_SUBDIRECTORY( po )
|
||||
ADD_SUBDIRECTORY( src )
|
||||
IF(NOT DISABLE_DOC)
|
||||
ADD_SUBDIRECTORY( doc )
|
||||
ENDIF(NOT DISABLE_DOC)
|
||||
|
||||
CONFIGURE_FILE(config.h.cmake config.h @ONLY)
|
||||
@@ -1,9 +1,50 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
ChangeLog - 2007-03-29
|
||||
ChangeLog - 2007-06-07
|
||||
|
||||
|
||||
Version 0.2.5 (2007-06-07):
|
||||
* fixed QUOTE command: now allowed when socket is ok (even if IRC
|
||||
connection to server is not ok) (bug #20113)
|
||||
* added missing IRC commands (327, 378, 379) (bug #20091)
|
||||
* fixed hotlist when exiting search mode: current buffer is removed from
|
||||
hotlist
|
||||
* added "%M" for completion with nicks of current server (nicks on open
|
||||
channels) (task #6931)
|
||||
* improved key bindings: now possible to bind a key on many commands,
|
||||
separated by semicolon (task #5444)
|
||||
* improved IRC long message split: use word boundary (task #6685)
|
||||
* removed ":" for unknown IRC commands before arguments (bug #19929)
|
||||
* fixed "%C" completion: now completes with all channels of all servers
|
||||
* fixed bug with "/buffer query_name", added server and channel completion
|
||||
for /buffer command (bug #19928)
|
||||
* added cmake for weechat compile (patch #5943)
|
||||
* fixed IRC mode parsing when receiving modes with arguments (bug #19902)
|
||||
* fixed crash with IRC JOIN malformed message (bug #19891)
|
||||
* fixed bug with nick prefixes on some IRC servers (bug #19854)
|
||||
* improved setup file save: now writes temporary file, then rename it
|
||||
(task #6847)
|
||||
* fixed bug with $nick/$channel/$server variables in commands
|
||||
* forget current nick when user manually disconnects from server
|
||||
* fixed nick display in input window
|
||||
* fixed bug with erroneous nickname when connecting to server (bug #19812)
|
||||
* fixed display bugs in IRC error messages
|
||||
* added protocol priority for gnutls (patch #5915)
|
||||
* added channel admin mode '!' for some IRC servers
|
||||
* fixed bug with iso2022jp locale (bug #18719)
|
||||
* fixed string format bug when displaying string thru plugin script API
|
||||
* added /reconnect command (task #5448)
|
||||
* added "-all" option for /connect and /disconnect commands (task #6232)
|
||||
* improved nick completion: completion with last speakers first and self
|
||||
nick at the end; added option look_nick_completion_smart, enabled by
|
||||
default (task #5896)
|
||||
* fixed nick completion in command arguments (bug #19590)
|
||||
* fixed possible crash with nick completion when a nick leaves channel
|
||||
(bug #19589)
|
||||
* added color for input text not found in buffer history
|
||||
* fixed USER message when connecting to IRC server (patch #5835)
|
||||
|
||||
Version 0.2.4 (2007-03-29):
|
||||
* fixed color bug with IRC messages displayed by plugins (bug #19442)
|
||||
* fixed topic charset, now using channel charset if defined (bug #19386)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
WeeChat FAQ, 2007-03-29
|
||||
WeeChat FAQ, 2007-06-07
|
||||
=======================
|
||||
|
||||
Intended audience:
|
||||
@@ -179,6 +179,16 @@ A: Yes, you have to use python script shell.py (available on WeeChat
|
||||
users, you can issue: /shell setenv LANG=en_US)
|
||||
|
||||
|
||||
2.12
|
||||
================================================================================
|
||||
Q: With Curses GUI, how can I copy/paste text without pasting nicklist ?
|
||||
|
||||
A: You can use a terminal with rectangular selection (like rxvt-unicode,
|
||||
konsole, ...).
|
||||
Other solution is to move nicklist to top or bottom, for example:
|
||||
/set look_nicklist_position = top
|
||||
|
||||
|
||||
3.1
|
||||
================================================================================
|
||||
Q: How should I report bugs?
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
WeeChat FAQ, 2007-03-29
|
||||
WeeChat FAQ, 2007-06-07
|
||||
=======================
|
||||
|
||||
Public concerné :
|
||||
@@ -188,6 +188,18 @@ R: Oui, il faut utiliser le script python shell.py (disponible sur le site
|
||||
/shell setenv LANG=en_US)
|
||||
|
||||
|
||||
2.12
|
||||
================================================================================
|
||||
Q: Avec l'interface Curses, comment puis-je copier/coller du texte sans
|
||||
coller la liste des pseudos ?
|
||||
|
||||
R: Vous pouvez utiliser un terminal qui propose la sélection rectangulaire
|
||||
(comme rxvt-unicode, konsole, etc...).
|
||||
Une autre solution est de déplacer la liste des pseudos en haut ou en
|
||||
bas, par exemple :
|
||||
/set look_nicklist_position = top
|
||||
|
||||
|
||||
3.1
|
||||
================================================================================
|
||||
Q: Comment dois-je reporter les bugs ?
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
WeeChat - Wee Enhanced Environment for Chat
|
||||
===========================================
|
||||
|
||||
* FlashCode, 2007-06-07
|
||||
|
||||
WeeChat 0.2.5 released.
|
||||
|
||||
* FlashCode, 2007-03-29
|
||||
|
||||
WeeChat 0.2.4 released.
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find Aspell
|
||||
# This module finds if libaspell is installed and determines where
|
||||
# the include files and libraries are.
|
||||
#
|
||||
# This code sets the following variables:
|
||||
#
|
||||
# ASPELL_INCLUDE_PATH = path to where aspell.h can be found
|
||||
# ASPELL_LIBRARY = path to where libaspell.so* can be found
|
||||
|
||||
IF (ASPELL_FOUND)
|
||||
# Already in cache, be silent
|
||||
SET(ASPELL_FIND_QUIETLY TRUE)
|
||||
ENDIF (ASPELL_FOUND)
|
||||
|
||||
FIND_PATH(ASPELL_INCLUDE_PATH
|
||||
NAMES aspell.h
|
||||
PATHS /usr/include /usr/local/include /usr/pkg/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(ASPELL_LIBRARY
|
||||
NAMES aspell aspell-15
|
||||
PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
|
||||
)
|
||||
|
||||
IF (ASPELL_INCLUDE_PATH AND ASPELL_LIBRARY)
|
||||
SET(ASPELL_FOUND TRUE)
|
||||
ENDIF (ASPELL_INCLUDE_PATH AND ASPELL_LIBRARY)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
ASPELL_INCLUDE_PATH
|
||||
ASPELL_LIBRARY
|
||||
)
|
||||
@@ -0,0 +1,61 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find Gettext
|
||||
# This module finds if gettext is installed and determines where
|
||||
# the include files and libraries are.
|
||||
#
|
||||
# This code sets the following variables:
|
||||
#
|
||||
# GETTEXT_FOUND = is gettext usable on system?
|
||||
|
||||
IF(GETTEXT_FOUND)
|
||||
# Already in cache, be silent
|
||||
SET(GETTEXT_FIND_QUIETLY TRUE)
|
||||
ENDIF(GETTEXT_FOUND)
|
||||
|
||||
INCLUDE(CheckIncludeFiles)
|
||||
INCLUDE(CheckLibraryExists)
|
||||
INCLUDE(CheckFunctionExists)
|
||||
|
||||
FIND_PATH(LIBINTL_INCLUDE
|
||||
NAMES libintl.h
|
||||
PATH /usr/local/include /usr/pkg/include /usr/include
|
||||
)
|
||||
|
||||
SET(CMAKE_REQUIRED_INCLUDES ${LIBINTL_INCLUDE})
|
||||
|
||||
CHECK_INCLUDE_FILES(libintl.h HAVE_LIBINTL_H)
|
||||
|
||||
IF(HAVE_LIBINTL_H)
|
||||
CHECK_FUNCTION_EXISTS(dgettext LIBC_HAS_DGETTEXT)
|
||||
IF(LIBC_HAS_DGETTEXT)
|
||||
SET(GETTEXT_FOUND TRUE)
|
||||
ELSE(LIBC_HAS_DGETTEXT)
|
||||
FIND_LIBRARY(LIBINTL_LIBRARY NAMES intl libintl
|
||||
PATHS
|
||||
/usr/local/lib
|
||||
/usr/lib
|
||||
)
|
||||
IF(LIBINTL_LIBRARY)
|
||||
CHECK_LIBRARY_EXISTS(${LIBINTL_LIBRARY} "dgettext" "" LIBINTL_HAS_DGETTEXT)
|
||||
IF(LIBINTL_HAS_DGETTEXT)
|
||||
SET(GETTEXT_FOUND TRUE)
|
||||
ENDIF(LIBINTL_HAS_DGETTEXT)
|
||||
ENDIF(LIBINTL_LIBRARY)
|
||||
ENDIF(LIBC_HAS_DGETTEXT)
|
||||
ENDIF(HAVE_LIBINTL_H)
|
||||
@@ -0,0 +1,70 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find GnuTLS
|
||||
# This module finds if libgnutls is installed and determines where
|
||||
# the include files and libraries are.
|
||||
#
|
||||
# This code sets the following variables:
|
||||
#
|
||||
# GNUTLS_INCLUDE_PATH = path to where <gnutls/gnutls.h> can be found
|
||||
# GNUTLS_LIBRARY = path to where libgnutls.so* can be found
|
||||
# GNUTLS_CFLAGS = cflags to use to compile
|
||||
# GNUTLS_LDFLAGS = ldflags to use to compile
|
||||
|
||||
IF(GNUTLS_INCLUDE_PATH AND GNUTLS_LIBRARY)
|
||||
# Already in cache, be silent
|
||||
set(GNUTLS_FIND_QUIETLY TRUE)
|
||||
ENDIF(GNUTLS_INCLUDE_PATH AND GNUTLS_LIBRARY)
|
||||
|
||||
FIND_PROGRAM(GNUTLS_CONFIG_EXECUTABLE NAMES libgnutls-config)
|
||||
|
||||
EXECUTE_PROCESS(COMMAND ${GNUTLS_CONFIG_EXECUTABLE} --prefix
|
||||
OUTPUT_VARIABLE GNUTLS_PREFIX
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(COMMAND ${GNUTLS_CONFIG_EXECUTABLE} --cflags
|
||||
OUTPUT_VARIABLE GNUTLS_CFLAGS
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(COMMAND ${GNUTLS_CONFIG_EXECUTABLE} --libs
|
||||
OUTPUT_VARIABLE GNUTLS_LDFLAGS
|
||||
)
|
||||
|
||||
SET(GNUTLS_POSSIBLE_INCLUDE_PATH "${GNUTLS_PREFIX}/include")
|
||||
SET(GNUTLS_POSSIBLE_LIB_DIR "${GNUTLS_PREFIX}/lib")
|
||||
|
||||
FIND_PATH(GNUTLS_INCLUDE_PATH
|
||||
NAMES gnutls/gnutls.h
|
||||
PATHS GNUTLS_POSSIBLE_INCLUDE_PATH
|
||||
)
|
||||
|
||||
FIND_LIBRARY(GNUTLS_LIBRARY
|
||||
NAMES gnutls
|
||||
PATHS GNUTLS_POSSIBLE_LIB_DIR
|
||||
)
|
||||
|
||||
IF (GNUTLS_INCLUDE_PATH AND GNUTLS_LIBRARY)
|
||||
SET(GNUTLS_FOUND TRUE)
|
||||
ENDIF (GNUTLS_INCLUDE_PATH AND GNUTLS_LIBRARY)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
GNUTLS_INCLUDE_PATH
|
||||
GNUTLS_LIBRARY
|
||||
GNUTLS_CFLAGS
|
||||
GNUTLS_LDFLAGS
|
||||
)
|
||||
@@ -0,0 +1,80 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find Iconv
|
||||
# This module finds if libiconv is installed and determines where
|
||||
# the include files and libraries are.
|
||||
#
|
||||
# This code sets the following variables:
|
||||
#
|
||||
# ICONV_INCLUDE_PATH = path to where <iconv.h> can be found
|
||||
# ICONV_LIBRARY = path to where libiconv.so* can be found (on non glibc based systems)
|
||||
#
|
||||
# ICONV_FOUND = is iconv usable on system?
|
||||
|
||||
IF(ICONV_FOUND)
|
||||
# Already in cache, be silent
|
||||
set(ICONV_FIND_QUIETLY TRUE)
|
||||
ENDIF(ICONV_FOUND)
|
||||
|
||||
FIND_PATH(ICONV_INCLUDE_PATH
|
||||
NAMES iconv.h
|
||||
PATHS /usr/include /usr/local/include /usr/pkg/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(ICONV_LIBRARY
|
||||
NAMES iconv
|
||||
PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
|
||||
)
|
||||
|
||||
IF(ICONV_INCLUDE_PATH)
|
||||
IF(ICONV_LIBRARY)
|
||||
STRING(REGEX REPLACE "/[^/]*$" "" ICONV_LIB_PATH "${ICONV_LIBRARY}")
|
||||
CHECK_LIBRARY_EXISTS(iconv libiconv_open ${ICONV_LIB_PATH} ICONV_FOUND)
|
||||
IF(NOT ICONV_FOUND)
|
||||
CHECK_LIBRARY_EXISTS(iconv iconv_open ${ICONV_LIB_PATH} ICONV_FOUND)
|
||||
ENDIF(NOT ICONV_FOUND)
|
||||
ELSE(ICONV_LIBRARY)
|
||||
CHECK_FUNCTION_EXISTS(iconv_open ICONV_FOUND)
|
||||
ENDIF(ICONV_LIBRARY)
|
||||
ENDIF(ICONV_INCLUDE_PATH)
|
||||
|
||||
include(CheckCSourceCompiles)
|
||||
|
||||
IF(ICONV_LIBRARY)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES ${ICONV_LIBRARY})
|
||||
SET(CMAKE_REQUIRED_INCLUDES ${ICONV_INCLUDE_PATH})
|
||||
ENDIF(ICONV_LIBRARY)
|
||||
|
||||
SET(CMAKE_REQUIRED_FLAGS -Werror)
|
||||
check_c_source_compiles("
|
||||
#include <iconv.h>
|
||||
int main(){
|
||||
iconv_t conv = 0;
|
||||
const char* in = 0;
|
||||
size_t ilen = 0;
|
||||
char* out = 0;
|
||||
size_t olen = 0;
|
||||
iconv(conv, &in, &ilen, &out, &olen);
|
||||
return 0;
|
||||
}
|
||||
" ICONV_2ARG_IS_CONST)
|
||||
MARK_AS_ADVANCED(
|
||||
ICONV_INCLUDE_PATH
|
||||
ICONV_LIBRARY
|
||||
ICONV_FOUND
|
||||
)
|
||||
@@ -0,0 +1,82 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find Lua
|
||||
# This module finds if liblua is installed and determines where
|
||||
# the include files and libraries are.
|
||||
#
|
||||
# This code sets the following variables:
|
||||
#
|
||||
# LUA_INCLUDE_PATH = path to where <lua.h> can be found
|
||||
# LUA_LIBRARY = path to where liblua.so* (and liblualib.so* for lua <can be found (on non glibc based systems)
|
||||
#
|
||||
# LUA_FOUND = is liblua usable on system?
|
||||
|
||||
IF(LUA_FOUND)
|
||||
# Already in cache, be silent
|
||||
SET(LUA_FIND_QUIETLY TRUE)
|
||||
ENDIF(LUA_FOUND)
|
||||
|
||||
FIND_PATH(
|
||||
LUA51_INCLUDE_PATH lua.h
|
||||
PATHS /usr/include /usr/local/include /usr/pkg/include
|
||||
PATH_SUFFIXES lua51 lua5.1 lua-5.1
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
LUA51_LIBRARY NAMES lua51 lua5.1 lua-5.1
|
||||
PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
|
||||
)
|
||||
|
||||
IF(LUA51_INCLUDE_PATH AND LUA51_LIBRARY)
|
||||
SET(LUA_INCLUDE_PATH "${LUA51_INCLUDE_PATH}")
|
||||
SET(LUA_LIBRARY "${LUA51_LIBRARY}")
|
||||
SET(LUA_VERSION "5.1")
|
||||
SET(LUA_FOUND TRUE)
|
||||
ELSE(LUA51_INCLUDE_PATH AND LUA51_LIBRARY)
|
||||
FIND_PATH(
|
||||
LUA50_INCLUDE_PATH lua.h
|
||||
PATHS /usr/include /usr/local/include /usr/pkg/include
|
||||
PATH_SUFFIXES lua50 lua5.0 lua-5.0 lua
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
LUA50_LIBRARY NAMES lua50 lua5.0 lua-5.0 lua
|
||||
PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
|
||||
)
|
||||
|
||||
FIND_LIBRARY(
|
||||
LUALIB50_LIBRARY NAMES lualib50 lualib5.0 lualib-5.0 lualib
|
||||
PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
|
||||
)
|
||||
|
||||
IF(LUA50_INCLUDE_PATH AND LUA50_LIBRARY AND LUALIB50_LIBRARY)
|
||||
SET(LUA_INCLUDE_PATH "${LUA50_INCLUDE_PATH}")
|
||||
SET(LUA_LIBRARY "${LUA50_LIBRARY}")
|
||||
SET(LUALIB_LIBRARY "${LUALIB50_LIBRARY}")
|
||||
SET(LUA_VERSION "5.0")
|
||||
SET(LUA_FOUND TRUE)
|
||||
ENDIF(LUA50_INCLUDE_PATH AND LUA50_LIBRARY AND LUALIB50_LIBRARY)
|
||||
ENDIF(LUA51_INCLUDE_PATH AND LUA51_LIBRARY)
|
||||
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
LUA_INCLUDE_PATH
|
||||
LUA_LIBRARY
|
||||
LUALIB_LIBRARY
|
||||
# LUA_VERSION
|
||||
)
|
||||
@@ -0,0 +1,23 @@
|
||||
|
||||
IF(NCURSES_FOUND)
|
||||
SET(NCURSES_FIND_QUIETLY TRUE)
|
||||
ENDIF(NCURSES_FOUND)
|
||||
|
||||
FIND_PATH(NCURSES_INCLUDE_PATH
|
||||
NAMES ncurses.h curses.h
|
||||
PATHS /usr/include /usr/local/include /usr/pkg/include
|
||||
)
|
||||
|
||||
FIND_LIBRARY(NCURSES_LIBRARY
|
||||
NAMES ncursesw ncurses
|
||||
PATHS /lib /usr/lib /usr/local/lib /usr/pkg/lib
|
||||
)
|
||||
|
||||
IF (NCURSES_INCLUDE_PATH AND NCURSES_LIBRARY)
|
||||
SET(NCURSES_FOUND TRUE)
|
||||
ENDIF(NCURSES_INCLUDE_PATH AND NCURSES_LIBRARY)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
NCURSES_INCLUDE_PATH
|
||||
NCURSES_LIBRARY
|
||||
)
|
||||
@@ -0,0 +1,83 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find Perl libraries
|
||||
# This module finds if Perl is installed and determines where the include files
|
||||
# and libraries are. It also determines what the name of the library is. This
|
||||
# code sets the following variables:
|
||||
#
|
||||
# PERL_EXECUTABLE = full path to the perl binary
|
||||
# PERL_INCLUDE_PATH = path to where perl.h can be found
|
||||
# PERL_LIBRARY = path to where libperl.so* can be found
|
||||
# PERL_CFLAGS = perl compiler options for compiling
|
||||
# PERL_LFLAGS = perl compiler options for linking
|
||||
|
||||
IF(PERL_FOUND)
|
||||
# Already in cache, be silent
|
||||
SET(PERL_FIND_QUIETLY TRUE)
|
||||
ENDIF(PERL_FOUND)
|
||||
|
||||
FIND_PROGRAM(PERL_EXECUTABLE
|
||||
NAMES perl perl5
|
||||
PATHS /usr/bin /usr/local/bin /usr/pkg/bin
|
||||
)
|
||||
|
||||
IF(PERL_EXECUTABLE)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PERL_EXECUTABLE} -MConfig -e "print \"\$Config{archlibexp}/CORE\""
|
||||
OUTPUT_VARIABLE PERL_INTERNAL_DIR
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ccopts
|
||||
OUTPUT_VARIABLE PERL_CFLAGS
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PERL_EXECUTABLE} -MExtUtils::Embed -e ldopts
|
||||
OUTPUT_VARIABLE PERL_LFLAGS
|
||||
)
|
||||
|
||||
# remove the new lines from the output by replacing them with empty strings
|
||||
STRING(REPLACE "\n" "" PERL_INTERNAL_DIR "${PERL_INTERNAL_DIR}")
|
||||
STRING(REPLACE "\n" "" PERL_CFLAGS "${PERL_CFLAGS}")
|
||||
STRING(REPLACE "\n" "" PERL_LFLAGS "${PERL_LFLAGS}")
|
||||
|
||||
FIND_PATH(PERL_INCLUDE_PATH
|
||||
NAMES perl.h
|
||||
PATHS ${PERL_INTERNAL_DIR}
|
||||
)
|
||||
|
||||
FIND_LIBRARY(PERL_LIBRARY
|
||||
NAMES perl
|
||||
PATHS /usr/lib /usr/local/lib /usr/pkg/lib ${PERL_INTERNAL_DIR}
|
||||
)
|
||||
|
||||
IF(PERL_LIBRARY AND PERL_INCLUDE_PATH)
|
||||
SET(PERL_FOUND TRUE)
|
||||
ENDIF(PERL_LIBRARY AND PERL_INCLUDE_PATH)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
PERL_EXECUTABLE
|
||||
PERL_INCLUDE_PATH
|
||||
PERL_LIBRARY
|
||||
PERL_CFLAGS
|
||||
PERL_LFLAGS
|
||||
)
|
||||
ENDIF(PERL_EXECUTABLE)
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find Python
|
||||
# This module finds if Python is installed and determines where the include files
|
||||
# and libraries are. It also determines what the name of the library is. This
|
||||
# code sets the following variables:
|
||||
#
|
||||
# PYTHON_EXECUTABLE = full path to the python binary
|
||||
# PYTHON_INCLUDE_PATH = path to where python.h can be found
|
||||
# PYTHON_LIBRARY = path to where libpython.so* can be found
|
||||
# PYTHON_LFLAGS = python compiler options for linking
|
||||
|
||||
IF(PYTHON_FOUND)
|
||||
# Already in cache, be silent
|
||||
SET(PYTHON_FIND_QUIETLY TRUE)
|
||||
ENDIF(PYTHON_FOUND)
|
||||
|
||||
FIND_PROGRAM(PYTHON_EXECUTABLE
|
||||
NAMES python python2.5 python2.4 python2.3 python2.2
|
||||
PATHS /usr/bin /usr/local/bin /usr/pkg/bin
|
||||
)
|
||||
|
||||
IF(PYTHON_EXECUTABLE)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print get_config_var('CONFINCLUDEPY')"
|
||||
OUTPUT_VARIABLE PYTHON_INC_DIR
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print get_config_var('LIBPL')"
|
||||
OUTPUT_VARIABLE PYTHON_POSSIBLE_LIB_PATH
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import *; print get_config_var('LINKFORSHARED')"
|
||||
OUTPUT_VARIABLE PYTHON_LFLAGS
|
||||
)
|
||||
|
||||
# remove the new lines from the output by replacing them with empty strings
|
||||
STRING(REPLACE "\n" "" PYTHON_INC_DIR "${PYTHON_INC_DIR}")
|
||||
STRING(REPLACE "\n" "" PYTHON_POSSIBLE_LIB_PATH "${PYTHON_POSSIBLE_LIB_PATH}")
|
||||
STRING(REPLACE "\n" "" PYTHON_LFLAGS "${PYTHON_LFLAGS}")
|
||||
|
||||
FIND_PATH(PYTHON_INCLUDE_PATH
|
||||
NAMES Python.h
|
||||
PATHS ${PYTHON_INC_DIR}
|
||||
)
|
||||
|
||||
FIND_LIBRARY(PYTHON_LIBRARY
|
||||
NAMES python python2.5 python2.4 python2.3 python2.2
|
||||
PATHS ${PYTHON_POSSIBLE_LIB_PATH}
|
||||
)
|
||||
|
||||
IF(PYTHON_LIBRARY AND PYTHON_INCLUDE_PATH)
|
||||
SET(PYTHON_FOUND TRUE)
|
||||
ENDIF(PYTHON_LIBRARY AND PYTHON_INCLUDE_PATH)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
PYTHON_EXECUTABLE
|
||||
PYTHON_INCLUDE_PATH
|
||||
PYTHON_LIBRARY
|
||||
PYTHON_LFLAGS
|
||||
)
|
||||
|
||||
ENDIF(PYTHON_EXECUTABLE)
|
||||
@@ -0,0 +1,78 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
# - Find Ruby
|
||||
# This module finds if Ruby is installed and determines where the include files
|
||||
# and libraries are. It also determines what the name of the library is. This
|
||||
# code sets the following variables:
|
||||
#
|
||||
# RUBY_EXECUTABLE = full path to the ruby binary
|
||||
# RUBY_INCLUDE_PATH = path to where ruby.h can be found
|
||||
# RUBY_LIBRARY = path to where libruby.so* can be found
|
||||
|
||||
IF(RUBY_FOUND)
|
||||
# Already in cache, be silent
|
||||
SET(RUBY_FIND_QUIETLY TRUE)
|
||||
ENDIF(RUBY_FOUND)
|
||||
|
||||
FIND_PROGRAM(RUBY_EXECUTABLE
|
||||
NAMES ruby ruby1.9 ruby19 ruby1.8 ruby18 ruby1.6 ruby16
|
||||
PATHS /usr/bin /usr/local/bin /usr/pkg/bin
|
||||
)
|
||||
|
||||
IF(RUBY_EXECUTABLE)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['archdir']"
|
||||
OUTPUT_VARIABLE RUBY_ARCH_DIR
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['libdir']"
|
||||
OUTPUT_VARIABLE RUBY_POSSIBLE_LIB_PATH
|
||||
)
|
||||
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts Config::CONFIG['rubylibdir']"
|
||||
OUTPUT_VARIABLE RUBY_RUBY_LIB_PATH
|
||||
)
|
||||
|
||||
# remove the new lines from the output by replacing them with empty strings
|
||||
STRING(REPLACE "\n" "" RUBY_ARCH_DIR "${RUBY_ARCH_DIR}")
|
||||
STRING(REPLACE "\n" "" RUBY_POSSIBLE_LIB_PATH "${RUBY_POSSIBLE_LIB_PATH}")
|
||||
STRING(REPLACE "\n" "" RUBY_RUBY_LIB_PATH "${RUBY_RUBY_LIB_PATH}")
|
||||
|
||||
FIND_PATH(RUBY_INCLUDE_PATH
|
||||
NAMES ruby.h
|
||||
PATHS ${RUBY_ARCH_DIR}
|
||||
)
|
||||
|
||||
FIND_LIBRARY(RUBY_LIBRARY
|
||||
NAMES ruby ruby1.6 ruby16 ruby1.8 ruby18 ruby1.9 ruby19
|
||||
PATHS ${RUBY_POSSIBLE_LIB_PATH} ${RUBY_RUBY_LIB_PATH}
|
||||
)
|
||||
|
||||
IF(RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
|
||||
SET(RUBY_FOUND TRUE)
|
||||
ENDIF(RUBY_LIBRARY AND RUBY_INCLUDE_PATH)
|
||||
|
||||
MARK_AS_ADVANCED(
|
||||
RUBY_EXECUTABLE
|
||||
RUBY_LIBRARY
|
||||
RUBY_INCLUDE_PATH
|
||||
)
|
||||
|
||||
ENDIF(RUBY_EXECUTABLE)
|
||||
@@ -0,0 +1,29 @@
|
||||
#cmakedefine HAVE_ARPA_INET_H
|
||||
#cmakedefine HAVE_LIBINTL_H
|
||||
#cmakedefine HAVE_LIMITS_H
|
||||
#cmakedefine HAVE_LOCALE_H
|
||||
#cmakedefine HAVE_NETDB_H
|
||||
#cmakedefine HAVE_NETINET_IN_H
|
||||
#cmakedefine HAVE_STDLIB_H
|
||||
#cmakedefine HAVE_STRING_H
|
||||
#cmakedefine HAVE_SYS_SOCKET_H
|
||||
#cmakedefine HAVE_SYS_TIME_H
|
||||
#cmakedefine HAVE_SYS_TYPES_H
|
||||
#cmakedefine HAVE_UNISTD_H
|
||||
#cmakedefine HAVE_PWD_H
|
||||
#cmakedefine HAVE_ERRNO_H
|
||||
#cmakedefine HAVE_REGEX_H
|
||||
#cmakedefine HAVE_WCHAR_H
|
||||
#cmakedefine HAVE_SYS_FILE_H
|
||||
#cmakedefine HAVE_FLOCK
|
||||
#cmakedefine HAVE_LANGINFO_CODESET
|
||||
#cmakedefine HAVE_STRNDUP
|
||||
#cmakedefine ICONV_2ARG_IS_CONST 1
|
||||
#define PACKAGE_VERSION "@VERSION@"
|
||||
#define PACKAGE "@PROJECT_NAME@"
|
||||
#define PACKAGE_NAME "@PROJECT_NAME@"
|
||||
#define PACKAGE_STRING "@PKG_STRING@"
|
||||
#define WEECHAT_LIBDIR "@LIBDIR@"
|
||||
#define WEECHAT_SHAREDIR "@SHAREDIR@"
|
||||
#define LOCALEDIR "@LOCALEDIR@"
|
||||
#define _GNU_SOURCE 1
|
||||
+2
-2
@@ -19,10 +19,10 @@
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.56)
|
||||
AC_INIT(WeeChat, 0.2.4, flashcode@flashtux.org)
|
||||
AC_INIT(WeeChat, 0.2.5, flashcode@flashtux.org)
|
||||
AC_CONFIG_SRCDIR([src/common/weechat.c])
|
||||
AM_CONFIG_HEADER(config.h)
|
||||
AM_INIT_AUTOMAKE([weechat], [0.2.4])
|
||||
AM_INIT_AUTOMAKE([weechat], [0.2.5])
|
||||
|
||||
# Checks for programs
|
||||
AC_PROG_CC
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
SET(DOC_LANGS
|
||||
cs
|
||||
de
|
||||
en
|
||||
fr
|
||||
pl
|
||||
ru
|
||||
sco
|
||||
)
|
||||
|
||||
FIND_PROGRAM(
|
||||
COPY cp
|
||||
PATHS /bin /usr/bin /usr/local/bin /usr/pkg/bin
|
||||
)
|
||||
|
||||
FIND_PROGRAM(
|
||||
XSLTPROC xsltproc
|
||||
PATHS /bin /usr/bin /usr/local/bin /usr/pkg/bin
|
||||
)
|
||||
|
||||
FIND_PROGRAM(
|
||||
DBLATEX dblatex
|
||||
PATHS /bin /usr/bin /usr/local/bin /usr/pkg/bin
|
||||
)
|
||||
|
||||
FIND_FILE(DOC_XSL_PREFIX chunk.xsl PATHS
|
||||
/usr/share/xml/docbook/stylesheet/nwalsh/
|
||||
/usr/share/xml/docbook/xsl-stylesheets-1.69/
|
||||
PATH_SUFFIXES html
|
||||
DOC "Path to nwalsh xsl stylesheet"
|
||||
)
|
||||
STRING(REPLACE "/html/chunk.xsl" "" DOC_XSL_PREFIX "${DOC_XSL_PREFIX}")
|
||||
|
||||
IF(XSLTPROC AND DOC_XSL_PREFIX AND COPY)
|
||||
SET(BUILD_HTML TRUE)
|
||||
ENDIF(XSLTPROC AND DOC_XSL_PREFIX AND COPY)
|
||||
|
||||
IF(DBLATEX AND COPY)
|
||||
SET(BUILD_PDF TRUE)
|
||||
ENDIF(DBLATEX AND COPY)
|
||||
|
||||
IF(BUILD_HTML)
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/weechat-html.xsl.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/weechat-html.xsl
|
||||
@ONLY
|
||||
)
|
||||
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/weechat-html-one.xsl.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/weechat-html-one.xsl
|
||||
@ONLY
|
||||
)
|
||||
ENDIF(BUILD_HTML)
|
||||
|
||||
|
||||
IF(BUILD_HTML OR BUILD_PDF)
|
||||
EXECUTE_PROCESS(
|
||||
COMMAND date "+%F %T"
|
||||
OUTPUT_VARIABLE DOC_DATE
|
||||
)
|
||||
STRING(REPLACE "\n" "" DOC_DATE "${DOC_DATE}")
|
||||
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/date.xml.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/date.xml
|
||||
@ONLY
|
||||
)
|
||||
|
||||
FOREACH(dlang ${DOC_LANGS})
|
||||
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat.${dlang}.xml)
|
||||
|
||||
IF(BUILD_HTML)
|
||||
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang})
|
||||
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build)
|
||||
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html-one/${dlang})
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}/index.html ${CMAKE_CURRENT_BINARY_DIR}/html-one/${dlang}/weechat.${dlang}.html
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat.${dlang}.xml" "${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/config.xml" "${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/irc_commands.xml" "${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/key_functions.xml" "${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat_commands.xml" "${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_BINARY_DIR}/date.xml" "${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/weechat-doc.css" "${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/weechat-doc.css" "${CMAKE_CURRENT_BINARY_DIR}/html-one/${dlang}"
|
||||
COMMAND ${XSLTPROC} ARGS -o ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}/ ${CMAKE_CURRENT_BINARY_DIR}/weechat-html.xsl ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build/weechat.${dlang}.xml
|
||||
COMMAND ${XSLTPROC} ARGS -o ${CMAKE_CURRENT_BINARY_DIR}/html-one/${dlang}/weechat.${dlang}.html ${CMAKE_CURRENT_BINARY_DIR}/weechat-html-one.xsl ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}-build/weechat.${dlang}.xml
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat.${dlang}.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/config.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/irc_commands.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/key_functions.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat_commands.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/date.xml.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/weechat-html-one.xsl.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/weechat-html.xsl.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/date.xml.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/weechat-doc.css
|
||||
COMMENT "Building html doc (${dlang})"
|
||||
)
|
||||
ADD_CUSTOM_TARGET(doc-html-${dlang} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang}/index.html)
|
||||
ADD_CUSTOM_TARGET(doc-html-one-${dlang} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html-one/${dlang}/weechat.${dlang}.html)
|
||||
INSTALL(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html/${dlang} DESTINATION share/doc/${PROJECT_NAME}/html)
|
||||
|
||||
ENDIF(BUILD_HTML)
|
||||
|
||||
IF(BUILD_PDF)
|
||||
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang})
|
||||
FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build)
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}/weechat.${dlang}.pdf
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat.${dlang}.xml" "${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/config.xml" "${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/irc_commands.xml" "${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/key_functions.xml" "${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat_commands.xml" "${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build"
|
||||
COMMAND ${COPY} ARGS "${CMAKE_CURRENT_BINARY_DIR}/date.xml" "${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build"
|
||||
COMMAND ${DBLATEX} ARGS -c ${CMAKE_CURRENT_SOURCE_DIR}/dblatex.conf -o ${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}/weechat.${dlang}.pdf ${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}-build/weechat.${dlang}.xml
|
||||
DEPENDS
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat.${dlang}.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/config.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/irc_commands.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/key_functions.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat_commands.xml
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/date.xml.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/weechat-html-one.xsl.in
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/date.xml.in
|
||||
COMMENT "Building pdf doc (${dlang})"
|
||||
)
|
||||
ADD_CUSTOM_TARGET(doc-pdf-${dlang} ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}/weechat.${dlang}.pdf)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/pdf/${dlang}/weechat.${dlang}.pdf DESTINATION share/doc/${PROJECT_NAME})
|
||||
|
||||
ENDIF(BUILD_PDF)
|
||||
|
||||
ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat.${dlang}.xml)
|
||||
|
||||
ENDFOREACH(dlang ${DOC_LANGS})
|
||||
|
||||
ENDIF(BUILD_HTML OR BUILD_PDF)
|
||||
|
||||
FOREACH(dlang ${DOC_LANGS})
|
||||
IF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat_quickstart.${dlang}.txt)
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat_quickstart.${dlang}.txt DESTINATION share/doc/${PROJECT_NAME})
|
||||
ENDIF(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${dlang}/weechat_quickstart.${dlang}.txt)
|
||||
ENDFOREACH(dlang ${DOC_LANGS})
|
||||
|
||||
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/weechat-curses.1 DESTINATION share/man/man1)
|
||||
@@ -0,0 +1 @@
|
||||
<pubdate>@DOC_DATE@</pubdate>
|
||||
@@ -194,6 +194,13 @@
|
||||
<entry>'[]-^'</entry>
|
||||
<entry>Zeichen, die bei der Nickvervollständigung ignoriert werden</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nick_completion_smart</option></entry>
|
||||
<entry>Boolean</entry>
|
||||
<entry>eine beliebige Zeichenfolge</entry>
|
||||
<entry>'on'</entry>
|
||||
<entry>Intelligente vervollständigung der Nicknamen (vervollständigt zuerst mit dem letzten Nick, der einen angesprochen hat)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nick_complete_first</option></entry>
|
||||
<entry>Boolean</entry>
|
||||
@@ -551,6 +558,13 @@
|
||||
<entry>'cyan'</entry>
|
||||
<entry>Farbe des Trennzeichens in der Eingabezeile</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_input_text_not_found</option></entry>
|
||||
<entry>Farbe</entry>
|
||||
<entry>Curses- oder Gtk-Farben</entry>
|
||||
<entry>'red'</entry>
|
||||
<entry>Farbe fĂĽr den Text nicht gefunden</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_input_bg</option></entry>
|
||||
<entry>Farbe</entry>
|
||||
|
||||
+177
-60
@@ -36,7 +36,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
<bookinfo>
|
||||
|
||||
<title>WeeChat 0.2.4 - User guide</title>
|
||||
<title>WeeChat 0.2.5 - User guide</title>
|
||||
<subtitle>Schneller, leichter und erweiterbarer IRC Client</subtitle>
|
||||
|
||||
<author>
|
||||
@@ -95,14 +95,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
<!-- =========================== Introduction =========================== -->
|
||||
|
||||
<chapter id="chapIntroduction">
|
||||
<title> EinfĂĽhrung </title>
|
||||
<title>EinfĂĽhrung</title>
|
||||
|
||||
<para>
|
||||
Dieses Kapitel beschreibt WeeChat und die Vorraussetzungen fĂĽr die Installation.
|
||||
</para>
|
||||
|
||||
<section id="secDescription">
|
||||
<title> Beschreibung </title>
|
||||
<title>Beschreibung</title>
|
||||
|
||||
<para>
|
||||
WeeChat (Wee Enhanced Environment for Chat) ist ein freier
|
||||
@@ -166,10 +166,10 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secPreRequis">
|
||||
<title> Vorraussetzungen </title>
|
||||
<title>Vorraussetzungen</title>
|
||||
|
||||
<para>
|
||||
Um WeeChat zu installieren, werden <emphasis> gebraucht </emphasis>:
|
||||
Um WeeChat zu installieren, werden <emphasis>gebraucht</emphasis>:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
@@ -224,7 +224,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</para>
|
||||
|
||||
<section id="secBinaryPackages">
|
||||
<title> Binäre Pakete </title>
|
||||
<title>Binäre Pakete</title>
|
||||
|
||||
<para>
|
||||
Binäre Pakete sind für die folgenden Distributionen verfügbar:
|
||||
@@ -257,7 +257,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secSourcePackage">
|
||||
<title> Quellcode-Pakete </title>
|
||||
<title>Quellcode-Pakete</title>
|
||||
|
||||
<para>
|
||||
Alles was sie tun mĂĽssen, ist in einer Konsole oder einem Terminal aufzurufen:
|
||||
@@ -303,7 +303,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
<!-- ============================== Usage =============================== -->
|
||||
|
||||
<chapter id="chapUsage">
|
||||
<title> Nutzung </title>
|
||||
<title>Nutzung</title>
|
||||
|
||||
<para>
|
||||
Dieses Kapitel erklärt, wie Weechat zu starten ist, die zu verwendenden
|
||||
@@ -452,15 +452,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secKeyboardShortcuts">
|
||||
<title> Tastenkombinationen </title>
|
||||
<title>Tastenkombinationen</title>
|
||||
|
||||
<para>
|
||||
<informaltable colsep="0" frame="none">
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry> Tastenkombination </entry>
|
||||
<entry> Wirkung </entry>
|
||||
<entry>Tastenkombination</entry>
|
||||
<entry>Wirkung</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -596,19 +596,19 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>Alt + Seite hoch / Alt + Seite runter </entry>
|
||||
<entry>Alt + Seite hoch / Alt + Seite runter</entry>
|
||||
<entry>
|
||||
Ein paar Zeilen hoch / runter im Verlauf des Buffers
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry> Alt + Pos1 / Alt + Ende </entry>
|
||||
<entry>Alt + Pos1 / Alt + Ende</entry>
|
||||
<entry>
|
||||
Gehe zum Anfang / Ende des Puffers
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry> F5 / Alt + Links </entry>
|
||||
<entry>F5 / Alt + Links</entry>
|
||||
<entry>
|
||||
Gehe zum vorherigen Puffer
|
||||
</entry>
|
||||
@@ -782,7 +782,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secCommandLine">
|
||||
<title> Kommandozeile </title>
|
||||
<title>Kommandozeile</title>
|
||||
|
||||
<para>
|
||||
Die WeeChat Kommandozeile (am Ende des Fensters) lässt sie Nachrichten an einen
|
||||
@@ -899,11 +899,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</row>
|
||||
<row>
|
||||
<entry>03</entry>
|
||||
<entry>dunkles GrĂĽn </entry>
|
||||
<entry>dunkles GrĂĽn</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>04</entry>
|
||||
<entry>helles Rot </entry>
|
||||
<entry>helles Rot</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>05</entry>
|
||||
@@ -911,43 +911,43 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</row>
|
||||
<row>
|
||||
<entry>06</entry>
|
||||
<entry> Magenta </entry>
|
||||
<entry>Magenta</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>07</entry>
|
||||
<entry> Orange </entry>
|
||||
<entry>Orange</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>08</entry>
|
||||
<entry> Gelb </entry>
|
||||
<entry>Gelb</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>09</entry>
|
||||
<entry> helles GrĂĽn</entry>
|
||||
<entry>helles GrĂĽn</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>10</entry>
|
||||
<entry> Cyan </entry>
|
||||
<entry>Cyan</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>11</entry>
|
||||
<entry> helles Cyan</entry>
|
||||
<entry>helles Cyan</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>12</entry>
|
||||
<entry> helles Blau </entry>
|
||||
<entry>helles Blau</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>13</entry>
|
||||
<entry> helles Magenta </entry>
|
||||
<entry>helles Magenta</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>14</entry>
|
||||
<entry> Grau </entry>
|
||||
<entry>Grau</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>15</entry>
|
||||
<entry> helles Grau (Weiss)</entry>
|
||||
<entry>helles Grau (Weiss)</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
@@ -964,14 +964,14 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secWeeChatIRCCommands">
|
||||
<title>WeeChat / IRC Kommandos </title>
|
||||
<title>WeeChat / IRC Kommandos</title>
|
||||
|
||||
<para>
|
||||
Dieses Kapitel listet alle WeeChat- und IRC-Kommandos auf.
|
||||
</para>
|
||||
|
||||
<section id="secWeeChatCommands">
|
||||
<title> WeeChat Kommandos </title>
|
||||
<title>WeeChat Kommandos</title>
|
||||
|
||||
<para>
|
||||
&weechat_commands.xml;
|
||||
@@ -980,15 +980,15 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secKeyFunctions">
|
||||
<title> Funktionen </title>
|
||||
<title>Funktionen</title>
|
||||
|
||||
<para>
|
||||
<informaltable colsep="0" frame="none">
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry> Funktion </entry>
|
||||
<entry> Beschreibung </entry>
|
||||
<entry>Funktion</entry>
|
||||
<entry>Beschreibung</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -1003,7 +1003,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secIRCCommands">
|
||||
<title> IRC Kommandos </title>
|
||||
<title>IRC Kommandos</title>
|
||||
|
||||
<para>
|
||||
&irc_commands.xml;
|
||||
@@ -1014,7 +1014,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</section>
|
||||
|
||||
<section id="secConfigurationFile">
|
||||
<title> Konfigurationsdatei </title>
|
||||
<title>Konfigurationsdatei</title>
|
||||
|
||||
<para>
|
||||
Liste der Optionen fĂĽr die Konfigurationsdatei:
|
||||
@@ -1022,11 +1022,11 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
<tgroup cols="5">
|
||||
<thead>
|
||||
<row>
|
||||
<entry> Option </entry>
|
||||
<entry> Typ </entry>
|
||||
<entry> Wert </entry>
|
||||
<entry> Default </entry>
|
||||
<entry> Beschreibung </entry>
|
||||
<entry>Option</entry>
|
||||
<entry>Typ</entry>
|
||||
<entry>Wert</entry>
|
||||
<entry>Default</entry>
|
||||
<entry>Beschreibung</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -1044,8 +1044,8 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
<tgroup cols="2">
|
||||
<thead>
|
||||
<row>
|
||||
<entry> SchlĂĽsselwort </entry>
|
||||
<entry> Farbe </entry>
|
||||
<entry>SchlĂĽsselwort</entry>
|
||||
<entry>Farbe</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -1055,59 +1055,59 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>black</literal></entry>
|
||||
<entry> Schwarz </entry>
|
||||
<entry>Schwarz</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>red</literal></entry>
|
||||
<entry> dunkles Rot </entry>
|
||||
<entry>dunkles Rot</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>lightred</literal></entry>
|
||||
<entry> helles Rot </entry>
|
||||
<entry>helles Rot</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>green</literal></entry>
|
||||
<entry> dunkles GrĂĽn </entry>
|
||||
<entry>dunkles GrĂĽn</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>lightgreen</literal></entry>
|
||||
<entry> helles GrĂĽn </entry>
|
||||
<entry>helles GrĂĽn</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>brown</literal></entry>
|
||||
<entry> Braun </entry>
|
||||
<entry>Braun</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>yellow</literal></entry>
|
||||
<entry> Gelb </entry>
|
||||
<entry>Gelb</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>blue</literal></entry>
|
||||
<entry> dunkles Blau </entry>
|
||||
<entry>dunkles Blau</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>lightblue</literal></entry>
|
||||
<entry> helles Blau </entry>
|
||||
<entry>helles Blau</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>magenta</literal></entry>
|
||||
<entry> dunkles Magenta </entry>
|
||||
<entry>dunkles Magenta</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>lightmagenta</literal></entry>
|
||||
<entry> helles Magenta </entry>
|
||||
<entry>helles Magenta</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>cyan</literal></entry>
|
||||
<entry> dunkles Cyan </entry>
|
||||
<entry>dunkles Cyan</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>lightcyan</literal></entry>
|
||||
<entry> helles Cyan </entry>
|
||||
<entry>helles Cyan</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>white</literal></entry>
|
||||
<entry> Weiss </entry>
|
||||
<entry>Weiss</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
@@ -1116,8 +1116,119 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secCharset">
|
||||
<title>Zeichensatz Plugin</title>
|
||||
|
||||
<para>
|
||||
Das Zeichensatz-Plugin ermöglicht das Ver- und Entschlüsseln von Daten
|
||||
auf 3 Ebenen: Global, pro Server oder pro Channel.
|
||||
Das Plugin ist optional, wird jedoch empfohlen: wenn es nicht geladen ist,
|
||||
kann WeeChat nur UTF-8-Daten lesen und schreiben.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Das Zeichensatz-Plugin sollte beim Start von WeeChat automatisch geladen
|
||||
werden.
|
||||
Um sicherzustellen, dass das Plugin geladen wurde, versuchen Sie:
|
||||
"<literal>/charset</literal>".
|
||||
Wenn der Befehl nicht gefunden wird, laden Sie das Plugin manuell mit dem Befehl:
|
||||
<screen>/plugin load charset</screen>
|
||||
Wenn das Plugin nicht gefunden wird, kompilieren Sie WeeChat erneut mit Plugin-
|
||||
und Zeichensatz-Support
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Wenn das Zeichensatz-Plugin startet, zeigt es den Terminalzeichensatz
|
||||
und den internen Zeichensatz an. Der Terminalzeichensatz hängt von
|
||||
den LOCALE-Einstellungen ab, der interne ist UTF-8.
|
||||
Zum Beispiel:
|
||||
<screen>
|
||||
-P- Charset plugin starting, terminal charset: ISO-8859-15 (WeeChat internal: UTF-8)
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
<section id="secCharsetSettings">
|
||||
<title>Einstellungen</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Um den globalen Zeichensatz zum Kodieren und Dekodieren festzulegen, benutzen Sie den
|
||||
"<literal>/setp</literal>" Befehl.
|
||||
Zum Beispiel:
|
||||
<screen>
|
||||
/setp charset.global.decode = ISO-8859-15
|
||||
/setp charset.global.encode = ISO-8859-15
|
||||
</screen>
|
||||
Wenn der Zeichensatz zum Dekodieren nicht gesetzt ist (z.B. beim ersten
|
||||
Start des Plugins), wird es automatisch auf den Terminalzeichensatz
|
||||
eingestellt (wenn es nicht UTF-8 ist) oder als Voreinstellung auf
|
||||
"<literal>ISO-8859-1</literal>" gesetzt.
|
||||
Der voreingestellte Enkodierungszeichensatz ist leer, so dass in der
|
||||
Voreinstellung mit dem internen Zeichensatz (UTF-8) enkodiert wird.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Um den Serverzeichensatz festzulegen, benutzen Sie den
|
||||
"<literal>/charset</literal>"-Befehl im Server-Puffer.
|
||||
Wenn Sie nur einen Zeichensatz vorgeben, wird dieser automatisch
|
||||
zum Enkodieren und Dekodieren verwendet.
|
||||
Zum Beispiel:
|
||||
<screen>/charset ISO-8859-15</screen>
|
||||
Das ist gleichbedeutend mit:
|
||||
<screen>
|
||||
/charset decode ISO-8859-15
|
||||
/charset encode ISO-8859-15
|
||||
</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Um den zeichensatz im Channel (oder einem privatem Chat) festzulegen,
|
||||
mĂĽssen Sie den gleichen Befehl wie fĂĽr den Server benutzen, jedoch in
|
||||
dem Channel-Puffer (oder Query-Puffer)
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secCharsetFAQ">
|
||||
<title>FAQ</title>
|
||||
|
||||
<para>
|
||||
Wenn Sie Probleme mit den Zeichen oder dem Zeichensatz-Plugin haben:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
ĂĽberprĂĽfen Sie, ob weechat-curses zu libcursesw gelinkt ist
|
||||
(Achtung: Wird bei den meisten, jedoch nicht bei allen Distributionen benötigt):
|
||||
<screen>ldd /pfad/zu/weechat-curses</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
ĂĽberprĂĽfen Sie die Zeichensatz-Zeile im Server-Puffer, dort sollten ISO-XXXXXX
|
||||
oder UTF-8 fĂĽr den Terminal-Zeichensatz stehen. Wenn Sie dort ANSI_X3.4-1968
|
||||
oder andere Werte sehen, sind Ihre LOCALES eventuell falsch eingestellt.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Setze die globalen Dekodier-Einstellungen, z.B.:
|
||||
<screen>/setp charset.global.decode = ISO-8859-15</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secFIFOpipe">
|
||||
<title> Remote-Schnittstelle (FIFO pipe) </title>
|
||||
<title>Remote-Schnittstelle (FIFO pipe)</title>
|
||||
|
||||
<para>
|
||||
Sie können WeeChat auch extern steuern, indem sie Kommandos oder Text
|
||||
@@ -1224,7 +1335,7 @@ fi
|
||||
</section>
|
||||
|
||||
<section id="secWriteAPlugin">
|
||||
<title> Ein Plugin schreiben </title>
|
||||
<title>Ein Plugin schreiben</title>
|
||||
|
||||
<para>
|
||||
Das Plugin muss die Datei "weechat-plugin.h" einbinden (verfĂĽgbar
|
||||
@@ -1241,7 +1352,7 @@ fi
|
||||
<thead>
|
||||
<row>
|
||||
<entry>Variable</entry>
|
||||
<entry> Beschreibung </entry>
|
||||
<entry>Beschreibung</entry>
|
||||
</row>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -2169,7 +2280,7 @@ msg_handler = plugin->msg_handler_add (plugin, "KICK",
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%C</literal></entry>
|
||||
<entry>Channels des gegenwärtigen Servers</entry>
|
||||
<entry>alle channels (inklusive Queries)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%f</literal></entry>
|
||||
@@ -2195,6 +2306,12 @@ msg_handler = plugin->msg_handler_add (plugin, "KICK",
|
||||
<entry><literal>%m</literal></entry>
|
||||
<entry>Nicknamen des gegenwärtigen Servers</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%M</literal></entry>
|
||||
<entry>
|
||||
Nicks auf dem gegenwärtigen Server (in allen offenen Channeln)
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%n</literal></entry>
|
||||
<entry>Nicknamen des gegenwärtigen Channels</entry>
|
||||
@@ -3058,7 +3175,7 @@ plugin->exec_command (plugin, "freenode", "#weechat", "hello");
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>weechat_libdir</literal></entry>
|
||||
<entry>WeeChat-Systemverzeichnis (Bibliotheken) </entry>
|
||||
<entry>WeeChat-Systemverzeichnis (Bibliotheken)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>weechat_sharedir</literal></entry>
|
||||
|
||||
@@ -49,18 +49,20 @@ Fenster leeren
|
||||
Nummer: lösche den Puffer mit der angegebenen Nummer
|
||||
|
||||
</programlisting>
|
||||
<command>connect [Servername]</command>
|
||||
<command>connect [-all | Servername [Servername ...]]</command>
|
||||
<programlisting>
|
||||
mit einem Server verbinden
|
||||
mit Server verbinden
|
||||
|
||||
Servername: Zielserver
|
||||
-all: verbinde mit allen Servern
|
||||
servername: Servername, mit dem verbunden werden soll
|
||||
|
||||
</programlisting>
|
||||
<command>disconnect [Servername]</command>
|
||||
<command>disconnect [-all | Servername [Servername ...]]</command>
|
||||
<programlisting>
|
||||
Serververbindung trennen
|
||||
Serververbindung(en) trennen
|
||||
|
||||
Servername: Name des zu trennenden Servers
|
||||
-all: Trenne von allen Servern
|
||||
servername: Servername, von dem getrennt werden soll
|
||||
|
||||
</programlisting>
|
||||
<command>dcc Aktion [Nickname [Datei]]</command>
|
||||
@@ -134,6 +136,14 @@ autoload: lade automatisch alle Plugins im System- oder Benutzerverzeichnis
|
||||
|
||||
Ohne Argument, listet /plugin alle geladenen Plugins auf.
|
||||
|
||||
</programlisting>
|
||||
<command>reconnect [-all | Servername [Servername ...]]</command>
|
||||
<programlisting>
|
||||
mit einem Server oder mehreren Servern neu verbinden
|
||||
|
||||
-all: Verbinde mit allen Servern neu
|
||||
servername: Servername, mit dem verbunden werden soll
|
||||
|
||||
</programlisting>
|
||||
<command>server [Servername] | [Servername Hostname Port [-auto | -noauto] [-ipv6] [-ssl] [-pwd Passwort] [-nicks Nick1 Nick2 Nick3] [-username Benutzername] [-realname Name] [-command Befehl] [-autojoin Channel[,Channel]] ] | [del Servername]</command>
|
||||
<programlisting>
|
||||
|
||||
@@ -194,6 +194,13 @@
|
||||
<entry>'[]-^'</entry>
|
||||
<entry>Chars ignored for nick completion</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nick_completion_smart</option></entry>
|
||||
<entry>boolean</entry>
|
||||
<entry>'on' or 'off'</entry>
|
||||
<entry>'on'</entry>
|
||||
<entry>Smart completion for nicks (completes with last speakers first)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nick_complete_first</option></entry>
|
||||
<entry>boolean</entry>
|
||||
@@ -551,6 +558,13 @@
|
||||
<entry>'cyan'</entry>
|
||||
<entry>Color for input text (delimiters)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_input_text_not_found</option></entry>
|
||||
<entry>color</entry>
|
||||
<entry>Curses or Gtk color</entry>
|
||||
<entry>'red'</entry>
|
||||
<entry>Color for text not found</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_input_bg</option></entry>
|
||||
<entry>color</entry>
|
||||
|
||||
+116
-2
@@ -36,7 +36,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
<bookinfo>
|
||||
|
||||
<title>WeeChat 0.2.4 - User guide</title>
|
||||
<title>WeeChat 0.2.5 - User guide</title>
|
||||
<subtitle>Fast, light and extensible IRC client</subtitle>
|
||||
|
||||
<author>
|
||||
@@ -1111,6 +1111,114 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secCharset">
|
||||
<title>Charset plugin</title>
|
||||
|
||||
<para>
|
||||
Charset plugin lets you encode or decode data using charsets, with 3
|
||||
levels: global, by server, or by channel.
|
||||
This plugin is optional, but recommended: if it's not loaded, WeeChat
|
||||
can only read/write UTF-8 data.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Charset plugin should be autoloaded by WeeChat at startup.
|
||||
To be sure plugin is loaded, try:
|
||||
"<literal>/charset</literal>".
|
||||
If command is not found, then load plugin with command:
|
||||
<screen>/plugin load charset</screen>
|
||||
If plugin is not found, then you should compile again WeeChat with
|
||||
plugins and Charset support.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
When Charset plugin starts, it displays terminal and internal charsets.
|
||||
Terminal charset depends on your locale, and internal is UTF-8.
|
||||
For example :
|
||||
<screen>
|
||||
-P- Charset plugin starting, terminal charset: ISO-8859-15 (WeeChat internal: UTF-8)
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
<section id="secCharsetSettings">
|
||||
<title>Settings</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
To set global decode and encode charsets, use
|
||||
"<literal>/setp</literal>" command.
|
||||
For example:
|
||||
<screen>
|
||||
/setp charset.global.decode = ISO-8859-15
|
||||
/setp charset.global.encode = ISO-8859-15
|
||||
</screen>
|
||||
If global decode charset is not set (for example during first
|
||||
load of Charset plugin), it will be automatically set to terminal
|
||||
charset (if it's different from UTF-8), or by default to
|
||||
"<literal>ISO-8859-1</literal>".
|
||||
Default encode value is empty, so it sends by default with
|
||||
internal charset (UTF-8).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
To set server charset, use "<literal>/charset</literal>" command
|
||||
on server buffer.
|
||||
If you give only charset, then it will set "decode" and "encode"
|
||||
values.
|
||||
For example:
|
||||
<screen>/charset ISO-8859-15</screen>
|
||||
It's equivalent to:
|
||||
<screen>
|
||||
/charset decode ISO-8859-15
|
||||
/charset encode ISO-8859-15
|
||||
</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
To set channel (or private) charset, use same commands as server,
|
||||
but on channel (or private) buffer.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secCharsetFAQ">
|
||||
<title>FAQ</title>
|
||||
|
||||
<para>
|
||||
If you have problems with chars or accents using Charset plugin:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
check that weechat-curses is linked to libncursesw (warning:
|
||||
needed on most distributions but not all) :
|
||||
<screen>ldd /path/to/weechat-curses</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
check charset line (on server buffer), you should see
|
||||
ISO-XXXXXX or UTF-8 for terminal charset. If you see
|
||||
ANSI_X3.4-1968 or other values, probably your locale is wrong.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
setup global decode value, for example:
|
||||
<screen>/setp charset.global.decode = ISO-8859-15</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secFIFOpipe">
|
||||
<title>FIFO pipe</title>
|
||||
|
||||
@@ -2186,7 +2294,7 @@ msg_handler = plugin->msg_handler_add (plugin, "KICK",
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%C</literal></entry>
|
||||
<entry>channels of current server</entry>
|
||||
<entry>all channels (including queries)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%f</literal></entry>
|
||||
@@ -2212,6 +2320,12 @@ msg_handler = plugin->msg_handler_add (plugin, "KICK",
|
||||
<entry><literal>%m</literal></entry>
|
||||
<entry>nick on current server</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%M</literal></entry>
|
||||
<entry>
|
||||
nicks on current server (on all open channels)
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%n</literal></entry>
|
||||
<entry>nicks of current channel</entry>
|
||||
|
||||
@@ -49,17 +49,19 @@ clear window(s)
|
||||
number: clear buffer by number
|
||||
|
||||
</programlisting>
|
||||
<command>connect [servername]</command>
|
||||
<command>connect [-all | servername [servername ...]]</command>
|
||||
<programlisting>
|
||||
connect to a server
|
||||
connect to server(s)
|
||||
|
||||
-all: connect to all servers
|
||||
servername: server name to connect
|
||||
|
||||
</programlisting>
|
||||
<command>disconnect [servername]</command>
|
||||
<command>disconnect [-all | servername [servername ...]]</command>
|
||||
<programlisting>
|
||||
disconnect from a server
|
||||
disconnect from server(s)
|
||||
|
||||
-all: disconnect from all servers
|
||||
servername: server name to disconnect
|
||||
|
||||
</programlisting>
|
||||
@@ -133,6 +135,14 @@ autoload: autoload plugins in system or user directory
|
||||
|
||||
Without argument, /plugin command lists loaded plugins.
|
||||
|
||||
</programlisting>
|
||||
<command>reconnect [-all | servername [servername ...]]</command>
|
||||
<programlisting>
|
||||
reconnect to server(s)
|
||||
|
||||
-all: reconnect to all servers
|
||||
servername: server name to reconnect
|
||||
|
||||
</programlisting>
|
||||
<command>server [servername] | [servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 nick2 nick3] [-username username] [-realname realname] [-command command] [-autojoin channel[,channel]] ] | [del servername]</command>
|
||||
<programlisting>
|
||||
|
||||
+27
-13
@@ -87,28 +87,28 @@
|
||||
<entry>booléen</entry>
|
||||
<entry>'on' ou 'off'</entry>
|
||||
<entry>'on'</entry>
|
||||
<entry>Afficher la fenĂŞtre des utilisateurs (pour les fenĂŞtres de canaux)</entry>
|
||||
<entry>Afficher la fenĂŞtre des pseudos (pour les fenĂŞtres de canaux)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nicklist_position</option></entry>
|
||||
<entry>chaîne</entry>
|
||||
<entry>'left', 'right', 'top', 'bottom'</entry>
|
||||
<entry>'right'</entry>
|
||||
<entry>Position de la fenêtre d'utilisateurs (haut (top), gauche (left), droite (right, par défaut), bas (bottom))</entry>
|
||||
<entry>Position de la fenêtre des pseudos (haut (top), gauche (left), droite (right, par défaut), bas (bottom))</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nicklist_min_size</option></entry>
|
||||
<entry>entier</entry>
|
||||
<entry>entre 0 et 100</entry>
|
||||
<entry>0</entry>
|
||||
<entry>Taille minimum pour la fenĂŞtre d'utilisateurs (largeur ou hauteur, selon look_nicklist_position (0 = pas de taille minimum))</entry>
|
||||
<entry>Taille minimum pour la fenĂŞtre des pseudos (largeur ou hauteur, selon look_nicklist_position (0 = pas de taille minimum))</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nicklist_max_size</option></entry>
|
||||
<entry>entier</entry>
|
||||
<entry>entre 0 et 100</entry>
|
||||
<entry>0</entry>
|
||||
<entry>Taille maximum pour la fenĂŞtre d'utilisateurs (largeur ou hauteur, selon look_nicklist_position (0 = pas de taille maximum; si min == max et > 0, alors la taille est fixe))</entry>
|
||||
<entry>Taille maximum pour la fenĂŞtre des pseudos (largeur ou hauteur, selon look_nicklist_position (0 = pas de taille maximum; si min == max et > 0, alors la taille est fixe))</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nicklist_separator</option></entry>
|
||||
@@ -122,21 +122,21 @@
|
||||
<entry>chaîne</entry>
|
||||
<entry>toute chaîne</entry>
|
||||
<entry>'-cmd-'</entry>
|
||||
<entry>Texte Ă afficher en lieu et place du nom d'utilisateur lorsque la connexion n'est pas active</entry>
|
||||
<entry>Texte Ă afficher en lieu et place du pseudo lorsque la connexion n'est pas active</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nickmode</option></entry>
|
||||
<entry>booléen</entry>
|
||||
<entry>'on' ou 'off'</entry>
|
||||
<entry>'on'</entry>
|
||||
<entry>Afficher le mode de l'utilisateur ((half)op/voice) devant chaque utilisateur</entry>
|
||||
<entry>Afficher le mode du pseudo ((half)op/voice) devant chaque utilisateur</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nickmode_empty</option></entry>
|
||||
<entry>booléen</entry>
|
||||
<entry>'on' ou 'off'</entry>
|
||||
<entry>'off'</entry>
|
||||
<entry>Afficher un espace si le mode utilisateur n'est pas (half)op/voice</entry>
|
||||
<entry>Afficher un espace si le mode du pseudo n'est pas (half)op/voice</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nick_prefix</option></entry>
|
||||
@@ -194,6 +194,13 @@
|
||||
<entry>'[]-^'</entry>
|
||||
<entry>Caractères à ignorer pour la complétion des pseudos</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nick_completion_smart</option></entry>
|
||||
<entry>booléen</entry>
|
||||
<entry>'on' ou 'off'</entry>
|
||||
<entry>'on'</entry>
|
||||
<entry>Complétion intelligente pour les pseudos (complète d'abord avec les personnes qui ont parlé récemment)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>look_nick_complete_first</option></entry>
|
||||
<entry>booléen</entry>
|
||||
@@ -304,7 +311,7 @@
|
||||
<entry>couleur</entry>
|
||||
<entry>couleur Curses ou Gtk</entry>
|
||||
<entry>'lightmagenta'</entry>
|
||||
<entry>Couleur pour les '+' lors du scroll sur le titre</entry>
|
||||
<entry>Couleur pour les '+' lors du défilement du titre</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_title_bg</option></entry>
|
||||
@@ -374,14 +381,14 @@
|
||||
<entry>couleur</entry>
|
||||
<entry>couleur Curses ou Gtk</entry>
|
||||
<entry>'lightcyan'</entry>
|
||||
<entry>Couleur pour les noms d'utilisateurs dans les actions (fenĂŞtre de discussion)</entry>
|
||||
<entry>Couleur pour les pseudos dans les actions (fenĂŞtre de discussion)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_chat_host</option></entry>
|
||||
<entry>couleur</entry>
|
||||
<entry>couleur Curses ou Gtk</entry>
|
||||
<entry>'cyan'</entry>
|
||||
<entry>Couleur pour les noms de machines (fenĂŞtre de discussion)</entry>
|
||||
<entry>Couleur pour les hĂ´tes (fenĂŞtre de discussion)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_chat_channel</option></entry>
|
||||
@@ -551,6 +558,13 @@
|
||||
<entry>'cyan'</entry>
|
||||
<entry>Couleur pour le texte saisi (délimiteurs)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_input_text_not_found</option></entry>
|
||||
<entry>couleur</entry>
|
||||
<entry>couleur Curses ou Gtk</entry>
|
||||
<entry>'red'</entry>
|
||||
<entry>Couleur pour le texte non trouvé</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_input_bg</option></entry>
|
||||
<entry>couleur</entry>
|
||||
@@ -612,7 +626,7 @@
|
||||
<entry>couleur</entry>
|
||||
<entry>couleur Curses ou Gtk</entry>
|
||||
<entry>'lightmagenta'</entry>
|
||||
<entry>Couleur pour les '+' lors du scroll sur les pseudos</entry>
|
||||
<entry>Couleur pour les '+' lors du défilement des pseudos</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>col_nick_sep</option></entry>
|
||||
@@ -1025,7 +1039,7 @@
|
||||
<entry>booléen</entry>
|
||||
<entry>'on' ou 'off'</entry>
|
||||
<entry>'on'</entry>
|
||||
<entry>Continuer automatiquement les transferts dcc si la connexion avec la machine distante a été perdue</entry>
|
||||
<entry>Continuer automatiquement les transferts dcc si la connexion avec l'hôte a été perdue</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>proxy_use</option></entry>
|
||||
@@ -1053,7 +1067,7 @@
|
||||
<entry>chaîne</entry>
|
||||
<entry>toute chaîne</entry>
|
||||
<entry>''</entry>
|
||||
<entry>Adresse du serveur proxy (IP ou nom)</entry>
|
||||
<entry>Adresse du serveur proxy (IP ou nom de machine)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><option>proxy_port</option></entry>
|
||||
|
||||
+30
-30
@@ -36,17 +36,17 @@ message: message pour l'absence (si pas de message donn
|
||||
</programlisting>
|
||||
<command>ban [canal] [pseudo [pseudo ...]]</command>
|
||||
<programlisting>
|
||||
bannit des pseudos ou masques
|
||||
bannit des pseudos ou hĂ´tes
|
||||
|
||||
canal: nom du canal pour le bannissement
|
||||
pseudo: pseudo ou masque pour le bannissement
|
||||
pseudo: pseudo ou hĂ´te pour le bannissement
|
||||
|
||||
</programlisting>
|
||||
<command>ctcp cible type [arguments]</command>
|
||||
<programlisting>
|
||||
envoyer un message CTCP (Client-To-Client Protocol)
|
||||
|
||||
cible: utilisateur Ă qui envoyer le CTCP
|
||||
cible: pseudo Ă qui envoyer le CTCP
|
||||
type: type de CTCP (exemples: "version", "ping", etc...)
|
||||
arguments: arguments pour le CTCP
|
||||
|
||||
@@ -61,12 +61,12 @@ message_de_fin: message de fin (affich
|
||||
</programlisting>
|
||||
<command>dehalfop [pseudo [pseudo]]</command>
|
||||
<programlisting>
|
||||
retire le statut de demi-opérateur du canal à /aux nick(s)
|
||||
retire le statut de demi-opérateur du canal à /aux pseudo(s)
|
||||
|
||||
</programlisting>
|
||||
<command>deop [pseudo [pseudo]]</command>
|
||||
<programlisting>
|
||||
retire le statut d'opérateur du canal à /aux nick(s)
|
||||
retire le statut d'opérateur du canal à /aux pseudo(s)
|
||||
|
||||
</programlisting>
|
||||
<command>devoice [pseudo [pseudo]]</command>
|
||||
@@ -81,7 +81,7 @@ arr
|
||||
</programlisting>
|
||||
<command>halfop [pseudo [pseudo]]</command>
|
||||
<programlisting>
|
||||
donner le statut de demi-opérateur à un/des utilisateur(s)
|
||||
donner le statut de demi-opérateur à un/des pseudo(s)
|
||||
|
||||
</programlisting>
|
||||
<command>info [cible]</command>
|
||||
@@ -93,15 +93,15 @@ cible: nom du serveur
|
||||
</programlisting>
|
||||
<command>invite pseudo canal</command>
|
||||
<programlisting>
|
||||
inviter un utilisateur sur un canal
|
||||
inviter un pseudo sur un canal
|
||||
|
||||
pseudo: utilisateur Ă inviter
|
||||
pseudo: pseudo Ă inviter
|
||||
channel: canal pour l'invitation
|
||||
|
||||
</programlisting>
|
||||
<command>ison pseudo [pseudo ...]</command>
|
||||
<programlisting>
|
||||
vérifier si un utilisateur est actuellement sur IRC
|
||||
vérifier si un pseudo est actuellement sur IRC
|
||||
|
||||
pseudo: pseudo
|
||||
|
||||
@@ -119,16 +119,16 @@ canal: nom du canal
|
||||
retirer par la force un utilisateur d'un canal
|
||||
|
||||
canal: canal oĂą l'utilisateur se trouve
|
||||
pseudo: utilisateur à éliminer
|
||||
pseudo: pseudo à éliminer
|
||||
commentaire: commentaire pour l'élimination
|
||||
|
||||
</programlisting>
|
||||
<command>kickban [canal] pseudo [commentaire]</command>
|
||||
<programlisting>
|
||||
retirer par la force un utilisateur d'un canal et le bannir
|
||||
retirer par la force un pseudo d'un canal et le bannir
|
||||
|
||||
canal: canal oĂą l'utilisateur se trouve
|
||||
pseudo: utilisateur à éliminer et bannir
|
||||
pseudo: pseudo à éliminer et bannir
|
||||
commentaire: commentaire pour l'élimination
|
||||
|
||||
</programlisting>
|
||||
@@ -136,7 +136,7 @@ commentaire: commentaire pour l'
|
||||
<programlisting>
|
||||
fermer la connexion client-serveur
|
||||
|
||||
pseudo: utilisateur
|
||||
pseudo: pseudo
|
||||
commentaire: commentaire pour la mort
|
||||
|
||||
</programlisting>
|
||||
@@ -171,7 +171,7 @@ envoyer une action CTCP au canal courant
|
||||
message: message Ă envoyer
|
||||
|
||||
</programlisting>
|
||||
<command>mode { canal {[+|-]|o|p|s|i|t|n|b|v} [limite] [utilisateur] [masque de banissement] } | { nick {[+|-]|i|w|s|o} }</command>
|
||||
<command>mode { canal {[+|-]|o|p|s|i|t|n|b|v} [limite] [utilisateur] [masque de banissement] } | { pseudo {[+|-]|i|w|s|o} }</command>
|
||||
<programlisting>
|
||||
changer le mode du canal ou de l'utilisateur
|
||||
|
||||
@@ -190,7 +190,7 @@ modes de canaux :
|
||||
v: donner/reprendre la possibilité de parler sur un canal modéré
|
||||
k: définir une clé (mot de passe) pour accéder au canal
|
||||
modes utilisateur :
|
||||
pseudo: utilisateur Ă modifier
|
||||
pseudo: pseudo Ă modifier
|
||||
i: marquer un utilisateur comme invisible
|
||||
s: marquer un utilisateur pour recevoir les notices du serveur
|
||||
w: l'utilisateur reçoit les wallops
|
||||
@@ -206,15 +206,15 @@ cible: nom du serveur
|
||||
</programlisting>
|
||||
<command>msg cible[,cible] texte</command>
|
||||
<programlisting>
|
||||
envoyer un message Ă un utilisateur ou canal
|
||||
envoyer un message Ă un pseudo ou canal
|
||||
|
||||
cible: utilisateur ou canal (peut-ĂŞtre un masque, '*' = canal courant)
|
||||
cible: pseudo ou canal (peut-ĂŞtre un masque, '*' = canal courant)
|
||||
texte: texte Ă envoyer
|
||||
|
||||
</programlisting>
|
||||
<command>names [canal[,canal]]</command>
|
||||
<programlisting>
|
||||
lister les utilisateurs sur des canaux
|
||||
lister les pseudos sur des canaux
|
||||
|
||||
canal: nom du canal
|
||||
|
||||
@@ -231,13 +231,13 @@ pseudo: nouveau pseudo
|
||||
<programlisting>
|
||||
envoyer un message notice Ă un utilisateur
|
||||
|
||||
pseudo: utilisateur cible pour la notice
|
||||
pseudo: pseudo cible pour la notice
|
||||
texte: texte Ă envoyer
|
||||
|
||||
</programlisting>
|
||||
<command>op pseudo [pseudo]</command>
|
||||
<programlisting>
|
||||
donner le statut opérateur à un/des utilisateur(s)
|
||||
donner le statut opérateur à un/des pseudo(s)
|
||||
|
||||
</programlisting>
|
||||
<command>oper utilisateur mot_de_passe</command>
|
||||
@@ -273,9 +273,9 @@ d
|
||||
</programlisting>
|
||||
<command>query pseudo [texte]</command>
|
||||
<programlisting>
|
||||
envoyer un message privé à un utilisateur
|
||||
envoyer un message privé à un pseudo
|
||||
|
||||
pseudo: utilisateur pour la conversation privée
|
||||
pseudo: pseudo pour la conversation privée
|
||||
texte: texte Ă envoyer
|
||||
|
||||
</programlisting>
|
||||
@@ -376,15 +376,15 @@ cible: serveur
|
||||
</programlisting>
|
||||
<command>unban [canal] pseudo [pseudo ...]</command>
|
||||
<programlisting>
|
||||
supprime le bannissement sur des pseudos ou masques
|
||||
supprime le bannissement sur des pseudos ou hĂ´tes
|
||||
|
||||
canal: nom du canal pour supprimer le bannissement
|
||||
pseudo: pseudo ou masque pour supprimer le bannissement
|
||||
pseudo: pseudo ou hĂ´te pour supprimer le bannissement
|
||||
|
||||
</programlisting>
|
||||
<command>userhost pseudo [pseudo ...]</command>
|
||||
<programlisting>
|
||||
retourne une liste d'informations sur des utilisateurs
|
||||
retourne une liste d'informations sur des pseudos
|
||||
|
||||
pseudo: pseudo
|
||||
|
||||
@@ -398,15 +398,15 @@ cible: serveur
|
||||
</programlisting>
|
||||
<command>version [serveur | pseudo]</command>
|
||||
<programlisting>
|
||||
retourne la version de l'utilisateur ou du serveur (courant ou spécifié)
|
||||
retourne la version du pseudo ou du serveur (courant ou spécifié)
|
||||
|
||||
serveur: nom du serveur
|
||||
pseudo: utilisateur
|
||||
pseudo: pseudo
|
||||
|
||||
</programlisting>
|
||||
<command>voice [pseudo [pseudo]]</command>
|
||||
<programlisting>
|
||||
donne la voix Ă /aux utilisateur(s)
|
||||
donne la voix Ă /aux pseudo(s)
|
||||
|
||||
</programlisting>
|
||||
<command>wallops texte</command>
|
||||
@@ -429,12 +429,12 @@ masque: information qui correspond
|
||||
demande les informations sur le(s) utilisateur(s)
|
||||
|
||||
serveur: nom du serveur
|
||||
pseudo: utilisateur (peut ĂŞtre un masque)
|
||||
pseudo: pseudo (peut ĂŞtre un masque)
|
||||
|
||||
</programlisting>
|
||||
<command>whowas pseudo [,pseudo [,pseudo ...]] [nombre [cible]]</command>
|
||||
<programlisting>
|
||||
demander de l'information sur un nick qui n'existe plus
|
||||
demander de l'information sur un pseudo qui n'existe plus
|
||||
|
||||
pseudo: pseudo Ă chercher
|
||||
nombre: nombre de réponses à retourner (recherche complète si nombre négatif)
|
||||
|
||||
@@ -171,15 +171,15 @@
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>scroll_previous_highlight</literal></entry>
|
||||
<entry>scroller jusqu'au highlight précédent du tampon</entry>
|
||||
<entry>faire défiler jusqu'au highlight précédent du tampon</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>scroll_next_highlight</literal></entry>
|
||||
<entry>scroller jusqu'au highlight suivant du tampon</entry>
|
||||
<entry>faire défiler jusqu'au highlight suivant du tampon</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>scroll_unread</literal></entry>
|
||||
<entry>scroller jusqu'à la première ligne non lue du tampon</entry>
|
||||
<entry>faire défiler jusqu'à la première ligne non lue du tampon</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>hotlist_clear</literal></entry>
|
||||
|
||||
+127
-2
@@ -36,7 +36,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
<bookinfo>
|
||||
|
||||
<title>WeeChat 0.2.4 - Guide utilisateur</title>
|
||||
<title>WeeChat 0.2.5 - Guide utilisateur</title>
|
||||
<subtitle>Client IRC rapide, léger et extensible</subtitle>
|
||||
|
||||
<author>
|
||||
@@ -1124,6 +1124,124 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secCharset">
|
||||
<title>Extension Charset</title>
|
||||
|
||||
<para>
|
||||
L'extension Charset vous permet d'encoder et décoder les données en
|
||||
utilisant un jeu de caractères, avec 3 niveaux : global, par serveur,
|
||||
ou par canal.
|
||||
Cette extension est facultative, mais recommandée : si elle n'est pas
|
||||
chargée, WeeChat pourra uniquement lire/écrire des données UTF-8.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
L'extension Charset devrait être automatiquement chargée par WeeChat
|
||||
au démarrage.
|
||||
Pour s'assurer que l'extension est bien chargée, essayez :
|
||||
"<literal>/charset</literal>".
|
||||
Si la commande n'est pas trouvée, alors chargez l'extension avec la
|
||||
commande :
|
||||
<screen>/plugin load charset</screen>
|
||||
Si l'extension n'est pas trouvée, alors vous devriez recompiler
|
||||
WeeChat avec les extensions et le support de Charset.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Lorsque l'extension Charset démarre, elle affiche le jeu de caractères
|
||||
du terminal et l'interne.
|
||||
Le jeu de caractères du terminal dépend de votre locale, et l'interne
|
||||
est UTF-8.
|
||||
Par exemple :
|
||||
<screen>
|
||||
-P- Charset plugin starting, terminal charset: ISO-8859-15 (WeeChat internal: UTF-8)
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
<section id="secCharsetSettings">
|
||||
<title>Configuration</title>
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Pour modifier les jeux de caractères de décodage et d'encodage
|
||||
globaux, utilisez la commande "<literal>/setp</literal>".
|
||||
Par exemple :
|
||||
<screen>
|
||||
/setp charset.global.decode = ISO-8859-15
|
||||
/setp charset.global.encode = ISO-8859-15
|
||||
</screen>
|
||||
Si le jeu de caractères de décodage global n'est pas renseigné
|
||||
(par exemple pendant le premier chargement de Charset), il sera
|
||||
renseigné automatiquement avec le jeu de caractères du terminal
|
||||
(s'il est diffĂ©rent de UTF-8) ou par dĂ©faut Ă
|
||||
"<literal>ISO-8859-1</literal>".
|
||||
La valeur d'encodage par défaut est vide, donc WeeChat envoie par
|
||||
défaut avec le jeu de caractères interne (UTF-8).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Pour modifier le jeu de caractères d'un serveur, utilisez la
|
||||
commande "<literal>/charset</literal>" sur le tampon serveur.
|
||||
Si vous donnez seulement le jeu de caractères, alors vous
|
||||
modifiez en même temps les valeurs de décodage et d'encodage.
|
||||
Par exemple :
|
||||
<screen>/charset ISO-8859-15</screen>
|
||||
Ce qui est équivalent à :
|
||||
<screen>
|
||||
/charset decode ISO-8859-15
|
||||
/charset encode ISO-8859-15
|
||||
</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Pour modifier le jeu de caractères d'un canal (ou d'une
|
||||
conversation privée), utilisez la même commande que pour le
|
||||
serveur, mais sur le tampon du canal (ou du privé).
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secCharsetFAQ">
|
||||
<title>FAQ</title>
|
||||
|
||||
<para>
|
||||
Si vous avez des problèmes avec certains caractères ou les accents en
|
||||
utilisant l'extension Charset :
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
vérifiez que weechat-curses est lié avec libncursesw
|
||||
(attention : nécessaire sur beaucoup de distributions, mais pas
|
||||
toutes) :
|
||||
<screen>ldd /chemin/vers/weechat-curses</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
vérifiez la ligne charset (sur le tampon serveur), vous devriez
|
||||
voir ISO-XXXXXX ou UTF-8 pour le charset du terminal. Si vous
|
||||
voyez ANSI_X3.4-1968 ou d'autres valeurs, votre locale est
|
||||
probablement erronée.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
affectez la valeur pour le décodage global, par exemple :
|
||||
<screen>/setp charset.global.decode = ISO-8859-15</screen>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
||||
<section id="secTubeFIFO">
|
||||
<title>Tube FIFO</title>
|
||||
@@ -2233,7 +2351,7 @@ msg_handler = plugin->msg_handler_add (plugin, "KICK",
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%C</literal></entry>
|
||||
<entry>canaux du serveur courant</entry>
|
||||
<entry>tous les canaux (y compris les privés)</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%f</literal></entry>
|
||||
@@ -2259,6 +2377,13 @@ msg_handler = plugin->msg_handler_add (plugin, "KICK",
|
||||
<entry><literal>%m</literal></entry>
|
||||
<entry>pseudo sur le serveur courant</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%M</literal></entry>
|
||||
<entry>
|
||||
pseudos sur le serveur courant
|
||||
(tous les canaux ouverts)
|
||||
</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><literal>%n</literal></entry>
|
||||
<entry>pseudos du canal courant</entry>
|
||||
|
||||
@@ -49,17 +49,19 @@ effacer la/les fen
|
||||
nombre: effacer un tampon par son numéro
|
||||
|
||||
</programlisting>
|
||||
<command>connect [nom_serveur]</command>
|
||||
<command>connect [-all | nom_serveur [nom_serveur...]]</command>
|
||||
<programlisting>
|
||||
se connecter Ă un serveur
|
||||
se connecter Ă un/plusieurs serveur(s)
|
||||
|
||||
-all: se connecter Ă tous les serveurs
|
||||
nom_serveur: nom du serveur pour se connecter
|
||||
|
||||
</programlisting>
|
||||
<command>disconnect [nom_serveur]</command>
|
||||
<command>disconnect [-all | nom_serveur [nom_serveur...]]</command>
|
||||
<programlisting>
|
||||
se déconnecter d'un serveur
|
||||
se déconnecter d'un/plusieurs serveur(s)
|
||||
|
||||
-all: se déconnecter de tous les serveurs
|
||||
nom_serveur: nom du serveur pour se déconnecter
|
||||
|
||||
</programlisting>
|
||||
@@ -97,9 +99,9 @@ valeur: nombre d'entr
|
||||
</programlisting>
|
||||
<command>ignore [masque [[type | commande] [canal [serveur]]]]</command>
|
||||
<programlisting>
|
||||
ignorer des messages IRC et/ou des masques
|
||||
ignorer des messages IRC et/ou des hĂ´tes
|
||||
|
||||
masque: pseudo ou masque Ă ignorer
|
||||
masque: pseudo ou hĂ´te Ă ignorer
|
||||
type: type de message Ă ignorer (action, ctcp, dcc, pv)
|
||||
commande: commande IRC
|
||||
canal: nom du canal pour le ignore
|
||||
@@ -133,6 +135,14 @@ autoload: charger automatiquement les extensions dans un r
|
||||
|
||||
Sans paramètre, la commande /plugin liste les extensions chargées.
|
||||
|
||||
</programlisting>
|
||||
<command>reconnect [-all | nom_serveur [nom_serveur...]]</command>
|
||||
<programlisting>
|
||||
se reconnecter Ă un/plusieurs serveur(s)
|
||||
|
||||
-all: se reconnecter Ă tous les serveurs
|
||||
nom_serveur: nom du serveur pour se reconnecter
|
||||
|
||||
</programlisting>
|
||||
<command>server [nom_serveur] | [nom_serveur nom/IP port [-auto | -noauto] [-ipv6] [-ssl] [-pwd mot_de_passe] [-nicks pseudo1 pseudo2 pseudo3] [-username nom_utilisateur] [-realname nom_réel] [-command commande] [-autojoin canal[,canal]] ] | [del nom_serveur]</command>
|
||||
<programlisting>
|
||||
@@ -187,10 +197,10 @@ nom_alias: nom de l'alias
|
||||
</programlisting>
|
||||
<command>unignore [nombre | [masque [[type | commande] [canal [serveur]]]]]</command>
|
||||
<programlisting>
|
||||
supprimer le ignore des messages IRC et/ou des masques
|
||||
supprimer le ignore des messages IRC et/ou des hĂ´tes
|
||||
|
||||
nombre: numéro de ignore à supprimer (le nombre est affiché sur la liste des ignore)
|
||||
masque: pseudo ou masque Ă ignorer
|
||||
masque: pseudo ou hĂ´te Ă ignorer
|
||||
type: type de message Ă ignorer (action, ctcp, dcc, pv)
|
||||
commande: commande IRC
|
||||
canal: nom du canal pour le ignore
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
.TH WEECHAT 1 "March 2007" "FlashCode"
|
||||
.TH WEECHAT 1 "June 2007" "FlashCode"
|
||||
|
||||
.SH NAME
|
||||
weechat-curses \- Wee Enhanced Environment for Chat (Curses version)
|
||||
@@ -14,7 +14,7 @@ or
|
||||
Fast, light and extensible IRC client for many operating systems.
|
||||
.br
|
||||
Everything can be done with a keyboard. It is customizable and extensible with scripts.
|
||||
Many GUIs are available (Curses, Gtk, Qt, and text).
|
||||
Many GUIs are or will be available (Curses, Gtk and Qt).
|
||||
It is compliant with RFCs 1459, 2810, 2811, 2812, and 2813.
|
||||
|
||||
.SH OPTIONS
|
||||
@@ -85,7 +85,7 @@ WeeChat is written by FlashCode <flashcode@flashtux.org>
|
||||
.br
|
||||
WeeChat on the web:
|
||||
.UR
|
||||
http://weechat.flashtux.org
|
||||
http://weechat.flashtux.org/
|
||||
.br
|
||||
Get support there:
|
||||
.UR
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
SET(PO_FILES
|
||||
fr.po
|
||||
es.po
|
||||
cs.po
|
||||
hu.po
|
||||
de.po
|
||||
ru.po
|
||||
)
|
||||
|
||||
SET(COPYRIGHT_HOLDER "WeeChat Team")
|
||||
SET(BUGS_ADDRESS "flashcode@flashtux.org")
|
||||
SET(POT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pot)
|
||||
|
||||
INCLUDE(srcfiles.cmake)
|
||||
|
||||
# Looking for xgettext, msgmerge and msgfmt
|
||||
FIND_PROGRAM(XGETTEXT_EXECUTABLE xgettext)
|
||||
FIND_PROGRAM(MSGMERGE_EXECUTABLE msgmerge)
|
||||
FIND_PROGRAM(MSGFMT_EXECUTABLE msgfmt)
|
||||
|
||||
IF(XGETTEXT_EXECUTABLE AND MSGMERGE_EXECUTABLE AND MSGFMT_EXECUTABLE)
|
||||
|
||||
# Create PO template file weechat.pot
|
||||
SET(SRC_FILES)
|
||||
SET(POT_DEPENDS)
|
||||
|
||||
FOREACH(srcfile ${WEECHAT_SOURCES})
|
||||
SET(SRC_FILES ${SRC_FILES} ${srcfile})
|
||||
SET(POT_DEPENDS ${POT_DEPENDS} ${CMAKE_SOURCE_DIR}/${srcfile})
|
||||
ENDFOREACH(srcfile ${WEECHAT_SOURCES})
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${POT_FILE}
|
||||
COMMAND ${XGETTEXT_EXECUTABLE}
|
||||
ARGS -o ${POT_FILE} --keyword='_' --keyword='N_' --directory=${CMAKE_SOURCE_DIR} --omit-header --msgid-bugs-address=${BUGS_ADDRESS} --copyright-holder=${COPYRIGHT_HOLDER} ${SRC_FILES}
|
||||
DEPENDS ${POT_DEPENDS}
|
||||
COMMENT "Generating PO template file"
|
||||
)
|
||||
|
||||
# Update .po files and compile them to binary .gmo files
|
||||
|
||||
SET(GMO_FILES)
|
||||
FOREACH(pofile ${PO_FILES})
|
||||
GET_FILENAME_COMPONENT(polang ${pofile} NAME_WE)
|
||||
|
||||
SET(gmofile ${CMAKE_CURRENT_BINARY_DIR}/${polang}.gmo)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
OUTPUT ${gmofile}
|
||||
COMMAND ${MSGMERGE_EXECUTABLE} ARGS --quiet -s -o ${CMAKE_CURRENT_BINARY_DIR}/${pofile} ${CMAKE_CURRENT_SOURCE_DIR}/${pofile} ${POT_FILE}
|
||||
COMMAND ${MSGFMT_EXECUTABLE} ARGS -o ${gmofile} ${CMAKE_CURRENT_BINARY_DIR}/${pofile}
|
||||
DEPENDS ${POT_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${pofile}
|
||||
COMMENT "Compiling locales (${polang})"
|
||||
)
|
||||
|
||||
INSTALL(FILES ${gmofile} DESTINATION share/locale/${polang}/LC_MESSAGES RENAME ${PROJECT_NAME}.mo)
|
||||
SET(GMO_FILES ${GMO_FILES} ${gmofile})
|
||||
ENDFOREACH(pofile ${PO_FILES})
|
||||
ADD_CUSTOM_TARGET(translations ALL DEPENDS ${GMO_FILES})
|
||||
|
||||
ENDIF(XGETTEXT_EXECUTABLE AND MSGMERGE_EXECUTABLE AND MSGFMT_EXECUTABLE)
|
||||
@@ -0,0 +1,82 @@
|
||||
SET(WEECHAT_SOURCES
|
||||
src/irc/irc-mode.c
|
||||
src/irc/irc-nick.c
|
||||
src/irc/irc-server.c
|
||||
src/irc/irc-channel.c
|
||||
src/irc/irc-commands.c
|
||||
src/irc/irc-display.c
|
||||
src/irc/irc-send.c
|
||||
src/irc/irc-recv.c
|
||||
src/irc/irc-dcc.c
|
||||
src/irc/irc-ignore.c
|
||||
src/irc/irc.h
|
||||
src/plugins/plugins.c
|
||||
src/plugins/plugins.h
|
||||
src/plugins/plugins-config.c
|
||||
src/plugins/plugins-config.h
|
||||
src/plugins/plugins-interface.c
|
||||
src/plugins/weechat-plugin.h
|
||||
src/gui/curses/gui-curses-chat.c
|
||||
src/gui/curses/gui-curses-color.c
|
||||
src/gui/curses/gui-curses-infobar.c
|
||||
src/gui/curses/gui-curses-input.c
|
||||
src/gui/curses/gui-curses-keyboard.c
|
||||
src/gui/curses/gui-curses-main.c
|
||||
src/gui/curses/gui-curses-nicklist.c
|
||||
src/gui/curses/gui-curses-panel.c
|
||||
src/gui/curses/gui-curses-status.c
|
||||
src/gui/curses/gui-curses-window.c
|
||||
src/gui/curses/gui-curses.h
|
||||
src/gui/gtk/gui-gtk-chat.c
|
||||
src/gui/gtk/gui-gtk-color.c
|
||||
src/gui/gtk/gui-gtk-infobar.c
|
||||
src/gui/gtk/gui-gtk-input.c
|
||||
src/gui/gtk/gui-gtk-keyboard.c
|
||||
src/gui/gtk/gui-gtk-main.c
|
||||
src/gui/gtk/gui-gtk-nicklist.c
|
||||
src/gui/gtk/gui-gtk-panel.c
|
||||
src/gui/gtk/gui-gtk-status.c
|
||||
src/gui/gtk/gui-gtk-window.c
|
||||
src/gui/gtk/gui-gtk.h
|
||||
src/gui/gui-action.c
|
||||
src/gui/gui-buffer.c
|
||||
src/gui/gui-common.c
|
||||
src/gui/gui-keyboard.c
|
||||
src/gui/gui-log.c
|
||||
src/gui/gui-panel.c
|
||||
src/gui/gui-window.c
|
||||
src/gui/gui.h
|
||||
src/gui/gui-buffer.h
|
||||
src/gui/gui-color.h
|
||||
src/gui/gui-keyboard.h
|
||||
src/gui/gui-panel.h
|
||||
src/gui/gui-window.h
|
||||
src/common/alias.c
|
||||
src/common/alias.h
|
||||
src/common/backtrace.c
|
||||
src/common/backtrace.h
|
||||
src/common/command.c
|
||||
src/common/command.h
|
||||
src/common/completion.c
|
||||
src/common/completion.h
|
||||
src/common/fifo.c
|
||||
src/common/fifo.h
|
||||
src/common/history.c
|
||||
src/common/history.h
|
||||
src/common/hotlist.c
|
||||
src/common/hotlist.h
|
||||
src/common/log.c
|
||||
src/common/log.h
|
||||
src/common/session.c
|
||||
src/common/session.h
|
||||
src/common/utf8.c
|
||||
src/common/utf8.h
|
||||
src/common/util.c
|
||||
src/common/util.h
|
||||
src/common/weechat.c
|
||||
src/common/weechat.h
|
||||
src/common/weeconfig.c
|
||||
src/common/weeconfig.h
|
||||
src/common/weelist.c
|
||||
src/common/weelist.h
|
||||
)
|
||||
+977
-938
File diff suppressed because it is too large
Load Diff
+37
-8
@@ -5,22 +5,42 @@
|
||||
The script is in the public domain.
|
||||
Leonid Evdokimov (weechat at darkk dot net dot ru)
|
||||
http://darkk.net.ru/weechat/awl.py
|
||||
|
||||
0.1 - initial commit
|
||||
0.2 - added `show_servers` option
|
||||
0.3 - infobar is actually redrawed only if that's necessary
|
||||
"""
|
||||
|
||||
#######################################################################
|
||||
|
||||
import weechat
|
||||
from itertools import ifilter
|
||||
|
||||
version = "0.1"
|
||||
VERSION = "0.3"
|
||||
NAME = "awl"
|
||||
# how often to refresh infobar
|
||||
timer_interval = 1
|
||||
blist = ()
|
||||
|
||||
def cleanup():
|
||||
weechat.remove_infobar(-1)
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def cfg_boolean(key, default = False):
|
||||
map = {True: 'ON', False: 'OFF'}
|
||||
value = weechat.get_plugin_config(key).upper()
|
||||
if not value in map.values():
|
||||
if value:
|
||||
weechat.prnt("[%s]: invalid %s value (%s), resetting to %s" % (NAME, key, value, map[default]))
|
||||
weechat.set_plugin_config(key, map[default])
|
||||
value = default
|
||||
else:
|
||||
value = ifilter(lambda p: p[1] == value, map.iteritems()).next()[0]
|
||||
return value
|
||||
|
||||
def update_channels():
|
||||
the_string = [];
|
||||
global blist
|
||||
names = ()
|
||||
buffers = weechat.get_buffer_info()
|
||||
if buffers != None:
|
||||
for index, buffer in buffers.iteritems():
|
||||
@@ -29,19 +49,28 @@ def update_channels():
|
||||
if len(buffer['channel']):
|
||||
name = buffer['channel']
|
||||
elif len(buffer['server']):
|
||||
name = "[" + buffer['server'] + "]"
|
||||
if cfg_boolean('show_servers'):
|
||||
name = "[" + buffer['server'] + "]"
|
||||
else:
|
||||
continue
|
||||
else:
|
||||
name = "?"
|
||||
the_string.append("%i:%s" % (index, name))
|
||||
the_string = " ".join(the_string)
|
||||
weechat.remove_infobar(-1)
|
||||
weechat.print_infobar(0, the_string);
|
||||
names += ("%i:%s" % (index, name), )
|
||||
if (names != blist):
|
||||
the_string = " ".join(names)
|
||||
blist = names
|
||||
weechat.remove_infobar(-1)
|
||||
weechat.print_infobar(0, the_string);
|
||||
|
||||
def on_timer():
|
||||
update_channels()
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
if weechat.register("awl", version, "cleanup", "bufferlist in infobar"):
|
||||
if weechat.register(NAME, VERSION, "cleanup", "bufferlist in infobar"):
|
||||
#message handlers are called __before__ buflist is changed, so we don't use them
|
||||
weechat.add_timer_handler(timer_interval, "on_timer")
|
||||
cfg_boolean('show_servers', False)
|
||||
update_channels()
|
||||
|
||||
# vim:set tabstop=4 softtabstop=4 shiftwidth=4:
|
||||
# vim:set expandtab:
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
# Catapult v0.2 - less ordinary abuse generator
|
||||
# Copyright (C) 2007 Pavel Shevchuk <stlwrt@gmail.com>
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
-- Leonid Evdokimov (weechat at darkk dot net one more dot ru)
|
||||
"""
|
||||
|
||||
version = "0.9"
|
||||
version = "0.10"
|
||||
history = """
|
||||
0.1 initial
|
||||
0.2
|
||||
@@ -38,6 +38,8 @@ history = """
|
||||
- fixed on_msg (occasionally caused a minor fault)
|
||||
0.9
|
||||
- added dump_to_servchan and dump_to_current setting
|
||||
0.10
|
||||
- added SILENT (asmanian)
|
||||
"""
|
||||
|
||||
short_syntax = """[REQUEST ANSWER]"""
|
||||
@@ -46,7 +48,8 @@ syntax = """ Examples:
|
||||
|
||||
/set_ctcp
|
||||
show settings for common CTCP-Requests.
|
||||
where "OFF" means "use weechat default behaviour.
|
||||
where "OFF" means "use weechat default behaviour,
|
||||
"SILENT" means: "dont answer at all".
|
||||
|
||||
/set_ctcp VERSION I prefer using weechat $version
|
||||
Reply with a fancy message.
|
||||
@@ -121,6 +124,9 @@ def on_msg(server, args):
|
||||
if not ans or ans == "OFF":
|
||||
raise ValueError
|
||||
|
||||
if ans == "SILENT":
|
||||
return wc.PLUGIN_RC_OK_IGNORE_ALL
|
||||
|
||||
info = {
|
||||
"version": wc.get_info("version"),
|
||||
"nick": wc.get_info("nick"),
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
# Author: Skippy the Kangoo <Skippythekangoo AT yahoo DOT fr>
|
||||
# This script manages basic controls of mpd (play/pause, next song, previous song, increase volume, decrease volume, display current song)
|
||||
# Usage: /mpd toggle|next|prev|volume_up|volume_down|status
|
||||
# Released under GNU GPL v2 or newer
|
||||
|
||||
import weechat
|
||||
from os import popen
|
||||
|
||||
weechat.register ('mpd', '0.0.2', '', 'mpd control script')
|
||||
|
||||
weechat.add_command_handler('mpd', 'mpd', 'mpd control', 'toggle|next|prev|volume_up|volume_down|status', '', 'toggle|next|prev|volume_up|volume_down|status')
|
||||
|
||||
def toggle (server, args,):
|
||||
popen('mpc toggle')
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def next (server, args,):
|
||||
popen('mpc next')
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def prev (server, args,):
|
||||
popen('mpc prev')
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def volume_up (server, args,):
|
||||
popen('mpc volume +10')
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def volume_down (server, args,):
|
||||
volume_down = popen('mpc volume -10')
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def status (server, args,):
|
||||
status = popen('mpc').readline().rstrip()
|
||||
weechat.print_infobar(3, status)
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def mpd(server, args):
|
||||
|
||||
largs = args.split(" ")
|
||||
|
||||
#strip spaces
|
||||
while '' in largs:
|
||||
largs.remove('')
|
||||
while ' ' in largs:
|
||||
largs.remove(' ')
|
||||
|
||||
if len(largs) == 0:
|
||||
weechat.command("/help mpd")
|
||||
return weechat.PLUGIN_RC_OK
|
||||
else:
|
||||
inchan = False
|
||||
|
||||
if largs[0] == 'toggle':
|
||||
toggle(" ".join(largs[1:]), inchan)
|
||||
elif largs[0] == 'next':
|
||||
next(" ".join(largs[1:]), inchan)
|
||||
elif largs[0] == 'prev':
|
||||
prev(' '.join(largs[1:]), inchan)
|
||||
elif largs[0] == 'volume_up':
|
||||
volume_up(' '.join(largs[1:]), inchan)
|
||||
elif largs[0] == 'volume_down':
|
||||
volume_down(' '.join(largs[1:]), inchan)
|
||||
elif largs[0] == 'status':
|
||||
status(" ".join(largs[1:]), inchan)
|
||||
return weechat.PLUGIN_RC_OK
|
||||
@@ -1,4 +1,3 @@
|
||||
#!/usr/bin/env python
|
||||
"""
|
||||
Theme manager for WeeChat.
|
||||
It loads configuration parameters from file
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#!/bin/env python
|
||||
#
|
||||
# TinyUrl, version 3.3, for weechat version 0.1.9
|
||||
#
|
||||
|
||||
+103
-88
@@ -1,5 +1,5 @@
|
||||
#
|
||||
# UrlGrab, version 1.0, for weechat version 0.1.6
|
||||
# UrlGrab, version 1.1, for weechat version 0.2.4
|
||||
#
|
||||
# Listens to all channels for URLs, collects them in a list, and launches
|
||||
# them in your favourite web server on the local host or a remote server.
|
||||
@@ -59,9 +59,13 @@
|
||||
# The file where the command output (if any) is saved. Overwritten
|
||||
# each time you launch a new URL. Default is ~/.weechat/urllaunch.log
|
||||
#
|
||||
# default
|
||||
# The command that will be run if no arguemnts to /url are given.
|
||||
# Default is help
|
||||
#
|
||||
# Requirements:
|
||||
#
|
||||
# - Designed to run with weechat version 1.0.6 or better.
|
||||
# - Designed to run with weechat version 0.2.4 or better.
|
||||
# http://weechat.flashtux.org/
|
||||
#
|
||||
# Acknowlegements:
|
||||
@@ -70,6 +74,13 @@
|
||||
# irc.freenode.net/#weechat Honestly, I just cleaned up the code a bit and
|
||||
# made the settings a little more useful (to me).
|
||||
#
|
||||
# - With changes by Leonid Evdokimov (weechat at darkk dot net another dot ru):
|
||||
# http://darkk.net.ru/weechat/urlgrab.py
|
||||
# v1.1: added better handling of dead zombie-childs
|
||||
# added parsing of private messages
|
||||
# added default command setting
|
||||
# added parsing of scrollback buffers on load
|
||||
#
|
||||
# Copyright (C) 2005 Jim Ramsay <i.am@jimramsay.com>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
@@ -88,16 +99,13 @@
|
||||
# USA.
|
||||
#
|
||||
|
||||
import sys
|
||||
import os
|
||||
import weechat
|
||||
import subprocess
|
||||
|
||||
UC_NAME="UrlGrab"
|
||||
UC_VERSION="1.0"
|
||||
|
||||
weechat.register (UC_NAME, UC_VERSION, "", "Url collector/launcher for weechat")
|
||||
weechat.add_message_handler("privmsg", "urlGrabCheck")
|
||||
weechat.add_command_handler("url", "urlGrabMain",
|
||||
"Controls UrlGrab -> '/url help' for usage")
|
||||
UC_VERSION="1.1"
|
||||
|
||||
def urlGrabPrint(message):
|
||||
weechat.prnt("-[%s]- %s" % ( UC_NAME, message ) )
|
||||
@@ -114,6 +122,8 @@ class WeechatSetting:
|
||||
class UrlGrabSettings:
|
||||
def __init__(self):
|
||||
self.settings = {
|
||||
'default':WeechatSetting('default', 'help',
|
||||
"default command to /url to run if none given" ),
|
||||
'historysize':WeechatSetting('historysize', '10',
|
||||
"Number of URLs to keep per channel" ),
|
||||
'method':WeechatSetting('method', 'local',
|
||||
@@ -276,15 +286,22 @@ class UrlGrabber:
|
||||
if not found:
|
||||
urlGrabPrint(channel + "@" + server + ": no entries")
|
||||
|
||||
def urlGrabParsemsg(command):
|
||||
infos = command.split(" ")
|
||||
chan = infos[2]
|
||||
message = " ".join(infos[3:])[1:]
|
||||
return (chan, message)
|
||||
def urlGrabParsemsg(server, command):
|
||||
# :nick!ident@host PRIVMSG dest :foobarbaz
|
||||
l = command.split(' ')
|
||||
mask = l[0][1:]
|
||||
dest = l[2]
|
||||
message = ' '.join(l[3:])[1:]
|
||||
###########################################
|
||||
#nothing, info, message = command.split(":", 2)
|
||||
#info = info.split(' ')
|
||||
if dest == weechat.get_info('nick', server):
|
||||
source = mask.split("!")[0]
|
||||
else:
|
||||
source = dest
|
||||
return (source, message)
|
||||
|
||||
def urlGrabCheck(server, args):
|
||||
global urlGrab
|
||||
chan, message = urlGrabParsemsg(args)
|
||||
def urlGrabCheckMsgline(server, chan, message):
|
||||
# Ignore output from 'tinyurl.py'
|
||||
if message.startswith( "[AKA] http://tinyurl.com" ):
|
||||
return weechat.PLUGIN_RC_OK
|
||||
@@ -294,17 +311,20 @@ def urlGrabCheck(server, args):
|
||||
word[0:8] == "https://" or \
|
||||
word[0:6] == "ftp://":
|
||||
urlGrab.addUrl(word, chan, server)
|
||||
# check for any dead children and clean them up
|
||||
while True:
|
||||
try:
|
||||
mypid, status = os.waitpid(0, os.WNOHANG)
|
||||
except:
|
||||
break
|
||||
else:
|
||||
if mypid <= 0:
|
||||
break
|
||||
|
||||
def urlGrabCheck(server, args):
|
||||
global urlGrab
|
||||
chan, message = urlGrabParsemsg(server, args)
|
||||
urlGrabCheckMsgline(server, chan, message)
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
def urlGrabCheckOnload():
|
||||
for buf in weechat.get_buffer_info().itervalues():
|
||||
if len(buf['channel']):
|
||||
lines = weechat.get_buffer_data(buf['server'], buf['channel'])
|
||||
for line in reversed(lines):
|
||||
urlGrabCheckMsgline(buf['server'], buf['channel'], line['data'])
|
||||
|
||||
def urlGrabOpen(index, channel = None):
|
||||
global urlGrab, urlGrabSettings
|
||||
|
||||
@@ -336,30 +356,22 @@ def urlGrabOpen(index, channel = None):
|
||||
except:
|
||||
urlGrabPrint("Fork failed!")
|
||||
if childpid == 0:
|
||||
# in the child- Detach from tty and Exec the command
|
||||
logfile = os.path.expanduser( urlGrabSettings.get( 'cmdlog' ) )
|
||||
din = open("/dev/null", "r")
|
||||
dout = open(logfile, "a")
|
||||
try:
|
||||
# Redirect IO for the child
|
||||
os.dup2(din.fileno(), 0)
|
||||
os.dup2(dout.fileno(), 1)
|
||||
os.dup2(dout.fileno(), 2)
|
||||
subprocess.Popen(
|
||||
argl,
|
||||
stdin = open('/dev/null', 'r'),
|
||||
stdout = open(logfile, 'a'),
|
||||
stderr = subprocess.STDOUT)
|
||||
except:
|
||||
dout.write( "UrlGrab: IO Redirection failed\n" )
|
||||
dout.close()
|
||||
din.close()
|
||||
sys.exit(1)
|
||||
try:
|
||||
# Actually run the command
|
||||
os.execvp( argl[0], argl )
|
||||
except:
|
||||
dout.write( "UrlGrab: Exec failed" )
|
||||
dout.close()
|
||||
din.close()
|
||||
sys.exit(1)
|
||||
urlGrabPrint(traceback.format_exc(None))
|
||||
sys.exit(0)
|
||||
else:
|
||||
# In the parent - Don't wait now, wait later.
|
||||
# In the parent - we may wait for stub to fork again and let the init kill grand-child
|
||||
try:
|
||||
os.waitpid(childpid, 0)
|
||||
except:
|
||||
pass
|
||||
return
|
||||
|
||||
def urlGrabList( args ):
|
||||
@@ -398,50 +410,53 @@ def urlGrabMain(server, args):
|
||||
while ' ' in largs:
|
||||
largs.remove(' ')
|
||||
if len(largs) == 0:
|
||||
largs = [urlGrabSettings.get('default')]
|
||||
if largs[0] == 'help':
|
||||
urlGrabHelp()
|
||||
else:
|
||||
if largs[0] == 'help':
|
||||
urlGrabHelp()
|
||||
elif largs[0] == 'list':
|
||||
urlGrabList( largs[1:] )
|
||||
elif largs[0] == 'set':
|
||||
try:
|
||||
if (len(largs) == 1):
|
||||
urlGrabPrint( "Available settings:" )
|
||||
urlGrabSettings.prntall()
|
||||
elif (len(largs) == 2):
|
||||
name = largs[1]
|
||||
urlGrabPrint( "Get %s" % name )
|
||||
urlGrabSettings.prnt( name )
|
||||
elif (len(largs) > 2):
|
||||
name = largs[1]
|
||||
value = None
|
||||
if( largs[2] != "="):
|
||||
value = " ".join(largs[2:])
|
||||
elif( largs > 3 and largs[2] == "=" ):
|
||||
value = " ".join(largs[3:])
|
||||
urlGrabPrint( "set %s = \'%s\'" % (name, value) )
|
||||
if value is not None:
|
||||
try:
|
||||
urlGrabSettings.set( name, value )
|
||||
urlGrabSettings.prnt( name, verbose=False )
|
||||
except ValueError, msg:
|
||||
weechat.prnt( " Failed: %s" % msg )
|
||||
else:
|
||||
weechat.prnt( " Failed: No value given" )
|
||||
except KeyError:
|
||||
weechat.prnt( " Failed: Unrecognized parameter '%s'" % name )
|
||||
else:
|
||||
try:
|
||||
no = int(largs[0])
|
||||
if len(largs) > 1:
|
||||
urlGrabOpen(no, largs[1])
|
||||
elif largs[0] == 'list':
|
||||
urlGrabList( largs[1:] )
|
||||
elif largs[0] == 'set':
|
||||
try:
|
||||
if (len(largs) == 1):
|
||||
urlGrabPrint( "Available settings:" )
|
||||
urlGrabSettings.prntall()
|
||||
elif (len(largs) == 2):
|
||||
name = largs[1]
|
||||
urlGrabPrint( "Get %s" % name )
|
||||
urlGrabSettings.prnt( name )
|
||||
elif (len(largs) > 2):
|
||||
name = largs[1]
|
||||
value = None
|
||||
if( largs[2] != "="):
|
||||
value = " ".join(largs[2:])
|
||||
elif( largs > 3 and largs[2] == "=" ):
|
||||
value = " ".join(largs[3:])
|
||||
urlGrabPrint( "set %s = \'%s\'" % (name, value) )
|
||||
if value is not None:
|
||||
try:
|
||||
urlGrabSettings.set( name, value )
|
||||
urlGrabSettings.prnt( name, verbose=False )
|
||||
except ValueError, msg:
|
||||
weechat.prnt( " Failed: %s" % msg )
|
||||
else:
|
||||
urlGrabOpen(no)
|
||||
except ValueError:
|
||||
urlGrabPrint( "Unknown command '%s'. Try '/url help' for usage" % largs[0])
|
||||
weechat.prnt( " Failed: No value given" )
|
||||
except KeyError:
|
||||
weechat.prnt( " Failed: Unrecognized parameter '%s'" % name )
|
||||
else:
|
||||
try:
|
||||
no = int(largs[0])
|
||||
if len(largs) > 1:
|
||||
urlGrabOpen(no, largs[1])
|
||||
else:
|
||||
urlGrabOpen(no)
|
||||
except ValueError:
|
||||
urlGrabPrint( "Unknown command '%s'. Try '/url help' for usage" % largs[0])
|
||||
return weechat.PLUGIN_RC_OK
|
||||
|
||||
# Initialize global variables
|
||||
urlGrabSettings = UrlGrabSettings()
|
||||
urlGrab = UrlGrabber( urlGrabSettings.get('historysize') )
|
||||
if weechat.register (UC_NAME, UC_VERSION, "", "Url collector/launcher for weechat"):
|
||||
urlGrabSettings = UrlGrabSettings()
|
||||
urlGrab = UrlGrabber( urlGrabSettings.get('historysize') )
|
||||
urlGrabCheckOnload()
|
||||
weechat.add_message_handler("privmsg", "urlGrabCheck")
|
||||
weechat.add_command_handler("url", "urlGrabMain", "Controls UrlGrab -> '/url help' for usage")
|
||||
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
# Copyright (c) 2007 by Javier Valencia <jvalencia@log01.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
def weechat_init
|
||||
Weechat.register("browse", "0.1", "", "Fast url browsing for Weechat.")
|
||||
|
||||
Weechat.add_command_handler(
|
||||
"browse",
|
||||
"do_browse",
|
||||
"Use your preferred browser to navigate an url.",
|
||||
"[number of url] (-1 to browse all) (leave empty to browse first one)")
|
||||
Weechat.add_command_handler(
|
||||
"webbrowser",
|
||||
"set_browser",
|
||||
"Get/Set browser command",
|
||||
"[command] (leavy empty to get current command)")
|
||||
Weechat.add_command_handler(
|
||||
"urls",
|
||||
"get_url_list",
|
||||
"Get a list of urls in a channel.")
|
||||
|
||||
Weechat.print("")
|
||||
Weechat.print("See help for 'browse', 'webbrowser' and 'urls' commands.")
|
||||
if Weechat.get_plugin_config("webbrowser").empty?
|
||||
Weechat.print("")
|
||||
Weechat.print("WARNING: you must define a web browser with the command /webbrowser.")
|
||||
end
|
||||
return Weechat::PLUGIN_RC_OK
|
||||
end
|
||||
|
||||
def set_browser(server, args)
|
||||
if args.empty?
|
||||
Weechat.print("current web browser -> #{Weechat.get_plugin_config('webbrowser')}")
|
||||
else
|
||||
Weechat.set_plugin_config("webbrowser", args)
|
||||
Weechat.print("web browser set to -> #{args}")
|
||||
end
|
||||
return Weechat::PLUGIN_RC_OK
|
||||
end
|
||||
|
||||
def get_url_array(buffer_data)
|
||||
urls = Array.new
|
||||
buffer_data.each do |line|
|
||||
line["data"].split.each do |word|
|
||||
if word =~ /^http\:\/\/.*/
|
||||
urls << word
|
||||
end
|
||||
end
|
||||
end
|
||||
return urls.uniq.reverse
|
||||
end
|
||||
|
||||
def get_url_list(server,args)
|
||||
channel = Weechat.get_info("channel")
|
||||
if channel.empty?
|
||||
Weechat.print("You must be inside a channel.")
|
||||
return Weechat::PLUGIN_RC_KO
|
||||
end
|
||||
buffer = Weechat.get_buffer_data(server, channel)
|
||||
unless buffer
|
||||
Weechat.print("Error retrieving window buffer, may be a bug?.")
|
||||
return Weechat::PLUGIN_RC_KO
|
||||
end
|
||||
Weechat.print("")
|
||||
Weechat.print("URL listing:")
|
||||
pos = 0
|
||||
get_url_array(buffer).each do |url|
|
||||
Weechat.print("#{pos}) #{url}")
|
||||
pos += 1
|
||||
end
|
||||
return Weechat::PLUGIN_RC_OK
|
||||
end
|
||||
|
||||
def do_browse(server, args)
|
||||
num = args.to_i
|
||||
channel = Weechat.get_info("channel")
|
||||
if channel.empty?
|
||||
Weechat.print("You must be inside a channel.")
|
||||
return Weechat::PLUGIN_RC_KO
|
||||
end
|
||||
buffer = Weechat.get_buffer_data(server, channel)
|
||||
unless buffer
|
||||
Weechat.print("Error retrieving window buffer, may be a bug?.")
|
||||
return Weechat::PLUGIN_RC_KO
|
||||
end
|
||||
browser = Weechat.get_plugin_config("webbrowser")
|
||||
if browser.empty?
|
||||
Weechat.print("")
|
||||
Weechat.print("WARNING: you must define a web browser with the command /webbrowser.")
|
||||
return Weechat::PLUGIN_RC_KO
|
||||
end
|
||||
urls = get_url_array(buffer)
|
||||
if urls.empty?
|
||||
Weechat.print("No urls in current channel.")
|
||||
else
|
||||
if num == -1
|
||||
Weechat.print("Starting browser...")
|
||||
fork do # only for unix/posix
|
||||
exec("#{browser} #{urls.join(' ')} &> /dev/null")
|
||||
end
|
||||
else
|
||||
if urls[num]
|
||||
Weechat.print("Starting browser...")
|
||||
fork do # only for unix/posix
|
||||
exec("#{browser} #{urls[num]} &> /dev/null")
|
||||
end
|
||||
else
|
||||
Weechat.print("Invalid url number.")
|
||||
end
|
||||
end
|
||||
end
|
||||
return Weechat::PLUGIN_RC_OK
|
||||
end
|
||||
@@ -0,0 +1,35 @@
|
||||
# Forcenick v1.0 - forces your original nickname
|
||||
# Copyright (C) 2007 Pavel Shevchuk <stlwrt@gmail.com>
|
||||
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
def weechat_init
|
||||
Weechat.register("forcenick", "1.0", "", "Forces your original nickname, wipes out ghosts and nick stealers")
|
||||
Weechat.add_command_handler("forcenick", "forcenick", "Forces server_nick1, identifies to nickserv using server_password. Useful to call from server_command if your connection is unstable")
|
||||
end
|
||||
|
||||
def forcenick(server, args)
|
||||
server_info = Weechat.get_server_info[server]
|
||||
cur_nick = server_info['nick']
|
||||
forced_nick = server_info['nick1']
|
||||
password = server_info['password']
|
||||
if cur_nick != forced_nick
|
||||
Weechat.command("/msg nickserv ghost #{forced_nick} #{password}", "", server)
|
||||
Weechat.command("/nick #{forced_nick}", "", server)
|
||||
Weechat.command("/msg nickserv identify #{password}", "", server)
|
||||
end
|
||||
return Weechat::PLUGIN_RC_OK
|
||||
end
|
||||
|
||||
@@ -0,0 +1,95 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
ADD_DEFINITIONS(-DHAVE_CONFIG_H)
|
||||
|
||||
INCLUDE(CheckIncludeFiles)
|
||||
INCLUDE(CheckFunctionExists)
|
||||
|
||||
CHECK_INCLUDE_FILES("arpa/inet.h" HAVE_ARPA_INET_H)
|
||||
#CHECK_INCLUDE_FILES("libintl.h" HAVE_LIBINTL_H)
|
||||
CHECK_INCLUDE_FILES("limits.h" HAVE_LIMITS_H)
|
||||
CHECK_INCLUDE_FILES("locale.h" HAVE_LOCALE_H)
|
||||
CHECK_INCLUDE_FILES("netdb.h" HAVE_NETDB_H)
|
||||
CHECK_INCLUDE_FILES("netinet/in.h" HAVE_NETINET_IN_H)
|
||||
CHECK_INCLUDE_FILES("stdlib.h" HAVE_STDLIB_H)
|
||||
CHECK_INCLUDE_FILES("string.h" HAVE_STRING_H)
|
||||
CHECK_INCLUDE_FILES("sys/socket.h" HAVE_SYS_SOCKET_H)
|
||||
CHECK_INCLUDE_FILES("sys/time.h" HAVE_SYS_TIME_H)
|
||||
CHECK_INCLUDE_FILES("sys/types.h" HAVE_SYS_TYPES_H)
|
||||
CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H)
|
||||
CHECK_INCLUDE_FILES("pwd.h" HAVE_PWD_H)
|
||||
CHECK_INCLUDE_FILES("errno.h" HAVE_ERRNO_H)
|
||||
CHECK_INCLUDE_FILES("wchar.h" HAVE_WCHAR_H)
|
||||
CHECK_INCLUDE_FILES("langinfo.h" HAVE_LANGINFO_CODESET)
|
||||
|
||||
CHECK_FUNCTION_EXISTS(gethostbyname HAVE_GETHOSTBYNAME)
|
||||
CHECK_FUNCTION_EXISTS(gethostname HAVE_GETHOSTNAME)
|
||||
CHECK_FUNCTION_EXISTS(getsockname HAVE_GETSOCKNAME)
|
||||
CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
|
||||
CHECK_FUNCTION_EXISTS(inet_ntoa HAVE_INET_NTOA)
|
||||
CHECK_FUNCTION_EXISTS(memset HAVE_MEMSET)
|
||||
CHECK_FUNCTION_EXISTS(mkdir HAVE_MKDIR)
|
||||
CHECK_FUNCTION_EXISTS(select HAVE_SELECT)
|
||||
CHECK_FUNCTION_EXISTS(setlocale HAVE_SETLOCALE)
|
||||
CHECK_FUNCTION_EXISTS(socket HAVE_SOCKET)
|
||||
CHECK_FUNCTION_EXISTS(strcasecmp HAVE_STRCASECMP)
|
||||
CHECK_FUNCTION_EXISTS(strchr HAVE_STRCHR)
|
||||
CHECK_FUNCTION_EXISTS(strdup HAVE_STRDUP)
|
||||
CHECK_FUNCTION_EXISTS(strndup HAVE_STRNDUP)
|
||||
CHECK_FUNCTION_EXISTS(strncasecmp HAVE_STRNCASECMP)
|
||||
CHECK_FUNCTION_EXISTS(strpbrk HAVE_STRPBRK)
|
||||
CHECK_FUNCTION_EXISTS(strrchr HAVE_STRRCHR)
|
||||
CHECK_FUNCTION_EXISTS(strstr HAVE_STRSTR)
|
||||
|
||||
|
||||
#needs to be splitted in subdirectories
|
||||
# FIXME: weechat_gui_common MUST be the first lib in the list
|
||||
SET(STATIC_LIBS weechat_gui_common)
|
||||
|
||||
# Check for Gettext
|
||||
IF(NOT DISABLE_NLS)
|
||||
FIND_PACKAGE(Gettext)
|
||||
IF(GETTEXT_FOUND)
|
||||
ADD_DEFINITIONS(-DENABLE_NLS)
|
||||
ENDIF(GETTEXT_FOUND)
|
||||
ENDIF(NOT DISABLE_NLS)
|
||||
|
||||
# Check for GnuTLS
|
||||
IF(NOT DISABLE_GNUTLS)
|
||||
FIND_PACKAGE(GnuTLS)
|
||||
|
||||
IF(GNUTLS_FOUND)
|
||||
STRING(REGEX REPLACE "/[^/]*$" "" GNUTLS_LIBRARY_PATH "${GNUTLS_LIBRARY}")
|
||||
ADD_DEFINITIONS(-DHAVE_GNUTLS)
|
||||
INCLUDE_DIRECTORIES(${GNUTLS_INCLUDE_PATH})
|
||||
SET(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -L${GNUTLS_LIBRARY_PATH}")
|
||||
LIST(APPEND EXTRA_LIBS gnutls)
|
||||
ENDIF(GNUTLS_FOUND)
|
||||
ENDIF(NOT DISABLE_GNUTLS)
|
||||
|
||||
IF(NOT DISABLE_PLUGINS)
|
||||
ADD_DEFINITIONS(-DPLUGINS)
|
||||
LIST(APPEND STATIC_LIBS weechat_plugins)
|
||||
ADD_SUBDIRECTORY( plugins )
|
||||
ENDIF(NOT DISABLE_PLUGINS)
|
||||
|
||||
ADD_SUBDIRECTORY( common )
|
||||
List(APPEND STATIC_LIBS weechat_main)
|
||||
ADD_SUBDIRECTORY( irc )
|
||||
LIST(APPEND STATIC_LIBS weechat_irc)
|
||||
ADD_SUBDIRECTORY( gui )
|
||||
@@ -0,0 +1,33 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
SET(LIB_MAIN_SRC weechat.c weechat.h alias.c alias.h backtrace.c backtrace.h
|
||||
command.c command.h completion.c completion.h weelist.c weelist.h weeconfig.c
|
||||
weeconfig.h history.c history.h hotlist.c hotlist.h log.c log.h fifo.c fifo.h
|
||||
session.c session.h utf8.c utf8.h util.c util.h)
|
||||
|
||||
# Check for flock support
|
||||
INCLUDE(CheckSymbolExists)
|
||||
CHECK_INCLUDE_FILES("sys/file.h" HAVE_SYS_FILE_H)
|
||||
CHECK_SYMBOL_EXISTS(flock "sys/file.h" HAVE_FLOCK)
|
||||
|
||||
IF(ICONV_FOUND)
|
||||
ADD_DEFINITIONS( -DHAVE_ICONV )
|
||||
ENDIF(ICONV_FOUND)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR})
|
||||
ADD_LIBRARY(weechat_main STATIC ${LIB_MAIN_SRC})
|
||||
+12
-16
@@ -299,40 +299,36 @@ alias_replace_args (char *alias_args, char *user_args)
|
||||
*/
|
||||
|
||||
char *
|
||||
alias_replace_vars (char *string)
|
||||
alias_replace_vars (t_irc_server *server, t_irc_channel *channel, char *string)
|
||||
{
|
||||
char *nick, *channel, *server;
|
||||
char *var_nick, *var_channel, *var_server;
|
||||
char empty_string[1] = { '\0' };
|
||||
char *res, *temp;
|
||||
|
||||
nick = (SERVER(gui_current_window->buffer)
|
||||
&& SERVER(gui_current_window->buffer)->nick) ?
|
||||
SERVER(gui_current_window->buffer)->nick : empty_string;
|
||||
channel = (CHANNEL(gui_current_window->buffer)) ?
|
||||
CHANNEL(gui_current_window->buffer)->name : empty_string;
|
||||
server = (SERVER(gui_current_window->buffer)) ?
|
||||
SERVER(gui_current_window->buffer)->name : empty_string;
|
||||
|
||||
var_nick = (server && server->nick) ? server->nick : empty_string;
|
||||
var_channel = (channel) ? channel->name : empty_string;
|
||||
var_server = (server) ? server->name : empty_string;
|
||||
|
||||
/* replace nick */
|
||||
temp = weechat_strreplace (string, "$nick", nick);
|
||||
temp = weechat_strreplace (string, "$nick", var_nick);
|
||||
if (!temp)
|
||||
return NULL;
|
||||
res = temp;
|
||||
|
||||
|
||||
/* replace channel */
|
||||
temp = weechat_strreplace (res, "$channel", channel);
|
||||
temp = weechat_strreplace (res, "$channel", var_channel);
|
||||
free (res);
|
||||
if (!temp)
|
||||
return NULL;
|
||||
res = temp;
|
||||
|
||||
|
||||
/* replace server */
|
||||
temp = weechat_strreplace (res, "$server", server);
|
||||
temp = weechat_strreplace (res, "$server", var_server);
|
||||
free (res);
|
||||
if (!temp)
|
||||
return NULL;
|
||||
res = temp;
|
||||
|
||||
|
||||
/* return result */
|
||||
return res;
|
||||
}
|
||||
|
||||
+3
-1
@@ -21,6 +21,8 @@
|
||||
#ifndef __WEECHAT_ALIAS_H
|
||||
#define __WEECHAT_ALIAS_H 1
|
||||
|
||||
#include "../irc/irc.h"
|
||||
|
||||
typedef struct t_weechat_alias t_weechat_alias;
|
||||
|
||||
struct t_weechat_alias
|
||||
@@ -39,7 +41,7 @@ extern t_weechat_alias *alias_search (char *);
|
||||
extern t_weechat_alias *alias_new (char *, char *);
|
||||
extern char *alias_get_final_command (t_weechat_alias *);
|
||||
extern char *alias_replace_args (char *, char *);
|
||||
extern char *alias_replace_vars (char *);
|
||||
extern char *alias_replace_vars (t_irc_server *, t_irc_channel *, char *);
|
||||
extern void alias_free (t_weechat_alias *);
|
||||
extern void alias_free_all ();
|
||||
|
||||
|
||||
+369
-176
@@ -71,7 +71,7 @@ t_weechat_command weechat_commands[] =
|
||||
"server,\n"
|
||||
"channel: jump to buffer by server and/or channel name\n"
|
||||
" number: jump to buffer by number"),
|
||||
"move|close|list|notify", 0, MAX_ARGS, 0, NULL, weechat_cmd_buffer },
|
||||
"move|close|list|notify|%S|%C %S|%C", 0, MAX_ARGS, 0, NULL, weechat_cmd_buffer },
|
||||
{ "builtin", N_("launch WeeChat/IRC builtin command (do not look at plugins handlers or aliases)"),
|
||||
N_("command"),
|
||||
N_("command: command to execute (a '/' is automatically added if not found at beginning of command)\n"),
|
||||
@@ -81,14 +81,16 @@ t_weechat_command weechat_commands[] =
|
||||
N_(" -all: clear all buffers\n"
|
||||
"number: clear buffer by number"),
|
||||
"-all", 0, 1, 0, weechat_cmd_clear, NULL },
|
||||
{ "connect", N_("connect to a server"),
|
||||
N_("[servername]"),
|
||||
N_("servername: server name to connect"),
|
||||
"%S", 0, 1, 0, weechat_cmd_connect, NULL },
|
||||
{ "disconnect", N_("disconnect from a server"),
|
||||
N_("[servername]"),
|
||||
N_("servername: server name to disconnect"),
|
||||
"%S", 0, 1, 0, weechat_cmd_disconnect, NULL },
|
||||
{ "connect", N_("connect to server(s)"),
|
||||
N_("[-all | servername [servername ...]]"),
|
||||
N_(" -all: connect to all servers\n"
|
||||
"servername: server name to connect"),
|
||||
"%S|-all", 0, MAX_ARGS, 0, weechat_cmd_connect, NULL },
|
||||
{ "disconnect", N_("disconnect from server(s)"),
|
||||
N_("[-all | servername [servername ...]]"),
|
||||
N_(" -all: disconnect from all servers\n"
|
||||
"servername: server name to disconnect"),
|
||||
"%S|-all", 0, MAX_ARGS, 0, weechat_cmd_disconnect, NULL },
|
||||
{ "dcc", N_("starts DCC (file or chat) or close chat"),
|
||||
N_("action [nickname [file]]"),
|
||||
N_(" action: 'send' (file) or 'chat' or 'close' (chat)\n"
|
||||
@@ -149,6 +151,11 @@ t_weechat_command weechat_commands[] =
|
||||
" unload: unload one or all plugins\n\n"
|
||||
"Without argument, /plugin command lists loaded plugins."),
|
||||
"list|listfull|load|autoload|reload|unload %P", 0, 2, 0, weechat_cmd_plugin, NULL },
|
||||
{ "reconnect", N_("reconnect to server(s)"),
|
||||
N_("[-all | servername [servername ...]]"),
|
||||
N_(" -all: reconnect to all servers\n"
|
||||
"servername: server name to reconnect"),
|
||||
"%S|-all", 0, MAX_ARGS, 0, weechat_cmd_reconnect, NULL },
|
||||
{ "server", N_("list, add or remove servers"),
|
||||
N_("[servername] | "
|
||||
"[servername hostname port [-auto | -noauto] [-ipv6] [-ssl] [-pwd password] [-nicks nick1 "
|
||||
@@ -251,7 +258,8 @@ command_index_build ()
|
||||
while (weechat_commands[i].command_name)
|
||||
{
|
||||
(void) weelist_add (&index_commands, &last_index_command,
|
||||
weechat_commands[i].command_name);
|
||||
weechat_commands[i].command_name,
|
||||
WEELIST_POS_SORT);
|
||||
i++;
|
||||
}
|
||||
i = 0;
|
||||
@@ -259,7 +267,8 @@ command_index_build ()
|
||||
{
|
||||
if (irc_commands[i].cmd_function_args || irc_commands[i].cmd_function_1arg)
|
||||
(void) weelist_add (&index_commands, &last_index_command,
|
||||
irc_commands[i].command_name);
|
||||
irc_commands[i].command_name,
|
||||
WEELIST_POS_SORT);
|
||||
i++;
|
||||
}
|
||||
}
|
||||
@@ -370,7 +379,7 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
|
||||
rc = -1;
|
||||
else
|
||||
{
|
||||
vars_replaced = alias_replace_vars (ptr_args);
|
||||
vars_replaced = alias_replace_vars (server, channel, ptr_args);
|
||||
rc = plugin_cmd_handler_exec ((server) ? server->name : "", command + 1,
|
||||
(vars_replaced) ? vars_replaced : ptr_args);
|
||||
if (vars_replaced)
|
||||
@@ -420,7 +429,7 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
|
||||
ptr_next_cmd = ptr_cmd;
|
||||
ptr_next_cmd++;
|
||||
|
||||
vars_replaced = alias_replace_vars (*ptr_cmd);
|
||||
vars_replaced = alias_replace_vars (server, channel, *ptr_cmd);
|
||||
new_ptr_cmd = (vars_replaced) ? vars_replaced : *ptr_cmd;
|
||||
args_replaced = alias_replace_args (new_ptr_cmd, ptr_args);
|
||||
if (args_replaced)
|
||||
@@ -658,7 +667,7 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
|
||||
if (cfg_irc_send_unknown_commands)
|
||||
{
|
||||
if (ptr_args)
|
||||
unknown_command = (char *)malloc (strlen (command + 1) + 2 + strlen (ptr_args) + 1);
|
||||
unknown_command = (char *)malloc (strlen (command + 1) + 1 + strlen (ptr_args) + 1);
|
||||
else
|
||||
unknown_command = (char *)malloc (strlen (command + 1) + 1);
|
||||
|
||||
@@ -667,10 +676,10 @@ exec_weechat_command (t_irc_server *server, t_irc_channel *channel, char *string
|
||||
strcpy (unknown_command, command + 1);
|
||||
if (ptr_args)
|
||||
{
|
||||
strcat (unknown_command, " :");
|
||||
strcat (unknown_command, " ");
|
||||
strcat (unknown_command, ptr_args);
|
||||
}
|
||||
irc_cmd_send_quote (server, channel, unknown_command);
|
||||
irc_send_cmd_quote (server, channel, unknown_command);
|
||||
free (unknown_command);
|
||||
}
|
||||
}
|
||||
@@ -716,7 +725,7 @@ user_message_display (t_irc_server *server, t_gui_buffer *buffer, char *text)
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_nick = nick_search (CHANNEL(buffer), server->nick);
|
||||
ptr_nick = irc_nick_search (CHANNEL(buffer), server->nick);
|
||||
if (ptr_nick)
|
||||
{
|
||||
irc_display_nick (buffer, ptr_nick, NULL,
|
||||
@@ -748,33 +757,42 @@ void
|
||||
user_message (t_irc_server *server, t_gui_buffer *buffer, char *text)
|
||||
{
|
||||
int max_length;
|
||||
char *pos, *pos_next, *pos_max, *next, saved_char;
|
||||
char *pos, *pos_next, *pos_max, *next, saved_char, *last_space;
|
||||
|
||||
if (!text || !text[0])
|
||||
return;
|
||||
|
||||
next = NULL;
|
||||
last_space = NULL;
|
||||
saved_char = '\0';
|
||||
|
||||
max_length = 512 - 16 - 65 - 10 - strlen (server->nick) -
|
||||
strlen (CHANNEL(buffer)->name);
|
||||
|
||||
next = NULL;
|
||||
saved_char = '\0';
|
||||
if ((int)strlen (text) > max_length)
|
||||
if (max_length > 0)
|
||||
{
|
||||
pos = text;
|
||||
pos_max = text + max_length;
|
||||
while (pos && pos[0])
|
||||
if ((int)strlen (text) > max_length)
|
||||
{
|
||||
pos_next = utf8_next_char (pos);
|
||||
if (pos_next > pos_max)
|
||||
break;
|
||||
pos = pos_next;
|
||||
pos = text;
|
||||
pos_max = text + max_length;
|
||||
while (pos && pos[0])
|
||||
{
|
||||
if (pos[0] == ' ')
|
||||
last_space = pos;
|
||||
pos_next = utf8_next_char (pos);
|
||||
if (pos_next > pos_max)
|
||||
break;
|
||||
pos = pos_next;
|
||||
}
|
||||
if (last_space && (last_space < pos))
|
||||
pos = last_space + 1;
|
||||
saved_char = pos[0];
|
||||
pos[0] = '\0';
|
||||
next = pos;
|
||||
}
|
||||
saved_char = pos[0];
|
||||
pos[0] = '\0';
|
||||
next = pos;
|
||||
}
|
||||
|
||||
server_sendf_queued (server, "PRIVMSG %s :%s", CHANNEL(buffer)->name, text);
|
||||
irc_server_sendf_queued (server, "PRIVMSG %s :%s", CHANNEL(buffer)->name, text);
|
||||
user_message_display (server, buffer, text);
|
||||
|
||||
if (next)
|
||||
@@ -845,7 +863,7 @@ user_command (t_irc_server *server, t_irc_channel *channel, char *command, int o
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
if (is_command (ptr_cmd))
|
||||
{
|
||||
@@ -872,9 +890,9 @@ user_command (t_irc_server *server, t_irc_channel *channel, char *command, int o
|
||||
}
|
||||
else
|
||||
{
|
||||
dcc_chat_sendf ((t_irc_dcc *)(CHANNEL(buffer)->dcc_chat),
|
||||
"%s\r\n",
|
||||
(command_with_colors) ? command_with_colors : ptr_cmd);
|
||||
irc_dcc_chat_sendf ((t_irc_dcc *)(CHANNEL(buffer)->dcc_chat),
|
||||
"%s\r\n",
|
||||
(command_with_colors) ? command_with_colors : ptr_cmd);
|
||||
user_message_display (server, buffer,
|
||||
(command_with_colors) ?
|
||||
command_with_colors : ptr_cmd);
|
||||
@@ -945,7 +963,8 @@ weechat_cmd_alias (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
if (!alias_new (arguments, pos))
|
||||
return -1;
|
||||
if (weelist_add (&index_commands, &last_index_command, arguments))
|
||||
if (weelist_add (&index_commands, &last_index_command, arguments,
|
||||
WEELIST_POS_SORT))
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("Alias \"%s\" => \"%s\" created\n"),
|
||||
@@ -1080,7 +1099,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
char *error, *pos, **argv;
|
||||
int argc, target_buffer, count;
|
||||
|
||||
irc_find_context (server, channel, &window, &buffer);
|
||||
gui_buffer_find_context (server, channel, &window, &buffer);
|
||||
|
||||
argv = explode_string (arguments, " ", 0, &argc);
|
||||
|
||||
@@ -1170,7 +1189,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
free_exploded_string (argv);
|
||||
return -1;
|
||||
}
|
||||
server_disconnect (SERVER(buffer), 0);
|
||||
irc_server_disconnect (SERVER(buffer), 0);
|
||||
ptr_server = SERVER(buffer);
|
||||
if (!buffer->all_servers)
|
||||
{
|
||||
@@ -1195,7 +1214,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
ptr_server = SERVER(buffer);
|
||||
ptr_channel = CHANNEL(buffer);
|
||||
gui_buffer_free (ptr_channel->buffer, 1);
|
||||
channel_free (ptr_server, ptr_channel);
|
||||
irc_channel_free (ptr_server, ptr_channel);
|
||||
gui_status_draw (gui_current_window->buffer, 1);
|
||||
gui_input_draw (gui_current_window->buffer, 1);
|
||||
}
|
||||
@@ -1211,7 +1230,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
if (pos)
|
||||
pos += 6;
|
||||
CHANNEL(buffer)->close = 1;
|
||||
irc_cmd_send_part (SERVER(buffer),
|
||||
irc_send_cmd_part (SERVER(buffer),
|
||||
CHANNEL(buffer),
|
||||
pos);
|
||||
}
|
||||
@@ -1221,7 +1240,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
ptr_server = SERVER(buffer);
|
||||
gui_buffer_free (buffer, 1);
|
||||
if (ptr_channel)
|
||||
channel_free (ptr_server, ptr_channel);
|
||||
irc_channel_free (ptr_server, ptr_channel);
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1246,7 +1265,7 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
gui_printf (NULL, " %s:%d",
|
||||
ptr_server->name,
|
||||
server_get_default_notify_level (ptr_server));
|
||||
irc_server_get_default_notify_level (ptr_server));
|
||||
count++;
|
||||
}
|
||||
}
|
||||
@@ -1305,8 +1324,8 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
if (BUFFER_IS_SERVER(buffer))
|
||||
{
|
||||
server_set_default_notify_level (SERVER(buffer),
|
||||
number);
|
||||
irc_server_set_default_notify_level (SERVER(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New default notify level for server %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_SERVER),
|
||||
@@ -1318,9 +1337,9 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
else
|
||||
{
|
||||
channel_set_notify_level (SERVER(buffer),
|
||||
CHANNEL(buffer),
|
||||
number);
|
||||
irc_channel_set_notify_level (SERVER(buffer),
|
||||
CHANNEL(buffer),
|
||||
number);
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("New notify level for %s%s%s: %s%d %s"),
|
||||
GUI_COLOR(COLOR_WIN_CHAT_CHANNEL),
|
||||
@@ -1408,10 +1427,11 @@ weechat_cmd_buffer (t_irc_server *server, t_irc_channel *channel,
|
||||
ptr_buffer = gui_buffer_search (argv[0], argv[1]);
|
||||
else
|
||||
{
|
||||
if (string_is_channel (argv[0]))
|
||||
ptr_buffer = gui_buffer_search (NULL, argv[0]);
|
||||
else
|
||||
ptr_server = irc_server_search (argv[0]);
|
||||
if (ptr_server)
|
||||
ptr_buffer = gui_buffer_search (argv[0], NULL);
|
||||
else
|
||||
ptr_buffer = gui_buffer_search (NULL, argv[0]);
|
||||
}
|
||||
if (ptr_buffer)
|
||||
{
|
||||
@@ -1502,7 +1522,7 @@ weechat_cmd_clear (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
else
|
||||
{
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_clear (buffer);
|
||||
}
|
||||
|
||||
@@ -1510,7 +1530,48 @@ weechat_cmd_clear (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_cmd_connect: connect to a server
|
||||
* weechat_cmd_connect_one_server: connect to one server
|
||||
* return 0 if error, 1 if ok
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_cmd_connect_one_server (t_irc_server *server, t_gui_window *window)
|
||||
{
|
||||
if (server->is_connected)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s already connected to server \"%s\"!\n"),
|
||||
WEECHAT_ERROR, server->name);
|
||||
return 0;
|
||||
}
|
||||
if (server->child_pid > 0)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s currently connecting to server \"%s\"!\n"),
|
||||
WEECHAT_ERROR, server->name);
|
||||
return 0;
|
||||
}
|
||||
if (!server->buffer)
|
||||
{
|
||||
if (!gui_buffer_new (window, server, NULL,
|
||||
BUFFER_TYPE_STANDARD, 1))
|
||||
return 0;
|
||||
}
|
||||
if (irc_server_connect (server))
|
||||
{
|
||||
server->reconnect_start = 0;
|
||||
server->reconnect_join = (server->channels) ? 1 : 0;
|
||||
gui_status_draw (server->buffer, 1);
|
||||
}
|
||||
|
||||
/* connect ok */
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_cmd_connect: connect to server(s)
|
||||
*/
|
||||
|
||||
int
|
||||
@@ -1520,51 +1581,52 @@ weechat_cmd_connect (t_irc_server *server, t_irc_channel *channel,
|
||||
t_gui_window *window;
|
||||
t_gui_buffer *buffer;
|
||||
t_irc_server *ptr_server;
|
||||
int i, connect_ok;
|
||||
|
||||
irc_find_context (server, channel, &window, &buffer);
|
||||
gui_buffer_find_context (server, channel, &window, &buffer);
|
||||
|
||||
if (argc == 1)
|
||||
ptr_server = server_search (argv[0]);
|
||||
if (argc == 0)
|
||||
connect_ok = weechat_cmd_connect_one_server (server, window);
|
||||
else
|
||||
ptr_server = server;
|
||||
|
||||
if (ptr_server)
|
||||
{
|
||||
if (ptr_server->is_connected)
|
||||
connect_ok = 1;
|
||||
|
||||
if (ascii_strcasecmp (argv[0], "-all") == 0)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s already connected to server \"%s\"!\n"),
|
||||
WEECHAT_ERROR, ptr_server->name);
|
||||
return -1;
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
if (!ptr_server->is_connected && (ptr_server->child_pid == 0))
|
||||
{
|
||||
if (!weechat_cmd_connect_one_server (ptr_server, window))
|
||||
connect_ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ptr_server->child_pid > 0)
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s currently connecting to server \"%s\"!\n"),
|
||||
WEECHAT_ERROR, ptr_server->name);
|
||||
return -1;
|
||||
}
|
||||
if (!ptr_server->buffer)
|
||||
{
|
||||
if (!gui_buffer_new (window, ptr_server, NULL,
|
||||
BUFFER_TYPE_STANDARD, 1))
|
||||
return -1;
|
||||
}
|
||||
if (server_connect (ptr_server))
|
||||
{
|
||||
ptr_server->reconnect_start = 0;
|
||||
ptr_server->reconnect_join = (ptr_server->channels) ? 1 : 0;
|
||||
gui_status_draw (ptr_server->buffer, 1);
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
ptr_server = irc_server_search (argv[i]);
|
||||
if (ptr_server)
|
||||
{
|
||||
if (!weechat_cmd_connect_one_server (ptr_server, window))
|
||||
connect_ok = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL, _("%s server \"%s\" not found\n"),
|
||||
WEECHAT_ERROR, argv[i]);
|
||||
connect_ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL, _("%s server not found\n"), WEECHAT_ERROR);
|
||||
|
||||
if (!connect_ok)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1579,7 +1641,7 @@ weechat_cmd_dcc (t_irc_server *server, t_irc_channel *channel,
|
||||
t_gui_buffer *buffer;
|
||||
char *pos_nick, *pos_file;
|
||||
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
/* DCC SEND file */
|
||||
if (strncasecmp (arguments, "send", 4) == 0)
|
||||
@@ -1610,7 +1672,7 @@ weechat_cmd_dcc (t_irc_server *server, t_irc_channel *channel,
|
||||
while (pos_file[0] == ' ')
|
||||
pos_file++;
|
||||
|
||||
dcc_send_request (server, DCC_FILE_SEND, pos_nick, pos_file);
|
||||
irc_dcc_send_request (server, DCC_FILE_SEND, pos_nick, pos_file);
|
||||
}
|
||||
/* DCC CHAT */
|
||||
else if (strncasecmp (arguments, "chat", 4) == 0)
|
||||
@@ -1627,7 +1689,7 @@ weechat_cmd_dcc (t_irc_server *server, t_irc_channel *channel,
|
||||
while (pos_nick[0] == ' ')
|
||||
pos_nick++;
|
||||
|
||||
dcc_send_request (server, DCC_CHAT_SEND, pos_nick, NULL);
|
||||
irc_dcc_send_request (server, DCC_CHAT_SEND, pos_nick, NULL);
|
||||
}
|
||||
/* close DCC CHAT */
|
||||
else if (ascii_strcasecmp (arguments, "close") == 0)
|
||||
@@ -1635,8 +1697,8 @@ weechat_cmd_dcc (t_irc_server *server, t_irc_channel *channel,
|
||||
if (BUFFER_IS_PRIVATE(buffer) &&
|
||||
CHANNEL(buffer)->dcc_chat)
|
||||
{
|
||||
dcc_close ((t_irc_dcc *)(CHANNEL(buffer)->dcc_chat), DCC_ABORTED);
|
||||
dcc_redraw (1);
|
||||
irc_dcc_close ((t_irc_dcc *)(CHANNEL(buffer)->dcc_chat), DCC_ABORTED);
|
||||
irc_dcc_redraw (1);
|
||||
}
|
||||
}
|
||||
/* unknown DCC action */
|
||||
@@ -1729,7 +1791,7 @@ weechat_cmd_debug (t_irc_server *server, t_irc_channel *channel,
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
server_outqueue_free_all (ptr_server);
|
||||
irc_server_outqueue_free_all (ptr_server);
|
||||
}
|
||||
gui_printf_nolog (NULL, "\n");
|
||||
gui_printf_nolog (NULL, "DEBUG: outqueue DELETED for all servers.\n");
|
||||
@@ -1747,7 +1809,38 @@ weechat_cmd_debug (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_cmd_disconnect: disconnect from a server
|
||||
* weechat_cmd_disconnect_one_server: disconnect from a server
|
||||
* return 0 if error, 1 if ok
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_cmd_disconnect_one_server (t_irc_server *server)
|
||||
{
|
||||
if ((!server->is_connected) && (server->child_pid == 0)
|
||||
&& (server->reconnect_start == 0))
|
||||
{
|
||||
irc_display_prefix (NULL, server->buffer, PREFIX_ERROR);
|
||||
gui_printf (server->buffer,
|
||||
_("%s not connected to server \"%s\"!\n"),
|
||||
WEECHAT_ERROR, server->name);
|
||||
return 0;
|
||||
}
|
||||
if (server->reconnect_start > 0)
|
||||
{
|
||||
irc_display_prefix (NULL, server->buffer, PREFIX_INFO);
|
||||
gui_printf (server->buffer,
|
||||
_("Auto-reconnection is cancelled\n"));
|
||||
}
|
||||
irc_send_quit_server (server, NULL);
|
||||
irc_server_disconnect (server, 0);
|
||||
gui_status_draw (server->buffer, 1);
|
||||
|
||||
/* disconnect ok */
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_cmd_disconnect: disconnect from server(s)
|
||||
*/
|
||||
|
||||
int
|
||||
@@ -1756,41 +1849,53 @@ weechat_cmd_disconnect (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
t_gui_buffer *buffer;
|
||||
t_irc_server *ptr_server;
|
||||
int i, disconnect_ok;
|
||||
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
if (argc == 1)
|
||||
ptr_server = server_search (argv[0]);
|
||||
if (argc == 0)
|
||||
disconnect_ok = weechat_cmd_disconnect_one_server (server);
|
||||
else
|
||||
ptr_server = server;
|
||||
|
||||
if (ptr_server)
|
||||
{
|
||||
if ((!ptr_server->is_connected) && (ptr_server->child_pid == 0)
|
||||
&& (ptr_server->reconnect_start == 0))
|
||||
disconnect_ok = 1;
|
||||
|
||||
if (ascii_strcasecmp (argv[0], "-all") == 0)
|
||||
{
|
||||
irc_display_prefix (NULL, ptr_server->buffer, PREFIX_ERROR);
|
||||
gui_printf (ptr_server->buffer,
|
||||
_("%s not connected to server \"%s\"!\n"),
|
||||
WEECHAT_ERROR, ptr_server->name);
|
||||
return -1;
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
if ((ptr_server->is_connected) || (ptr_server->child_pid != 0)
|
||||
|| (ptr_server->reconnect_start != 0))
|
||||
{
|
||||
if (!weechat_cmd_disconnect_one_server (ptr_server))
|
||||
disconnect_ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (ptr_server->reconnect_start > 0)
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, ptr_server->buffer, PREFIX_INFO);
|
||||
gui_printf (ptr_server->buffer,
|
||||
_("Auto-reconnection is cancelled\n"));
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
ptr_server = irc_server_search (argv[i]);
|
||||
if (ptr_server)
|
||||
{
|
||||
if (!weechat_cmd_disconnect_one_server (ptr_server))
|
||||
disconnect_ok = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL, _("%s server \"%s\" not found\n"),
|
||||
WEECHAT_ERROR, argv[i]);
|
||||
disconnect_ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
irc_send_quit_server (ptr_server, NULL);
|
||||
server_disconnect (ptr_server, 0);
|
||||
gui_status_draw (buffer, 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL, _("%s server not found\n"), WEECHAT_ERROR);
|
||||
|
||||
if (!disconnect_ok)
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1977,7 +2082,7 @@ weechat_cmd_history (t_irc_server *server, t_irc_channel *channel,
|
||||
int n_total;
|
||||
int n_user;
|
||||
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
n_user = cfg_history_display_default;
|
||||
|
||||
@@ -2053,7 +2158,7 @@ weechat_cmd_ignore (t_irc_server *server, t_irc_channel *channel,
|
||||
t_irc_ignore *ptr_ignore;
|
||||
int i;
|
||||
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
ptr_ignore = NULL;
|
||||
switch (argc)
|
||||
@@ -2085,22 +2190,22 @@ weechat_cmd_ignore (t_irc_server *server, t_irc_channel *channel,
|
||||
return 0;
|
||||
break;
|
||||
case 1:
|
||||
ptr_ignore = ignore_add (argv[0], "*", "*",
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
ptr_ignore = irc_ignore_add (argv[0], "*", "*",
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
break;
|
||||
case 2:
|
||||
ptr_ignore = ignore_add (argv[0], argv[1], "*",
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
ptr_ignore = irc_ignore_add (argv[0], argv[1], "*",
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
break;
|
||||
case 3:
|
||||
ptr_ignore = ignore_add (argv[0], argv[1], argv[2],
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
ptr_ignore = irc_ignore_add (argv[0], argv[1], argv[2],
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
break;
|
||||
case 4:
|
||||
ptr_ignore = ignore_add (argv[0], argv[1], argv[2], argv[3]);
|
||||
ptr_ignore = irc_ignore_add (argv[0], argv[1], argv[2], argv[3]);
|
||||
break;
|
||||
}
|
||||
if (ptr_ignore)
|
||||
@@ -2158,7 +2263,7 @@ weechat_cmd_key (t_irc_server *server, t_irc_channel *channel,
|
||||
t_gui_key *ptr_key;
|
||||
void (*ptr_function)(t_gui_window *, char *);
|
||||
|
||||
irc_find_context (server, channel, &window, &buffer);
|
||||
gui_buffer_find_context (server, channel, &window, &buffer);
|
||||
|
||||
if (arguments)
|
||||
{
|
||||
@@ -2644,6 +2749,94 @@ weechat_cmd_plugin (t_irc_server *server, t_irc_channel *channel,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_cmd_reconnect_one_server: reconnect to a server
|
||||
* return 0 if error, 1 if ok
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_cmd_reconnect_one_server (t_irc_server *server)
|
||||
{
|
||||
if ((!server->is_connected) && (server->child_pid == 0))
|
||||
{
|
||||
irc_display_prefix (NULL, server->buffer, PREFIX_ERROR);
|
||||
gui_printf (server->buffer,
|
||||
_("%s not connected to server \"%s\"!\n"),
|
||||
WEECHAT_ERROR, server->name);
|
||||
return 0;
|
||||
}
|
||||
irc_send_quit_server (server, NULL);
|
||||
irc_server_disconnect (server, 0);
|
||||
if (irc_server_connect (server))
|
||||
{
|
||||
server->reconnect_start = 0;
|
||||
server->reconnect_join = (server->channels) ? 1 : 0;
|
||||
}
|
||||
gui_status_draw (server->buffer, 1);
|
||||
|
||||
/* reconnect ok */
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_cmd_reconnect: reconnect to server(s)
|
||||
*/
|
||||
|
||||
int
|
||||
weechat_cmd_reconnect (t_irc_server *server, t_irc_channel *channel,
|
||||
int argc, char **argv)
|
||||
{
|
||||
t_gui_buffer *buffer;
|
||||
t_irc_server *ptr_server;
|
||||
int i, reconnect_ok;
|
||||
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
if (argc == 0)
|
||||
reconnect_ok = weechat_cmd_reconnect_one_server (server);
|
||||
else
|
||||
{
|
||||
reconnect_ok = 1;
|
||||
|
||||
if (ascii_strcasecmp (argv[0], "-all") == 0)
|
||||
{
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
if ((ptr_server->is_connected) || (ptr_server->child_pid != 0))
|
||||
{
|
||||
if (!weechat_cmd_reconnect_one_server (ptr_server))
|
||||
reconnect_ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < argc; i++)
|
||||
{
|
||||
ptr_server = irc_server_search (argv[i]);
|
||||
if (ptr_server)
|
||||
{
|
||||
if (!weechat_cmd_reconnect_one_server (ptr_server))
|
||||
reconnect_ok = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL, _("%s server \"%s\" not found\n"),
|
||||
WEECHAT_ERROR, argv[i]);
|
||||
reconnect_ok = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!reconnect_ok)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* weechat_cmd_save: save WeeChat and plugins options to disk
|
||||
*/
|
||||
@@ -2700,7 +2893,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
t_gui_buffer *ptr_buffer;
|
||||
char *server_name;
|
||||
|
||||
irc_find_context (server, channel, &window, &buffer);
|
||||
gui_buffer_find_context (server, channel, &window, &buffer);
|
||||
|
||||
if ((argc == 0) || (argc == 1))
|
||||
{
|
||||
@@ -2723,7 +2916,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr_server = server_search (argv[0]);
|
||||
ptr_server = irc_server_search (argv[0]);
|
||||
if (ptr_server)
|
||||
irc_display_server (ptr_server);
|
||||
else
|
||||
@@ -2754,7 +2947,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
|
||||
/* look for server by name */
|
||||
server_found = server_search (argv[1]);
|
||||
server_found = irc_server_search (argv[1]);
|
||||
if (!server_found)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
@@ -2784,7 +2977,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
|
||||
server_name = strdup (server_found->name);
|
||||
|
||||
server_free (server_found);
|
||||
irc_server_free (server_found);
|
||||
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
gui_printf (NULL, _("Server %s%s%s has been deleted\n"),
|
||||
@@ -2800,7 +2993,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
|
||||
/* init server struct */
|
||||
server_init (&server_tmp);
|
||||
irc_server_init (&server_tmp);
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
@@ -2808,17 +3001,17 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s missing parameters for \"%s\" command\n"),
|
||||
WEECHAT_ERROR, "server");
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (server_name_already_exists (argv[0]))
|
||||
if (irc_server_name_already_exists (argv[0]))
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
_("%s server \"%s\" already exists, can't create it!\n"),
|
||||
WEECHAT_ERROR, argv[0]);
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -2847,7 +3040,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s missing password for \"%s\" parameter\n"),
|
||||
WEECHAT_ERROR, "-pwd");
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
server_tmp.password = strdup (argv[++i]);
|
||||
@@ -2860,7 +3053,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s missing nick(s) for \"%s\" parameter\n"),
|
||||
WEECHAT_ERROR, "-nicks");
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
server_tmp.nick1 = strdup (argv[++i]);
|
||||
@@ -2875,7 +3068,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s missing password for \"%s\" parameter\n"),
|
||||
WEECHAT_ERROR, "-username");
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
server_tmp.username = strdup (argv[++i]);
|
||||
@@ -2888,7 +3081,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s missing password for \"%s\" parameter\n"),
|
||||
WEECHAT_ERROR, "-realname");
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
server_tmp.realname = strdup (argv[++i]);
|
||||
@@ -2901,7 +3094,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s missing command for \"%s\" parameter\n"),
|
||||
WEECHAT_ERROR, "-command");
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
server_tmp.command = strdup (argv[++i]);
|
||||
@@ -2914,7 +3107,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s missing password for \"%s\" parameter\n"),
|
||||
WEECHAT_ERROR, "-autojoin");
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
server_tmp.autojoin = strdup (argv[++i]);
|
||||
@@ -2923,16 +3116,16 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
}
|
||||
|
||||
/* create new server */
|
||||
new_server = server_new (server_tmp.name, server_tmp.autoconnect,
|
||||
server_tmp.autoreconnect,
|
||||
server_tmp.autoreconnect_delay,
|
||||
0, server_tmp.address, server_tmp.port,
|
||||
server_tmp.ipv6, server_tmp.ssl,
|
||||
server_tmp.password, server_tmp.nick1,
|
||||
server_tmp.nick2, server_tmp.nick3,
|
||||
server_tmp.username, server_tmp.realname,
|
||||
server_tmp.hostname,
|
||||
server_tmp.command, 1, server_tmp.autojoin, 1, NULL);
|
||||
new_server = irc_server_new (server_tmp.name, server_tmp.autoconnect,
|
||||
server_tmp.autoreconnect,
|
||||
server_tmp.autoreconnect_delay,
|
||||
0, server_tmp.address, server_tmp.port,
|
||||
server_tmp.ipv6, server_tmp.ssl,
|
||||
server_tmp.password, server_tmp.nick1,
|
||||
server_tmp.nick2, server_tmp.nick3,
|
||||
server_tmp.username, server_tmp.realname,
|
||||
server_tmp.hostname,
|
||||
server_tmp.command, 1, server_tmp.autojoin, 1, NULL);
|
||||
if (new_server)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
@@ -2947,7 +3140,7 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
gui_printf (NULL,
|
||||
_("%s unable to create server\n"),
|
||||
WEECHAT_ERROR);
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -2955,10 +3148,10 @@ weechat_cmd_server (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
(void) gui_buffer_new (window, new_server, NULL,
|
||||
BUFFER_TYPE_STANDARD, 1);
|
||||
server_connect (new_server);
|
||||
irc_server_connect (new_server);
|
||||
}
|
||||
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -3015,7 +3208,7 @@ weechat_cmd_set_display_option (t_config_option *option, char *prefix, void *val
|
||||
{
|
||||
if (cfg_log_hide_nickserv_pwd)
|
||||
{
|
||||
irc_hide_password (value2, 1);
|
||||
irc_display_hide_password (value2, 1);
|
||||
if (strcmp (*((char **)value), value2) != 0)
|
||||
gui_printf (NULL, _("%s(password hidden) "),
|
||||
GUI_COLOR(COLOR_WIN_CHAT));
|
||||
@@ -3111,7 +3304,7 @@ weechat_cmd_set (t_irc_server *server, t_irc_channel *channel,
|
||||
{
|
||||
/* server config option modification */
|
||||
pos[0] = '\0';
|
||||
ptr_server = server_search (option);
|
||||
ptr_server = irc_server_search (option);
|
||||
if (!ptr_server)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
@@ -3571,7 +3764,7 @@ weechat_cmd_unignore (t_irc_server *server, t_irc_channel *channel,
|
||||
char *error;
|
||||
int number, ret;
|
||||
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
ret = 0;
|
||||
switch (argc)
|
||||
@@ -3585,24 +3778,24 @@ weechat_cmd_unignore (t_irc_server *server, t_irc_channel *channel,
|
||||
error = NULL;
|
||||
number = strtol (argv[0], &error, 10);
|
||||
if ((error) && (error[0] == '\0'))
|
||||
ret = ignore_search_free_by_number (number);
|
||||
ret = irc_ignore_search_free_by_number (number);
|
||||
else
|
||||
ret = ignore_search_free (argv[0], "*", "*",
|
||||
ret = irc_ignore_search_free (argv[0], "*", "*",
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
break;
|
||||
case 2:
|
||||
ret = irc_ignore_search_free (argv[0], argv[1], "*",
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
break;
|
||||
case 2:
|
||||
ret = ignore_search_free (argv[0], argv[1], "*",
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
break;
|
||||
case 3:
|
||||
ret = ignore_search_free (argv[0], argv[1], argv[2],
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
ret = irc_ignore_search_free (argv[0], argv[1], argv[2],
|
||||
(SERVER(buffer)) ?
|
||||
SERVER(buffer)->name : "*");
|
||||
break;
|
||||
case 4:
|
||||
ret = ignore_search_free (argv[0], argv[1], argv[2], argv[3]);
|
||||
ret = irc_ignore_search_free (argv[0], argv[1], argv[2], argv[3]);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -3751,7 +3944,7 @@ weechat_cmd_uptime (t_irc_server *server, t_irc_channel *channel,
|
||||
int day, hour, min, sec;
|
||||
char string[256];
|
||||
|
||||
irc_find_context (server, channel, NULL, &buffer);
|
||||
gui_buffer_find_context (server, channel, NULL, &buffer);
|
||||
|
||||
running_time = time (NULL) - weechat_start_time;
|
||||
day = running_time / (60 * 60 * 24);
|
||||
@@ -3815,7 +4008,7 @@ weechat_cmd_window (t_irc_server *server, t_irc_channel *channel,
|
||||
char *error;
|
||||
long number;
|
||||
|
||||
irc_find_context (server, channel, &window, &buffer);
|
||||
gui_buffer_find_context (server, channel, &window, &buffer);
|
||||
|
||||
if ((argc == 0) || ((argc == 1) && (ascii_strcasecmp (argv[0], "list") == 0)))
|
||||
{
|
||||
|
||||
@@ -73,6 +73,7 @@ extern int weechat_cmd_ignore (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int weechat_cmd_key (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int weechat_cmd_panel (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int weechat_cmd_plugin (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int weechat_cmd_reconnect (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int weechat_cmd_save (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int weechat_cmd_server (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int weechat_cmd_set (t_irc_server *, t_irc_channel *, char *);
|
||||
|
||||
+327
-142
@@ -95,12 +95,14 @@ completion_free (t_completion *completion)
|
||||
free (completion->args);
|
||||
completion->args = NULL;
|
||||
|
||||
while (completion->completion_list)
|
||||
weelist_remove (&completion->completion_list,
|
||||
&completion->last_completion,
|
||||
completion->completion_list);
|
||||
weelist_remove_all (&completion->completion_list,
|
||||
&completion->last_completion);
|
||||
completion->completion_list = NULL;
|
||||
completion->last_completion = NULL;
|
||||
|
||||
if (completion->word_found)
|
||||
free (completion->word_found);
|
||||
completion->word_found = NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -203,20 +205,96 @@ completion_get_command_infos (t_completion *completion,
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_is_only_alphanum: return 1 if there is only alpha/num chars
|
||||
* in a string
|
||||
*/
|
||||
|
||||
int
|
||||
completion_is_only_alphanum (char *string)
|
||||
{
|
||||
while (string[0])
|
||||
{
|
||||
if (strchr (cfg_look_nick_completion_ignore, string[0]))
|
||||
return 0;
|
||||
string++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_strdup_alphanum: duplicate alpha/num chars in a string
|
||||
*/
|
||||
|
||||
char *
|
||||
completion_strdup_alphanum (char *string)
|
||||
{
|
||||
char *result, *pos;
|
||||
|
||||
result = (char *)malloc (strlen (string) + 1);
|
||||
pos = result;
|
||||
while (string[0])
|
||||
{
|
||||
if (!strchr (cfg_look_nick_completion_ignore, string[0]))
|
||||
{
|
||||
pos[0] = string[0];
|
||||
pos++;
|
||||
}
|
||||
string++;
|
||||
}
|
||||
pos[0] = '\0';
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_nickncmp: locale and case independent string comparison
|
||||
* with max length for nicks (alpha or digits only)
|
||||
*/
|
||||
|
||||
int
|
||||
completion_nickncmp (char *base_word, char *nick, int max)
|
||||
{
|
||||
char *base_word2, *nick2;
|
||||
int return_cmp;
|
||||
|
||||
if (!cfg_look_nick_completion_ignore
|
||||
|| !cfg_look_nick_completion_ignore[0]
|
||||
|| !base_word || !nick || !base_word[0] || !nick[0]
|
||||
|| (!completion_is_only_alphanum (base_word)))
|
||||
return ascii_strncasecmp (base_word, nick, max);
|
||||
|
||||
base_word2 = completion_strdup_alphanum (base_word);
|
||||
nick2 = completion_strdup_alphanum (nick);
|
||||
|
||||
return_cmp = ascii_strncasecmp (base_word2, nick2, strlen (base_word2));
|
||||
|
||||
free (base_word2);
|
||||
free (nick2);
|
||||
|
||||
return return_cmp;
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_list_add: add a word to completion word list
|
||||
*/
|
||||
|
||||
void
|
||||
completion_list_add (t_completion *completion, char *word)
|
||||
completion_list_add (t_completion *completion, char *word,
|
||||
int nick_completion, int position)
|
||||
{
|
||||
if (!word || !word[0])
|
||||
return;
|
||||
|
||||
if (!completion->base_word || !completion->base_word[0]
|
||||
|| (ascii_strncasecmp (completion->base_word, word,
|
||||
strlen (completion->base_word)) == 0))
|
||||
|| (nick_completion && (completion_nickncmp (completion->base_word, word,
|
||||
strlen (completion->base_word)) == 0))
|
||||
|| (!nick_completion && (ascii_strncasecmp (completion->base_word, word,
|
||||
strlen (completion->base_word)) == 0)))
|
||||
{
|
||||
weelist_add (&completion->completion_list,
|
||||
&completion->last_completion,
|
||||
word);
|
||||
word,
|
||||
position);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -231,7 +309,8 @@ completion_list_add_alias (t_completion *completion)
|
||||
|
||||
for (ptr_alias = weechat_alias; ptr_alias; ptr_alias = ptr_alias->next_alias)
|
||||
{
|
||||
completion_list_add (completion, ptr_alias->alias_name);
|
||||
completion_list_add (completion, ptr_alias->alias_name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -246,7 +325,7 @@ completion_list_add_alias_cmd (t_completion *completion)
|
||||
|
||||
for (ptr_list = index_commands; ptr_list; ptr_list = ptr_list->next_weelist)
|
||||
{
|
||||
completion_list_add (completion, ptr_list->data);
|
||||
completion_list_add (completion, ptr_list->data, 0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -259,24 +338,31 @@ completion_list_add_channel (t_completion *completion)
|
||||
{
|
||||
if (completion->channel)
|
||||
completion_list_add (completion,
|
||||
((t_irc_channel *)(completion->channel))->name);
|
||||
((t_irc_channel *)(completion->channel))->name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_list_add_server_channels: add server channels to completion list
|
||||
* completion_list_add_channels: add server channels to completion list
|
||||
*/
|
||||
|
||||
void
|
||||
completion_list_add_server_channels (t_completion *completion)
|
||||
completion_list_add_channels (t_completion *completion)
|
||||
{
|
||||
t_irc_server *ptr_server;
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
if (completion->server)
|
||||
{
|
||||
for (ptr_channel = ((t_irc_server *)(completion->server))->channels;
|
||||
ptr_channel; ptr_channel = ptr_channel->next_channel)
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
completion_list_add (completion, ptr_channel->name);
|
||||
for (ptr_channel = ptr_server->channels;
|
||||
ptr_channel; ptr_channel = ptr_channel->next_channel)
|
||||
{
|
||||
completion_list_add (completion, ptr_channel->name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -361,7 +447,8 @@ completion_list_add_filename (t_completion *completion)
|
||||
entry->d_name,
|
||||
S_ISDIR(statbuf.st_mode) ? DIR_SEPARATOR : "");
|
||||
|
||||
completion_list_add (completion, buffer);
|
||||
completion_list_add (completion, buffer,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -392,7 +479,8 @@ completion_list_add_plugin_cmd (t_completion *completion)
|
||||
ptr_handler; ptr_handler = ptr_handler->next_handler)
|
||||
{
|
||||
if (ptr_handler->type == PLUGIN_HANDLER_COMMAND)
|
||||
completion_list_add (completion, ptr_handler->command);
|
||||
completion_list_add (completion, ptr_handler->command,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
#else
|
||||
@@ -413,7 +501,8 @@ completion_list_add_irc_cmd_sent (t_completion *completion)
|
||||
for (i = 0; irc_commands[i].command_name; i++)
|
||||
{
|
||||
if (irc_commands[i].cmd_function_args || irc_commands[i].cmd_function_1arg)
|
||||
completion_list_add (completion, irc_commands[i].command_name);
|
||||
completion_list_add (completion, irc_commands[i].command_name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -429,7 +518,8 @@ completion_list_add_irc_cmd_recv (t_completion *completion)
|
||||
for (i = 0; irc_commands[i].command_name; i++)
|
||||
{
|
||||
if (irc_commands[i].recv_function)
|
||||
completion_list_add(completion, irc_commands[i].command_name);
|
||||
completion_list_add(completion, irc_commands[i].command_name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -444,7 +534,8 @@ completion_list_add_key_cmd (t_completion *completion)
|
||||
|
||||
for (i = 0; gui_key_functions[i].function_name; i++)
|
||||
{
|
||||
completion_list_add (completion, gui_key_functions[i].function_name);
|
||||
completion_list_add (completion, gui_key_functions[i].function_name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,9 +546,62 @@ completion_list_add_key_cmd (t_completion *completion)
|
||||
void
|
||||
completion_list_add_self_nick (t_completion *completion)
|
||||
{
|
||||
if (completion->server)
|
||||
completion_list_add (completion,
|
||||
((t_irc_server *)(completion->server))->nick,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_list_add_server_nicks: add server nicks to completion list
|
||||
*/
|
||||
|
||||
void
|
||||
completion_list_add_server_nicks (t_completion *completion)
|
||||
{
|
||||
t_irc_server *ptr_server;
|
||||
t_irc_channel *ptr_channel;
|
||||
t_irc_nick *ptr_nick;
|
||||
|
||||
if (completion->server)
|
||||
{
|
||||
completion_list_add (completion, ((t_irc_server *)(completion->server))->nick);
|
||||
for (ptr_server = (t_irc_server *)(completion->server); ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
for (ptr_channel = ptr_server->channels; ptr_channel;
|
||||
ptr_channel = ptr_channel->next_channel)
|
||||
{
|
||||
if ((!completion->channel || (t_irc_channel *)(completion->channel) != ptr_channel)
|
||||
&& (ptr_channel->type == CHANNEL_TYPE_CHANNEL))
|
||||
{
|
||||
for (ptr_nick = ptr_channel->nicks; ptr_nick;
|
||||
ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
completion_list_add (completion, ptr_nick->nick,
|
||||
1, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* add current channel nicks at beginning */
|
||||
if (completion->channel && (((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_CHANNEL))
|
||||
{
|
||||
for (ptr_nick = ((t_irc_channel *)(completion->channel))->nicks;
|
||||
ptr_nick; ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
completion_list_add (completion, ptr_nick->nick,
|
||||
1, WEELIST_POS_BEGINNING);
|
||||
}
|
||||
}
|
||||
|
||||
/* add self nick at the end */
|
||||
if (completion->server)
|
||||
completion_list_add (completion,
|
||||
((t_irc_server *)(completion->server))->nick,
|
||||
1, WEELIST_POS_END);
|
||||
|
||||
completion->arg_is_nick = 1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -469,22 +613,45 @@ void
|
||||
completion_list_add_channel_nicks (t_completion *completion)
|
||||
{
|
||||
t_irc_nick *ptr_nick;
|
||||
t_weelist *ptr_weelist;
|
||||
|
||||
if (completion->channel)
|
||||
{
|
||||
if (((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_CHANNEL)
|
||||
{
|
||||
/* add channel nicks */
|
||||
for (ptr_nick = ((t_irc_channel *)(completion->channel))->nicks;
|
||||
ptr_nick; ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
completion_list_add (completion, ptr_nick->nick);
|
||||
completion_list_add (completion, ptr_nick->nick,
|
||||
1, WEELIST_POS_SORT);
|
||||
}
|
||||
|
||||
/* add nicks speaking recently on this channel */
|
||||
if (cfg_look_nick_completion_smart)
|
||||
{
|
||||
for (ptr_weelist = ((t_irc_channel *)(completion->channel))->nicks_speaking;
|
||||
ptr_weelist; ptr_weelist = ptr_weelist->next_weelist)
|
||||
{
|
||||
if (irc_nick_search ((t_irc_channel *)(completion->channel),
|
||||
ptr_weelist->data))
|
||||
completion_list_add (completion, ptr_weelist->data,
|
||||
1, WEELIST_POS_BEGINNING);
|
||||
}
|
||||
}
|
||||
|
||||
/* add self nick at the end */
|
||||
if (completion->server)
|
||||
completion_list_add (completion,
|
||||
((t_irc_server *)(completion->server))->nick,
|
||||
1, WEELIST_POS_END);
|
||||
}
|
||||
if ((((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_PRIVATE)
|
||||
|| (((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_DCC_CHAT))
|
||||
{
|
||||
completion_list_add (completion,
|
||||
((t_irc_channel *)(completion->channel))->name);
|
||||
((t_irc_channel *)(completion->channel))->name,
|
||||
1, WEELIST_POS_SORT);
|
||||
}
|
||||
completion->arg_is_nick = 1;
|
||||
}
|
||||
@@ -508,7 +675,8 @@ completion_list_add_channel_nicks_hosts (t_completion *completion)
|
||||
for (ptr_nick = ((t_irc_channel *)(completion->channel))->nicks;
|
||||
ptr_nick; ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
completion_list_add (completion, ptr_nick->nick);
|
||||
completion_list_add (completion, ptr_nick->nick,
|
||||
1, WEELIST_POS_SORT);
|
||||
if (ptr_nick->host)
|
||||
{
|
||||
length = strlen (ptr_nick->nick) + 1 +
|
||||
@@ -518,7 +686,8 @@ completion_list_add_channel_nicks_hosts (t_completion *completion)
|
||||
{
|
||||
snprintf (buf, length, "%s!%s",
|
||||
ptr_nick->nick, ptr_nick->host);
|
||||
completion_list_add (completion, buf);
|
||||
completion_list_add (completion, buf,
|
||||
1, WEELIST_POS_SORT);
|
||||
free (buf);
|
||||
}
|
||||
}
|
||||
@@ -528,7 +697,8 @@ completion_list_add_channel_nicks_hosts (t_completion *completion)
|
||||
|| (((t_irc_channel *)(completion->channel))->type == CHANNEL_TYPE_PRIVATE))
|
||||
{
|
||||
completion_list_add (completion,
|
||||
((t_irc_channel *)(completion->channel))->name);
|
||||
((t_irc_channel *)(completion->channel))->name,
|
||||
1, WEELIST_POS_SORT);
|
||||
}
|
||||
completion->arg_is_nick = 1;
|
||||
}
|
||||
@@ -553,7 +723,8 @@ completion_list_add_option (t_completion *completion)
|
||||
for (j = 0; weechat_options[i][j].option_name; j++)
|
||||
{
|
||||
completion_list_add (completion,
|
||||
weechat_options[i][j].option_name);
|
||||
weechat_options[i][j].option_name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -565,7 +736,7 @@ completion_list_add_option (t_completion *completion)
|
||||
snprintf (option_name, sizeof (option_name), "%s.%s",
|
||||
ptr_server->name,
|
||||
weechat_options[CONFIG_SECTION_SERVER][i].option_name);
|
||||
completion_list_add (completion, option_name);
|
||||
completion_list_add (completion, option_name, 0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -583,7 +754,7 @@ completion_list_add_plugin_option (t_completion *completion)
|
||||
for (ptr_option = plugin_options; ptr_option;
|
||||
ptr_option = ptr_option->next_option)
|
||||
{
|
||||
completion_list_add (completion, ptr_option->name);
|
||||
completion_list_add (completion, ptr_option->name, 0, WEELIST_POS_SORT);
|
||||
}
|
||||
#else
|
||||
/* make C compiler happy */
|
||||
@@ -599,7 +770,8 @@ void
|
||||
completion_list_add_part (t_completion *completion)
|
||||
{
|
||||
if (cfg_irc_default_msg_part && cfg_irc_default_msg_part[0])
|
||||
completion_list_add (completion, cfg_irc_default_msg_part);
|
||||
completion_list_add (completion, cfg_irc_default_msg_part,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -615,7 +787,8 @@ completion_list_add_plugin (t_completion *completion)
|
||||
for (ptr_plugin = weechat_plugins; ptr_plugin;
|
||||
ptr_plugin = ptr_plugin->next_plugin)
|
||||
{
|
||||
completion_list_add (completion, ptr_plugin->name);
|
||||
completion_list_add (completion, ptr_plugin->name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
#else
|
||||
/* make C compiler happy */
|
||||
@@ -631,7 +804,8 @@ void
|
||||
completion_list_add_quit (t_completion *completion)
|
||||
{
|
||||
if (cfg_irc_default_msg_quit && cfg_irc_default_msg_quit[0])
|
||||
completion_list_add (completion, cfg_irc_default_msg_quit);
|
||||
completion_list_add (completion, cfg_irc_default_msg_quit,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -643,7 +817,8 @@ completion_list_add_server (t_completion *completion)
|
||||
{
|
||||
if (completion->server)
|
||||
completion_list_add (completion,
|
||||
((t_irc_server *)(completion->server))->name);
|
||||
((t_irc_server *)(completion->server))->name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -658,7 +833,8 @@ completion_list_add_servers (t_completion *completion)
|
||||
for (ptr_server = irc_servers; ptr_server;
|
||||
ptr_server = ptr_server->next_server)
|
||||
{
|
||||
completion_list_add (completion, ptr_server->name);
|
||||
completion_list_add (completion, ptr_server->name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -681,7 +857,8 @@ completion_list_add_topic (t_completion *completion)
|
||||
string = (char *)gui_color_decode ((unsigned char *)((t_irc_channel *)(completion->channel))->topic, 0);
|
||||
completion_list_add (completion,
|
||||
(string) ?
|
||||
string : ((t_irc_channel *)(completion->channel))->topic);
|
||||
string : ((t_irc_channel *)(completion->channel))->topic,
|
||||
0, WEELIST_POS_SORT);
|
||||
if (string)
|
||||
free (string);
|
||||
}
|
||||
@@ -713,26 +890,31 @@ completion_list_add_option_value (t_completion *completion)
|
||||
{
|
||||
case OPTION_TYPE_BOOLEAN:
|
||||
if (option_value && (*((int *)(option_value))))
|
||||
completion_list_add (completion, "on");
|
||||
completion_list_add (completion, "on",
|
||||
0, WEELIST_POS_SORT);
|
||||
else
|
||||
completion_list_add (completion, "off");
|
||||
completion_list_add (completion, "off",
|
||||
0, WEELIST_POS_SORT);
|
||||
break;
|
||||
case OPTION_TYPE_INT:
|
||||
snprintf (option_string, sizeof (option_string) - 1,
|
||||
"%d", (option_value) ? *((int *)(option_value)) : option->default_int);
|
||||
completion_list_add (completion, option_string);
|
||||
completion_list_add (completion, option_string,
|
||||
0, WEELIST_POS_SORT);
|
||||
break;
|
||||
case OPTION_TYPE_INT_WITH_STRING:
|
||||
completion_list_add (completion,
|
||||
(option_value) ?
|
||||
option->array_values[*((int *)(option_value))] :
|
||||
option->array_values[option->default_int]);
|
||||
option->array_values[option->default_int],
|
||||
0, WEELIST_POS_SORT);
|
||||
break;
|
||||
case OPTION_TYPE_COLOR:
|
||||
completion_list_add (completion,
|
||||
(option_value) ?
|
||||
gui_color_get_name (*((int *)(option_value))) :
|
||||
option->default_string);
|
||||
option->default_string,
|
||||
0, WEELIST_POS_SORT);
|
||||
break;
|
||||
case OPTION_TYPE_STRING:
|
||||
snprintf (option_string, sizeof (option_string) - 1,
|
||||
@@ -740,7 +922,8 @@ completion_list_add_option_value (t_completion *completion)
|
||||
((option_value) && (*((char **)(option_value)))) ?
|
||||
*((char **)(option_value)) :
|
||||
option->default_string);
|
||||
completion_list_add (completion, option_string);
|
||||
completion_list_add (completion, option_string,
|
||||
0, WEELIST_POS_SORT);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -768,7 +951,8 @@ completion_list_add_plugin_option_value (t_completion *completion)
|
||||
|
||||
ptr_option = plugin_config_search_internal (completion->args);
|
||||
if (ptr_option)
|
||||
completion_list_add (completion, ptr_option->value);
|
||||
completion_list_add (completion, ptr_option->value,
|
||||
0, WEELIST_POS_SORT);
|
||||
|
||||
if (pos)
|
||||
pos[0] = ' ';
|
||||
@@ -790,7 +974,8 @@ completion_list_add_weechat_cmd (t_completion *completion)
|
||||
|
||||
for (i = 0; weechat_commands[i].command_name; i++)
|
||||
{
|
||||
completion_list_add (completion, weechat_commands[i].command_name);
|
||||
completion_list_add (completion, weechat_commands[i].command_name,
|
||||
0, WEELIST_POS_SORT);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -819,7 +1004,8 @@ completion_build_list_template (t_completion *completion, char *template)
|
||||
word[word_offset] = '\0';
|
||||
weelist_add (&completion->completion_list,
|
||||
&completion->last_completion,
|
||||
word);
|
||||
word,
|
||||
WEELIST_POS_SORT);
|
||||
}
|
||||
word_offset = 0;
|
||||
break;
|
||||
@@ -844,7 +1030,7 @@ completion_build_list_template (t_completion *completion, char *template)
|
||||
completion_list_add_channel (completion);
|
||||
break;
|
||||
case 'C': /* all channels */
|
||||
completion_list_add_server_channels (completion);
|
||||
completion_list_add_channels (completion);
|
||||
break;
|
||||
case 'f': /* filename */
|
||||
completion_list_add_filename (completion);
|
||||
@@ -864,6 +1050,9 @@ completion_build_list_template (t_completion *completion, char *template)
|
||||
case 'm': /* self nickname */
|
||||
completion_list_add_self_nick (completion);
|
||||
break;
|
||||
case 'M': /* nicks of current server (all open channels) */
|
||||
completion_list_add_server_nicks (completion);
|
||||
break;
|
||||
case 'n': /* channel nicks */
|
||||
completion_list_add_channel_nicks (completion);
|
||||
completion->context = COMPLETION_NICK;
|
||||
@@ -1105,7 +1294,9 @@ completion_command (t_completion *completion)
|
||||
{
|
||||
if ((!completion->word_found) || word_found_seen)
|
||||
{
|
||||
completion->word_found = ptr_weelist->data;
|
||||
if (completion->word_found)
|
||||
free (completion->word_found);
|
||||
completion->word_found = strdup (ptr_weelist->data);
|
||||
|
||||
if (completion->direction < 0)
|
||||
ptr_weelist2 = ptr_weelist->prev_weelist;
|
||||
@@ -1144,80 +1335,12 @@ completion_command (t_completion *completion)
|
||||
}
|
||||
if (completion->word_found)
|
||||
{
|
||||
free (completion->word_found);
|
||||
completion->word_found = NULL;
|
||||
completion_command (completion);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_is_only_alphanum: return 1 if there is only alpha/num chars
|
||||
* in a string
|
||||
*/
|
||||
|
||||
int
|
||||
completion_is_only_alphanum (char *string)
|
||||
{
|
||||
while (string[0])
|
||||
{
|
||||
if (strchr (cfg_look_nick_completion_ignore, string[0]))
|
||||
return 0;
|
||||
string++;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_strdup_alphanum: duplicate alpha/num chars in a string
|
||||
*/
|
||||
|
||||
char *
|
||||
completion_strdup_alphanum (char *string)
|
||||
{
|
||||
char *result, *pos;
|
||||
|
||||
result = (char *)malloc (strlen (string) + 1);
|
||||
pos = result;
|
||||
while (string[0])
|
||||
{
|
||||
if (!strchr (cfg_look_nick_completion_ignore, string[0]))
|
||||
{
|
||||
pos[0] = string[0];
|
||||
pos++;
|
||||
}
|
||||
string++;
|
||||
}
|
||||
pos[0] = '\0';
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_nickncmp: locale and case independent string comparison
|
||||
* with max length for nicks (alpha or digits only)
|
||||
*/
|
||||
|
||||
int
|
||||
completion_nickncmp (char *base_word, char *nick, int max)
|
||||
{
|
||||
char *base_word2, *nick2;
|
||||
int return_cmp;
|
||||
|
||||
if (!cfg_look_nick_completion_ignore
|
||||
|| !cfg_look_nick_completion_ignore[0]
|
||||
|| !base_word || !nick || !base_word[0] || !nick[0]
|
||||
|| (!completion_is_only_alphanum (base_word)))
|
||||
return ascii_strncasecmp (base_word, nick, max);
|
||||
|
||||
base_word2 = completion_strdup_alphanum (base_word);
|
||||
nick2 = completion_strdup_alphanum (nick);
|
||||
|
||||
return_cmp = ascii_strncasecmp (base_word2, nick2, strlen (base_word2));
|
||||
|
||||
free (base_word2);
|
||||
free (nick2);
|
||||
|
||||
return return_cmp;
|
||||
}
|
||||
|
||||
/*
|
||||
* completion_command_arg: complete a command argument
|
||||
*/
|
||||
@@ -1243,7 +1366,9 @@ completion_command_arg (t_completion *completion, int nick_completion)
|
||||
{
|
||||
if ((!completion->word_found) || word_found_seen)
|
||||
{
|
||||
completion->word_found = ptr_weelist->data;
|
||||
if (completion->word_found)
|
||||
free (completion->word_found);
|
||||
completion->word_found = strdup (ptr_weelist->data);
|
||||
|
||||
if (completion->direction < 0)
|
||||
ptr_weelist2 = ptr_weelist->prev_weelist;
|
||||
@@ -1284,6 +1409,7 @@ completion_command_arg (t_completion *completion, int nick_completion)
|
||||
}
|
||||
if (completion->word_found)
|
||||
{
|
||||
free (completion->word_found);
|
||||
completion->word_found = NULL;
|
||||
completion_command_arg (completion, nick_completion);
|
||||
}
|
||||
@@ -1297,7 +1423,8 @@ void
|
||||
completion_nick (t_completion *completion)
|
||||
{
|
||||
int length, word_found_seen, other_completion;
|
||||
t_irc_nick *ptr_nick, *ptr_nick2;
|
||||
t_irc_nick *ptr_nick;
|
||||
t_weelist *ptr_weelist, *ptr_weelist2;
|
||||
|
||||
if (!completion->channel)
|
||||
return;
|
||||
@@ -1311,31 +1438,83 @@ completion_nick (t_completion *completion)
|
||||
{
|
||||
weelist_add (&completion->completion_list,
|
||||
&completion->last_completion,
|
||||
((t_irc_channel *)(completion->channel))->name);
|
||||
((t_irc_channel *)(completion->channel))->name,
|
||||
WEELIST_POS_SORT);
|
||||
weelist_add (&completion->completion_list,
|
||||
&completion->last_completion,
|
||||
((t_irc_server *)(completion->server))->nick);
|
||||
((t_irc_server *)(completion->server))->nick,
|
||||
WEELIST_POS_SORT);
|
||||
}
|
||||
completion_command_arg (completion, 1);
|
||||
return;
|
||||
}
|
||||
|
||||
/* rebuild nick list for completion, with nicks speaking at beginning of list */
|
||||
if ((((t_irc_channel *)(completion->channel))->nick_completion_reset)
|
||||
|| (!(completion->completion_list)))
|
||||
{
|
||||
/* empty completion list */
|
||||
if (completion->completion_list)
|
||||
{
|
||||
weelist_remove_all (&(completion->completion_list),
|
||||
&(completion->last_completion));
|
||||
completion->completion_list = NULL;
|
||||
completion->last_completion = NULL;
|
||||
}
|
||||
|
||||
/* add channel nicks */
|
||||
for (ptr_nick = ((t_irc_channel *)(completion->channel))->nicks;
|
||||
ptr_nick; ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
weelist_add (&(completion->completion_list),
|
||||
&(completion->last_completion),
|
||||
ptr_nick->nick,
|
||||
WEELIST_POS_SORT);
|
||||
}
|
||||
|
||||
/* add nicks speaking recently on this channel */
|
||||
if (cfg_look_nick_completion_smart)
|
||||
{
|
||||
for (ptr_weelist = ((t_irc_channel *)(completion->channel))->nicks_speaking;
|
||||
ptr_weelist; ptr_weelist = ptr_weelist->next_weelist)
|
||||
{
|
||||
if (irc_nick_search ((t_irc_channel *)(completion->channel),
|
||||
ptr_weelist->data))
|
||||
weelist_add (&(completion->completion_list),
|
||||
&(completion->last_completion),
|
||||
ptr_weelist->data,
|
||||
WEELIST_POS_BEGINNING);
|
||||
}
|
||||
}
|
||||
|
||||
/* add self nick at the end */
|
||||
if (completion->server)
|
||||
weelist_add (&(completion->completion_list),
|
||||
&(completion->last_completion),
|
||||
((t_irc_server *)(completion->server))->nick,
|
||||
WEELIST_POS_END);
|
||||
|
||||
((t_irc_channel *)(completion->channel))->nick_completion_reset = 0;
|
||||
}
|
||||
|
||||
length = strlen (completion->base_word);
|
||||
word_found_seen = 0;
|
||||
other_completion = 0;
|
||||
|
||||
if (completion->direction < 0)
|
||||
ptr_nick = ((t_irc_channel *)(completion->channel))->last_nick;
|
||||
else
|
||||
ptr_nick = ((t_irc_channel *)(completion->channel))->nicks;
|
||||
|
||||
while (ptr_nick)
|
||||
if (completion->direction < 0)
|
||||
ptr_weelist = completion->last_completion;
|
||||
else
|
||||
ptr_weelist = completion->completion_list;
|
||||
|
||||
while (ptr_weelist)
|
||||
{
|
||||
if (completion_nickncmp (completion->base_word, ptr_nick->nick, length) == 0)
|
||||
if (completion_nickncmp (completion->base_word, ptr_weelist->data, length) == 0)
|
||||
{
|
||||
if ((!completion->word_found) || word_found_seen)
|
||||
{
|
||||
completion->word_found = ptr_nick->nick;
|
||||
if (completion->word_found)
|
||||
free (completion->word_found);
|
||||
completion->word_found = strdup (ptr_weelist->data);
|
||||
if (cfg_look_nick_complete_first)
|
||||
{
|
||||
completion->position = -1;
|
||||
@@ -1343,21 +1522,21 @@ completion_nick (t_completion *completion)
|
||||
}
|
||||
|
||||
if (completion->direction < 0)
|
||||
ptr_nick2 = ptr_nick->prev_nick;
|
||||
ptr_weelist2 = ptr_weelist->prev_weelist;
|
||||
else
|
||||
ptr_nick2 = ptr_nick->next_nick;
|
||||
ptr_weelist2 = ptr_weelist->next_weelist;
|
||||
|
||||
while (ptr_nick2)
|
||||
while (ptr_weelist2)
|
||||
{
|
||||
if (completion_nickncmp (completion->base_word,
|
||||
ptr_nick2->nick,
|
||||
ptr_weelist2->data,
|
||||
length) == 0)
|
||||
other_completion++;
|
||||
|
||||
|
||||
if (completion->direction < 0)
|
||||
ptr_nick2 = ptr_nick2->prev_nick;
|
||||
ptr_weelist2 = ptr_weelist2->prev_weelist;
|
||||
else
|
||||
ptr_nick2 = ptr_nick2->next_nick;
|
||||
ptr_weelist2 = ptr_weelist2->next_weelist;
|
||||
}
|
||||
|
||||
if (other_completion == 0)
|
||||
@@ -1372,16 +1551,17 @@ completion_nick (t_completion *completion)
|
||||
other_completion++;
|
||||
}
|
||||
if (completion->word_found &&
|
||||
(ascii_strcasecmp (ptr_nick->nick, completion->word_found) == 0))
|
||||
(ascii_strcasecmp (ptr_weelist->data, completion->word_found) == 0))
|
||||
word_found_seen = 1;
|
||||
|
||||
|
||||
if (completion->direction < 0)
|
||||
ptr_nick = ptr_nick->prev_nick;
|
||||
ptr_weelist = ptr_weelist->prev_weelist;
|
||||
else
|
||||
ptr_nick = ptr_nick->next_nick;
|
||||
ptr_weelist = ptr_weelist->next_weelist;
|
||||
}
|
||||
if (completion->word_found)
|
||||
{
|
||||
free (completion->word_found);
|
||||
completion->word_found = NULL;
|
||||
completion_nick (completion);
|
||||
}
|
||||
@@ -1405,10 +1585,10 @@ completion_auto (t_completion *completion)
|
||||
}
|
||||
|
||||
/* channel completion */
|
||||
if (string_is_channel (completion->base_word))
|
||||
if (irc_channel_is_channel (completion->base_word))
|
||||
{
|
||||
if (!completion->completion_list)
|
||||
completion_list_add_server_channels (completion);
|
||||
completion_list_add_channels (completion);
|
||||
completion_command_arg (completion, 0);
|
||||
return;
|
||||
}
|
||||
@@ -1435,12 +1615,15 @@ completion_search (t_completion *completion, int direction,
|
||||
/* if new completion => look for base word */
|
||||
if (pos != completion->position)
|
||||
{
|
||||
if (completion->word_found)
|
||||
free (completion->word_found);
|
||||
completion->word_found = NULL;
|
||||
completion_find_context (completion, buffer, size, pos);
|
||||
}
|
||||
|
||||
/* completion */
|
||||
old_word_found = completion->word_found;
|
||||
old_word_found = (completion->word_found) ?
|
||||
strdup (completion->word_found) : NULL;
|
||||
switch (completion->context)
|
||||
{
|
||||
case COMPLETION_NULL:
|
||||
@@ -1487,6 +1670,8 @@ completion_search (t_completion *completion, int direction,
|
||||
}
|
||||
}
|
||||
}
|
||||
if (old_word_found)
|
||||
free (old_word_found);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
+2
-2
@@ -147,7 +147,7 @@ fifo_exec (char *text)
|
||||
pos = strchr (text, ',');
|
||||
if (pos)
|
||||
pos[0] = '\0';
|
||||
ptr_server = server_search (text);
|
||||
ptr_server = irc_server_search (text);
|
||||
if (!ptr_server || !ptr_server->buffer)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
@@ -157,7 +157,7 @@ fifo_exec (char *text)
|
||||
}
|
||||
if (ptr_server && pos)
|
||||
{
|
||||
ptr_channel = channel_search_any (ptr_server, pos + 1);
|
||||
ptr_channel = irc_channel_search_any (ptr_server, pos + 1);
|
||||
if (!ptr_channel)
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
|
||||
@@ -62,7 +62,7 @@ history_buffer_add (void *buffer, char *string)
|
||||
{
|
||||
new_history->text = strdup (string);
|
||||
if (cfg_log_hide_nickserv_pwd)
|
||||
irc_hide_password (new_history->text, 1);
|
||||
irc_display_hide_password (new_history->text, 1);
|
||||
|
||||
if (((t_gui_buffer *)(buffer))->history)
|
||||
((t_gui_buffer *)(buffer))->history->prev_history = new_history;
|
||||
@@ -112,7 +112,7 @@ history_global_add (char *string)
|
||||
{
|
||||
new_history->text = strdup (string);
|
||||
if (cfg_log_hide_nickserv_pwd)
|
||||
irc_hide_password (new_history->text, 1);
|
||||
irc_display_hide_password (new_history->text, 1);
|
||||
|
||||
if (history_global)
|
||||
history_global->prev_history = new_history;
|
||||
|
||||
+1
-1
@@ -101,7 +101,7 @@ weechat_log_init ()
|
||||
if (!weechat_log_open (NULL, "w"))
|
||||
{
|
||||
weechat_iconv_fprintf (stderr,
|
||||
_("%s unable to create/append to log file\n"
|
||||
_("%s unable to create/append to log file (weechat.log)\n"
|
||||
"If another WeeChat process is using this file, try to run WeeChat\n"
|
||||
"with another home using \"--dir\" command line option.\n"),
|
||||
WEECHAT_ERROR);
|
||||
|
||||
+20
-16
@@ -259,6 +259,7 @@ session_save_servers (FILE *file)
|
||||
rc = rc && (session_write_str (file, SESSION_SERV_UNTERMINATED_MESSAGE, ptr_server->unterminated_message));
|
||||
rc = rc && (session_write_str (file, SESSION_SERV_NICK, ptr_server->nick));
|
||||
rc = rc && (session_write_str (file, SESSION_SERV_NICK_MODES, ptr_server->nick_modes));
|
||||
rc = rc && (session_write_str (file, SESSION_SERV_PREFIX, ptr_server->prefix));
|
||||
rc = rc && (session_write_buf (file, SESSION_SERV_RECONNECT_START, &(ptr_server->reconnect_start), sizeof (time_t)));
|
||||
rc = rc && (session_write_int (file, SESSION_SERV_RECONNECT_JOIN, ptr_server->reconnect_join));
|
||||
rc = rc && (session_write_int (file, SESSION_SERV_IS_AWAY, ptr_server->is_away));
|
||||
@@ -825,7 +826,6 @@ session_load_server (FILE *file)
|
||||
void *session_data;
|
||||
size_t session_size;
|
||||
int session_size_int;
|
||||
const int cert_type_prio[] = { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 };
|
||||
#endif
|
||||
|
||||
/* read server name */
|
||||
@@ -839,20 +839,20 @@ session_load_server (FILE *file)
|
||||
/* use or allocate server */
|
||||
weechat_log_printf (_("session: loading server \"%s\"\n"),
|
||||
server_name);
|
||||
session_current_server = server_search (server_name);
|
||||
session_current_server = irc_server_search (server_name);
|
||||
if (session_current_server)
|
||||
weechat_log_printf (_("server found, updating values\n"));
|
||||
else
|
||||
{
|
||||
weechat_log_printf (_("server not found, creating new one\n"));
|
||||
session_current_server = server_alloc ();
|
||||
session_current_server = irc_server_alloc ();
|
||||
if (!session_current_server)
|
||||
{
|
||||
free (server_name);
|
||||
session_crash (file, _("can't create new server"));
|
||||
return 0;
|
||||
}
|
||||
server_init (session_current_server);
|
||||
irc_server_init (session_current_server);
|
||||
session_current_server->name = strdup (server_name);
|
||||
}
|
||||
free (server_name);
|
||||
@@ -958,7 +958,8 @@ session_load_server (FILE *file)
|
||||
return 0;
|
||||
}
|
||||
gnutls_set_default_priority (session_current_server->gnutls_sess);
|
||||
gnutls_certificate_type_set_priority (session_current_server->gnutls_sess, cert_type_prio);
|
||||
gnutls_certificate_type_set_priority (session_current_server->gnutls_sess, gnutls_cert_type_prio);
|
||||
gnutls_protocol_set_priority (session_current_server->gnutls_sess, gnutls_prot_prio);
|
||||
gnutls_credentials_set (session_current_server->gnutls_sess, GNUTLS_CRD_CERTIFICATE, gnutls_xcred);
|
||||
session_data = NULL;
|
||||
rc = rc && (session_read_buf_alloc (file, &session_data, &session_size_int));
|
||||
@@ -986,6 +987,9 @@ session_load_server (FILE *file)
|
||||
case SESSION_SERV_NICK_MODES:
|
||||
rc = rc && (session_read_str (file, &(session_current_server->nick_modes)));
|
||||
break;
|
||||
case SESSION_SERV_PREFIX:
|
||||
rc = rc && (session_read_str (file, &(session_current_server->prefix)));
|
||||
break;
|
||||
case SESSION_SERV_RECONNECT_START:
|
||||
rc = rc && (session_read_buf (file, &(session_current_server->reconnect_start), sizeof (time_t)));
|
||||
break;
|
||||
@@ -1065,9 +1069,9 @@ session_load_channel (FILE *file)
|
||||
/* allocate channel */
|
||||
weechat_log_printf (_("session: loading channel \"%s\"\n"),
|
||||
channel_name);
|
||||
session_current_channel = channel_new (session_current_server,
|
||||
channel_type,
|
||||
channel_name);
|
||||
session_current_channel = irc_channel_new (session_current_server,
|
||||
channel_type,
|
||||
channel_name);
|
||||
free (channel_name);
|
||||
if (!session_current_channel)
|
||||
{
|
||||
@@ -1160,8 +1164,8 @@ session_load_nick (FILE *file)
|
||||
}
|
||||
|
||||
/* allocate nick */
|
||||
nick = nick_new (session_current_server, session_current_channel,
|
||||
nick_name, 0, 0, 0, 0, 0);
|
||||
nick = irc_nick_new (session_current_server, session_current_channel,
|
||||
nick_name, 0, 0, 0, 0, 0, 0);
|
||||
free (nick_name);
|
||||
if (!nick)
|
||||
{
|
||||
@@ -1218,7 +1222,7 @@ session_load_dcc (FILE *file)
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
/* allocate DCC */
|
||||
dcc = dcc_alloc ();
|
||||
dcc = irc_dcc_alloc ();
|
||||
if (!dcc)
|
||||
{
|
||||
session_crash (file, _("can't create new DCC"));
|
||||
@@ -1251,7 +1255,7 @@ session_load_dcc (FILE *file)
|
||||
return 0;
|
||||
if (string && string[0])
|
||||
{
|
||||
ptr_server = server_search (string);
|
||||
ptr_server = irc_server_search (string);
|
||||
if (!ptr_server)
|
||||
{
|
||||
session_crash (file, _("server not found for DCC"));
|
||||
@@ -1272,7 +1276,7 @@ session_load_dcc (FILE *file)
|
||||
return 0;
|
||||
if (string && string[0])
|
||||
{
|
||||
ptr_channel = channel_search_any (ptr_server, string);
|
||||
ptr_channel = irc_channel_search_any (ptr_server, string);
|
||||
if (!ptr_channel)
|
||||
{
|
||||
session_crash (file, _("channel not found for DCC"));
|
||||
@@ -1464,7 +1468,7 @@ session_load_buffer (FILE *file)
|
||||
ptr_channel = NULL;
|
||||
if (server_name)
|
||||
{
|
||||
ptr_server = server_search (server_name);
|
||||
ptr_server = irc_server_search (server_name);
|
||||
if (!ptr_server)
|
||||
{
|
||||
session_crash (file, _("server not found for buffer"));
|
||||
@@ -1474,7 +1478,7 @@ session_load_buffer (FILE *file)
|
||||
|
||||
if (channel_name)
|
||||
{
|
||||
ptr_channel = channel_search_any_without_buffer (ptr_server, channel_name);
|
||||
ptr_channel = irc_channel_search_any_without_buffer (ptr_server, channel_name);
|
||||
if (!ptr_channel)
|
||||
{
|
||||
session_crash (file, _("channel not found for buffer"));
|
||||
@@ -1682,7 +1686,7 @@ session_load_hotlist (FILE *file)
|
||||
server_name = NULL;
|
||||
if (!session_read_str (file, &server_name))
|
||||
return 0;
|
||||
ptr_server = server_search (server_name);
|
||||
ptr_server = irc_server_search (server_name);
|
||||
free (server_name);
|
||||
break;
|
||||
case SESSION_HOTL_BUFFER_NUMBER:
|
||||
|
||||
@@ -92,7 +92,8 @@ enum t_session_server
|
||||
SESSION_SERV_CHARSET_ENCODE__UNUSED,
|
||||
SESSION_SERV_HOSTNAME,
|
||||
SESSION_SERV_NICK_MODES,
|
||||
SESSION_SERV_AWAY_MESSAGE
|
||||
SESSION_SERV_AWAY_MESSAGE,
|
||||
SESSION_SERV_PREFIX
|
||||
};
|
||||
|
||||
enum t_session_channel
|
||||
|
||||
@@ -55,6 +55,22 @@ utf8_init ()
|
||||
local_utf8 = (ascii_strcasecmp (local_charset, "UTF-8") == 0);
|
||||
}
|
||||
|
||||
/*
|
||||
* utf8_has_8bits: return 1 if string has 8-bits chars, 0 if only 7-bits chars
|
||||
*/
|
||||
|
||||
int
|
||||
utf8_has_8bits (char *string)
|
||||
{
|
||||
while (string && string[0])
|
||||
{
|
||||
if (string[0] & 0x80)
|
||||
return 1;
|
||||
string++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* utf8_is_valid: return 1 if UTF-8 string is valid, 0 otherwise
|
||||
* if error is not NULL, it's set with first non valid UTF-8
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
extern int local_utf8;
|
||||
|
||||
extern void utf8_init ();
|
||||
extern int utf8_has_8bits (char *);
|
||||
extern int utf8_is_valid (char *, char **);
|
||||
extern void utf8_normalize (char *, char);
|
||||
extern char *utf8_prev_char (char *, char *);
|
||||
|
||||
+23
-2
@@ -33,6 +33,14 @@
|
||||
#include <iconv.h>
|
||||
#endif
|
||||
|
||||
#ifndef ICONV_CONST
|
||||
#ifdef ICONV_2ARG_IS_CONST
|
||||
#define ICONV_CONST const
|
||||
#else
|
||||
#define ICONV_CONST
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "weechat.h"
|
||||
#include "utf8.h"
|
||||
#include "weeconfig.h"
|
||||
@@ -201,6 +209,7 @@ weechat_iconv (int from_utf8, char *from_code, char *to_code, char *string)
|
||||
#ifdef HAVE_ICONV
|
||||
iconv_t cd;
|
||||
char *inbuf, *ptr_inbuf, *ptr_outbuf, *next_char;
|
||||
char *ptr_inbuf_shift;
|
||||
int done;
|
||||
size_t err, inbytesleft, outbytesleft;
|
||||
|
||||
@@ -218,6 +227,7 @@ weechat_iconv (int from_utf8, char *from_code, char *to_code, char *string)
|
||||
outbytesleft = inbytesleft * 4;
|
||||
outbuf = (char *) malloc (outbytesleft + 2);
|
||||
ptr_outbuf = outbuf;
|
||||
ptr_inbuf_shift = NULL;
|
||||
done = 0;
|
||||
while (!done)
|
||||
{
|
||||
@@ -260,8 +270,19 @@ weechat_iconv (int from_utf8, char *from_code, char *to_code, char *string)
|
||||
}
|
||||
}
|
||||
else
|
||||
done = 1;
|
||||
{
|
||||
if (!ptr_inbuf_shift)
|
||||
{
|
||||
ptr_inbuf_shift = ptr_inbuf;
|
||||
ptr_inbuf = NULL;
|
||||
inbytesleft = 0;
|
||||
}
|
||||
else
|
||||
done = 1;
|
||||
}
|
||||
}
|
||||
if (ptr_inbuf_shift)
|
||||
ptr_inbuf = ptr_inbuf_shift;
|
||||
ptr_outbuf[0] = '\0';
|
||||
free (inbuf);
|
||||
iconv_close (cd);
|
||||
@@ -298,7 +319,7 @@ weechat_iconv_to_internal (char *charset, char *string)
|
||||
|
||||
if (input)
|
||||
{
|
||||
if (utf8_is_valid (input, NULL))
|
||||
if (utf8_has_8bits (input) && utf8_is_valid (input, NULL))
|
||||
return input;
|
||||
|
||||
output = weechat_iconv (0,
|
||||
|
||||
+24
-24
@@ -405,7 +405,7 @@ weechat_parse_args (int argc, char *argv[])
|
||||
}
|
||||
else if ((ascii_strncasecmp (argv[i], "irc", 3) == 0))
|
||||
{
|
||||
if (server_init_with_url (argv[i], &server_tmp) < 0)
|
||||
if (irc_server_init_with_url (argv[i], &server_tmp) < 0)
|
||||
{
|
||||
weechat_iconv_fprintf (stderr,
|
||||
_("%s invalid syntax for IRC server ('%s'), ignored\n"),
|
||||
@@ -413,19 +413,19 @@ weechat_parse_args (int argc, char *argv[])
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!server_new (server_tmp.name, server_tmp.autoconnect,
|
||||
server_tmp.autoreconnect,
|
||||
server_tmp.autoreconnect_delay,
|
||||
1, server_tmp.address, server_tmp.port,
|
||||
server_tmp.ipv6, server_tmp.ssl,
|
||||
server_tmp.password, server_tmp.nick1,
|
||||
server_tmp.nick2, server_tmp.nick3,
|
||||
NULL, NULL, NULL, NULL, 0,
|
||||
server_tmp.autojoin, 1, NULL))
|
||||
if (!irc_server_new (server_tmp.name, server_tmp.autoconnect,
|
||||
server_tmp.autoreconnect,
|
||||
server_tmp.autoreconnect_delay,
|
||||
1, server_tmp.address, server_tmp.port,
|
||||
server_tmp.ipv6, server_tmp.ssl,
|
||||
server_tmp.password, server_tmp.nick1,
|
||||
server_tmp.nick2, server_tmp.nick3,
|
||||
NULL, NULL, NULL, NULL, 0,
|
||||
server_tmp.autojoin, 1, NULL))
|
||||
weechat_iconv_fprintf (stderr,
|
||||
_("%s unable to create server ('%s'), ignored\n"),
|
||||
WEECHAT_WARNING, argv[i]);
|
||||
server_destroy (&server_tmp);
|
||||
irc_server_destroy (&server_tmp);
|
||||
server_cmd_line = 1;
|
||||
}
|
||||
}
|
||||
@@ -584,7 +584,7 @@ weechat_config_read ()
|
||||
exit (EXIT_FAILURE);
|
||||
break;
|
||||
default: /* other error (fatal) */
|
||||
server_free_all ();
|
||||
irc_server_free_all ();
|
||||
exit (EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
@@ -705,25 +705,25 @@ weechat_dump (int crash)
|
||||
for (ptr_server = irc_servers; ptr_server; ptr_server = ptr_server->next_server)
|
||||
{
|
||||
weechat_log_printf ("\n");
|
||||
server_print_log (ptr_server);
|
||||
irc_server_print_log (ptr_server);
|
||||
|
||||
for (ptr_channel = ptr_server->channels; ptr_channel;
|
||||
ptr_channel = ptr_channel->next_channel)
|
||||
{
|
||||
weechat_log_printf ("\n");
|
||||
channel_print_log (ptr_channel);
|
||||
irc_channel_print_log (ptr_channel);
|
||||
|
||||
for (ptr_nick = ptr_channel->nicks; ptr_nick;
|
||||
ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
weechat_log_printf ("\n");
|
||||
nick_print_log (ptr_nick);
|
||||
irc_nick_print_log (ptr_nick);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
dcc_print_log ();
|
||||
irc_dcc_print_log ();
|
||||
|
||||
gui_panel_print_log ();
|
||||
|
||||
@@ -754,7 +754,7 @@ weechat_dump (int crash)
|
||||
}
|
||||
|
||||
weechat_log_printf ("\n");
|
||||
ignore_print_log ();
|
||||
irc_ignore_print_log ();
|
||||
|
||||
weechat_log_printf ("\n");
|
||||
weechat_log_printf ("****** End of dump ******\n");
|
||||
@@ -769,8 +769,8 @@ void
|
||||
weechat_sigsegv ()
|
||||
{
|
||||
weechat_dump (1);
|
||||
dcc_end ();
|
||||
server_free_all ();
|
||||
irc_dcc_end ();
|
||||
irc_server_free_all ();
|
||||
gui_main_end ();
|
||||
|
||||
weechat_iconv_fprintf (stderr, "\n");
|
||||
@@ -837,20 +837,20 @@ main (int argc, char *argv[])
|
||||
plugin_init (auto_load_plugins); /* init plugin interface(s) */
|
||||
#endif
|
||||
|
||||
server_auto_connect (auto_connect, /* auto-connect to servers */
|
||||
server_cmd_line);
|
||||
irc_server_auto_connect (auto_connect, /* auto-connect to servers */
|
||||
server_cmd_line);
|
||||
|
||||
gui_main_loop (); /* WeeChat main loop */
|
||||
|
||||
#ifdef PLUGINS
|
||||
plugin_end (); /* end plugin interface(s) */
|
||||
#endif
|
||||
server_disconnect_all (); /* disconnect from all servers */
|
||||
irc_server_disconnect_all (); /* disconnect from all servers */
|
||||
if (cfg_look_save_on_exit)
|
||||
(void) config_write (NULL); /* save config file */
|
||||
command_index_free (); /* free commands index */
|
||||
dcc_end (); /* remove all DCC */
|
||||
server_free_all (); /* free all servers */
|
||||
irc_dcc_end (); /* remove all DCC */
|
||||
irc_server_free_all (); /* free all servers */
|
||||
gui_main_end (); /* shut down WeeChat GUI */
|
||||
weechat_shutdown (EXIT_SUCCESS, 0); /* quit WeeChat (oh no, why?) */
|
||||
|
||||
|
||||
+55
-27
@@ -97,6 +97,7 @@ int cfg_look_align_size;
|
||||
int cfg_look_align_size_max;
|
||||
char *cfg_look_nick_completor;
|
||||
char *cfg_look_nick_completion_ignore;
|
||||
int cfg_look_nick_completion_smart;
|
||||
int cfg_look_nick_complete_first;
|
||||
int cfg_look_infobar;
|
||||
char *cfg_look_infobar_timestamp;
|
||||
@@ -222,6 +223,10 @@ t_config_option weechat_options_look[] =
|
||||
N_("chars ignored for nick completion"),
|
||||
OPTION_TYPE_STRING, 0, 0, 0,
|
||||
"[]-^", NULL, NULL, &cfg_look_nick_completion_ignore, config_change_noop },
|
||||
{ "look_nick_completion_smart", N_("smart completion for nicks"),
|
||||
N_("smart completion for nicks (completes with last speakers first)"),
|
||||
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_TRUE,
|
||||
NULL, NULL, &cfg_look_nick_completion_smart, NULL, config_change_noop },
|
||||
{ "look_nick_complete_first", N_("complete only with first nick found"),
|
||||
N_("complete only with first nick found"),
|
||||
OPTION_TYPE_BOOLEAN, BOOL_FALSE, BOOL_TRUE, BOOL_FALSE,
|
||||
@@ -317,6 +322,7 @@ int cfg_col_input_server;
|
||||
int cfg_col_input_channel;
|
||||
int cfg_col_input_nick;
|
||||
int cfg_col_input_delimiters;
|
||||
int cfg_col_input_text_not_found;
|
||||
int cfg_col_input_bg;
|
||||
int cfg_col_nick;
|
||||
int cfg_col_nick_away;
|
||||
@@ -509,6 +515,10 @@ t_config_option weechat_options_colors[] =
|
||||
N_("color for input text (delimiters)"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"cyan", NULL, &cfg_col_input_delimiters, NULL, &config_change_color },
|
||||
{ "col_input_text_not_found", N_("color for text not found"),
|
||||
N_("color for text not found"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
"red", NULL, &cfg_col_input_text_not_found, NULL, &config_change_color },
|
||||
{ "col_input_bg", N_("background for input window"),
|
||||
N_("background for input window"),
|
||||
OPTION_TYPE_COLOR, 0, 0, 0,
|
||||
@@ -1212,7 +1222,7 @@ config_change_nicks_colors ()
|
||||
ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
if (ptr_nick->color != COLOR_WIN_NICK_SELF)
|
||||
ptr_nick->color = nick_find_color (ptr_nick);
|
||||
ptr_nick->color = irc_nick_find_color (ptr_nick);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1229,7 +1239,7 @@ config_change_away_check ()
|
||||
if (cfg_irc_away_check == 0)
|
||||
{
|
||||
/* reset away flag for all nicks/chans/servers */
|
||||
server_remove_away ();
|
||||
irc_server_remove_away ();
|
||||
}
|
||||
check_away = cfg_irc_away_check * 60;
|
||||
}
|
||||
@@ -1266,7 +1276,7 @@ config_change_notify_levels ()
|
||||
{
|
||||
if (BUFFER_IS_CHANNEL(ptr_buffer) || BUFFER_IS_PRIVATE(ptr_buffer))
|
||||
ptr_buffer->notify_level =
|
||||
channel_get_notify_level (SERVER(ptr_buffer), CHANNEL(ptr_buffer));
|
||||
irc_channel_get_notify_level (SERVER(ptr_buffer), CHANNEL(ptr_buffer));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1678,7 +1688,7 @@ config_option_search_option_value (char *option_name, t_config_option **option,
|
||||
if (pos)
|
||||
{
|
||||
pos[0] = '\0';
|
||||
ptr_server = server_search (option_name);
|
||||
ptr_server = irc_server_search (option_name);
|
||||
if (ptr_server)
|
||||
{
|
||||
for (i = 0; weechat_options[CONFIG_SECTION_SERVER][i].option_name; i++)
|
||||
@@ -1753,40 +1763,40 @@ config_allocate_server (char *filename, int line_number)
|
||||
|| !cfg_server.username
|
||||
|| !cfg_server.realname)
|
||||
{
|
||||
server_free_all ();
|
||||
irc_server_free_all ();
|
||||
gui_printf (NULL,
|
||||
_("%s %s, line %d: new server, but previous was incomplete\n"),
|
||||
WEECHAT_WARNING, filename, line_number);
|
||||
return 0;
|
||||
|
||||
}
|
||||
if (server_name_already_exists (cfg_server.name))
|
||||
if (irc_server_name_already_exists (cfg_server.name))
|
||||
{
|
||||
server_free_all ();
|
||||
irc_server_free_all ();
|
||||
gui_printf (NULL,
|
||||
_("%s %s, line %d: server '%s' already exists\n"),
|
||||
WEECHAT_WARNING, filename, line_number, cfg_server.name);
|
||||
return 0;
|
||||
}
|
||||
if (!server_new (cfg_server.name,
|
||||
cfg_server.autoconnect, cfg_server.autoreconnect,
|
||||
cfg_server.autoreconnect_delay, 0, cfg_server.address,
|
||||
cfg_server.port, cfg_server.ipv6, cfg_server.ssl,
|
||||
cfg_server.password, cfg_server.nick1, cfg_server.nick2,
|
||||
cfg_server.nick3, cfg_server.username, cfg_server.realname,
|
||||
cfg_server.hostname, cfg_server.command,
|
||||
cfg_server.command_delay, cfg_server.autojoin,
|
||||
cfg_server.autorejoin, cfg_server.notify_levels))
|
||||
if (!irc_server_new (cfg_server.name,
|
||||
cfg_server.autoconnect, cfg_server.autoreconnect,
|
||||
cfg_server.autoreconnect_delay, 0, cfg_server.address,
|
||||
cfg_server.port, cfg_server.ipv6, cfg_server.ssl,
|
||||
cfg_server.password, cfg_server.nick1, cfg_server.nick2,
|
||||
cfg_server.nick3, cfg_server.username, cfg_server.realname,
|
||||
cfg_server.hostname, cfg_server.command,
|
||||
cfg_server.command_delay, cfg_server.autojoin,
|
||||
cfg_server.autorejoin, cfg_server.notify_levels))
|
||||
{
|
||||
server_free_all ();
|
||||
irc_server_free_all ();
|
||||
gui_printf (NULL,
|
||||
_("%s %s, line %d: unable to create server\n"),
|
||||
WEECHAT_WARNING, filename, line_number);
|
||||
return 0;
|
||||
}
|
||||
|
||||
server_destroy (&cfg_server);
|
||||
server_init (&cfg_server);
|
||||
irc_server_destroy (&cfg_server);
|
||||
irc_server_init (&cfg_server);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -1876,7 +1886,7 @@ config_read ()
|
||||
}
|
||||
|
||||
config_default_values ();
|
||||
server_init (&cfg_server);
|
||||
irc_server_init (&cfg_server);
|
||||
|
||||
/* read config file */
|
||||
section = CONFIG_SECTION_NONE;
|
||||
@@ -2019,7 +2029,8 @@ config_read ()
|
||||
{
|
||||
/* create new alias */
|
||||
if (alias_new (line, pos))
|
||||
weelist_add (&index_commands, &last_index_command, line);
|
||||
weelist_add (&index_commands, &last_index_command,
|
||||
line, WEELIST_POS_SORT);
|
||||
}
|
||||
else if (section == CONFIG_SECTION_IGNORE)
|
||||
{
|
||||
@@ -2030,7 +2041,7 @@ config_read ()
|
||||
WEECHAT_WARNING, filename, line_number, line);
|
||||
else
|
||||
{
|
||||
if (!ignore_add_from_config (pos))
|
||||
if (!irc_ignore_add_from_config (pos))
|
||||
gui_printf (NULL,
|
||||
_("%s %s, line %d: invalid ignore options \"%s\"\n"),
|
||||
WEECHAT_WARNING, filename, line_number, pos);
|
||||
@@ -2342,9 +2353,9 @@ int
|
||||
config_write (char *config_name)
|
||||
{
|
||||
int filename_length;
|
||||
char *filename;
|
||||
char *filename, *filename2;
|
||||
FILE *file;
|
||||
int i, j;
|
||||
int i, j, rc;
|
||||
time_t current_time;
|
||||
t_irc_server *ptr_server;
|
||||
t_weechat_alias *ptr_alias;
|
||||
@@ -2353,7 +2364,10 @@ config_write (char *config_name)
|
||||
char *expanded_name, *function_name;
|
||||
|
||||
if (config_name)
|
||||
{
|
||||
filename_length = strlen (config_name);
|
||||
filename = strdup (config_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
filename_length = strlen (weechat_home) +
|
||||
@@ -2365,12 +2379,21 @@ config_write (char *config_name)
|
||||
snprintf (filename, filename_length, "%s%s" WEECHAT_CONFIG_NAME,
|
||||
weechat_home, DIR_SEPARATOR);
|
||||
}
|
||||
|
||||
filename2 = (char *) malloc ((filename_length + 32) * sizeof (char));
|
||||
if (!filename2)
|
||||
{
|
||||
free (filename);
|
||||
return -2;
|
||||
}
|
||||
snprintf (filename2, filename_length + 32, "%s.weechattmp", filename);
|
||||
|
||||
if ((file = fopen (filename, "w")) == NULL)
|
||||
if ((file = fopen (filename2, "w")) == NULL)
|
||||
{
|
||||
gui_printf (NULL, _("%s cannot create file \"%s\"\n"),
|
||||
WEECHAT_ERROR, filename);
|
||||
WEECHAT_ERROR, filename2);
|
||||
free (filename);
|
||||
free (filename2);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -2520,7 +2543,12 @@ config_write (char *config_name)
|
||||
}
|
||||
|
||||
fclose (file);
|
||||
chmod (filename, 0600);
|
||||
chmod (filename2, 0600);
|
||||
unlink (filename);
|
||||
rc = rename (filename2, filename);
|
||||
free (filename);
|
||||
free (filename2);
|
||||
if (rc != 0)
|
||||
return -1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -114,6 +114,7 @@ extern int cfg_look_align_size;
|
||||
extern int cfg_look_align_size_max;
|
||||
extern char *cfg_look_nick_completor;
|
||||
extern char *cfg_look_nick_completion_ignore;
|
||||
extern int cfg_look_nick_completion_smart;
|
||||
extern int cfg_look_nick_complete_first;
|
||||
extern int cfg_look_infobar;
|
||||
extern char *cfg_look_infobar_timestamp;
|
||||
@@ -166,6 +167,7 @@ extern int cfg_col_input_server;
|
||||
extern int cfg_col_input_channel;
|
||||
extern int cfg_col_input_nick;
|
||||
extern int cfg_col_input_delimiters;
|
||||
extern int cfg_col_input_text_not_found;
|
||||
extern int cfg_col_input_bg;
|
||||
extern int cfg_col_nick;
|
||||
extern int cfg_col_nick_away;
|
||||
|
||||
+63
-7
@@ -33,6 +33,26 @@
|
||||
#include "util.h"
|
||||
|
||||
|
||||
/*
|
||||
* weelist_get_size: get list size (number of elements)
|
||||
*/
|
||||
|
||||
int
|
||||
weelist_get_size (t_weelist *weelist)
|
||||
{
|
||||
t_weelist *ptr_weelist;
|
||||
int count;
|
||||
|
||||
count = 0;
|
||||
|
||||
for (ptr_weelist = weelist; ptr_weelist; ptr_weelist = ptr_weelist->next_weelist)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
|
||||
return count;
|
||||
}
|
||||
|
||||
/*
|
||||
* weelist_search: search date in a list
|
||||
*/
|
||||
@@ -74,14 +94,36 @@ weelist_find_pos (t_weelist *weelist, char *data)
|
||||
*/
|
||||
|
||||
void
|
||||
weelist_insert (t_weelist **weelist, t_weelist **last_weelist, t_weelist *element)
|
||||
weelist_insert (t_weelist **weelist, t_weelist **last_weelist, t_weelist *element,
|
||||
int position)
|
||||
{
|
||||
t_weelist *pos_weelist;
|
||||
|
||||
pos_weelist = weelist_find_pos (*weelist, element->data);
|
||||
|
||||
if (*weelist)
|
||||
{
|
||||
/* remove element if already in list */
|
||||
pos_weelist = weelist_search (*weelist, element->data);
|
||||
if (pos_weelist)
|
||||
weelist_remove (weelist, last_weelist, pos_weelist);
|
||||
}
|
||||
|
||||
if (*weelist)
|
||||
{
|
||||
/* search position for new element, according to pos asked */
|
||||
pos_weelist = NULL;
|
||||
switch (position)
|
||||
{
|
||||
case WEELIST_POS_SORT:
|
||||
pos_weelist = weelist_find_pos (*weelist, element->data);
|
||||
break;
|
||||
case WEELIST_POS_BEGINNING:
|
||||
pos_weelist = *weelist;
|
||||
break;
|
||||
case WEELIST_POS_END:
|
||||
pos_weelist = NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if (pos_weelist)
|
||||
{
|
||||
/* insert data into the list (before position found) */
|
||||
@@ -116,7 +158,8 @@ weelist_insert (t_weelist **weelist, t_weelist **last_weelist, t_weelist *elemen
|
||||
*/
|
||||
|
||||
t_weelist *
|
||||
weelist_add (t_weelist **weelist, t_weelist **last_weelist, char *data)
|
||||
weelist_add (t_weelist **weelist, t_weelist **last_weelist, char *data,
|
||||
int position)
|
||||
{
|
||||
t_weelist *new_weelist;
|
||||
|
||||
@@ -126,7 +169,7 @@ weelist_add (t_weelist **weelist, t_weelist **last_weelist, char *data)
|
||||
if ((new_weelist = ((t_weelist *) malloc (sizeof (t_weelist)))))
|
||||
{
|
||||
new_weelist->data = strdup (data);
|
||||
weelist_insert (weelist, last_weelist, new_weelist);
|
||||
weelist_insert (weelist, last_weelist, new_weelist, position);
|
||||
return new_weelist;
|
||||
}
|
||||
/* failed to allocate new element */
|
||||
@@ -134,7 +177,7 @@ weelist_add (t_weelist **weelist, t_weelist **last_weelist, char *data)
|
||||
}
|
||||
|
||||
/*
|
||||
* weelist_remove: free an element in a list
|
||||
* weelist_remove: remove an element from a list
|
||||
*/
|
||||
|
||||
void
|
||||
@@ -142,7 +185,7 @@ weelist_remove (t_weelist **weelist, t_weelist **last_weelist, t_weelist *elemen
|
||||
{
|
||||
t_weelist *new_weelist;
|
||||
|
||||
if (!element)
|
||||
if (!element || !(*weelist))
|
||||
return;
|
||||
|
||||
/* remove element from list */
|
||||
@@ -166,6 +209,19 @@ weelist_remove (t_weelist **weelist, t_weelist **last_weelist, t_weelist *elemen
|
||||
*weelist = new_weelist;
|
||||
}
|
||||
|
||||
/*
|
||||
* weelist_remove_all: remove all elements from a list
|
||||
*/
|
||||
|
||||
void
|
||||
weelist_remove_all (t_weelist **weelist, t_weelist **last_weelist)
|
||||
{
|
||||
while (*weelist)
|
||||
{
|
||||
weelist_remove (weelist, last_weelist, *weelist);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* weelist_print_log: print weelist in log (usually for crash dump)
|
||||
*/
|
||||
|
||||
@@ -21,6 +21,10 @@
|
||||
#ifndef __WEECHAT_LIST_H
|
||||
#define __WEECHAT_LIST_H 1
|
||||
|
||||
#define WEELIST_POS_SORT 0
|
||||
#define WEELIST_POS_BEGINNING 1
|
||||
#define WEELIST_POS_END 2
|
||||
|
||||
typedef struct t_weelist t_weelist;
|
||||
|
||||
struct t_weelist
|
||||
@@ -30,9 +34,11 @@ struct t_weelist
|
||||
t_weelist *next_weelist;
|
||||
};
|
||||
|
||||
extern int weelist_get_size (t_weelist *);
|
||||
extern t_weelist *weelist_search (t_weelist *, char *);
|
||||
extern t_weelist *weelist_add (t_weelist **, t_weelist **, char *);
|
||||
extern t_weelist *weelist_add (t_weelist **, t_weelist **, char *, int);
|
||||
extern void weelist_remove (t_weelist **, t_weelist **, t_weelist *);
|
||||
extern void weelist_remove_all (t_weelist **, t_weelist **);
|
||||
extern void weelist_print_log (t_weelist *, char *);
|
||||
|
||||
#endif /* weelist.h */
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
SUBDIRS( curses )
|
||||
|
||||
SET(LIB_GUI_COMMON_SRC gui-buffer.c gui-common.c gui-action.c gui-keyboard.c
|
||||
gui-log.c gui-window.c gui-panel.c gui.h gui-buffer.h gui-color.h gui-keyboard.h
|
||||
gui-panel.h gui-window.h)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR})
|
||||
ADD_LIBRARY(weechat_gui_common STATIC ${LIB_GUI_COMMON_SRC})
|
||||
@@ -0,0 +1,43 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
SET(WEECHAT_CURSES_SRC gui-curses-chat.c gui-curses-color.c gui-curses-infobar.c
|
||||
gui-curses-input.c gui-curses-keyboard.c gui-curses-main.c gui-curses-nicklist.c
|
||||
gui-curses-status.c gui-curses-window.c gui-curses-panel.c gui-curses.h)
|
||||
|
||||
SET(EXECUTABLE weechat-curses)
|
||||
|
||||
FIND_PACKAGE(Ncurses)
|
||||
IF(NCURSES_FOUND)
|
||||
CHECK_INCLUDE_FILES(ncursesw/ncurses.h NCURSESW_HEADERS)
|
||||
IF(NCURSESW_HEADERS)
|
||||
ADD_DEFINITIONS(-DHAVE_NCURSESW_CURSES_H)
|
||||
ELSE(NCURSESW_HEADERS)
|
||||
CHECK_INCLUDE_FILES(ncurses.h NCURSES_HEADERS)
|
||||
IF(NCURSES_HEADERS)
|
||||
ADD_DEFINITIONS(-DHAVE_NCURSES_H)
|
||||
ENDIF(NCURSES_HEADERS)
|
||||
ENDIF(NCURSESW_HEADERS)
|
||||
|
||||
LIST(APPEND EXTRA_LIBS ${NCURSES_LIBRARY})
|
||||
ENDIF(NCURSES_FOUND)
|
||||
|
||||
ADD_EXECUTABLE(${EXECUTABLE} ${WEECHAT_CURSES_SRC})
|
||||
INCLUDE_DIRECTORIES(.. ../../common ../../irc ../../plugins)
|
||||
TARGET_LINK_LIBRARIES(${EXECUTABLE} ${STATIC_LIBS} ${EXTRA_LIBS})
|
||||
|
||||
INSTALL(TARGETS ${EXECUTABLE} RUNTIME DESTINATION bin)
|
||||
@@ -535,6 +535,7 @@ gui_color_init_weechat ()
|
||||
gui_color[COLOR_WIN_INPUT_CHANNEL] = gui_color_build (COLOR_WIN_INPUT_CHANNEL, cfg_col_input_channel, cfg_col_input_bg);
|
||||
gui_color[COLOR_WIN_INPUT_NICK] = gui_color_build (COLOR_WIN_INPUT_NICK, cfg_col_input_nick, cfg_col_input_bg);
|
||||
gui_color[COLOR_WIN_INPUT_DELIMITERS] = gui_color_build (COLOR_WIN_INPUT_DELIMITERS, cfg_col_input_delimiters, cfg_col_input_bg);
|
||||
gui_color[COLOR_WIN_INPUT_TEXT_NOT_FOUND] = gui_color_build (COLOR_WIN_INPUT_TEXT_NOT_FOUND, cfg_col_input_text_not_found, cfg_col_input_bg);
|
||||
gui_color[COLOR_WIN_NICK] = gui_color_build (COLOR_WIN_NICK, cfg_col_nick, cfg_col_nick_bg);
|
||||
gui_color[COLOR_WIN_NICK_AWAY] = gui_color_build (COLOR_WIN_NICK_AWAY, cfg_col_nick_away, cfg_col_nick_bg);
|
||||
gui_color[COLOR_WIN_NICK_CHANOWNER] = gui_color_build (COLOR_WIN_NICK_CHANOWNER, cfg_col_nick_chanowner, cfg_col_nick_bg);
|
||||
|
||||
@@ -96,7 +96,7 @@ gui_input_get_prompt_length (t_gui_window *window, char *nick)
|
||||
pos++;
|
||||
switch (pos[0])
|
||||
{
|
||||
case 'c':
|
||||
case 'c': /* channel or server name */
|
||||
if (CHANNEL(window->buffer))
|
||||
length += utf8_width_screen (CHANNEL(window->buffer)->name);
|
||||
else
|
||||
@@ -106,8 +106,8 @@ gui_input_get_prompt_length (t_gui_window *window, char *nick)
|
||||
}
|
||||
pos++;
|
||||
break;
|
||||
case 'm':
|
||||
if (SERVER(window->buffer))
|
||||
case 'm': /* nick modes */
|
||||
if (SERVER(window->buffer) && SERVER(window->buffer)->is_connected)
|
||||
{
|
||||
if (SERVER(window->buffer)->nick_modes
|
||||
&& SERVER(window->buffer)->nick_modes[0])
|
||||
@@ -115,7 +115,7 @@ gui_input_get_prompt_length (t_gui_window *window, char *nick)
|
||||
}
|
||||
pos++;
|
||||
break;
|
||||
case 'n':
|
||||
case 'n': /* nick */
|
||||
length += utf8_width_screen (nick);
|
||||
pos++;
|
||||
break;
|
||||
@@ -180,7 +180,7 @@ gui_input_draw_prompt (t_gui_window *window, char *nick)
|
||||
pos++;
|
||||
switch (pos[0])
|
||||
{
|
||||
case 'c':
|
||||
case 'c': /* channel or server name */
|
||||
if (CHANNEL(window->buffer))
|
||||
{
|
||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_input,
|
||||
@@ -208,8 +208,8 @@ gui_input_draw_prompt (t_gui_window *window, char *nick)
|
||||
}
|
||||
pos++;
|
||||
break;
|
||||
case 'm':
|
||||
if (SERVER(window->buffer))
|
||||
case 'm': /* nick modes */
|
||||
if (SERVER(window->buffer) && SERVER(window->buffer)->is_connected)
|
||||
{
|
||||
if (SERVER(window->buffer)->nick_modes
|
||||
&& SERVER(window->buffer)->nick_modes[0])
|
||||
@@ -222,7 +222,7 @@ gui_input_draw_prompt (t_gui_window *window, char *nick)
|
||||
}
|
||||
pos++;
|
||||
break;
|
||||
case 'n':
|
||||
case 'n': /* nick */
|
||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_input,
|
||||
COLOR_WIN_INPUT_NICK);
|
||||
buf = weechat_iconv_from_internal (NULL, nick);
|
||||
@@ -284,6 +284,15 @@ gui_input_draw_text (t_gui_window *window, int input_width)
|
||||
count_cursor = window->buffer->input_buffer_pos -
|
||||
window->buffer->input_buffer_1st_display;
|
||||
offset_cursor = 0;
|
||||
if (window->buffer->text_search != TEXT_SEARCH_DISABLED)
|
||||
{
|
||||
if (window->buffer->text_search_found)
|
||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_input,
|
||||
COLOR_WIN_INPUT);
|
||||
else
|
||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_input,
|
||||
COLOR_WIN_INPUT_TEXT_NOT_FOUND);
|
||||
}
|
||||
while ((input_width > 0) && ptr_start && ptr_start[0])
|
||||
{
|
||||
ptr_next = utf8_next_char (ptr_start);
|
||||
@@ -292,18 +301,21 @@ gui_input_draw_text (t_gui_window *window, int input_width)
|
||||
saved_char = ptr_next[0];
|
||||
ptr_next[0] = '\0';
|
||||
size = ptr_next - ptr_start;
|
||||
if (window->buffer->input_buffer_color_mask[pos_mask] != ' ')
|
||||
color = window->buffer->input_buffer_color_mask[pos_mask] - '0';
|
||||
else
|
||||
color = -1;
|
||||
if (color != last_color)
|
||||
if (window->buffer->text_search == TEXT_SEARCH_DISABLED)
|
||||
{
|
||||
if (color == -1)
|
||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_input, COLOR_WIN_INPUT);
|
||||
if (window->buffer->input_buffer_color_mask[pos_mask] != ' ')
|
||||
color = window->buffer->input_buffer_color_mask[pos_mask] - '0';
|
||||
else
|
||||
gui_input_set_color (window, color);
|
||||
color = -1;
|
||||
if (color != last_color)
|
||||
{
|
||||
if (color == -1)
|
||||
gui_window_set_weechat_color (GUI_CURSES(window)->win_input, COLOR_WIN_INPUT);
|
||||
else
|
||||
gui_input_set_color (window, color);
|
||||
}
|
||||
last_color = color;
|
||||
}
|
||||
last_color = color;
|
||||
output = weechat_iconv_from_internal (NULL, ptr_start);
|
||||
wprintw (GUI_CURSES(window)->win_input, "%s", (output) ? output : ptr_start);
|
||||
if (output)
|
||||
@@ -355,9 +367,9 @@ gui_input_draw (t_gui_buffer *buffer, int erase)
|
||||
if (buffer->input_buffer_length == 0)
|
||||
buffer->input_buffer[0] = '\0';
|
||||
|
||||
if (SERVER(buffer))
|
||||
if (SERVER(buffer) && SERVER(buffer)->is_connected)
|
||||
ptr_nickname = (SERVER(buffer)->nick) ?
|
||||
SERVER(buffer)->nick : SERVER(buffer)->nick1;
|
||||
SERVER(buffer)->nick : cfg_look_no_nickname;
|
||||
else
|
||||
ptr_nickname = cfg_look_no_nickname;
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ gui_keyboard_grab_end ()
|
||||
void
|
||||
gui_keyboard_read ()
|
||||
{
|
||||
int key, i, insert_ok;
|
||||
int key, i, insert_ok, input_draw;
|
||||
char key_str[32], *key_utf, *input_old;
|
||||
|
||||
i = 0;
|
||||
@@ -278,6 +278,8 @@ gui_keyboard_read ()
|
||||
strdup (gui_current_window->buffer->input_buffer) : strdup ("");
|
||||
else
|
||||
input_old = NULL;
|
||||
|
||||
input_draw = 0;
|
||||
|
||||
if ((gui_keyboard_pressed (key_str) != 0) && (insert_ok))
|
||||
{
|
||||
@@ -289,7 +291,7 @@ gui_keyboard_read ()
|
||||
case BUFFER_TYPE_STANDARD:
|
||||
gui_insert_string_input (gui_current_window, key_str, -1);
|
||||
gui_current_window->buffer->completion.position = -1;
|
||||
gui_input_draw (gui_current_window->buffer, 0);
|
||||
input_draw = 1;
|
||||
break;
|
||||
case BUFFER_TYPE_DCC:
|
||||
gui_exec_action_dcc (gui_current_window, key_str);
|
||||
@@ -304,7 +306,13 @@ gui_keyboard_read ()
|
||||
if ((gui_current_window->buffer->text_search != TEXT_SEARCH_DISABLED)
|
||||
&& ((input_old == NULL) || (gui_current_window->buffer->input_buffer == NULL)
|
||||
|| (strcmp (input_old, gui_current_window->buffer->input_buffer) != 0)))
|
||||
{
|
||||
gui_buffer_search_restart (gui_current_window);
|
||||
input_draw = 1;
|
||||
}
|
||||
|
||||
if (input_draw)
|
||||
gui_input_draw (gui_current_window->buffer, 0);
|
||||
|
||||
if (input_old)
|
||||
free (input_old);
|
||||
|
||||
@@ -139,7 +139,7 @@ gui_main_loop ()
|
||||
{
|
||||
if (ptr_server->is_connected)
|
||||
{
|
||||
server_outqueue_send (ptr_server);
|
||||
irc_server_outqueue_send (ptr_server);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -170,7 +170,7 @@ gui_main_loop ()
|
||||
if (check_away >= (cfg_irc_away_check * 60))
|
||||
{
|
||||
check_away = 0;
|
||||
server_check_away ();
|
||||
irc_server_check_away ();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -223,7 +223,7 @@ gui_main_loop ()
|
||||
if ((!ptr_server->is_connected)
|
||||
&& (ptr_server->reconnect_start > 0)
|
||||
&& (new_time >= (ptr_server->reconnect_start + ptr_server->autoreconnect_delay)))
|
||||
server_reconnect (ptr_server);
|
||||
irc_server_reconnect (ptr_server);
|
||||
else
|
||||
{
|
||||
if (ptr_server->is_connected)
|
||||
@@ -232,7 +232,7 @@ gui_main_loop ()
|
||||
if ((ptr_server->lag_check_time.tv_sec == 0)
|
||||
&& (new_time >= ptr_server->lag_next_check))
|
||||
{
|
||||
server_sendf (ptr_server, "PING %s", ptr_server->address);
|
||||
irc_server_sendf (ptr_server, "PING %s", ptr_server->address);
|
||||
gettimeofday (&(ptr_server->lag_check_time), NULL);
|
||||
}
|
||||
|
||||
@@ -248,7 +248,7 @@ gui_main_loop ()
|
||||
gui_printf (ptr_server->buffer,
|
||||
_("%s lag is high, disconnecting from server...\n"),
|
||||
WEECHAT_WARNING);
|
||||
server_disconnect (ptr_server, 1);
|
||||
irc_server_disconnect (ptr_server, 1);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -282,22 +282,22 @@ gui_main_loop ()
|
||||
if (!ptr_server->is_connected && (ptr_server->child_pid > 0))
|
||||
{
|
||||
if (FD_ISSET (ptr_server->child_read, &read_fd))
|
||||
server_child_read (ptr_server);
|
||||
irc_server_child_read (ptr_server);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((ptr_server->sock >= 0) &&
|
||||
(FD_ISSET (ptr_server->sock, &read_fd)))
|
||||
server_recv (ptr_server);
|
||||
irc_server_recv (ptr_server);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* manages active DCC */
|
||||
dcc_handle ();
|
||||
irc_dcc_handle ();
|
||||
}
|
||||
if (send_irc_quit)
|
||||
irc_cmd_send_quit (NULL, NULL, NULL);
|
||||
irc_send_cmd_quit (NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -54,7 +54,7 @@ gui_nicklist_draw (t_gui_buffer *buffer, int erase, int calculate_size)
|
||||
{
|
||||
if ((ptr_win->buffer == buffer) && (buffer->num_displayed > 0))
|
||||
{
|
||||
max_length = nick_get_max_length (CHANNEL(buffer));
|
||||
max_length = irc_nick_get_max_length (CHANNEL(buffer));
|
||||
|
||||
if (calculate_size && (gui_window_calculate_pos_size (ptr_win, 0)))
|
||||
{
|
||||
@@ -193,6 +193,12 @@ gui_nicklist_draw (t_gui_buffer *buffer, int erase, int calculate_size)
|
||||
mvwprintw (GUI_CURSES(ptr_win)->win_nick, y, x, "&");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->flags & NICK_CHANADMIN2)
|
||||
{
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_nick, COLOR_WIN_NICK_CHANADMIN);
|
||||
mvwprintw (GUI_CURSES(ptr_win)->win_nick, y, x, "!");
|
||||
x++;
|
||||
}
|
||||
else if (ptr_nick->flags & NICK_OP)
|
||||
{
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_nick, COLOR_WIN_NICK_OP);
|
||||
|
||||
@@ -127,9 +127,9 @@ gui_status_draw (t_gui_buffer *buffer, int erase)
|
||||
SERVER(ptr_win->buffer)->name);
|
||||
if (ptr_win->buffer->all_servers)
|
||||
{
|
||||
server_get_number_buffer (SERVER(ptr_win->buffer),
|
||||
&server_pos,
|
||||
&server_total);
|
||||
irc_server_get_number_buffer (SERVER(ptr_win->buffer),
|
||||
&server_pos,
|
||||
&server_total);
|
||||
gui_window_set_weechat_color (GUI_CURSES(ptr_win)->win_status,
|
||||
COLOR_WIN_STATUS_DELIMITERS);
|
||||
wprintw (GUI_CURSES(ptr_win)->win_status, "(");
|
||||
|
||||
@@ -206,7 +206,7 @@ gui_window_calculate_pos_size (t_gui_window *window, int force_calculate)
|
||||
/* init chat & nicklist settings */
|
||||
if (cfg_look_nicklist && BUFFER_IS_CHANNEL(window->buffer))
|
||||
{
|
||||
max_length = nick_get_max_length (CHANNEL(window->buffer));
|
||||
max_length = irc_nick_get_max_length (CHANNEL(window->buffer));
|
||||
|
||||
lines = 0;
|
||||
|
||||
@@ -224,8 +224,8 @@ gui_window_calculate_pos_size (t_gui_window *window, int force_calculate)
|
||||
}
|
||||
else
|
||||
{
|
||||
nick_count (CHANNEL(window->buffer), &num_nicks, &num_op,
|
||||
&num_halfop, &num_voice, &num_normal);
|
||||
irc_nick_count (CHANNEL(window->buffer), &num_nicks, &num_op,
|
||||
&num_halfop, &num_voice, &num_normal);
|
||||
width_used = (window->win_width - add_left - add_right)
|
||||
- ((window->win_width - add_left - add_right) % (max_length + 2));
|
||||
if (((max_length + 2) * num_nicks) % width_used == 0)
|
||||
|
||||
+58
-4
@@ -168,7 +168,7 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int type,
|
||||
new_buffer->line_complete = 1;
|
||||
|
||||
/* notify level */
|
||||
new_buffer->notify_level = channel_get_notify_level (server, channel);
|
||||
new_buffer->notify_level = irc_channel_get_notify_level (server, channel);
|
||||
|
||||
/* create/append to log file */
|
||||
new_buffer->log_filename = NULL;
|
||||
@@ -210,6 +210,7 @@ gui_buffer_new (t_gui_window *window, void *server, void *channel, int type,
|
||||
/* text search */
|
||||
new_buffer->text_search = TEXT_SEARCH_DISABLED;
|
||||
new_buffer->text_search_exact = 0;
|
||||
new_buffer->text_search_found = 0;
|
||||
new_buffer->text_search_input = NULL;
|
||||
|
||||
/* add buffer to buffers queue */
|
||||
@@ -273,7 +274,7 @@ gui_buffer_search (char *server, char *channel)
|
||||
{
|
||||
if (server && server[0])
|
||||
{
|
||||
ptr_server = server_search (server);
|
||||
ptr_server = irc_server_search (server);
|
||||
if (!ptr_server)
|
||||
return NULL;
|
||||
}
|
||||
@@ -282,7 +283,7 @@ gui_buffer_search (char *server, char *channel)
|
||||
{
|
||||
if (ptr_server)
|
||||
{
|
||||
ptr_channel = channel_search_any (ptr_server, channel);
|
||||
ptr_channel = irc_channel_search_any (ptr_server, channel);
|
||||
if (ptr_channel)
|
||||
ptr_buffer = ptr_channel->buffer;
|
||||
}
|
||||
@@ -366,6 +367,54 @@ gui_buffer_find_window (t_gui_buffer *buffer)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_find_context: find window/buffer for a server/channel
|
||||
*/
|
||||
|
||||
void
|
||||
gui_buffer_find_context (void *server, void *channel,
|
||||
t_gui_window **window, t_gui_buffer **buffer)
|
||||
{
|
||||
t_gui_window *ptr_win;
|
||||
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
/* first find buffer */
|
||||
*buffer = NULL;
|
||||
if ((t_irc_channel *)channel && ((t_irc_channel *)channel)->buffer)
|
||||
*buffer = ((t_irc_channel *)channel)->buffer;
|
||||
else
|
||||
{
|
||||
if ((t_irc_server *)server && ((t_irc_server *)server)->buffer)
|
||||
*buffer = ((t_irc_server *)server)->buffer;
|
||||
else
|
||||
*buffer = gui_current_window->buffer;
|
||||
}
|
||||
|
||||
/* then find first window displaying this buffer */
|
||||
if (window)
|
||||
{
|
||||
*window = NULL;
|
||||
if (gui_current_window->buffer == *buffer)
|
||||
*window = gui_current_window;
|
||||
else
|
||||
{
|
||||
for (ptr_win = gui_windows; ptr_win;
|
||||
ptr_win = ptr_win->next_window)
|
||||
{
|
||||
if (ptr_win->buffer == *buffer)
|
||||
{
|
||||
*window = ptr_win;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!*window)
|
||||
*window = gui_current_window;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* gui_buffer_is_scrolled: return 1 if all windows displaying buffer are scrolled
|
||||
* (user doesn't see end of buffer)
|
||||
@@ -1082,6 +1131,7 @@ gui_buffer_search_start (t_gui_window *window)
|
||||
{
|
||||
window->buffer->text_search = TEXT_SEARCH_BACKWARD;
|
||||
window->buffer->text_search_exact = 0;
|
||||
window->buffer->text_search_found = 0;
|
||||
if (window->buffer->text_search_input)
|
||||
{
|
||||
free (window->buffer->text_search_input);
|
||||
@@ -1106,7 +1156,10 @@ gui_buffer_search_restart (t_gui_window *window)
|
||||
window->start_line = NULL;
|
||||
window->start_line_pos = 0;
|
||||
window->buffer->text_search = TEXT_SEARCH_BACKWARD;
|
||||
if (!gui_buffer_search_text (window))
|
||||
window->buffer->text_search_found = 0;
|
||||
if (gui_buffer_search_text (window))
|
||||
window->buffer->text_search_found = 1;
|
||||
else
|
||||
{
|
||||
gui_chat_draw (window->buffer, 1);
|
||||
gui_status_draw (window->buffer, 1);
|
||||
@@ -1131,6 +1184,7 @@ gui_buffer_search_stop (t_gui_window *window)
|
||||
}
|
||||
window->start_line = NULL;
|
||||
window->start_line_pos = 0;
|
||||
hotlist_remove_buffer (window->buffer);
|
||||
gui_chat_draw (window->buffer, 0);
|
||||
gui_status_draw (window->buffer, 1);
|
||||
gui_input_draw (window->buffer, 1);
|
||||
|
||||
@@ -129,6 +129,7 @@ struct t_gui_buffer
|
||||
/* text search */
|
||||
int text_search; /* text search type */
|
||||
int text_search_exact; /* exact search (case sensitive) ? */
|
||||
int text_search_found; /* 1 if text found, otherwise 0 */
|
||||
char *text_search_input; /* input saved before text search */
|
||||
|
||||
/* link to previous/next buffer */
|
||||
|
||||
@@ -90,6 +90,7 @@ enum t_weechat_color
|
||||
COLOR_DCC_ABORTED,
|
||||
COLOR_WIN_INPUT_SERVER,
|
||||
COLOR_WIN_TITLE_MORE,
|
||||
COLOR_WIN_INPUT_TEXT_NOT_FOUND,
|
||||
GUI_NUM_COLORS
|
||||
};
|
||||
|
||||
|
||||
@@ -672,7 +672,7 @@ gui_exec_action_dcc (t_gui_window *window, char *actions)
|
||||
&& (DCC_IS_RECV(dcc_selected->status))
|
||||
&& (dcc_selected->status == DCC_WAITING))
|
||||
{
|
||||
dcc_accept (dcc_selected);
|
||||
irc_dcc_accept (dcc_selected);
|
||||
}
|
||||
break;
|
||||
/* cancel DCC */
|
||||
@@ -681,7 +681,7 @@ gui_exec_action_dcc (t_gui_window *window, char *actions)
|
||||
if (dcc_selected
|
||||
&& (!DCC_ENDED(dcc_selected->status)))
|
||||
{
|
||||
dcc_close (dcc_selected, DCC_ABORTED);
|
||||
irc_dcc_close (dcc_selected, DCC_ABORTED);
|
||||
gui_window_redraw_buffer (window->buffer);
|
||||
}
|
||||
break;
|
||||
@@ -696,7 +696,7 @@ gui_exec_action_dcc (t_gui_window *window, char *actions)
|
||||
{
|
||||
ptr_dcc_next = ptr_dcc->next_dcc;
|
||||
if (DCC_ENDED(ptr_dcc->status))
|
||||
dcc_free (ptr_dcc);
|
||||
irc_dcc_free (ptr_dcc);
|
||||
ptr_dcc = ptr_dcc_next;
|
||||
}
|
||||
gui_window_redraw_buffer (window->buffer);
|
||||
@@ -731,7 +731,7 @@ gui_exec_action_dcc (t_gui_window *window, char *actions)
|
||||
window->dcc_selected = dcc_selected->next_dcc;
|
||||
else
|
||||
window->dcc_selected = NULL;
|
||||
dcc_free (dcc_selected);
|
||||
irc_dcc_free (dcc_selected);
|
||||
gui_window_redraw_buffer (window->buffer);
|
||||
}
|
||||
break;
|
||||
|
||||
+14
-3
@@ -552,6 +552,7 @@ gui_keyboard_pressed (char *key_str)
|
||||
int first_key;
|
||||
t_gui_key *ptr_key;
|
||||
char *buffer_before_key;
|
||||
char **commands, **ptr_cmd;
|
||||
|
||||
/* add key to buffer */
|
||||
first_key = (gui_key_buffer[0] == '\0');
|
||||
@@ -576,9 +577,19 @@ gui_keyboard_pressed (char *key_str)
|
||||
strdup (gui_current_window->buffer->input_buffer) : strdup ("");
|
||||
gui_key_buffer[0] = '\0';
|
||||
if (ptr_key->command)
|
||||
user_command (SERVER(gui_current_window->buffer),
|
||||
CHANNEL(gui_current_window->buffer),
|
||||
ptr_key->command, 0);
|
||||
{
|
||||
commands = split_multi_command (ptr_key->command, ';');
|
||||
if (commands)
|
||||
{
|
||||
for (ptr_cmd = commands; *ptr_cmd; ptr_cmd++)
|
||||
{
|
||||
user_command (SERVER(gui_current_window->buffer),
|
||||
CHANNEL(gui_current_window->buffer),
|
||||
*ptr_cmd, 0);
|
||||
}
|
||||
free_multi_command (commands);
|
||||
}
|
||||
}
|
||||
else
|
||||
(void)(ptr_key->function)(gui_current_window, ptr_key->args);
|
||||
#ifdef PLUGINS
|
||||
|
||||
@@ -85,6 +85,8 @@ extern t_gui_buffer *gui_buffer_new (t_gui_window *, void *, void *, int, int);
|
||||
extern t_gui_buffer *gui_buffer_search (char *, char *);
|
||||
extern t_gui_buffer *gui_buffer_search_by_number (int);
|
||||
extern t_gui_window *gui_buffer_find_window (t_gui_buffer *);
|
||||
extern void gui_buffer_find_context (void *, void *,
|
||||
t_gui_window **, t_gui_buffer **);
|
||||
extern int gui_buffer_is_scrolled (t_gui_buffer *);
|
||||
extern t_gui_buffer *gui_buffer_get_dcc (t_gui_window *);
|
||||
extern void gui_buffer_clear (t_gui_buffer *);
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
SET(LIB_IRC_SRC irc.h irc-commands.c irc-send.c irc-recv.c irc-server.c
|
||||
irc-channel.c irc-nick.c irc-mode.c irc-dcc.c irc-ignore.c irc-display.c)
|
||||
|
||||
CHECK_INCLUDE_FILES("regex.h" HAVE_REGEX_H)
|
||||
CHECK_FUNCTION_EXISTS(regexec HAVE_REGEXEC)
|
||||
CHECK_FUNCTION_EXISTS(uname HAVE_UNAME)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR})
|
||||
ADD_LIBRARY(weechat_irc STATIC ${LIB_IRC_SRC})
|
||||
+85
-44
@@ -41,11 +41,12 @@ char *channel_modes = "iklmnstp";
|
||||
|
||||
|
||||
/*
|
||||
* channel_new: allocate a new channel for a server and add it to the server queue
|
||||
* irc_channel_new: allocate a new channel for a server and add it to the
|
||||
* server queue
|
||||
*/
|
||||
|
||||
t_irc_channel *
|
||||
channel_new (t_irc_server *server, int channel_type, char *channel_name)
|
||||
irc_channel_new (t_irc_server *server, int channel_type, char *channel_name)
|
||||
{
|
||||
t_irc_channel *new_channel;
|
||||
|
||||
@@ -70,9 +71,12 @@ channel_new (t_irc_server *server, int channel_type, char *channel_name)
|
||||
new_channel->cycle = 0;
|
||||
new_channel->close = 0;
|
||||
new_channel->display_creation_date = 0;
|
||||
new_channel->nick_completion_reset = 0;
|
||||
new_channel->nicks = NULL;
|
||||
new_channel->last_nick = NULL;
|
||||
new_channel->buffer = NULL;
|
||||
new_channel->nicks_speaking = NULL;
|
||||
new_channel->last_nick_speaking = NULL;
|
||||
|
||||
/* add new channel to queue */
|
||||
new_channel->prev_channel = server->last_channel;
|
||||
@@ -88,11 +92,11 @@ channel_new (t_irc_server *server, int channel_type, char *channel_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_free: free a channel and remove it from channels queue
|
||||
* irc_channel_free: free a channel and remove it from channels queue
|
||||
*/
|
||||
|
||||
void
|
||||
channel_free (t_irc_server *server, t_irc_channel *channel)
|
||||
irc_channel_free (t_irc_server *server, t_irc_channel *channel)
|
||||
{
|
||||
t_irc_channel *new_channels;
|
||||
|
||||
@@ -105,8 +109,8 @@ channel_free (t_irc_server *server, t_irc_channel *channel)
|
||||
((t_irc_dcc *)(channel->dcc_chat))->channel = NULL;
|
||||
if (!DCC_ENDED(((t_irc_dcc *)(channel->dcc_chat))->status))
|
||||
{
|
||||
dcc_close ((t_irc_dcc *)(channel->dcc_chat), DCC_ABORTED);
|
||||
dcc_redraw (1);
|
||||
irc_dcc_close ((t_irc_dcc *)(channel->dcc_chat), DCC_ABORTED);
|
||||
irc_dcc_redraw (1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -133,32 +137,35 @@ channel_free (t_irc_server *server, t_irc_channel *channel)
|
||||
free (channel->modes);
|
||||
if (channel->key)
|
||||
free (channel->key);
|
||||
nick_free_all (channel);
|
||||
irc_nick_free_all (channel);
|
||||
if (channel->away_message)
|
||||
free (channel->away_message);
|
||||
if (channel->nicks_speaking)
|
||||
weelist_remove_all (&(channel->nicks_speaking),
|
||||
&(channel->last_nick_speaking));
|
||||
free (channel);
|
||||
server->channels = new_channels;
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_free_all: free all allocated channels
|
||||
* irc_channel_free_all: free all allocated channels
|
||||
*/
|
||||
|
||||
void
|
||||
channel_free_all (t_irc_server *server)
|
||||
irc_channel_free_all (t_irc_server *server)
|
||||
{
|
||||
/* remove all channels for the server */
|
||||
while (server->channels)
|
||||
channel_free (server, server->channels);
|
||||
irc_channel_free (server, server->channels);
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_search: returns pointer on a channel with name
|
||||
* WARNING: DCC chat channels are not returned by this function
|
||||
* irc_channel_search: returns pointer on a channel with name
|
||||
* WARNING: DCC chat channels are not returned by this function
|
||||
*/
|
||||
|
||||
t_irc_channel *
|
||||
channel_search (t_irc_server *server, char *channel_name)
|
||||
irc_channel_search (t_irc_server *server, char *channel_name)
|
||||
{
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
@@ -176,11 +183,11 @@ channel_search (t_irc_server *server, char *channel_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_search_any: returns pointer on a channel with name
|
||||
* irc_channel_search_any: returns pointer on a channel with name
|
||||
*/
|
||||
|
||||
t_irc_channel *
|
||||
channel_search_any (t_irc_server *server, char *channel_name)
|
||||
irc_channel_search_any (t_irc_server *server, char *channel_name)
|
||||
{
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
@@ -197,12 +204,12 @@ channel_search_any (t_irc_server *server, char *channel_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_search_any_without_buffer: returns pointer on a channel with name
|
||||
* looks only for channels without buffer
|
||||
* irc_channel_search_any_without_buffer: returns pointer on a channel with name
|
||||
* looks only for channels without buffer
|
||||
*/
|
||||
|
||||
t_irc_channel *
|
||||
channel_search_any_without_buffer (t_irc_server *server, char *channel_name)
|
||||
irc_channel_search_any_without_buffer (t_irc_server *server, char *channel_name)
|
||||
{
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
@@ -220,11 +227,11 @@ channel_search_any_without_buffer (t_irc_server *server, char *channel_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_search_dcc: returns pointer on a DCC chat channel with name
|
||||
* irc_channel_search_dcc: returns pointer on a DCC chat channel with name
|
||||
*/
|
||||
|
||||
t_irc_channel *
|
||||
channel_search_dcc (t_irc_server *server, char *channel_name)
|
||||
irc_channel_search_dcc (t_irc_server *server, char *channel_name)
|
||||
{
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
@@ -242,11 +249,11 @@ channel_search_dcc (t_irc_server *server, char *channel_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* string_is_channel: returns 1 if string is channel
|
||||
* irc_channel_is_channel: returns 1 if string is channel
|
||||
*/
|
||||
|
||||
int
|
||||
string_is_channel (char *string)
|
||||
irc_channel_is_channel (char *string)
|
||||
{
|
||||
char first_char[2];
|
||||
|
||||
@@ -259,11 +266,11 @@ string_is_channel (char *string)
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_remove_away: remove away for all nicks on a channel
|
||||
* irc_channel_remove_away: remove away for all nicks on a channel
|
||||
*/
|
||||
|
||||
void
|
||||
channel_remove_away (t_irc_channel *channel)
|
||||
irc_channel_remove_away (t_irc_channel *channel)
|
||||
{
|
||||
t_irc_nick *ptr_nick;
|
||||
|
||||
@@ -278,11 +285,11 @@ channel_remove_away (t_irc_channel *channel)
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_check_away: check for away on a channel
|
||||
* irc_channel_check_away: check for away on a channel
|
||||
*/
|
||||
|
||||
void
|
||||
channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
|
||||
irc_channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
|
||||
{
|
||||
if (channel->type == CHANNEL_TYPE_CHANNEL)
|
||||
{
|
||||
@@ -290,44 +297,44 @@ channel_check_away (t_irc_server *server, t_irc_channel *channel, int force)
|
||||
(channel->nicks_count <= cfg_irc_away_check_max_nicks))
|
||||
{
|
||||
channel->checking_away++;
|
||||
server_sendf (server, "WHO %s", channel->name);
|
||||
irc_server_sendf (server, "WHO %s", channel->name);
|
||||
}
|
||||
else
|
||||
channel_remove_away (channel);
|
||||
irc_channel_remove_away (channel);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_set_away: set/unset away status for a channel
|
||||
* irc_channel_set_away: set/unset away status for a channel
|
||||
*/
|
||||
|
||||
void
|
||||
channel_set_away (t_irc_channel *channel, char *nick, int is_away)
|
||||
irc_channel_set_away (t_irc_channel *channel, char *nick, int is_away)
|
||||
{
|
||||
t_irc_nick *ptr_nick;
|
||||
|
||||
if (channel->type == CHANNEL_TYPE_CHANNEL)
|
||||
{
|
||||
ptr_nick = nick_search (channel, nick);
|
||||
ptr_nick = irc_nick_search (channel, nick);
|
||||
if (ptr_nick)
|
||||
nick_set_away (channel, ptr_nick, is_away);
|
||||
irc_nick_set_away (channel, ptr_nick, is_away);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_create_dcc: create DCC CHAT channel
|
||||
* irc_channel_create_dcc: create DCC CHAT channel
|
||||
*/
|
||||
|
||||
int
|
||||
channel_create_dcc (t_irc_dcc *ptr_dcc)
|
||||
irc_channel_create_dcc (t_irc_dcc *ptr_dcc)
|
||||
{
|
||||
t_irc_channel *ptr_channel;
|
||||
|
||||
ptr_channel = channel_search_dcc (ptr_dcc->server, ptr_dcc->nick);
|
||||
ptr_channel = irc_channel_search_dcc (ptr_dcc->server, ptr_dcc->nick);
|
||||
if (!ptr_channel)
|
||||
{
|
||||
ptr_channel = channel_new (ptr_dcc->server, CHANNEL_TYPE_DCC_CHAT,
|
||||
ptr_dcc->nick);
|
||||
ptr_channel = irc_channel_new (ptr_dcc->server, CHANNEL_TYPE_DCC_CHAT,
|
||||
ptr_dcc->nick);
|
||||
if (!ptr_channel)
|
||||
return 0;
|
||||
gui_buffer_new (gui_current_window, ptr_dcc->server, ptr_channel,
|
||||
@@ -345,11 +352,11 @@ channel_create_dcc (t_irc_dcc *ptr_dcc)
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_get_notify_level: get channel notify level
|
||||
* irc_channel_get_notify_level: get channel notify level
|
||||
*/
|
||||
|
||||
int
|
||||
channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
irc_channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
{
|
||||
char *name, *pos, *pos2;
|
||||
int server_default_notify, notify;
|
||||
@@ -360,7 +367,7 @@ channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
if ((!server->notify_levels) || (!server->notify_levels[0]))
|
||||
return NOTIFY_LEVEL_DEFAULT;
|
||||
|
||||
server_default_notify = server_get_default_notify_level (server);
|
||||
server_default_notify = irc_server_get_default_notify_level (server);
|
||||
if ((channel->type != CHANNEL_TYPE_CHANNEL)
|
||||
&& (server_default_notify == 1))
|
||||
server_default_notify = 2;
|
||||
@@ -388,11 +395,12 @@ channel_get_notify_level (t_irc_server *server, t_irc_channel *channel)
|
||||
}
|
||||
|
||||
/*
|
||||
* server_set_notify_level: set channel notify level
|
||||
* irc_channel_set_notify_level: set channel notify level
|
||||
*/
|
||||
|
||||
void
|
||||
channel_set_notify_level (t_irc_server *server, t_irc_channel *channel, int notify)
|
||||
irc_channel_set_notify_level (t_irc_server *server, t_irc_channel *channel,
|
||||
int notify)
|
||||
{
|
||||
char level_string[2];
|
||||
|
||||
@@ -405,11 +413,36 @@ channel_set_notify_level (t_irc_server *server, t_irc_channel *channel, int noti
|
||||
}
|
||||
|
||||
/*
|
||||
* channel_print_log: print channel infos in log (usually for crash dump)
|
||||
* irc_channel_add_nick_speaking: add a nick speaking on a channel
|
||||
*/
|
||||
|
||||
void
|
||||
channel_print_log (t_irc_channel *channel)
|
||||
irc_channel_add_nick_speaking (t_irc_channel *channel, char *nick)
|
||||
{
|
||||
int size, to_remove, i;
|
||||
|
||||
weelist_add (&(channel->nicks_speaking), &(channel->last_nick_speaking),
|
||||
nick, WEELIST_POS_END);
|
||||
|
||||
size = weelist_get_size (channel->nicks_speaking);
|
||||
if (size > CHANNEL_NICKS_SPEAKING_LIMIT)
|
||||
{
|
||||
to_remove = size - CHANNEL_NICKS_SPEAKING_LIMIT;
|
||||
for (i = 0; i < to_remove; i++)
|
||||
{
|
||||
weelist_remove (&(channel->nicks_speaking),
|
||||
&(channel->last_nick_speaking),
|
||||
channel->nicks_speaking);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* irc_channel_print_log: print channel infos in log (usually for crash dump)
|
||||
*/
|
||||
|
||||
void
|
||||
irc_channel_print_log (t_irc_channel *channel)
|
||||
{
|
||||
weechat_log_printf ("=> channel %s (addr:0x%X)]\n", channel->name, channel);
|
||||
weechat_log_printf (" type . . . . . . . . : %d\n", channel->type);
|
||||
@@ -426,6 +459,14 @@ channel_print_log (t_irc_channel *channel)
|
||||
weechat_log_printf (" nicks. . . . . . . . : 0x%X\n", channel->nicks);
|
||||
weechat_log_printf (" last_nick. . . . . . : 0x%X\n", channel->last_nick);
|
||||
weechat_log_printf (" buffer . . . . . . . : 0x%X\n", channel->buffer);
|
||||
weechat_log_printf (" nicks_speaking . . . : 0x%X\n", channel->nicks_speaking);
|
||||
weechat_log_printf (" last_nick_speaking . : 0x%X\n", channel->last_nick_speaking);
|
||||
weechat_log_printf (" prev_channel . . . . : 0x%X\n", channel->prev_channel);
|
||||
weechat_log_printf (" next_channel . . . . : 0x%X\n", channel->next_channel);
|
||||
if (channel->nicks_speaking)
|
||||
{
|
||||
weechat_log_printf ("\n");
|
||||
weelist_print_log (channel->nicks_speaking,
|
||||
"channel nick speaking element");
|
||||
}
|
||||
}
|
||||
|
||||
+163
-157
@@ -34,105 +34,105 @@ t_irc_command irc_commands[] =
|
||||
{ { "admin", N_("find information about the administrator of the server"),
|
||||
N_("[target]"),
|
||||
N_("target: server"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_admin, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_admin, NULL },
|
||||
{ "ame", N_("send a CTCP action to all channels of all connected servers"),
|
||||
N_("message"),
|
||||
N_("message: message to send"),
|
||||
"", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_ame, NULL },
|
||||
"", 1, MAX_ARGS, 1, 1, NULL, irc_send_cmd_ame, NULL },
|
||||
{ "amsg", N_("send message to all channels of all connected servers"),
|
||||
N_("text"),
|
||||
N_("text: text to send"),
|
||||
"", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_amsg, NULL },
|
||||
"", 1, MAX_ARGS, 1, 1, NULL, irc_send_cmd_amsg, NULL },
|
||||
{ "away", N_("toggle away status"),
|
||||
N_("[-all] [message]"),
|
||||
N_(" -all: toggle away status on all connected servers\n"
|
||||
"message: message for away (if no message is given, away status is removed)"),
|
||||
"-all", 0, MAX_ARGS, 1, 0, NULL, irc_cmd_send_away, NULL },
|
||||
"-all", 0, MAX_ARGS, 1, 0, NULL, irc_send_cmd_away, NULL },
|
||||
{ "ban", N_("bans nicks or hosts"),
|
||||
N_("[channel] [nickname [nickname ...]]"),
|
||||
N_(" channel: channel for ban\n"
|
||||
"nickname: user or host to ban"),
|
||||
"%N", 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_ban, NULL },
|
||||
"%N", 0, MAX_ARGS, 0, 1, NULL, irc_send_cmd_ban, NULL },
|
||||
{ "ctcp", N_("send a CTCP message (Client-To-Client Protocol)"),
|
||||
N_("receiver type [arguments]"),
|
||||
N_(" receiver: nick or channel to send CTCP to\n"
|
||||
" type: CTCP type (examples: \"version\", \"ping\", ..)\n"
|
||||
"arguments: arguments for CTCP"),
|
||||
"%c|%n action|ping|version", 2, MAX_ARGS, 1, 1, NULL, irc_cmd_send_ctcp, NULL },
|
||||
"%c|%n action|ping|version", 2, MAX_ARGS, 1, 1, NULL, irc_send_cmd_ctcp, NULL },
|
||||
{ "cycle", N_("leave and rejoin a channel"),
|
||||
N_("[channel[,channel]] [part_message]"),
|
||||
N_(" channel: channel name for cycle\n"
|
||||
"part_message: part message (displayed to other users)"),
|
||||
"%p", 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_cycle, NULL },
|
||||
"%p", 0, MAX_ARGS, 0, 1, NULL, irc_send_cmd_cycle, NULL },
|
||||
{ "dehalfop", N_("removes half channel operator status from nickname(s)"),
|
||||
N_("[nickname [nickname]]"), "",
|
||||
"", 0, MAX_ARGS, 0, 1, irc_cmd_send_dehalfop, NULL, NULL },
|
||||
"", 0, MAX_ARGS, 0, 1, irc_send_cmd_dehalfop, NULL, NULL },
|
||||
{ "deop", N_("removes channel operator status from nickname(s)"),
|
||||
N_("[nickname [nickname]]"), "",
|
||||
"", 0, MAX_ARGS, 0, 1, irc_cmd_send_deop, NULL, NULL },
|
||||
"", 0, MAX_ARGS, 0, 1, irc_send_cmd_deop, NULL, NULL },
|
||||
{ "devoice", N_("removes voice from nickname(s)"),
|
||||
N_("[nickname [nickname]]"), "",
|
||||
"", 0, MAX_ARGS, 0, 1, irc_cmd_send_devoice, NULL, NULL },
|
||||
"", 0, MAX_ARGS, 0, 1, irc_send_cmd_devoice, NULL, NULL },
|
||||
{ "die", N_("shutdown the server"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, irc_cmd_send_die, NULL },
|
||||
NULL, 0, 0, 0, 1, NULL, irc_send_cmd_die, NULL },
|
||||
{ "error", N_("error received from IRC server"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "halfop", N_("gives half channel operator status to nickname(s)"),
|
||||
N_("[nickname [nickname]]"), "",
|
||||
"", 0, MAX_ARGS, 0, 1, irc_cmd_send_halfop, NULL, NULL },
|
||||
"", 0, MAX_ARGS, 0, 1, irc_send_cmd_halfop, NULL, NULL },
|
||||
{ "info", N_("get information describing the server"),
|
||||
N_("[target]"),
|
||||
N_("target: server name"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_info, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_info, NULL },
|
||||
{ "invite", N_("invite a nick on a channel"),
|
||||
N_("nickname channel"),
|
||||
N_("nickname: nick to invite\n"
|
||||
" channel: channel to invite"),
|
||||
"%n %c", 1, 2, 0, 1, irc_cmd_send_invite, NULL, irc_cmd_recv_invite },
|
||||
"%n %c", 1, 2, 0, 1, irc_send_cmd_invite, NULL, irc_recv_cmd_invite },
|
||||
{ "ison", N_("check if a nickname is currently on IRC"),
|
||||
N_("nickname [nickname ...]"),
|
||||
N_("nickname: nickname"),
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_ison, NULL },
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_ison, NULL },
|
||||
{ "join", N_("join a channel"),
|
||||
N_("channel[,channel] [key[,key]]"),
|
||||
N_("channel: channel name to join\n"
|
||||
" key: key to join the channel"),
|
||||
NULL, 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_join, irc_cmd_recv_join },
|
||||
NULL, 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_join, irc_recv_cmd_join },
|
||||
{ "kick", N_("forcibly remove a user from a channel"),
|
||||
N_("[channel] nickname [comment]"),
|
||||
N_(" channel: channel where user is\n"
|
||||
"nickname: nickname to kick\n"
|
||||
" comment: comment for kick"),
|
||||
"%n %-", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_kick, irc_cmd_recv_kick },
|
||||
"%n %-", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_kick, irc_recv_cmd_kick },
|
||||
{ "kickban", N_("kicks and bans a nick from a channel"),
|
||||
N_("[channel] nickname [comment]"),
|
||||
N_(" channel: channel where user is\n"
|
||||
"nickname: nickname to kick and ban\n"
|
||||
" comment: comment for kick"),
|
||||
"%n %-", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_kickban, NULL },
|
||||
"%n %-", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_kickban, NULL },
|
||||
{ "kill", N_("close client-server connection"),
|
||||
N_("nickname comment"),
|
||||
N_("nickname: nickname\n"
|
||||
" comment: comment for kill"),
|
||||
"%n %-", 2, MAX_ARGS, 0, 1, NULL, irc_cmd_send_kill, irc_cmd_recv_kill },
|
||||
"%n %-", 2, MAX_ARGS, 0, 1, NULL, irc_send_cmd_kill, irc_recv_cmd_kill },
|
||||
{ "links", N_("list all servernames which are known by the server answering the query"),
|
||||
N_("[[server] server_mask]"),
|
||||
N_(" server: this server should answer the query\n"
|
||||
"server_mask: list of servers must match this mask"),
|
||||
NULL, 0, 2, 0, 1, NULL, irc_cmd_send_links, NULL },
|
||||
NULL, 0, 2, 0, 1, NULL, irc_send_cmd_links, NULL },
|
||||
{ "list", N_("list channels and their topic"),
|
||||
N_("[channel[,channel] [server]]"),
|
||||
N_("channel: channel to list (a regexp is allowed)\nserver: server name"),
|
||||
NULL, 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_list, NULL },
|
||||
NULL, 0, MAX_ARGS, 0, 1, NULL, irc_send_cmd_list, NULL },
|
||||
{ "lusers", N_("get statistics about the size of the IRC network"),
|
||||
N_("[mask [target]]"),
|
||||
N_(" mask: servers matching the mask only\n"
|
||||
"target: server for forwarding request"),
|
||||
NULL, 0, 2, 0, 1, NULL, irc_cmd_send_lusers, NULL },
|
||||
NULL, 0, 2, 0, 1, NULL, irc_send_cmd_lusers, NULL },
|
||||
{ "me", N_("send a CTCP action to the current channel"),
|
||||
N_("message"),
|
||||
N_("message: message to send"),
|
||||
"", 0, MAX_ARGS, 1, 1, NULL, irc_cmd_send_me, NULL },
|
||||
"", 0, MAX_ARGS, 1, 1, NULL, irc_send_cmd_me, NULL },
|
||||
{ "mode", N_("change channel or user mode"),
|
||||
N_("{ channel {[+|-]|o|p|s|i|t|n|b|v} [limit] [user] [ban mask] } | "
|
||||
"{ nickname {[+|-]|i|w|s|o} }"),
|
||||
@@ -156,354 +156,360 @@ t_irc_command irc_commands[] =
|
||||
" s: mark a user for receive server notices\n"
|
||||
" w: user receives wallops\n"
|
||||
" o: operator flag"),
|
||||
"%c|%m", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_mode, irc_cmd_recv_mode },
|
||||
"%c|%m", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_mode, irc_recv_cmd_mode },
|
||||
{ "motd", N_("get the \"Message Of The Day\""),
|
||||
N_("[target]"),
|
||||
N_("target: server name"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_motd, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_motd, NULL },
|
||||
{ "msg", N_("send message to a nick or channel"),
|
||||
N_("receiver[,receiver] text"),
|
||||
N_("receiver: nick or channel (may be mask, '*' = current channel)\n"
|
||||
"text: text to send"),
|
||||
"", 2, MAX_ARGS, 1, 1, NULL, irc_cmd_send_msg, NULL },
|
||||
"", 2, MAX_ARGS, 1, 1, NULL, irc_send_cmd_msg, NULL },
|
||||
{ "names", N_("list nicknames on channels"),
|
||||
N_("[channel[,channel]]"),
|
||||
N_("channel: channel name"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_names, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_names, NULL },
|
||||
{ "nick", N_("change current nickname"),
|
||||
N_("[-all] nickname"),
|
||||
N_(" -all: set new nickname for all connected servers\n"
|
||||
"nickname: new nickname"),
|
||||
"-all", 1, 2, 0, 0, irc_cmd_send_nick, NULL, irc_cmd_recv_nick },
|
||||
"-all", 1, 2, 0, 0, irc_send_cmd_nick, NULL, irc_recv_cmd_nick },
|
||||
{ "notice", N_("send notice message to user"),
|
||||
N_("nickname text"),
|
||||
N_("nickname: user to send notice to\n"
|
||||
" text: text to send"),
|
||||
"%n %-", 2, MAX_ARGS, 1, 1, NULL, irc_cmd_send_notice, irc_cmd_recv_notice },
|
||||
"%n %-", 2, MAX_ARGS, 1, 1, NULL, irc_send_cmd_notice, irc_recv_cmd_notice },
|
||||
{ "op", N_("gives channel operator status to nickname(s)"),
|
||||
N_("nickname [nickname]"), "",
|
||||
"", 1, MAX_ARGS, 0, 1, irc_cmd_send_op, NULL, NULL },
|
||||
"", 1, MAX_ARGS, 0, 1, irc_send_cmd_op, NULL, NULL },
|
||||
{ "oper", N_("get operator privileges"),
|
||||
N_("user password"),
|
||||
N_("user/password: used to get privileges on current IRC server"),
|
||||
NULL, 2, 2, 0, 1, NULL, irc_cmd_send_oper, NULL },
|
||||
NULL, 2, 2, 0, 1, NULL, irc_send_cmd_oper, NULL },
|
||||
{ "part", N_("leave a channel"),
|
||||
N_("[channel[,channel]] [part_message]"),
|
||||
N_(" channel: channel name to leave\n"
|
||||
"part_message: part message (displayed to other users)"),
|
||||
"%p", 0, MAX_ARGS, 0, 1, NULL, irc_cmd_send_part, irc_cmd_recv_part },
|
||||
"%p", 0, MAX_ARGS, 0, 1, NULL, irc_send_cmd_part, irc_recv_cmd_part },
|
||||
{ "ping", N_("ping server"),
|
||||
N_("server1 [server2]"),
|
||||
N_("server1: server to ping\nserver2: forward ping to this server"),
|
||||
NULL, 1, 2, 0, 1, NULL, irc_cmd_send_ping, irc_cmd_recv_ping },
|
||||
NULL, 1, 2, 0, 1, NULL, irc_send_cmd_ping, irc_recv_cmd_ping },
|
||||
{ "pong", N_("answer to a ping message"),
|
||||
N_("daemon [daemon2]"),
|
||||
N_(" daemon: daemon who has responded to Ping message\n"
|
||||
"daemon2: forward message to this daemon"),
|
||||
NULL, 1, 2, 0, 1, NULL, irc_cmd_send_pong, irc_cmd_recv_pong },
|
||||
NULL, 1, 2, 0, 1, NULL, irc_send_cmd_pong, irc_recv_cmd_pong },
|
||||
{ "privmsg", N_("message received"), "", "",
|
||||
"", 0, 0, 1, 1, NULL, NULL, irc_cmd_recv_privmsg },
|
||||
"", 0, 0, 1, 1, NULL, NULL, irc_recv_cmd_privmsg },
|
||||
{ "query", N_("send a private message to a nick"),
|
||||
N_("nickname [text]"),
|
||||
N_("nickname: nickname for private conversation\n"
|
||||
" text: text to send"),
|
||||
"%n %-", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_query, NULL },
|
||||
"%n %-", 1, MAX_ARGS, 1, 1, NULL, irc_send_cmd_query, NULL },
|
||||
{ "quit", N_("close all connections and quit"),
|
||||
N_("[quit_message]"),
|
||||
N_("quit_message: quit message (displayed to other users)"),
|
||||
"%q", 0, MAX_ARGS, 1, 0, NULL, irc_cmd_send_quit, irc_cmd_recv_quit },
|
||||
"%q", 0, MAX_ARGS, 1, 0, NULL, irc_send_cmd_quit, irc_recv_cmd_quit },
|
||||
{ "quote", N_("send raw data to server without parsing"),
|
||||
N_("data"),
|
||||
N_("data: raw data to send"),
|
||||
"", 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_quote, NULL },
|
||||
"", 1, MAX_ARGS, 1, 0, NULL, irc_send_cmd_quote, NULL },
|
||||
{ "rehash", N_("tell the server to reload its config file"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, irc_cmd_send_rehash, NULL },
|
||||
NULL, 0, 0, 0, 1, NULL, irc_send_cmd_rehash, NULL },
|
||||
{ "restart", N_("tell the server to restart itself"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, irc_cmd_send_restart, NULL },
|
||||
NULL, 0, 0, 0, 1, NULL, irc_send_cmd_restart, NULL },
|
||||
{ "service", N_("register a new service"),
|
||||
N_("nickname reserved distribution type reserved info"),
|
||||
N_("distribution: visibility of service\n"
|
||||
" type: reserved for future usage"),
|
||||
NULL, 6, 6, 0, 1, NULL, irc_cmd_send_service, NULL },
|
||||
NULL, 6, 6, 0, 1, NULL, irc_send_cmd_service, NULL },
|
||||
{ "servlist", N_("list services currently connected to the network"),
|
||||
N_("[mask [type]]"),
|
||||
N_("mask: list only services matching this mask\n"
|
||||
"type: list only services of this type"),
|
||||
NULL, 0, 2, 0, 1, NULL, irc_cmd_send_servlist, NULL },
|
||||
NULL, 0, 2, 0, 1, NULL, irc_send_cmd_servlist, NULL },
|
||||
{ "squery", N_("deliver a message to a service"),
|
||||
N_("service text"),
|
||||
N_("service: name of service\ntext: text to send"),
|
||||
NULL, 2, MAX_ARGS, 1, 1, NULL, irc_cmd_send_squery, NULL },
|
||||
NULL, 2, MAX_ARGS, 1, 1, NULL, irc_send_cmd_squery, NULL },
|
||||
{ "squit", N_("disconnect server links"),
|
||||
N_("server comment"),
|
||||
N_( "server: server name\n"
|
||||
"comment: comment for quit"),
|
||||
NULL, 2, 2, 1, 1, NULL, irc_cmd_send_squit, NULL },
|
||||
NULL, 2, 2, 1, 1, NULL, irc_send_cmd_squit, NULL },
|
||||
{ "stats", N_("query statistics about server"),
|
||||
N_("[query [server]]"),
|
||||
N_(" query: c/h/i/k/l/m/o/y/u (see RFC1459)\n"
|
||||
"server: server name"),
|
||||
NULL, 0, 2, 0, 1, NULL, irc_cmd_send_stats, NULL },
|
||||
NULL, 0, 2, 0, 1, NULL, irc_send_cmd_stats, NULL },
|
||||
{ "summon", N_("give users who are on a host running an IRC server a message "
|
||||
"asking them to please join IRC"),
|
||||
N_("user [target [channel]]"),
|
||||
N_(" user: username\ntarget: server name\n"
|
||||
"channel: channel name"),
|
||||
NULL, 1, 3, 0, 1, NULL, irc_cmd_send_summon, NULL },
|
||||
NULL, 1, 3, 0, 1, NULL, irc_send_cmd_summon, NULL },
|
||||
{ "time", N_("query local time from server"),
|
||||
N_("[target]"),
|
||||
N_("target: query time from specified server"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_time, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_time, NULL },
|
||||
{ "topic", N_("get/set channel topic"),
|
||||
N_("[channel] [topic]"),
|
||||
N_("channel: channel name\ntopic: new topic for channel "
|
||||
"(if topic is \"-delete\" then topic is deleted)"),
|
||||
"%t|-delete %-", 0, MAX_ARGS, 1, 1, NULL, irc_cmd_send_topic, irc_cmd_recv_topic },
|
||||
"%t|-delete %-", 0, MAX_ARGS, 1, 1, NULL, irc_send_cmd_topic, irc_recv_cmd_topic },
|
||||
{ "trace", N_("find the route to specific server"),
|
||||
N_("[target]"),
|
||||
N_("target: server"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_trace, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_trace, NULL },
|
||||
{ "unban", N_("unbans nicks or hosts"),
|
||||
N_("[channel] nickname [nickname ...]"),
|
||||
N_(" channel: channel for unban\n"
|
||||
"nickname: user or host to unban"),
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_unban, NULL },
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_unban, NULL },
|
||||
{ "userhost", N_("return a list of information about nicknames"),
|
||||
N_("nickname [nickname ...]"),
|
||||
N_("nickname: nickname"),
|
||||
"%n", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_userhost, NULL },
|
||||
"%n", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_userhost, NULL },
|
||||
{ "users", N_("list of users logged into the server"),
|
||||
N_("[target]"),
|
||||
N_("target: server"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_users, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_users, NULL },
|
||||
{ "version", N_("gives the version info of nick or server (current or specified)"),
|
||||
N_("[server | nickname]"),
|
||||
N_(" server: server name\n"
|
||||
"nickname: nickname"),
|
||||
NULL, 0, 1, 0, 1, NULL, irc_cmd_send_version, NULL },
|
||||
NULL, 0, 1, 0, 1, NULL, irc_send_cmd_version, NULL },
|
||||
{ "voice", N_("gives voice to nickname(s)"),
|
||||
N_("[nickname [nickname]]"), "",
|
||||
"", 0, MAX_ARGS, 0, 1, irc_cmd_send_voice, NULL, NULL },
|
||||
"", 0, MAX_ARGS, 0, 1, irc_send_cmd_voice, NULL, NULL },
|
||||
{ "wallops", N_("send a message to all currently connected users who have "
|
||||
"set the 'w' user mode for themselves"),
|
||||
N_("text"),
|
||||
N_("text to send"),
|
||||
NULL, 1, MAX_ARGS, 1, 1, NULL, irc_cmd_send_wallops, irc_cmd_recv_wallops },
|
||||
NULL, 1, MAX_ARGS, 1, 1, NULL, irc_send_cmd_wallops, irc_recv_cmd_wallops },
|
||||
{ "who", N_("generate a query which returns a list of information"),
|
||||
N_("[mask [\"o\"]]"),
|
||||
N_("mask: only information which match this mask\n"
|
||||
" o: only operators are returned according to the mask supplied"),
|
||||
"%C", 0, 2, 0, 1, NULL, irc_cmd_send_who, NULL },
|
||||
"%C", 0, 2, 0, 1, NULL, irc_send_cmd_who, NULL },
|
||||
{ "whois", N_("query information about user(s)"),
|
||||
N_("[server] nickname[,nickname]"),
|
||||
N_(" server: server name\n"
|
||||
"nickname: nickname (may be a mask)"),
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_whois, NULL },
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_whois, NULL },
|
||||
{ "whowas", N_("ask for information about a nickname which no longer exists"),
|
||||
N_("nickname [,nickname [,nickname ...]] [count [target]]"),
|
||||
N_("nickname: nickname to search\n"
|
||||
" count: number of replies to return (full search if negative number)\n"
|
||||
" target: reply should match this mask"),
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_cmd_send_whowas, NULL },
|
||||
"", 1, MAX_ARGS, 0, 1, NULL, irc_send_cmd_whowas, NULL },
|
||||
{ "001", N_("a server message"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_001 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_001 },
|
||||
{ "005", N_("a server message"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_005 },
|
||||
{ "221", N_("user mode string"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_221 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_221 },
|
||||
{ "301", N_("away message"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_301 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_301 },
|
||||
{ "302", N_("userhost"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_302 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_302 },
|
||||
{ "303", N_("ison"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_303 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_303 },
|
||||
{ "305", N_("unaway"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_305 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_305 },
|
||||
{ "306", N_("now away"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_306 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_306 },
|
||||
{ "307", N_("whois (registered nick)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_whois_nick_msg },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_whois_nick_msg },
|
||||
{ "310", N_("whois (help mode)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_310 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_310 },
|
||||
{ "311", N_("whois (user)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_311 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_311 },
|
||||
{ "312", N_("whois (server)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_312 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_312 },
|
||||
{ "313", N_("whois (operator)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_whois_nick_msg },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_whois_nick_msg },
|
||||
{ "314", N_("whowas"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_314 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_314 },
|
||||
{ "315", N_("end of /who list"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_315 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_315 },
|
||||
{ "317", N_("whois (idle)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_317 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_317 },
|
||||
{ "318", N_("whois (end)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_whois_nick_msg },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_whois_nick_msg },
|
||||
{ "319", N_("whois (channels)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_319 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_319 },
|
||||
{ "320", N_("whois (identified user)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_whois_nick_msg },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_whois_nick_msg },
|
||||
{ "321", N_("/list start"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_321 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_321 },
|
||||
{ "322", N_("channel (for /list)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_322 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_322 },
|
||||
{ "323", N_("/list end"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_323 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_323 },
|
||||
{ "324", N_("channel mode"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_324 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_324 },
|
||||
{ "326", N_("whois (has oper privs)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_whois_nick_msg },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_whois_nick_msg },
|
||||
{ "327", N_("whois (host)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_327 },
|
||||
{ "329", N_("channel creation date"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_329 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_329 },
|
||||
{ "331", N_("no topic for channel"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_331 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_331 },
|
||||
{ "332", N_("topic of channel"),
|
||||
N_("channel :topic"),
|
||||
N_("channel: name of channel\n"
|
||||
" topic: topic of the channel"),
|
||||
NULL, 2, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_332 },
|
||||
NULL, 2, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_332 },
|
||||
{ "333", N_("infos about topic (nick and date changed)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_333 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_333 },
|
||||
{ "338", N_("whois (host)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_338 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_338 },
|
||||
{ "341", N_("inviting"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_341 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_341 },
|
||||
{ "344", N_("channel reop"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_344 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_344 },
|
||||
{ "345", N_("end of channel reop list"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_345 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_345 },
|
||||
{ "348", N_("channel exception list"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_348 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_348 },
|
||||
{ "349", N_("end of channel exception list"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_349 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_349 },
|
||||
{ "351", N_("server version"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_351 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_351 },
|
||||
{ "352", N_("who"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_352 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_352 },
|
||||
{ "353", N_("list of nicks on channel"),
|
||||
N_("channel :[[@|+]nick ...]"),
|
||||
N_("channel: name of channel\n"
|
||||
" nick: nick on the channel"),
|
||||
NULL, 2, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_353 },
|
||||
NULL, 2, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_353 },
|
||||
{ "366", N_("end of /names list"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_366 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_366 },
|
||||
{ "367", N_("banlist"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_367 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_367 },
|
||||
{ "368", N_("end of banlist"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_368 },
|
||||
{ "378", N_("connecting from"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_378 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_368 },
|
||||
{ "378", N_("whois (connecting from)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_whois_nick_msg },
|
||||
{ "379", N_("whois (using modes)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_whois_nick_msg },
|
||||
{ "401", N_("no such nick/channel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "402", N_("no such server"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "403", N_("no such channel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "404", N_("cannot send to channel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "405", N_("too many channels"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "406", N_("was no such nick"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "407", N_("was no such nick"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "409", N_("no origin"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "410", N_("no services"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "411", N_("no recipient"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "412", N_("no text to send"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "413", N_("no toplevel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "414", N_("wilcard in toplevel domain"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "421", N_("unknown command"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "422", N_("MOTD is missing"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "423", N_("no administrative info"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "424", N_("file error"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "431", N_("no nickname given"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "432", N_("erroneous nickname"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_432 },
|
||||
{ "433", N_("nickname already in use"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_433 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_433 },
|
||||
{ "436", N_("nickname collision"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "437", N_("resource unavailable"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "438", N_("not authorized to change nickname"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_438 },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_438 },
|
||||
{ "441", N_("user not in channel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "442", N_("not on channel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "443", N_("user already on channel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "444", N_("user not logged in"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "445", N_("summon has been disabled"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "446", N_("users has been disabled"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "451", N_("you are not registered"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "461", N_("not enough parameters"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "462", N_("you may not register"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "463", N_("your host isn't among the privileged"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "464", N_("password incorrect"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "465", N_("you are banned from this server"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "467", N_("channel key already set"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "470", N_("forwarding to another channel"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "471", N_("channel is already full"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "472", N_("unknown mode char to me"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "473", N_("cannot join channel (invite only)"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "474", N_("cannot join channel (banned from channel)"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "475", N_("cannot join channel (bad channel key)"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "476", N_("bad channel mask"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "477", N_("channel doesn't support modes"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "481", N_("you're not an IRC operator"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "482", N_("you're not channel operator"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "483", N_("you can't kill a server!"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "484", N_("your connection is restricted!"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "485", N_("user is immune from kick/deop"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "487", N_("network split"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "491", N_("no O-lines for your host"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "501", N_("unknown mode flag"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "502", N_("can't change mode for other users"), "", "",
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_cmd_recv_error },
|
||||
NULL, 0, 0, MAX_ARGS, 1, NULL, NULL, irc_recv_cmd_error },
|
||||
{ "671", N_("whois (secure connection)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_671 },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_671 },
|
||||
{ "973", N_("whois (secure connection)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_server_mode_reason },
|
||||
{ "974", N_("whois (secure connection)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_server_mode_reason },
|
||||
{ "975", N_("whois (secure connection)"), "", "",
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_cmd_recv_server_mode_reason },
|
||||
NULL, 0, 0, 0, 1, NULL, NULL, irc_recv_cmd_server_mode_reason },
|
||||
{ NULL, NULL, NULL, NULL, NULL, 0, 0, 0, 1, NULL, NULL, NULL }
|
||||
};
|
||||
|
||||
+187
-185
File diff suppressed because it is too large
Load Diff
+43
-36
@@ -37,49 +37,53 @@
|
||||
|
||||
|
||||
/*
|
||||
* irc_find_context: find window/buffer for a server/channel
|
||||
* irc_display_hide_password: hide IRC password(s) in a string
|
||||
*/
|
||||
|
||||
void
|
||||
irc_find_context (t_irc_server *server, t_irc_channel *channel,
|
||||
t_gui_window **window, t_gui_buffer **buffer)
|
||||
irc_display_hide_password (char *string, int look_for_nickserv)
|
||||
{
|
||||
t_gui_window *ptr_win;
|
||||
|
||||
if (!buffer)
|
||||
return;
|
||||
|
||||
/* first find buffer */
|
||||
*buffer = NULL;
|
||||
if (channel && channel->buffer)
|
||||
*buffer = channel->buffer;
|
||||
else
|
||||
char *pos_nickserv, *pos, *pos_pwd;
|
||||
|
||||
pos = string;
|
||||
while (1)
|
||||
{
|
||||
if (server && server->buffer)
|
||||
*buffer = server->buffer;
|
||||
else
|
||||
*buffer = gui_current_window->buffer;
|
||||
}
|
||||
|
||||
/* then find first window displaying this buffer */
|
||||
if (window)
|
||||
{
|
||||
*window = NULL;
|
||||
if (gui_current_window->buffer == *buffer)
|
||||
*window = gui_current_window;
|
||||
if (look_for_nickserv)
|
||||
{
|
||||
pos_nickserv = strstr (pos, "nickserv ");
|
||||
if (!pos_nickserv)
|
||||
return;
|
||||
pos = pos_nickserv + 9;
|
||||
while (pos[0] == ' ')
|
||||
pos++;
|
||||
if ((strncmp (pos, "identify ", 9) == 0)
|
||||
|| (strncmp (pos, "register ", 9) == 0))
|
||||
pos_pwd = pos + 9;
|
||||
else
|
||||
pos_pwd = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (ptr_win = gui_windows; ptr_win;
|
||||
ptr_win = ptr_win->next_window)
|
||||
pos_pwd = strstr (pos, "identify ");
|
||||
if (!pos_pwd)
|
||||
pos_pwd = strstr (pos, "register ");
|
||||
if (!pos_pwd)
|
||||
return;
|
||||
pos_pwd += 9;
|
||||
}
|
||||
|
||||
if (pos_pwd)
|
||||
{
|
||||
while (pos_pwd[0] == ' ')
|
||||
pos_pwd++;
|
||||
|
||||
while (pos_pwd[0] && (pos_pwd[0] != ';') && (pos_pwd[0] != ' ')
|
||||
&& (pos_pwd[0] != '"'))
|
||||
{
|
||||
if (ptr_win->buffer == *buffer)
|
||||
{
|
||||
*window = ptr_win;
|
||||
break;
|
||||
}
|
||||
pos_pwd[0] = '*';
|
||||
pos_pwd++;
|
||||
}
|
||||
if (!*window)
|
||||
*window = gui_current_window;
|
||||
pos = pos_pwd;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -174,7 +178,7 @@ irc_display_nick (t_gui_buffer *buffer, t_irc_nick *nick, char *nickname,
|
||||
length += 2;
|
||||
if (nick && cfg_look_nickmode)
|
||||
{
|
||||
if (nick->flags & (NICK_CHANOWNER | NICK_CHANADMIN |
|
||||
if (nick->flags & (NICK_CHANOWNER | NICK_CHANADMIN | NICK_CHANADMIN2 |
|
||||
NICK_OP | NICK_HALFOP | NICK_VOICE))
|
||||
length += 1;
|
||||
else if (cfg_look_nickmode_empty && !no_nickmode)
|
||||
@@ -220,6 +224,9 @@ irc_display_nick (t_gui_buffer *buffer, t_irc_nick *nick, char *nickname,
|
||||
else if (nick->flags & NICK_CHANADMIN)
|
||||
gui_printf_type (buffer, type, "%s&",
|
||||
GUI_COLOR(COLOR_WIN_NICK_OP));
|
||||
else if (nick->flags & NICK_CHANADMIN2)
|
||||
gui_printf_type (buffer, type, "%s!",
|
||||
GUI_COLOR(COLOR_WIN_NICK_OP));
|
||||
else if (nick->flags & NICK_OP)
|
||||
gui_printf_type (buffer, type, "%s@",
|
||||
GUI_COLOR(COLOR_WIN_NICK_OP));
|
||||
@@ -426,7 +433,7 @@ irc_display_server (t_irc_server *server)
|
||||
if (string)
|
||||
{
|
||||
if (cfg_log_hide_nickserv_pwd)
|
||||
irc_hide_password (string, 1);
|
||||
irc_display_hide_password (string, 1);
|
||||
gui_printf (NULL, " server_command . . . . . . : %s\n",
|
||||
string);
|
||||
free (string);
|
||||
|
||||
+40
-38
@@ -42,12 +42,12 @@ t_irc_ignore *last_irc_ignore = NULL;
|
||||
|
||||
|
||||
/*
|
||||
* ignore_check_mask: returns 1 is mask1 and mask2 are the same host
|
||||
* anyone or both strings may have user and/or host after
|
||||
* irc_ignore_check_mask: return 1 is mask1 and mask2 are the same host
|
||||
* anyone or both strings may have user and/or host after
|
||||
*/
|
||||
|
||||
int
|
||||
ignore_check_mask (char *mask1, char *mask2)
|
||||
irc_ignore_check_mask (char *mask1, char *mask2)
|
||||
{
|
||||
char *m1, *m2, *pos;
|
||||
int match;
|
||||
@@ -85,15 +85,16 @@ ignore_check_mask (char *mask1, char *mask2)
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_match: check if pointed ignore matches with arguments
|
||||
* irc_ignore_match: check if pointed ignore matches with arguments
|
||||
*/
|
||||
|
||||
int
|
||||
ignore_match (t_irc_ignore *ptr_ignore, char *mask, char *type, char *channel_name, char *server_name)
|
||||
irc_ignore_match (t_irc_ignore *ptr_ignore, char *mask, char *type,
|
||||
char *channel_name, char *server_name)
|
||||
{
|
||||
/* check mask */
|
||||
if ((strcmp (mask, "*") != 0) && (strcmp (ptr_ignore->mask, "*") != 0)
|
||||
&& (!ignore_check_mask (ptr_ignore->mask, mask)))
|
||||
&& (!irc_ignore_check_mask (ptr_ignore->mask, mask)))
|
||||
return 0;
|
||||
|
||||
/* mask is matching, go on with type */
|
||||
@@ -132,13 +133,13 @@ ignore_match (t_irc_ignore *ptr_ignore, char *mask, char *type, char *channel_na
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_check: check if an ignore is set for arguments
|
||||
* returns 1 if at least one ignore exists (message should NOT be displayed)
|
||||
* 0 if no ignore found (message will be displayed)
|
||||
* irc_ignore_check: check if an ignore is set for arguments
|
||||
* return 1 if at least one ignore exists (message should NOT be displayed)
|
||||
* 0 if no ignore found (message will be displayed)
|
||||
*/
|
||||
|
||||
int
|
||||
ignore_check (char *mask, char *type, char *channel_name, char *server_name)
|
||||
irc_ignore_check (char *mask, char *type, char *channel_name, char *server_name)
|
||||
{
|
||||
t_irc_ignore *ptr_ignore;
|
||||
|
||||
@@ -148,7 +149,7 @@ ignore_check (char *mask, char *type, char *channel_name, char *server_name)
|
||||
for (ptr_ignore = irc_ignore; ptr_ignore;
|
||||
ptr_ignore = ptr_ignore->next_ignore)
|
||||
{
|
||||
if (ignore_match (ptr_ignore, mask, type, channel_name, server_name))
|
||||
if (irc_ignore_match (ptr_ignore, mask, type, channel_name, server_name))
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -157,11 +158,11 @@ ignore_check (char *mask, char *type, char *channel_name, char *server_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_search: search for an ignore
|
||||
* irc_ignore_search: search for an ignore
|
||||
*/
|
||||
|
||||
t_irc_ignore *
|
||||
ignore_search (char *mask, char *type, char *channel_name, char *server_name)
|
||||
irc_ignore_search (char *mask, char *type, char *channel_name, char *server_name)
|
||||
{
|
||||
t_irc_ignore *ptr_ignore;
|
||||
|
||||
@@ -180,11 +181,11 @@ ignore_search (char *mask, char *type, char *channel_name, char *server_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_add: add an ignore in list
|
||||
* irc_ignore_add: add an ignore in list
|
||||
*/
|
||||
|
||||
t_irc_ignore *
|
||||
ignore_add (char *mask, char *type, char *channel_name, char *server_name)
|
||||
irc_ignore_add (char *mask, char *type, char *channel_name, char *server_name)
|
||||
{
|
||||
int type_index;
|
||||
t_irc_command *command_ptr;
|
||||
@@ -218,7 +219,7 @@ ignore_add (char *mask, char *type, char *channel_name, char *server_name)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (ignore_search (mask, type, channel_name, server_name))
|
||||
if (irc_ignore_search (mask, type, channel_name, server_name))
|
||||
{
|
||||
irc_display_prefix (NULL, NULL, PREFIX_ERROR);
|
||||
gui_printf (NULL,
|
||||
@@ -258,12 +259,12 @@ ignore_add (char *mask, char *type, char *channel_name, char *server_name)
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_add_from_config: add an ignore to list, read from config file
|
||||
* (comma serparated values)
|
||||
* irc_ignore_add_from_config: add an ignore to list, read from config file
|
||||
* (comma serparated values)
|
||||
*/
|
||||
|
||||
t_irc_ignore *
|
||||
ignore_add_from_config (char *string)
|
||||
irc_ignore_add_from_config (char *string)
|
||||
{
|
||||
t_irc_ignore *new_ignore;
|
||||
char *string2;
|
||||
@@ -291,7 +292,7 @@ ignore_add_from_config (char *string)
|
||||
{
|
||||
pos_server[0] = '\0';
|
||||
pos_server++;
|
||||
new_ignore = ignore_add (pos_mask, pos_type, pos_channel, pos_server);
|
||||
new_ignore = irc_ignore_add (pos_mask, pos_type, pos_channel, pos_server);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -301,11 +302,11 @@ ignore_add_from_config (char *string)
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_free: free an ignore
|
||||
* irc_ignore_free: free an ignore
|
||||
*/
|
||||
|
||||
void
|
||||
ignore_free (t_irc_ignore *ptr_ignore)
|
||||
irc_ignore_free (t_irc_ignore *ptr_ignore)
|
||||
{
|
||||
t_irc_ignore *new_irc_ignore;
|
||||
|
||||
@@ -338,24 +339,25 @@ ignore_free (t_irc_ignore *ptr_ignore)
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_free_all: free all ignores
|
||||
* irc_ignore_free_all: free all ignores
|
||||
*/
|
||||
|
||||
void
|
||||
ignore_free_all ()
|
||||
irc_ignore_free_all ()
|
||||
{
|
||||
while (irc_ignore)
|
||||
ignore_free (irc_ignore);
|
||||
irc_ignore_free (irc_ignore);
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_search_free: search and free ignore(s)
|
||||
* return: number of ignore found and deleted
|
||||
* 0 if no ignore found
|
||||
* irc_ignore_search_free: search and free ignore(s)
|
||||
* return: number of ignore found and deleted
|
||||
* 0 if no ignore found
|
||||
*/
|
||||
|
||||
int
|
||||
ignore_search_free (char *mask, char *type, char *channel_name, char *server_name)
|
||||
irc_ignore_search_free (char *mask, char *type,
|
||||
char *channel_name, char *server_name)
|
||||
{
|
||||
int found;
|
||||
t_irc_ignore *ptr_ignore, *next_ignore;
|
||||
@@ -364,7 +366,7 @@ ignore_search_free (char *mask, char *type, char *channel_name, char *server_nam
|
||||
ptr_ignore = irc_ignore;
|
||||
while (ptr_ignore)
|
||||
{
|
||||
if (ignore_match (ptr_ignore, mask, type, channel_name, server_name))
|
||||
if (irc_ignore_match (ptr_ignore, mask, type, channel_name, server_name))
|
||||
{
|
||||
found++;
|
||||
if (found == 1)
|
||||
@@ -372,7 +374,7 @@ ignore_search_free (char *mask, char *type, char *channel_name, char *server_nam
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
weechat_cmd_ignore_display (_("Removing ignore:"), ptr_ignore);
|
||||
next_ignore = ptr_ignore->next_ignore;
|
||||
ignore_free (ptr_ignore);
|
||||
irc_ignore_free (ptr_ignore);
|
||||
ptr_ignore = next_ignore;
|
||||
}
|
||||
else
|
||||
@@ -383,13 +385,13 @@ ignore_search_free (char *mask, char *type, char *channel_name, char *server_nam
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_search_free_by_number: search and free ignore(s) by number
|
||||
* return: 1 if ignore found and deleted
|
||||
* 0 if ignore not found
|
||||
* irc_ignore_search_free_by_number: search and free ignore(s) by number
|
||||
* return: 1 if ignore found and deleted
|
||||
* 0 if ignore not found
|
||||
*/
|
||||
|
||||
int
|
||||
ignore_search_free_by_number (int number)
|
||||
irc_ignore_search_free_by_number (int number)
|
||||
{
|
||||
int i;
|
||||
t_irc_ignore *ptr_ignore;
|
||||
@@ -407,7 +409,7 @@ ignore_search_free_by_number (int number)
|
||||
gui_printf (NULL, "\n");
|
||||
irc_display_prefix (NULL, NULL, PREFIX_INFO);
|
||||
weechat_cmd_ignore_display (_("Removing ignore:"), ptr_ignore);
|
||||
ignore_free (ptr_ignore);
|
||||
irc_ignore_free (ptr_ignore);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
@@ -417,11 +419,11 @@ ignore_search_free_by_number (int number)
|
||||
}
|
||||
|
||||
/*
|
||||
* ignore_print_log: print ignore list in log (usually for crash dump)
|
||||
* irc_ignore_print_log: print ignore list in log (usually for crash dump)
|
||||
*/
|
||||
|
||||
void
|
||||
ignore_print_log ()
|
||||
irc_ignore_print_log ()
|
||||
{
|
||||
t_irc_ignore *ptr_ignore;
|
||||
|
||||
|
||||
+43
-8
@@ -45,11 +45,11 @@ irc_mode_channel_set_nick (t_irc_channel *channel, char *nick,
|
||||
|
||||
if (nick)
|
||||
{
|
||||
ptr_nick = nick_search (channel, nick);
|
||||
ptr_nick = irc_nick_search (channel, nick);
|
||||
if (ptr_nick)
|
||||
{
|
||||
NICK_SET_FLAG(ptr_nick, (set_flag == '+'), flag);
|
||||
nick_resort (channel, ptr_nick);
|
||||
irc_nick_resort (channel, ptr_nick);
|
||||
gui_nicklist_draw (channel->buffer, 1, 1);
|
||||
}
|
||||
}
|
||||
@@ -117,15 +117,17 @@ irc_mode_channel_set (t_irc_channel *channel, char *modes)
|
||||
break;
|
||||
default:
|
||||
set_flag = irc_mode_channel_get_flag (modes, pos);
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
switch (pos[0])
|
||||
{
|
||||
case 'a': /* unrealircd specific flag */
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
irc_mode_channel_set_nick (channel, ptr_arg,
|
||||
set_flag, NICK_CHANADMIN);
|
||||
break;
|
||||
case 'h':
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
irc_mode_channel_set_nick (channel, ptr_arg,
|
||||
set_flag, NICK_HALFOP);
|
||||
break;
|
||||
@@ -135,24 +137,40 @@ irc_mode_channel_set (t_irc_channel *channel, char *modes)
|
||||
free (channel->key);
|
||||
channel->key = NULL;
|
||||
}
|
||||
if ((set_flag == '+') && ptr_arg)
|
||||
channel->key = strdup (ptr_arg);
|
||||
if (set_flag == '+')
|
||||
{
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
if (ptr_arg)
|
||||
channel->key = strdup (ptr_arg);
|
||||
}
|
||||
break;
|
||||
case 'l':
|
||||
if (set_flag == '-')
|
||||
channel->limit = 0;
|
||||
if ((set_flag == '+') && ptr_arg)
|
||||
channel->limit = atoi (ptr_arg);
|
||||
if (set_flag == '+')
|
||||
{
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
if (ptr_arg)
|
||||
channel->limit = atoi (ptr_arg);
|
||||
}
|
||||
break;
|
||||
case 'o':
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
irc_mode_channel_set_nick (channel, ptr_arg,
|
||||
set_flag, NICK_OP);
|
||||
break;
|
||||
case 'q': /* unrealircd specific flag */
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
irc_mode_channel_set_nick (channel, ptr_arg,
|
||||
set_flag, NICK_CHANOWNER);
|
||||
break;
|
||||
case 'v':
|
||||
ptr_arg = ((argc > 0) && (current_arg >= 0)) ?
|
||||
argv[current_arg--] : NULL;
|
||||
irc_mode_channel_set_nick (channel, ptr_arg,
|
||||
set_flag, NICK_VOICE);
|
||||
break;
|
||||
@@ -257,3 +275,20 @@ irc_mode_user_set (t_irc_server *server, char *modes)
|
||||
modes++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* irc_mode_nick_prefix_allowed: return <> 0 if nick prefix is allowed by server
|
||||
* for example :
|
||||
* IRC: 005 (...) PREFIX=(ov)@+
|
||||
* => allowed prefixes: @+
|
||||
*/
|
||||
|
||||
int
|
||||
irc_mode_nick_prefix_allowed (t_irc_server *server, char prefix)
|
||||
{
|
||||
/* if server did not send any prefix info, then consider this prefix is allowed */
|
||||
if (!server->prefix)
|
||||
return 1;
|
||||
|
||||
return (strchr (server->prefix, prefix) != NULL);
|
||||
}
|
||||
|
||||
+59
-50
@@ -37,11 +37,11 @@
|
||||
|
||||
|
||||
/*
|
||||
* nick_find_color: find a color for a nick (according to nick letters)
|
||||
* irc_nick_find_color: find a color for a nick (according to nick letters)
|
||||
*/
|
||||
|
||||
int
|
||||
nick_find_color (t_irc_nick *nick)
|
||||
irc_nick_find_color (t_irc_nick *nick)
|
||||
{
|
||||
int i, color;
|
||||
|
||||
@@ -56,15 +56,17 @@ nick_find_color (t_irc_nick *nick)
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_score_for_sort: return score for sorting nick, according to privileges
|
||||
* irc_nick_score_for_sort: return score for sorting nick, according to privileges
|
||||
*/
|
||||
|
||||
int
|
||||
nick_score_for_sort (t_irc_nick *nick)
|
||||
irc_nick_score_for_sort (t_irc_nick *nick)
|
||||
{
|
||||
if (nick->flags & NICK_CHANOWNER)
|
||||
return -32;
|
||||
return -64;
|
||||
if (nick->flags & NICK_CHANADMIN)
|
||||
return -32;
|
||||
if (nick->flags & NICK_CHANADMIN2)
|
||||
return -16;
|
||||
if (nick->flags & NICK_OP)
|
||||
return -8;
|
||||
@@ -76,20 +78,20 @@ nick_score_for_sort (t_irc_nick *nick)
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_compare: compare two nicks
|
||||
* return: -1 is nick1 < nick2
|
||||
* 0 if nick1 = nick2
|
||||
* +1 if nick1 > nick2
|
||||
* status sort: operator > voice > normal nick
|
||||
* irc_nick_compare: compare two nicks
|
||||
* return: -1 is nick1 < nick2
|
||||
* 0 if nick1 = nick2
|
||||
* +1 if nick1 > nick2
|
||||
* status sort: operator > voice > normal nick
|
||||
*/
|
||||
|
||||
int
|
||||
nick_compare (t_irc_nick *nick1, t_irc_nick *nick2)
|
||||
irc_nick_compare (t_irc_nick *nick1, t_irc_nick *nick2)
|
||||
{
|
||||
int score1, score2, comp;
|
||||
|
||||
score1 = nick_score_for_sort (nick1);
|
||||
score2 = nick_score_for_sort (nick2);
|
||||
score1 = irc_nick_score_for_sort (nick1);
|
||||
score2 = irc_nick_score_for_sort (nick2);
|
||||
|
||||
comp = ascii_strcasecmp (nick1->nick, nick2->nick);
|
||||
if (comp > 0)
|
||||
@@ -108,34 +110,34 @@ nick_compare (t_irc_nick *nick1, t_irc_nick *nick2)
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_find_pos: find position for a nick (for sorting nick list)
|
||||
* irc_nick_find_pos: find position for a nick (for sorting nick list)
|
||||
*/
|
||||
|
||||
t_irc_nick *
|
||||
nick_find_pos (t_irc_channel *channel, t_irc_nick *nick)
|
||||
irc_nick_find_pos (t_irc_channel *channel, t_irc_nick *nick)
|
||||
{
|
||||
t_irc_nick *ptr_nick;
|
||||
|
||||
for (ptr_nick = channel->nicks; ptr_nick; ptr_nick = ptr_nick->next_nick)
|
||||
{
|
||||
if (nick_compare (nick, ptr_nick) < 0)
|
||||
if (irc_nick_compare (nick, ptr_nick) < 0)
|
||||
return ptr_nick;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_insert_sorted: insert nick into sorted list
|
||||
* irc_nick_insert_sorted: insert nick into sorted list
|
||||
*/
|
||||
|
||||
void
|
||||
nick_insert_sorted (t_irc_channel *channel, t_irc_nick *nick)
|
||||
irc_nick_insert_sorted (t_irc_channel *channel, t_irc_nick *nick)
|
||||
{
|
||||
t_irc_nick *pos_nick;
|
||||
|
||||
if (channel->nicks)
|
||||
{
|
||||
pos_nick = nick_find_pos (channel, nick);
|
||||
pos_nick = irc_nick_find_pos (channel, nick);
|
||||
|
||||
if (pos_nick)
|
||||
{
|
||||
@@ -167,11 +169,11 @@ nick_insert_sorted (t_irc_channel *channel, t_irc_nick *nick)
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_resort: resort nick in the list
|
||||
* irc_nick_resort: resort nick in the list
|
||||
*/
|
||||
|
||||
void
|
||||
nick_resort (t_irc_channel *channel, t_irc_nick *nick)
|
||||
irc_nick_resort (t_irc_channel *channel, t_irc_nick *nick)
|
||||
{
|
||||
/* temporarly remove nick from list */
|
||||
if (nick == channel->nicks)
|
||||
@@ -184,30 +186,31 @@ nick_resort (t_irc_channel *channel, t_irc_nick *nick)
|
||||
channel->last_nick = nick->prev_nick;
|
||||
|
||||
/* insert again nick into sorted list */
|
||||
nick_insert_sorted (channel, nick);
|
||||
irc_nick_insert_sorted (channel, nick);
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_new: allocate a new nick for a channel and add it to the nick list
|
||||
* irc_nick_new: allocate a new nick for a channel and add it to the nick list
|
||||
*/
|
||||
|
||||
t_irc_nick *
|
||||
nick_new (t_irc_server *server, t_irc_channel *channel, char *nick_name,
|
||||
int is_chanowner, int is_chanadmin, int is_op, int is_halfop,
|
||||
int has_voice)
|
||||
irc_nick_new (t_irc_server *server, t_irc_channel *channel, char *nick_name,
|
||||
int is_chanowner, int is_chanadmin, int is_chanadmin2, int is_op,
|
||||
int is_halfop, int has_voice)
|
||||
{
|
||||
t_irc_nick *new_nick;
|
||||
|
||||
/* nick already exists on this channel? */
|
||||
if ((new_nick = nick_search (channel, nick_name)))
|
||||
if ((new_nick = irc_nick_search (channel, nick_name)))
|
||||
{
|
||||
/* update nick */
|
||||
NICK_SET_FLAG(new_nick, is_chanowner, NICK_CHANOWNER);
|
||||
NICK_SET_FLAG(new_nick, is_chanadmin, NICK_CHANADMIN);
|
||||
NICK_SET_FLAG(new_nick, is_chanadmin2, NICK_CHANADMIN2);
|
||||
NICK_SET_FLAG(new_nick, is_op, NICK_OP);
|
||||
NICK_SET_FLAG(new_nick, is_halfop, NICK_HALFOP);
|
||||
NICK_SET_FLAG(new_nick, has_voice, NICK_VOICE);
|
||||
nick_resort (channel, new_nick);
|
||||
irc_nick_resort (channel, new_nick);
|
||||
return new_nick;
|
||||
}
|
||||
|
||||
@@ -221,28 +224,31 @@ nick_new (t_irc_server *server, t_irc_channel *channel, char *nick_name,
|
||||
new_nick->flags = 0;
|
||||
NICK_SET_FLAG(new_nick, is_chanowner, NICK_CHANOWNER);
|
||||
NICK_SET_FLAG(new_nick, is_chanadmin, NICK_CHANADMIN);
|
||||
NICK_SET_FLAG(new_nick, is_chanadmin2, NICK_CHANADMIN2);
|
||||
NICK_SET_FLAG(new_nick, is_op, NICK_OP);
|
||||
NICK_SET_FLAG(new_nick, is_halfop, NICK_HALFOP);
|
||||
NICK_SET_FLAG(new_nick, has_voice, NICK_VOICE);
|
||||
if (ascii_strcasecmp (new_nick->nick, server->nick) == 0)
|
||||
new_nick->color = COLOR_WIN_NICK_SELF;
|
||||
else
|
||||
new_nick->color = nick_find_color (new_nick);
|
||||
new_nick->color = irc_nick_find_color (new_nick);
|
||||
|
||||
nick_insert_sorted (channel, new_nick);
|
||||
irc_nick_insert_sorted (channel, new_nick);
|
||||
|
||||
channel->nicks_count++;
|
||||
|
||||
channel->nick_completion_reset = 1;
|
||||
|
||||
/* all is ok, return address of new nick */
|
||||
return new_nick;
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_change: change nickname and move it if necessary (list is sorted)
|
||||
* irc_nick_change: change nickname and move it if necessary (list is sorted)
|
||||
*/
|
||||
|
||||
void
|
||||
nick_change (t_irc_channel *channel, t_irc_nick *nick, char *new_nick)
|
||||
irc_nick_change (t_irc_channel *channel, t_irc_nick *nick, char *new_nick)
|
||||
{
|
||||
int nick_is_me;
|
||||
|
||||
@@ -255,18 +261,18 @@ nick_change (t_irc_channel *channel, t_irc_nick *nick, char *new_nick)
|
||||
if (nick_is_me)
|
||||
nick->color = COLOR_WIN_NICK_SELF;
|
||||
else
|
||||
nick->color = nick_find_color (nick);
|
||||
nick->color = irc_nick_find_color (nick);
|
||||
|
||||
/* insert again nick into sorted list */
|
||||
nick_resort (channel, nick);
|
||||
irc_nick_resort (channel, nick);
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_free: free a nick and remove it from nicks queue
|
||||
* irc_nick_free: free a nick and remove it from nicks queue
|
||||
*/
|
||||
|
||||
void
|
||||
nick_free (t_irc_channel *channel, t_irc_nick *nick)
|
||||
irc_nick_free (t_irc_channel *channel, t_irc_nick *nick)
|
||||
{
|
||||
t_irc_nick *new_nicks;
|
||||
|
||||
@@ -296,32 +302,34 @@ nick_free (t_irc_channel *channel, t_irc_nick *nick)
|
||||
free (nick->host);
|
||||
free (nick);
|
||||
channel->nicks = new_nicks;
|
||||
|
||||
channel->nick_completion_reset = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_free_all: free all allocated nicks for a channel
|
||||
* irc_nick_free_all: free all allocated nicks for a channel
|
||||
*/
|
||||
|
||||
void
|
||||
nick_free_all (t_irc_channel *channel)
|
||||
irc_nick_free_all (t_irc_channel *channel)
|
||||
{
|
||||
if (!channel)
|
||||
return;
|
||||
|
||||
/* remove all nicks for the channel */
|
||||
while (channel->nicks)
|
||||
nick_free (channel, channel->nicks);
|
||||
irc_nick_free (channel, channel->nicks);
|
||||
|
||||
/* sould be zero, but prevent any bug :D */
|
||||
channel->nicks_count = 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_search: returns pointer on a nick
|
||||
* irc_nick_search: returns pointer on a nick
|
||||
*/
|
||||
|
||||
t_irc_nick *
|
||||
nick_search (t_irc_channel *channel, char *nickname)
|
||||
irc_nick_search (t_irc_channel *channel, char *nickname)
|
||||
{
|
||||
t_irc_nick *ptr_nick;
|
||||
|
||||
@@ -338,12 +346,12 @@ nick_search (t_irc_channel *channel, char *nickname)
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_count: returns number of nicks (total, op, halfop, voice) on a channel
|
||||
* irc_nick_count: returns number of nicks (total, op, halfop, voice) on a channel
|
||||
*/
|
||||
|
||||
void
|
||||
nick_count (t_irc_channel *channel, int *total, int *count_op,
|
||||
int *count_halfop, int *count_voice, int *count_normal)
|
||||
irc_nick_count (t_irc_channel *channel, int *total, int *count_op,
|
||||
int *count_halfop, int *count_voice, int *count_normal)
|
||||
{
|
||||
t_irc_nick *ptr_nick;
|
||||
|
||||
@@ -358,6 +366,7 @@ nick_count (t_irc_channel *channel, int *total, int *count_op,
|
||||
(*total)++;
|
||||
if ((ptr_nick->flags & NICK_CHANOWNER) ||
|
||||
(ptr_nick->flags & NICK_CHANADMIN) ||
|
||||
(ptr_nick->flags & NICK_CHANADMIN2) ||
|
||||
(ptr_nick->flags & NICK_OP))
|
||||
(*count_op)++;
|
||||
else
|
||||
@@ -376,11 +385,11 @@ nick_count (t_irc_channel *channel, int *total, int *count_op,
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_get_max_length: returns longer nickname on a channel
|
||||
* irc_nick_get_max_length: returns longer nickname on a channel
|
||||
*/
|
||||
|
||||
int
|
||||
nick_get_max_length (t_irc_channel *channel)
|
||||
irc_nick_get_max_length (t_irc_channel *channel)
|
||||
{
|
||||
int length, max_length;
|
||||
t_irc_nick *ptr_nick;
|
||||
@@ -396,11 +405,11 @@ nick_get_max_length (t_irc_channel *channel)
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_set_away: set/unset away status for a channel
|
||||
* irc_nick_set_away: set/unset away status for a channel
|
||||
*/
|
||||
|
||||
void
|
||||
nick_set_away (t_irc_channel *channel, t_irc_nick *nick, int is_away)
|
||||
irc_nick_set_away (t_irc_channel *channel, t_irc_nick *nick, int is_away)
|
||||
{
|
||||
if ((cfg_irc_away_check > 0)
|
||||
&& ((cfg_irc_away_check_max_nicks == 0) ||
|
||||
@@ -416,11 +425,11 @@ nick_set_away (t_irc_channel *channel, t_irc_nick *nick, int is_away)
|
||||
}
|
||||
|
||||
/*
|
||||
* nick_print_log: print nick infos in log (usually for crash dump)
|
||||
* irc_nick_print_log: print nick infos in log (usually for crash dump)
|
||||
*/
|
||||
|
||||
void
|
||||
nick_print_log (t_irc_nick *nick)
|
||||
irc_nick_print_log (t_irc_nick *nick)
|
||||
{
|
||||
weechat_log_printf ("=> nick %s (addr:0x%X)]\n", nick->nick, nick);
|
||||
weechat_log_printf (" host . . . . . : %s\n", nick->host);
|
||||
|
||||
+586
-412
File diff suppressed because it is too large
Load Diff
+293
-348
File diff suppressed because it is too large
Load Diff
+316
-287
File diff suppressed because it is too large
Load Diff
+235
-227
@@ -57,23 +57,24 @@
|
||||
|
||||
/* nick types */
|
||||
|
||||
#define NICK_CHANOWNER 1
|
||||
#define NICK_CHANADMIN 2
|
||||
#define NICK_OP 4
|
||||
#define NICK_HALFOP 8
|
||||
#define NICK_VOICE 16
|
||||
#define NICK_AWAY 32
|
||||
#define NICK_CHANOWNER 1
|
||||
#define NICK_CHANADMIN 2
|
||||
#define NICK_OP 4
|
||||
#define NICK_HALFOP 8
|
||||
#define NICK_VOICE 16
|
||||
#define NICK_AWAY 32
|
||||
#define NICK_CHANADMIN2 64
|
||||
#define NICK_SET_FLAG(nick, set, flag) \
|
||||
if (set) \
|
||||
nick->flags |= flag; \
|
||||
else \
|
||||
nick->flags &= 0xFFFF - flag;
|
||||
|
||||
#define server_sendf_queued(server, fmt, argz...) \
|
||||
#define irc_server_sendf_queued(server, fmt, argz...) \
|
||||
if (server) \
|
||||
{ \
|
||||
server->queue_msg = 1; \
|
||||
server_sendf(server, fmt, ##argz); \
|
||||
irc_server_sendf (server, fmt, ##argz); \
|
||||
server->queue_msg = 0; \
|
||||
}
|
||||
|
||||
@@ -90,15 +91,16 @@ struct t_irc_nick
|
||||
t_irc_nick *next_nick; /* link to next nick on the channel */
|
||||
};
|
||||
|
||||
/* channel types */
|
||||
|
||||
#define CHANNEL_PREFIX "#&+!"
|
||||
|
||||
/* channel types */
|
||||
#define CHANNEL_TYPE_UNKNOWN -1
|
||||
#define CHANNEL_TYPE_CHANNEL 0
|
||||
#define CHANNEL_TYPE_PRIVATE 1
|
||||
#define CHANNEL_TYPE_DCC_CHAT 2
|
||||
|
||||
#define CHANNEL_NICKS_SPEAKING_LIMIT 32
|
||||
|
||||
typedef struct t_irc_channel t_irc_channel;
|
||||
|
||||
struct t_irc_channel
|
||||
@@ -116,8 +118,12 @@ struct t_irc_channel
|
||||
int cycle; /* currently cycling (/part then /join) */
|
||||
int close; /* close request (/buffer close) */
|
||||
int display_creation_date; /* 1 if creation date should be displayed */
|
||||
int nick_completion_reset; /* 1 if nick completion should be rebuilt */
|
||||
/* there was some join/part on channel */
|
||||
t_irc_nick *nicks; /* nicks on the channel */
|
||||
t_irc_nick *last_nick; /* last nick on the channel */
|
||||
t_weelist *nicks_speaking; /* nicks speaking (for smart completion) */
|
||||
t_weelist *last_nick_speaking; /* last nick speaking */
|
||||
t_gui_buffer *buffer; /* GUI buffer allocated for channel */
|
||||
t_irc_channel *prev_channel; /* link to previous channel */
|
||||
t_irc_channel *next_channel; /* link to next channel */
|
||||
@@ -176,6 +182,7 @@ struct t_irc_server
|
||||
char *unterminated_message; /* beginning of a message in input buf */
|
||||
char *nick; /* current nickname */
|
||||
char *nick_modes; /* nick modes */
|
||||
char *prefix; /* nick prefix allowed (from msg 005) */
|
||||
time_t reconnect_start; /* this time + delay = reconnect time */
|
||||
int reconnect_join; /* 1 if channels opened to rejoin */
|
||||
int is_away; /* 1 is user is marked as away */
|
||||
@@ -339,6 +346,10 @@ struct t_irc_ignore
|
||||
|
||||
extern t_irc_command irc_commands[];
|
||||
extern t_irc_server *irc_servers;
|
||||
#ifdef HAVE_GNUTLS
|
||||
extern const int gnutls_cert_type_prio[];
|
||||
extern const int gnutls_prot_prio[];
|
||||
#endif
|
||||
extern t_irc_message *recv_msgq, *msgq_last_msg;
|
||||
extern int check_away;
|
||||
extern t_irc_dcc *dcc_list;
|
||||
@@ -352,115 +363,111 @@ extern t_irc_ignore *irc_last_ignore;
|
||||
|
||||
/* server functions (irc-server.c) */
|
||||
|
||||
extern void server_init (t_irc_server *);
|
||||
extern int server_init_with_url (char *, t_irc_server *);
|
||||
extern t_irc_server *server_alloc ();
|
||||
extern void server_outqueue_free_all (t_irc_server *);
|
||||
extern void server_destroy (t_irc_server *);
|
||||
extern void server_free (t_irc_server *);
|
||||
extern void server_free_all ();
|
||||
extern t_irc_server *server_new (char *, int, int, int, int, char *, int, int, int,
|
||||
char *, char *, char *, char *, char *, char *,
|
||||
char *, char *, int, char *, int, char *);
|
||||
extern char *server_get_charset_decode_iso (t_irc_server *);
|
||||
extern char *server_get_charset_decode_utf (t_irc_server *);
|
||||
extern char *server_get_charset_encode (t_irc_server *);
|
||||
extern int server_send (t_irc_server *, char *, int);
|
||||
extern void server_outqueue_send (t_irc_server *);
|
||||
extern void server_sendf (t_irc_server *, char *, ...);
|
||||
extern void server_parse_message (char *, char **, char **, char **);
|
||||
extern void server_recv (t_irc_server *);
|
||||
extern void server_child_read (t_irc_server *);
|
||||
extern int server_connect (t_irc_server *);
|
||||
extern void server_reconnect (t_irc_server *);
|
||||
extern void server_auto_connect (int, int);
|
||||
extern void server_disconnect (t_irc_server *, int);
|
||||
extern void server_disconnect_all ();
|
||||
extern t_irc_server *server_search (char *);
|
||||
extern int server_get_number_connected ();
|
||||
extern void server_get_number_buffer (t_irc_server *, int *, int *);
|
||||
extern int server_name_already_exists (char *);
|
||||
extern void server_remove_away ();
|
||||
extern void server_check_away ();
|
||||
extern void server_set_away (t_irc_server *, char *, int);
|
||||
extern int server_get_default_notify_level (t_irc_server *);
|
||||
extern void server_set_default_notify_level (t_irc_server *, int);
|
||||
extern void server_print_log (t_irc_server *);
|
||||
|
||||
/* proxy functions (irc-server.c) */
|
||||
extern void convbase64_8x3_to_6x4(char *from, char* to);
|
||||
extern void base64encode(char *from, char *to);
|
||||
extern int pass_httpproxy(int, char*, int);
|
||||
extern int resolve(char *hostname, char *ip, int *version);
|
||||
extern int pass_socks4proxy(int, char*, int, char*);
|
||||
extern int pass_socks5proxy(int, char*, int);
|
||||
extern int pass_proxy(int, char*, int, char*);
|
||||
extern void irc_server_init (t_irc_server *);
|
||||
extern int irc_server_init_with_url (char *, t_irc_server *);
|
||||
extern t_irc_server *irc_server_alloc ();
|
||||
extern void irc_server_outqueue_free_all (t_irc_server *);
|
||||
extern void irc_server_destroy (t_irc_server *);
|
||||
extern void irc_server_free (t_irc_server *);
|
||||
extern void irc_server_free_all ();
|
||||
extern t_irc_server *irc_server_new (char *, int, int, int, int, char *, int, int, int,
|
||||
char *, char *, char *, char *, char *, char *,
|
||||
char *, char *, int, char *, int, char *);
|
||||
extern char *irc_server_get_charset_decode_iso (t_irc_server *);
|
||||
extern char *irc_server_get_charset_decode_utf (t_irc_server *);
|
||||
extern char *irc_server_get_charset_encode (t_irc_server *);
|
||||
extern int irc_server_send (t_irc_server *, char *, int);
|
||||
extern void irc_server_outqueue_send (t_irc_server *);
|
||||
extern void irc_server_sendf (t_irc_server *, char *, ...);
|
||||
extern void irc_server_parse_message (char *, char **, char **, char **);
|
||||
extern void irc_server_recv (t_irc_server *);
|
||||
extern void irc_server_child_read (t_irc_server *);
|
||||
extern void irc_server_convbase64_8x3_to_6x4 (char *, char*);
|
||||
extern void irc_server_base64encode (char *, char *);
|
||||
extern int irc_server_pass_httpproxy (int, char*, int);
|
||||
extern int irc_server_resolve (char *, char *, int *);
|
||||
extern int irc_server_pass_socks4proxy (int, char*, int, char*);
|
||||
extern int irc_server_pass_socks5proxy (int, char*, int);
|
||||
extern int irc_server_pass_proxy (int, char*, int, char*);
|
||||
extern int irc_server_connect (t_irc_server *);
|
||||
extern void irc_server_reconnect (t_irc_server *);
|
||||
extern void irc_server_auto_connect (int, int);
|
||||
extern void irc_server_disconnect (t_irc_server *, int);
|
||||
extern void irc_server_disconnect_all ();
|
||||
extern t_irc_server *irc_server_search (char *);
|
||||
extern int irc_server_get_number_connected ();
|
||||
extern void irc_server_get_number_buffer (t_irc_server *, int *, int *);
|
||||
extern int irc_server_name_already_exists (char *);
|
||||
extern void irc_server_remove_away ();
|
||||
extern void irc_server_check_away ();
|
||||
extern void irc_server_set_away (t_irc_server *, char *, int);
|
||||
extern int irc_server_get_default_notify_level (t_irc_server *);
|
||||
extern void irc_server_set_default_notify_level (t_irc_server *, int);
|
||||
extern void irc_server_print_log (t_irc_server *);
|
||||
|
||||
/* channel functions (irc-channel.c) */
|
||||
|
||||
extern t_irc_channel *channel_new (t_irc_server *, int, char *);
|
||||
extern void channel_free (t_irc_server *, t_irc_channel *);
|
||||
extern void channel_free_all (t_irc_server *);
|
||||
extern t_irc_channel *channel_search (t_irc_server *, char *);
|
||||
extern t_irc_channel *channel_search_any (t_irc_server *, char *);
|
||||
extern t_irc_channel *channel_search_any_without_buffer (t_irc_server *, char *);
|
||||
extern t_irc_channel *channel_search_dcc (t_irc_server *, char *);
|
||||
extern int string_is_channel (char *);
|
||||
extern char *channel_get_charset_decode_iso (t_irc_server *, t_irc_channel *);
|
||||
extern char *channel_get_charset_decode_utf (t_irc_server *, t_irc_channel *);
|
||||
extern char *channel_get_charset_encode (t_irc_server *, t_irc_channel *);
|
||||
extern void channel_remove_away (t_irc_channel *);
|
||||
extern void channel_check_away (t_irc_server *, t_irc_channel *, int);
|
||||
extern void channel_set_away (t_irc_channel *, char *, int);
|
||||
extern int channel_create_dcc (t_irc_dcc *);
|
||||
extern int channel_get_notify_level (t_irc_server *, t_irc_channel *);
|
||||
extern void channel_set_notify_level (t_irc_server *, t_irc_channel *, int);
|
||||
extern void channel_print_log (t_irc_channel *);
|
||||
extern t_irc_channel *irc_channel_new (t_irc_server *, int, char *);
|
||||
extern void irc_channel_free (t_irc_server *, t_irc_channel *);
|
||||
extern void irc_channel_free_all (t_irc_server *);
|
||||
extern t_irc_channel *irc_channel_search (t_irc_server *, char *);
|
||||
extern t_irc_channel *irc_channel_search_any (t_irc_server *, char *);
|
||||
extern t_irc_channel *irc_channel_search_any_without_buffer (t_irc_server *, char *);
|
||||
extern t_irc_channel *irc_channel_search_dcc (t_irc_server *, char *);
|
||||
extern int irc_channel_is_channel (char *);
|
||||
extern void irc_channel_remove_away (t_irc_channel *);
|
||||
extern void irc_channel_check_away (t_irc_server *, t_irc_channel *, int);
|
||||
extern void irc_channel_set_away (t_irc_channel *, char *, int);
|
||||
extern int irc_channel_create_dcc (t_irc_dcc *);
|
||||
extern int irc_channel_get_notify_level (t_irc_server *, t_irc_channel *);
|
||||
extern void irc_channel_set_notify_level (t_irc_server *, t_irc_channel *, int);
|
||||
extern void irc_channel_add_nick_speaking (t_irc_channel *, char *);
|
||||
extern void irc_channel_print_log (t_irc_channel *);
|
||||
|
||||
/* nick functions (irc-nick.c) */
|
||||
|
||||
extern int nick_find_color (t_irc_nick *);
|
||||
extern t_irc_nick *nick_new (t_irc_server *, t_irc_channel *, char *,
|
||||
int, int, int, int, int);
|
||||
extern void nick_resort (t_irc_channel *, t_irc_nick *);
|
||||
extern void nick_change (t_irc_channel *, t_irc_nick *, char *);
|
||||
extern void nick_free (t_irc_channel *, t_irc_nick *);
|
||||
extern void nick_free_all (t_irc_channel *);
|
||||
extern t_irc_nick *nick_search (t_irc_channel *, char *);
|
||||
extern void nick_count (t_irc_channel *, int *, int *, int *, int *, int *);
|
||||
extern int nick_get_max_length (t_irc_channel *);
|
||||
extern void nick_set_away (t_irc_channel *, t_irc_nick *, int);
|
||||
extern void nick_print_log (t_irc_nick *);
|
||||
extern int irc_nick_find_color (t_irc_nick *);
|
||||
extern t_irc_nick *irc_nick_new (t_irc_server *, t_irc_channel *, char *,
|
||||
int, int, int, int, int, int);
|
||||
extern void irc_nick_resort (t_irc_channel *, t_irc_nick *);
|
||||
extern void irc_nick_change (t_irc_channel *, t_irc_nick *, char *);
|
||||
extern void irc_nick_free (t_irc_channel *, t_irc_nick *);
|
||||
extern void irc_nick_free_all (t_irc_channel *);
|
||||
extern t_irc_nick *irc_nick_search (t_irc_channel *, char *);
|
||||
extern void irc_nick_count (t_irc_channel *, int *, int *, int *, int *, int *);
|
||||
extern int irc_nick_get_max_length (t_irc_channel *);
|
||||
extern void irc_nick_set_away (t_irc_channel *, t_irc_nick *, int);
|
||||
extern void irc_nick_print_log (t_irc_nick *);
|
||||
|
||||
/* mode functions (irc-mode.c) */
|
||||
|
||||
extern void irc_mode_channel_set (t_irc_channel *, char *);
|
||||
extern void irc_mode_user_set (t_irc_server *, char *);
|
||||
extern int irc_mode_nick_prefix_allowed (t_irc_server *, char);
|
||||
|
||||
/* DCC functions (irc-dcc.c) */
|
||||
|
||||
extern void dcc_redraw (int);
|
||||
extern void dcc_free (t_irc_dcc *);
|
||||
extern void dcc_close (t_irc_dcc *, int);
|
||||
extern void dcc_chat_remove_channel (t_irc_channel *);
|
||||
extern void dcc_accept (t_irc_dcc *);
|
||||
extern void dcc_accept_resume (t_irc_server *, char *, int, unsigned long);
|
||||
extern void dcc_start_resume (t_irc_server *, char *, int, unsigned long);
|
||||
extern t_irc_dcc *dcc_alloc ();
|
||||
extern t_irc_dcc *dcc_add (t_irc_server *, int, unsigned long, int, char *, int,
|
||||
char *, char *, unsigned long);
|
||||
extern void dcc_send_request (t_irc_server *, int, char *, char *);
|
||||
extern void dcc_chat_sendf (t_irc_dcc *, char *, ...);
|
||||
extern void dcc_file_send_fork (t_irc_dcc *);
|
||||
extern void dcc_file_recv_fork (t_irc_dcc *);
|
||||
extern void dcc_handle ();
|
||||
extern void dcc_end ();
|
||||
extern void dcc_print_log ();
|
||||
extern void irc_dcc_redraw (int);
|
||||
extern void irc_dcc_free (t_irc_dcc *);
|
||||
extern void irc_dcc_close (t_irc_dcc *, int);
|
||||
extern void irc_dcc_chat_remove_channel (t_irc_channel *);
|
||||
extern void irc_dcc_accept (t_irc_dcc *);
|
||||
extern void irc_dcc_accept_resume (t_irc_server *, char *, int, unsigned long);
|
||||
extern void irc_dcc_start_resume (t_irc_server *, char *, int, unsigned long);
|
||||
extern t_irc_dcc *irc_dcc_alloc ();
|
||||
extern t_irc_dcc *irc_dcc_add (t_irc_server *, int, unsigned long, int, char *, int,
|
||||
char *, char *, unsigned long);
|
||||
extern void irc_dcc_send_request (t_irc_server *, int, char *, char *);
|
||||
extern void irc_dcc_chat_sendf (t_irc_dcc *, char *, ...);
|
||||
extern void irc_dcc_file_send_fork (t_irc_dcc *);
|
||||
extern void irc_dcc_file_recv_fork (t_irc_dcc *);
|
||||
extern void irc_dcc_handle ();
|
||||
extern void irc_dcc_end ();
|
||||
extern void irc_dcc_print_log ();
|
||||
|
||||
/* IRC display (irc-diplay.c) */
|
||||
|
||||
extern void irc_find_context (t_irc_server *, t_irc_channel *,
|
||||
t_gui_window **, t_gui_buffer **);
|
||||
extern void irc_display_hide_password (char *, int);
|
||||
extern void irc_display_prefix (t_irc_server *, t_gui_buffer *, char *);
|
||||
extern void irc_display_nick (t_gui_buffer *, t_irc_nick *, char *, int,
|
||||
int, int, int);
|
||||
@@ -471,140 +478,141 @@ extern void irc_display_server (t_irc_server *ptr_server);
|
||||
|
||||
/* IRC commands issued by user (irc-send.c) */
|
||||
|
||||
extern void irc_login (t_irc_server *);
|
||||
extern void irc_hide_password (char *, int);
|
||||
extern int irc_cmd_send_admin (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_ame (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_amsg (t_irc_server *, t_irc_channel *, char *);
|
||||
extern void irc_send_login (t_irc_server *);
|
||||
extern int irc_send_cmd_admin (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_ame (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_amsg (t_irc_server *, t_irc_channel *, char *);
|
||||
extern void irc_send_away (t_irc_server *, char *);
|
||||
extern int irc_cmd_send_away (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_ban (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_ctcp (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_cycle (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_dehalfop (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_deop (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_devoice (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_die (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_halfop (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_info (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_invite (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_ison (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_join (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_kick (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_kickban (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_kill (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_links (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_list (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_lusers (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_me (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_mode (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_away (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_ban (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_ctcp (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_cycle (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_dehalfop (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_deop (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_devoice (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_die (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_halfop (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_info (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_invite (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_ison (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_join (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_kick (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_kickban (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_kill (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_links (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_list (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_lusers (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_me (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_mode (t_irc_server *, t_irc_channel *, char *);
|
||||
extern void irc_send_mode_nicks (t_irc_server *, char *, char *, char *, int, char **);
|
||||
extern int irc_cmd_send_motd (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_msg (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_names (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_nick (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_notice (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_op (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_oper (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_part (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_ping (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_pong (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_query (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_motd (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_msg (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_names (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_nick (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_notice (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_op (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_oper (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_part (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_ping (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_pong (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_query (t_irc_server *, t_irc_channel *, char *);
|
||||
extern void irc_send_quit_server (t_irc_server *, char *);
|
||||
extern int irc_cmd_send_quit (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_quote (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_rehash (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_restart (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_service (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_servlist (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_squery (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_squit (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_stats (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_summon (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_time (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_topic (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_trace (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_unban (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_userhost (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_users (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_version (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_voice (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_cmd_send_wallops (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_who (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_whois (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_cmd_send_whowas (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_quit (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_quote (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_rehash (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_restart (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_service (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_servlist (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_squery (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_squit (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_stats (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_summon (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_time (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_topic (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_trace (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_unban (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_userhost (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_users (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_version (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_voice (t_irc_server *, t_irc_channel *, int, char **);
|
||||
extern int irc_send_cmd_wallops (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_who (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_whois (t_irc_server *, t_irc_channel *, char *);
|
||||
extern int irc_send_cmd_whowas (t_irc_server *, t_irc_channel *, char *);
|
||||
|
||||
/* IRC commands executed when received from server (irc-recv.c) */
|
||||
|
||||
extern int irc_is_highlight (char *, char *);
|
||||
extern int irc_recv_is_highlight (char *, char *);
|
||||
extern int irc_recv_command (t_irc_server *, char *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_error (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_invite (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_join (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_kick (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_kill (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_mode (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_nick (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_notice (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_part (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_ping (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_pong (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_privmsg (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_quit (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_server_mode_reason (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_server_msg (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_server_reply (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_topic (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_wallops (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_001 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_221 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_301 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_302 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_303 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_305 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_306 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_whois_nick_msg (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_310 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_311 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_312 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_314 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_315 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_317 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_319 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_321 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_322 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_323 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_324 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_329 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_331 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_332 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_333 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_338 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_341 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_344 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_345 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_348 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_349 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_351 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_352 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_353 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_365 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_366 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_367 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_368 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_378 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_433 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_438 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_cmd_recv_671 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_error (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_invite (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_join (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_kick (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_kill (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_mode (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_nick (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_notice (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_part (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_ping (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_pong (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_privmsg (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_quit (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_server_mode_reason (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_server_msg (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_server_reply (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_topic (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_wallops (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_001 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_005 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_221 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_301 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_302 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_303 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_305 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_306 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_whois_nick_msg (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_310 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_311 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_312 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_314 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_315 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_317 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_319 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_321 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_322 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_323 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_324 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_327 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_329 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_331 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_332 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_333 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_338 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_341 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_344 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_345 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_348 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_349 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_351 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_352 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_353 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_365 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_366 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_367 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_368 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_432 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_433 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_438 (t_irc_server *, char *, char *, char *);
|
||||
extern int irc_recv_cmd_671 (t_irc_server *, char *, char *, char *);
|
||||
|
||||
/* ignore functions (irc-ignore.c) */
|
||||
|
||||
extern int ignore_check (char *, char *, char *, char *);
|
||||
extern t_irc_ignore *ignore_add (char *, char *, char *, char *);
|
||||
extern t_irc_ignore *ignore_add_from_config (char *);
|
||||
extern void ignore_free_all ();
|
||||
extern int ignore_search_free (char *, char *, char *, char *);
|
||||
extern int ignore_search_free_by_number (int);
|
||||
extern void ignore_print_log ();
|
||||
extern int irc_ignore_check (char *, char *, char *, char *);
|
||||
extern t_irc_ignore *irc_ignore_add (char *, char *, char *, char *);
|
||||
extern t_irc_ignore *irc_ignore_add_from_config (char *);
|
||||
extern void irc_ignore_free_all ();
|
||||
extern int irc_ignore_search_free (char *, char *, char *, char *);
|
||||
extern int irc_ignore_search_free_by_number (int);
|
||||
extern void irc_ignore_print_log ();
|
||||
|
||||
#endif /* irc.h */
|
||||
|
||||
@@ -0,0 +1,45 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
SET(LIB_PLUGINS_SRC weechat-plugin.h plugins.h plugins.c plugins-interface.c
|
||||
plugins-config.h plugins-config.c)
|
||||
|
||||
INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR})
|
||||
ADD_LIBRARY(weechat_plugins STATIC ${LIB_PLUGINS_SRC})
|
||||
|
||||
INCLUDE(CheckIncludeFiles)
|
||||
INCLUDE(CheckFunctionExists)
|
||||
INCLUDE(CheckLibraryExists)
|
||||
|
||||
IF(NOT DISABLE_ASPELL)
|
||||
# Check for aspell libraries
|
||||
FIND_PACKAGE(Aspell)
|
||||
IF(ASPELL_FOUND)
|
||||
ADD_SUBDIRECTORY( aspell )
|
||||
ENDIF(ASPELL_FOUND)
|
||||
ENDIF(NOT DISABLE_ASPELL)
|
||||
|
||||
IF (NOT DISABLE_CHARSET)
|
||||
# Check for iconv support.
|
||||
FIND_PACKAGE(Iconv)
|
||||
IF(ICONV_FOUND)
|
||||
ADD_DEFINITIONS( -DHAVE_ICONV )
|
||||
ADD_SUBDIRECTORY( charset )
|
||||
ENDIF(ICONV_FOUND)
|
||||
ENDIF(NOT DISABLE_CHARSET)
|
||||
|
||||
ADD_SUBDIRECTORY( scripts )
|
||||
@@ -0,0 +1,26 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
ADD_LIBRARY(aspell MODULE weechat-aspell.h weechat-aspell.c)
|
||||
SET_TARGET_PROPERTIES(aspell PROPERTIES PREFIX "")
|
||||
|
||||
IF(ASPELL_FOUND)
|
||||
INCLUDE_DIRECTORIES(${ASPELL_INCLUDE_PATH})
|
||||
TARGET_LINK_LIBRARIES(aspell ${ASPELL_LIBRARY})
|
||||
ENDIF(ASPELL_FOUND)
|
||||
|
||||
INSTALL(TARGETS aspell LIBRARY DESTINATION lib/${PROJECT_NAME}/plugins)
|
||||
@@ -0,0 +1,30 @@
|
||||
# Copyright (c) 2003-2007 FlashCode <flashcode@flashtux.org>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
|
||||
ADD_LIBRARY(charset MODULE weechat-charset.h weechat-charset.c)
|
||||
SET_TARGET_PROPERTIES(charset PROPERTIES PREFIX "")
|
||||
|
||||
IF(ICONV_FOUND)
|
||||
INCLUDE_DIRECTORIES(${ICONV_INCLUDE_PATH})
|
||||
IF(ICONV_LIBRARY)
|
||||
TARGET_LINK_LIBRARIES(charset ${ICONV_LIBRARY})
|
||||
ELSE(ICONV_LIBRARY)
|
||||
TARGET_LINK_LIBRARIES(charset)
|
||||
ENDIF(ICONV_LIBRARY)
|
||||
ENDIF(ICONV_FOUND)
|
||||
|
||||
INSTALL(TARGETS charset LIBRARY DESTINATION lib/${PROJECT_NAME}/plugins)
|
||||
@@ -234,11 +234,9 @@ weechat_charset_parse_irc_msg (char *message, char **nick, char **command,
|
||||
pos2++;
|
||||
while (pos2[0] == ' ')
|
||||
pos2++;
|
||||
if (pos2[0] == ':')
|
||||
*pos_args = pos2 + 1;
|
||||
else
|
||||
*pos_args = pos2;
|
||||
if (pos2[0] != ':')
|
||||
{
|
||||
*pos_args = pos2;
|
||||
if ((pos2[0] == '#') || (pos2[0] == '&')
|
||||
|| (pos2[0] == '+') || (pos2[0] == '!'))
|
||||
{
|
||||
|
||||
@@ -833,7 +833,7 @@ weechat_plugin_set_config (t_weechat_plugin *plugin, char *option, char *value)
|
||||
{
|
||||
strncpy (server_name, option, pos - option);
|
||||
server_name[pos - option] = '\0';
|
||||
ptr_server = server_search (server_name);
|
||||
ptr_server = irc_server_search (server_name);
|
||||
free (server_name);
|
||||
if (ptr_server)
|
||||
return (config_set_server_value (ptr_server, pos + 1, value) == 0);
|
||||
@@ -899,8 +899,8 @@ weechat_plugin_set_plugin_config (t_weechat_plugin *plugin, char *option, char *
|
||||
|
||||
/*
|
||||
* weechat_plugin_get_server_info: get list of server info
|
||||
* WARNING: caller has to free structure returned
|
||||
* by this function after use
|
||||
* WARNING: caller has to free structure returned
|
||||
* by this function after use
|
||||
*/
|
||||
|
||||
t_plugin_server_info *
|
||||
@@ -1027,7 +1027,7 @@ weechat_plugin_get_channel_info (t_weechat_plugin *plugin, char *server)
|
||||
if (!plugin || !server || !server[0])
|
||||
return NULL;
|
||||
|
||||
ptr_server = server_search (server);
|
||||
ptr_server = irc_server_search (server);
|
||||
if (!ptr_server)
|
||||
return NULL;
|
||||
|
||||
@@ -1111,11 +1111,11 @@ weechat_plugin_get_nick_info (t_weechat_plugin *plugin, char *server, char *chan
|
||||
if (!plugin || !server || !server[0] || !channel || !channel[0])
|
||||
return NULL;
|
||||
|
||||
ptr_server = server_search (server);
|
||||
ptr_server = irc_server_search (server);
|
||||
if (!ptr_server)
|
||||
return NULL;
|
||||
|
||||
ptr_channel = channel_search (ptr_server, channel);
|
||||
ptr_channel = irc_channel_search (ptr_server, channel);
|
||||
if (!ptr_channel)
|
||||
return NULL;
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user