diff -Nru weechat-1.3~dev+20150711~utopic1/ChangeLog.asciidoc weechat-1.3~dev+20150718~utopic1/ChangeLog.asciidoc --- weechat-1.3~dev+20150711~utopic1/ChangeLog.asciidoc 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/ChangeLog.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -19,9 +19,12 @@ === New features +* core: fix crash if a file descriptor used in hook_fd() is too high + (> 1024 on Linux/BSD) (issue #465) +* core: add option weechat.look.confirm_upgrade (issue #463) * core: allow ctrl-C to exit WeeChat when the passphrase is asked on startup - (closes #452) -* core: allow pointer as list name in evaluation of hdata (closes #450) + (issue #452) +* core: allow pointer as list name in evaluation of hdata (issue #450) * core: add signal "signal_sighup" * api: add support of evaluated sub-strings and current date/time in function string_eval_expression() and command /eval @@ -29,56 +32,58 @@ * irc: evaluate content of server option "nicks" * logger: evaluate content of option logger.file.path (issue #388) * relay: display value of HTTP header "X-Real-IP" for websocket connections - (closes #440) + (issue #440) * script: rename option script.scripts.dir to script.scripts.path, evaluate content of option (issue #388) +* xfer: fix crash if the DCC file socket number is too high + (> 1024 on Linux/BSD) (issue #465) * xfer: evaluate content of options xfer.file.download_path and xfer.file.upload_path (issue #388) === Bugs fixed * core: fix display of invalid UTF-8 chars in bars -* core: fix bar item "scroll" after /buffer clear (closes #448) +* core: fix bar item "scroll" after /buffer clear (issue #448) * core: fix display of time in bare display when option - weechat.look.buffer_time_format is set to empty string (closes #441) + weechat.look.buffer_time_format is set to empty string (issue #441) * api: fix type of value returned by functions strcasestr, utf8_prev_char, utf8_next_char, utf8_add_offset and util_get_time_string * api: fix type of value returned by function strcasestr * fifo: fix send error on Cygwin when something is received in the pipe - (closes #436) -* irc: do not allow command /query with a channel name (closes #459) + (issue #436) +* irc: do not allow command /query with a channel name (issue #459) * irc: decode/encode only text in IRC messages and not the headers - (bug #29886, closes #218, closes #451) + (bug #29886, issue #218, issue #451) * irc: fix crash with commands /allchan, /allpv and /allserv if the executed - command closes buffers (closes #445) + command closes buffers (issue #445) * irc: do not open auto-joined channels buffers when option "-nojoin" is used in command /connect (even if the option irc.look.buffer_open_before_autojoin is on) -* irc: fix errors displayed on WHOX messages received (closes #376) +* irc: fix errors displayed on WHOX messages received (issue #376) * lua: add detection of Lua 5.3 * ruby: add detection of Ruby 2.2 * xfer: fix parsing of DCC chat messages (handle "\r\n" at the end of messages) - (closes #425, closes #426) + (issue #425, issue #426) * doc: replace PREFIX with CMAKE_INSTALL_PREFIX in cmake instructions - (closes #354) + (issue #354) == Version 1.2 (2015-05-10) === New features -* core: add signals "signal_sigterm" and "signal_sigquit" (closes #114) -* core: use environment variable WEECHAT_HOME on startup (closes #391) -* core: remove WeeChat version from config files (closes #407) +* core: add signals "signal_sigterm" and "signal_sigquit" (issue #114) +* core: use environment variable WEECHAT_HOME on startup (issue #391) +* core: remove WeeChat version from config files (issue #407) * core: add options weechat.look.quote_{nick_prefix|nick_suffix|time_format} to - customize quoted messages in cursor mode (closes #403) -* core: add a welcome message on first WeeChat run (closes #318) + customize quoted messages in cursor mode (issue #403) +* core: add a welcome message on first WeeChat run (issue #318) * core: add options weechat.look.word_chars_{highlight|input} - (closes #55, task #9459) -* core: display a warning on startup if the locale can not be set (closes #373) + (issue #55, task #9459) +* core: display a warning on startup if the locale can not be set (issue #373) * core: allow "*" as plugin name in command /plugin reload to reload all plugins with options * core: add option "-s" in command /eval to split expression before evaluating - it (no more split by default) (closes #324) + it (no more split by default) (issue #324) * core: add priority in plugins to initialize them in order * api: add support of environment variables in function string_eval_expression() and command /eval @@ -89,12 +94,12 @@ "channel" * irc: optimize search of a nick in nicklist (up to 3x faster) * irc: add support of SHA-256 and SHA-512 algorithms in server option - "ssl_fingerprint" (closes #281) -* irc: add option "-noswitch" in command /query (closes #394) -* irc: format message 008 (RPL_SNOMASK) (closes #144) -* irc: add support of "account-notify" capability (closes #11, closes #246) -* irc: remove server "freenode" from default config file (closes #309) -* irc: add support of "ecdsa-nist256p-challenge" SASL mechanism (closes #251) + "ssl_fingerprint" (issue #281) +* irc: add option "-noswitch" in command /query (issue #394) +* irc: format message 008 (RPL_SNOMASK) (issue #144) +* irc: add support of "account-notify" capability (issue #11, issue #246) +* irc: remove server "freenode" from default config file (issue #309) +* irc: add support of "ecdsa-nist256p-challenge" SASL mechanism (issue #251) * doc: add Russian man page * javascript: new script plugin for javascript @@ -108,22 +113,22 @@ * irc: fix color of new nick in nick changes messages when option irc.look.color_nicks_in_server_messages is off * irc: fix crash when setting an invalid regex with "/list -re" during a /list - server response (closes #412) + server response (issue #412) * irc: fix display of PART messages on channels with +a (anonymous flag) - (closes #396) + (issue #396) * irc: remove useless rename of channel buffer on JOIN received with different - case (closes #336) + case (issue #336) * irc: fix completion of commands /allchan and /allpv * lua: fix wrong argument usage in functions nicklist_remove_group, - nicklist_remove_nick and nicklist_remove_all (closes #346) + nicklist_remove_nick and nicklist_remove_all (issue #346) * lua: fix value returned in case of error in functions: config_option_reset, config_string, config_string_default, config_color, config_color_default, config_write, config_read, config_reload, hook_modifier_exec, buffer_string_replace_local_var, nicklist_group_set, nicklist_nick_set, command, upgrade_read, upgrade_close -* relay: fix up/down keys on relay buffer (closes #335) +* relay: fix up/down keys on relay buffer (issue #335) * relay: remove v4-mapped addresses in /help relay.network.allowed_ips - (closes #325) + (issue #325) * perl: fix value returned in case of error in functions: config_option_reset, config_color, config_color_default, config_write, config_read, config_reload, buffer_string_replace_local_var, command @@ -135,7 +140,7 @@ * python: fix name of function "bar_update" in case of error * python: fix restore of old interpreter when a function is not found in the script -* ruby: fix crash on /plugin reload (closes #364) +* ruby: fix crash on /plugin reload (issue #364) * ruby: fix value returned in case of error in functions: config_option_reset, config_color, config_color_default, config_write, config_read, config_reload, buffer_string_replace_local_var, command @@ -153,7 +158,7 @@ print_date_tags, buffer_string_replace_local_var, command, infolist_new_item, infolist_new_var_integer, infolist_new_var_string, infolist_new_var_pointer, infolist_new_var_time, upgrade_write_object, upgrade_read, upgrade_close -* trigger: do not hook anything if the trigger is disabled (closes #405) +* trigger: do not hook anything if the trigger is disabled (issue #405) == Version 1.1.1 (2015-01-25) @@ -162,18 +167,18 @@ * core: fix random error when creating symbolic link weechat-curses on make install with cmake (bug #40313) * core: fix crash when a root bar has conditions different from - active/inactive/nicklist (closes #317) + active/inactive/nicklist (issue #317) * irc: don't close channel buffer on second /part when option - irc.look.part_closes_buffer is off (closes #313) + irc.look.part_closes_buffer is off (issue #313) * irc: fix /join on a channel buffer opened with autojoin but which failed to join * irc: send QUIT to server and no PART for channels when the server buffer - is closed (closes #294) + is closed (issue #294) * irc: fix order of channel buffers opened when option irc.look.server_buffer is set to "independent", irc.look.buffer_open_before_autojoin to "on" and - irc.look.new_channel_position to "near_server" (closes #303) + irc.look.new_channel_position to "near_server" (issue #303) * irc: fix crash in buffer close when server name is the same as a channel name - (closes #305) + (issue #305) == Version 1.1 (2015-01-11) @@ -183,8 +188,8 @@ * core: fully evaluate commands bound to keys in cursor and mouse contexts * core: add option weechat.completion.command_inline (task #12491) * core: add bar item "mouse_status", new options weechat.look.item_mouse_status - and weechat.color.status_mouse (closes #247) -* core: add signals "mouse_enabled" and "mouse_disabled" (closes #244) + and weechat.color.status_mouse (issue #247) +* core: add signals "mouse_enabled" and "mouse_disabled" (issue #244) * core: add hide of chars in string in evaluation of expressions * core: add arraylists, improve speed of completions (about 50x faster) * core: move bar item "scroll" between buffer name and lag in default bar items @@ -196,103 +201,103 @@ * api: add regex replace feature in function string_eval_expression() * api: use microseconds instead of milliseconds in functions util_timeval_diff() and util_timeval_add() -* irc: add option "reorder" in command /server (closes #229) +* irc: add option "reorder" in command /server (issue #229) * irc: open channel buffers before the JOIN is received from server (autojoin and manual joins), new options irc.look.buffer_open_before_{autojoin|join} - (closes #216) + (issue #216) * irc: add server option "sasl_fail" (continue/reconnect/disconnect if SASL - fails) (closes #265, task #12204) -* irc: add support for color codes 16-99 in IRC messages (closes #228), add + fails) (issue #265, task #12204) +* irc: add support for color codes 16-99 in IRC messages (issue #228), add infolist "irc_color_weechat" -* irc: disable SSLv3 by default in server option "ssl_priorities" (closes #248) -* irc: add support of "extended-join" capability (closes #143, closes #212) -* irc: automatically add current channel in command /samode (closes #241) -* irc: display own nick changes in server buffer (closes #188) +* irc: disable SSLv3 by default in server option "ssl_priorities" (issue #248) +* irc: add support of "extended-join" capability (issue #143, issue #212) +* irc: automatically add current channel in command /samode (issue #241) +* irc: display own nick changes in server buffer (issue #188) * irc: disable creation of temporary servers by default with command /connect, new option irc.look.temporary_servers * relay: add options "stop" and "restart" in command /relay -* relay: add option relay.network.ssl_priorities (closes #234) +* relay: add option relay.network.ssl_priorities (issue #234) * relay: add host in sender for IRC backlog PRIVMSG messages sent to clients -* script: add option script.scripts.url_force_https (closes #253) +* script: add option script.scripts.url_force_https (issue #253) * trigger: evaluate and replace regex groups at same time, new format for regex - option in triggers (incompatible with version 1.0) (closes #224) + option in triggers (incompatible with version 1.0) (issue #224) * trigger: add `${tg_displayed}` in conditions of default trigger "beep" * trigger: add option "restore" in command /trigger === Bugs fixed -* core: fix compilation of plugins with cmake >= 3.1 (closes #287) +* core: fix compilation of plugins with cmake >= 3.1 (issue #287) * core: fix display bug when scrolling in buffer on a filtered line - (closes #240) + (issue #240) * core: send mouse code only one time to terminal with command /mouse enable|disable|toggle * core: fix buffer property "lines_hidden" when merging buffers or when a line - is removed from a buffer (closes #226) + is removed from a buffer (issue #226) * core: display time in bare display only if option weechat.look.buffer_time_format is not an empty string * core: fix translation of message displayed after /upgrade * doc: fix compilation of man pages with autotools in source directory -* api: fix truncated process output in hook_process() (closes #266) -* api: fix crash when reading config options with NULL value (closes #238) -* tests: fix compilation of tests with clang (closes #275) +* api: fix truncated process output in hook_process() (issue #266) +* api: fix crash when reading config options with NULL value (issue #238) +* tests: fix compilation of tests with clang (issue #275) * irc: defer the auto-connection to servers with a timer - (closes #279, task #13038) + (issue #279, task #13038) * irc: add missing server options "sasl_timeout" and "notify" in output of /server listfull * irc: use option irc.look.nick_mode_empty to display nick prefix in bar item "input_prompt" -* irc: remove IRC color codes from buffer title in channels (closes #237) +* irc: remove IRC color codes from buffer title in channels (issue #237) * irc: add tag "nick_xxx" in invite messages * irc: fix completion of commands /msg, /notice and /query -* irc: fix translation of CTCP PING reply (closes #137) +* irc: fix translation of CTCP PING reply (issue #137) * lua: add detection of Lua 5.2 -* python: fix Python detection with Homebrew (closes #217) +* python: fix Python detection with Homebrew (issue #217) * relay: wait for message CAP END before sending join of channels and backlog - to the client (closes #223) + to the client (issue #223) * relay: send messages "_buffer_localvar_*" and "_buffer_type_changed" with - sync "buffers" (closes #191) -* relay: don't remove relay from config when the binding fails (closes #225) + sync "buffers" (issue #191) +* relay: don't remove relay from config when the binding fails (issue #225) * relay: use comma separator in option relay.irc.backlog_tags, check the value of option when it is changed with /set -* relay: remove "::ffff:" from IPv4-mapped IPv6 client address (closes #111) +* relay: remove "::ffff:" from IPv4-mapped IPv6 client address (issue #111) * trigger: fix memory leak when allocating a new trigger with several regex -* xfer: fix freeze when accepting DCC (closes #160, closes #174) -* xfer: bind to wildcard address when sending (closes #173) +* xfer: fix freeze when accepting DCC (issue #160, issue #174) +* xfer: bind to wildcard address when sending (issue #173) == Version 1.0.1 (2014-09-28) === Bugs fixed * core: fix crash on buffer close when option weechat.look.hotlist_remove is - set to "merged" (closes #199) + set to "merged" (issue #199) * core: fix highlight of IRC action messages when option irc.look.nick_mode is - set to "action" or "both" (closes #206) + set to "action" or "both" (issue #206) * core: fix compilation of plugin API functions (macros) when compiler - optimizations are enabled (closes #200) + optimizations are enabled (issue #200) * core: fix window/buffer pointers used in command /eval * core: fix modifier "weechat_print": discard only one line when several lines - are displayed in same message (closes #171) + are displayed in same message (issue #171) * api: fix bug in function hdata_move() when absolute value of count is greater than 1 * tests: fix build of tests when the build directory is outside source tree - (closes #178) + (issue #178) * tests: fix memory leak in tests launcher -* aspell: fix compilation with Enchant < 1.6.0 (closes #192) +* aspell: fix compilation with Enchant < 1.6.0 (issue #192) * aspell: fix crash with command "/aspell addword" if no word is given - (closes #164, closes #165) + (issue #164, issue #165) * irc: fix display of channel exception list (348) with 6 arguments (date missing) * irc: fix type of value stored in hashtable when joining a channel - (closes #211) -* guile: fix compilation with Guile < 2.0.4 (closes #198) + (issue #211) +* guile: fix compilation with Guile < 2.0.4 (issue #198) * perl: fix detection of Perl >= 5.20 with autotools -* relay: fix send of signals "relay_client_xxx" (closes #214) +* relay: fix send of signals "relay_client_xxx" (issue #214) * script: fix crash on "/script update" if a script detail is displayed in - buffer (closes #177) + buffer (issue #177) * trigger: do not allow any changes on a trigger when it is currently running - (closes #189) + (issue #189) * trigger: fix regex used in default triggers to hide passwords ("\S" is not - supported on *BSD) (closes #172) + supported on *BSD) (issue #172) == Version 1.0 (2014-08-15) @@ -301,23 +306,23 @@ * core: add terabyte unit for size displayed * core: display a warning on startup if $TERM does not start with "screen" under screen/tmux -* core: add option weechat.color.status_nicklist_count (closes #109, - closes #110) +* core: add option weechat.color.status_nicklist_count (issue #109, + issue #110) * core: add option "env" in command /set (manage environment variables) * core: add bar item "buffer_short_name" (task #10882) * core: add option "send" in command /input (send text to a buffer) * core: add support of negated tags in filters (with "!") - (closes #72, closes #74) + (issue #72, issue #74) * core: add hidden buffers, add options hide/unhide in command /buffer * core: add default key key[alt--] (toggle filters in current buffer) - (closes #17) + (issue #17) * core: add non-active merged buffers with activity in hotlist (if another merged buffer is zoomed) (task #12845) * core: add text search in buffers with free content (task #13051) * core: add buffer property "clear" * core: add option weechat.look.hotlist_add_conditions, remove option weechat.look.hotlist_add_buffer_if_away -* core: add option weechat.look.hotlist_remove (closes #99) +* core: add option weechat.look.hotlist_remove (issue #99) * core: add options "-beep" and "-current" in command /print * core: add bare display mode (for easy text selection and click on URLs), new key: key[alt-l], new option "bare" in command /window, new options: @@ -339,7 +344,7 @@ * api: add option "signal" in function hook_set() to send a signal to the child process * api: add support of nested variables in function string_eval_expression() and - command /eval (closes #35) + command /eval (issue #35) * api: add support of escaped strings with format `${esc:xxx}` or `${\xxx}` in function string_eval_expression() and command /eval * api: add functions hashtable_dup(), string_replace_regex(), @@ -348,29 +353,29 @@ * alias: add default alias "msgbuf" (send text to a buffer) * exec: add exec plugin: new command /exec and file exec.conf * irc: display locally away status changes in private buffers (in addition to - channels) (closes #117) + channels) (issue #117) * irc: add value "+" for option irc.look.smart_filter_mode to use modes from - server prefixes (this is now the default value) (closes #90) -* irc: add bar item "irc_nick_modes" (closes #71) + server prefixes (this is now the default value) (issue #90) +* irc: add bar item "irc_nick_modes" (issue #71) * irc: add support of message 324 (channel modes) in option - irc.look.display_join_message (closes #75) -* irc: add option irc.look.join_auto_add_chantype (closes #65) + irc.look.display_join_message (issue #75) +* irc: add option irc.look.join_auto_add_chantype (issue #65) * irc: add tag with host ("host_xxx") in IRC messages displayed (task #12018) -* irc: allow many fingerprints in server option ssl_fingerprint (closes #49) +* irc: allow many fingerprints in server option ssl_fingerprint (issue #49) * irc: rename option irc.look.item_channel_modes_hide_key to irc.look.item_channel_modes_hide_args, value is now a string - (task #12070, task #12163, closes #48) -* irc: add option irc.color.item_nick_modes (closes #47) -* irc: allow "$ident" in option irc.network.ban_mask_default (closes #18) -* irc: add support of "away-notify" capability (closes #12) -* irc: add command /remove (closes #91) -* irc: add command /unquiet (closes #36) + (task #12070, task #12163, issue #48) +* irc: add option irc.color.item_nick_modes (issue #47) +* irc: allow "$ident" in option irc.network.ban_mask_default (issue #18) +* irc: add support of "away-notify" capability (issue #12) +* irc: add command /remove (issue #91) +* irc: add command /unquiet (issue #36) * irc: add command /allpv (task #13111) * irc: evaluate content of server options "username" and "realname" * relay: add messages "_buffer_cleared", "_buffer_hidden" and "_buffer_unhidden" * relay: add info "relay_client_count" with optional status name as argument -* relay: add signals "relay_client_xxx" for client status changes (closes #2) +* relay: add signals "relay_client_xxx" for client status changes (issue #2) * relay: add option relay.network.clients_purge_delay * rmodifier: remove plugin (replaced by trigger) * trigger: add trigger plugin: new command /trigger and file trigger.conf @@ -384,39 +389,39 @@ * core: fix memory leak when removing script files * core: fix result of hash function (in hashtables) on 32-bit systems * core: fix insert of mouse code in input line after a partial key combo - (closes #130) -* core: check code point value in UTF-8 check function (closes #108) -* core: add option "-mask" in command /unset (closes #112) -* core: fix socks5 proxy for curl downloads (closes #119) + (issue #130) +* core: check code point value in UTF-8 check function (issue #108) +* core: add option "-mask" in command /unset (issue #112) +* core: fix socks5 proxy for curl downloads (issue #119) * core: display curl error after a failed download * core: do not display content of passphrase on /secure buffer * core: fix potential memory leak with infolists not freed in plugins (debian #751108) -* core: fix color display of last terminal color number + 1 (closes #101) -* core: add option "-buffer" in command /command (closes #67) +* core: fix color display of last terminal color number + 1 (issue #101) +* core: add option "-buffer" in command /command (issue #67) * core: fix restoration of core buffer properties after /upgrade * core: fix "/buffer clear" with a name (don't clear all merged buffers with same number) * core: fix evaluation of expression with regex: when a comparison char is in - the regex and don't evaluate the regex itself (closes #63) + the regex and don't evaluate the regex itself (issue #63) * core: close .upgrade files before deleting them after /upgrade * core: fix refresh of bar item "buffer_zoom" on buffer switch -* core: fix reset of attributes in bars when "resetcolor" is used (closes #41) +* core: fix reset of attributes in bars when "resetcolor" is used (issue #41) * core: fix alignment of lines in merged buffers when options weechat.look.prefix_align and weechat.look.prefix_buffer_align are set to - "none" (closes #43) + "none" (issue #43) * core: quit WeeChat on signal SIGHUP, remove signal "signal_sighup" * core: fix add of filter on OS X when regex for message is empty (filter regex ending with "\t") * core: check validity of buffer pointer when data is sent to a buffer (command/text from user and API function command()) * core: fix crash when buffer is closed during execution of multiple commands - (closes #27) -* core: fix compilation on SmartOS (bug #40981, closes #23) + (issue #27) +* core: fix compilation on SmartOS (bug #40981, issue #23) * core: add missing \0 at the end of stderr buffer in function hook_process() * core: fix highlight problem with "(?-i)" and upper case letters in option - weechat.look.highlight (closes #24) -* core: use glibtoolize on Mac OS X (autotools) (closes #22) + weechat.look.highlight (issue #24) +* core: use glibtoolize on Mac OS X (autotools) (issue #22) * core: fix detection of terminated process in function hook_process() * core: set option weechat.look.buffer_search_where to prefix_message by default @@ -447,16 +452,16 @@ * alias: change default command for alias /beep to "/print -beep" * guile: fix module used after unload of a script * irc: fix memory leak in CTCP answer -* irc: fix duplicate sender name in display of wallops (closes #142, - closes #145) +* irc: fix duplicate sender name in display of wallops (issue #142, + issue #145) * irc: fix extract of channel in parser for JOIN/PART messages when there is a - colon before the channel name (closes #83) -* irc: fix duplicate sender name in display of notice (closes #87) + colon before the channel name (issue #83) +* irc: fix duplicate sender name in display of notice (issue #87) * irc: fix refresh of buffer name in bar items after join/part/kick/kill - (closes #86) + (issue #86) * irc: display message 936 (censored word) on channel instead of server buffer * irc: make reason optional in command /kill -* irc: add alias "whois" for target buffer of messages 401/402 (closes #54) +* irc: add alias "whois" for target buffer of messages 401/402 (issue #54) * irc: fix truncated read on socket with SSL (bug #41558) * irc: display output of CAP LIST in server buffer * irc: fix colors in message with CTCP reply sent to another user @@ -469,19 +474,19 @@ * lua: fix interpreter used after unload of a script * perl: fix context used after unload of a script * python: fix read of return value for callbacks returning an integer - in Python 2.x (closes #125) + in Python 2.x (issue #125) * python: fix interpreter used after unload of a script * relay: fix memory leak during handshake on websocket * relay: fix memory leak when receiving commands from client (weechat protocol) * relay: fix crash when an IRC "MODE" command is received from client without arguments * relay: fix number of bytes sent/received on 32-bit systems -* relay: fix crash when closing relay buffers (closes #57, closes #78) +* relay: fix crash when closing relay buffers (issue #57, issue #78) * relay: check pointers received in hdata command to prevent crashes with bad pointers (WeeChat protocol) * relay: remove warning on /reload of relay.conf when ports are defined * relay: fix client disconnection on empty websocket frames received (PONG) -* relay: add support of Internet Explorer websocket (closes #73) +* relay: add support of Internet Explorer websocket (issue #73) * relay: fix crash on /upgrade received from a client (weechat protocol) * relay: fix freeze after /upgrade when many disconnected clients still exist * relay: fix NULL pointer when reading buffer lines for irc backlog @@ -490,14 +495,14 @@ * script: fix display of curl errors * script: set option script.scripts.cache_expire to 1440 by default * script: fix scroll on script buffer in the detailed view of script - (closes #6) + (issue #6) * scripts: fix crash when a signal is received with type "int" and NULL pointer in signal_data * xfer: fix problem with option xfer.file.auto_accept_nicks when the server name contains dots -* xfer: fix freeze/problems when sending empty files with DCC (closes #53) -* xfer: fix connection to remote host in DCC receive on Mac OS X (closes #25) -* xfer: remove bind on xfer.network.own_ip (closes #5) +* xfer: fix freeze/problems when sending empty files with DCC (issue #53) +* xfer: fix connection to remote host in DCC receive on Mac OS X (issue #25) +* xfer: remove bind on xfer.network.own_ip (issue #5) == Version 0.4.3 (2014-02-09) diff -Nru weechat-1.3~dev+20150711~utopic1/debian/changelog weechat-1.3~dev+20150718~utopic1/debian/changelog --- weechat-1.3~dev+20150711~utopic1/debian/changelog 2015-07-11 10:10:54.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/debian/changelog 2015-07-18 18:21:09.000000000 +0000 @@ -1,24 +1,22 @@ -weechat (1.3~dev+20150711~utopic1) utopic; urgency=medium +weechat (1.3~dev+20150718~utopic1) utopic; urgency=medium - * irc: evaluate content of server option "nicks" + * core: replace "closes #" by "issue #" in ChangeLog + * core: fix crash if a file descriptor used in hook_fd() is too high + (> 1024 on Linux/BSD) (closes #465) + * xfer: fix crash if the DCC file socket number is too high (issue + #465) + * irc: fix format of comment + * core: fix format of comment + * core: fix comment in function hook_find_pos + * core: add variables with count of hooks * core: update German translations - * irc: do not allow command /query with a channel name (closes #459) - * core: fix type of value returned by function - gui_bar_window_content_get - * logger: fix type of value returned by function logger_tail_last_eol - * core: fix type of value returned by function - gui_mouse_grab_event2input - * irc: fix type of value returned by function irc_buffer_build_name - * core: fix type of value returned by functions - gui_chat_string_next_char, gui_chat_string_add_offset and - gui_chat_string_add_offset_screen - * api: fix type of value returned by function util_get_time_string - * doc: update functions strcasestr, utf8_prev_char, utf8_next_char and - utf8_add_offset in plugin API reference - * api: fix type of value returned by functions utf8_prev_char, - utf8_next_char and utf8_add_offset - * core: add missing comments before functions when the result must be - freed after use - * alias: remove unused function alias_get_final_command() + * core: reset pointers, file descriptors and child PIDs in unhook() + * core: add option weechat.look.confirm_upgrade (closes #463) + * doc: update Japanese auto-generated files + * Merge pull request #464 from l/translation_ja + * core: update Japanese translations + * doc: update German documentation + * doc: add Cygwin packages in user's guide + * core: remove obsolete translations - -- nesthib Sat, 11 Jul 2015 12:10:51 +0200 + -- nesthib Sat, 18 Jul 2015 20:21:05 +0200 diff -Nru weechat-1.3~dev+20150711~utopic1/doc/de/autogen/user/weechat_commands.asciidoc weechat-1.3~dev+20150718~utopic1/doc/de/autogen/user/weechat_commands.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/de/autogen/user/weechat_commands.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/de/autogen/user/weechat_commands.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -841,31 +841,32 @@ [command]*`upgrade`* Aktualisiert WeeChat ohne die Verbindung zum Server zu trennen:: ---- -/upgrade [|-quit] +/upgrade [-yes] [|-quit] -path_to_binary: Pfad zu einer ausführbaren WeeChat Binärdatei (Standardeinstellung ist die aktuell ausführbare Datei) - -dummy: ohne Funktion (dient lediglich dazu, um nicht versehentlich die "-quit" Funktion auszuführen) - -quit: trennt *ALLE* Verbindungen, speichert die aktuelle Sitzung und beendet WeeChat, um den aktuellen Zustand später wiederherstellen (siehe unten) - -Dieser Befehl führt ein Upgrade von WeeChat durch und startet die laufende Sitzung neu. Bevor dieser Befehl ausgeführt wird, sollte eine neue Version von WeeChat entweder vorab kompiliert, oder mit einem Paketmanager installiert worden sein. - -Hinweis: SSL Verbindungen werden während eines Upgrades unterbrochen, da diese Verbindungen zur Zeit nicht mit GnuTLS gehalten werden können. Nach einem erfolgten Upgrade findet eine automatische Verbindung zu diesen Servern statt. - -Der Upgrade Vorgang besteht aus vier Schritten: - 1. Sicherung der Sitzung, in Dateien für Core und Erweiterungen (buffers, history, ..) - 2. alle Erweiterungen werden ausgeschaltet (Konfigurationen *.conf werden gesichert) - 3. Sicherung der WeeChat Konfiguration (weechat.conf) - 4. ausführen der neuen Version von WeeChat und wiederherstellen der Sitzung. - -Nutzt man die "-quit" Funktion ist die Abfolge geringfügig anders: - 1. es werden *ALLE* Verbindungen getrennt (irc,xfer,relay, ...) - 2. die Sitzung wird in Dateien gesichert (*.upgrade) - 3. alle Erweiterungen werden ausgeschaltet - 4. die WeeChat Konfiguration wird gesichert - 5. WeeChat wird beendet -Die Sitzung kann zu einem späteren Zeitpunkt wiederhergestellt werden: weechat --upgrade -WICHTIG: Die Sitzung muss mit exakt den selben Konfigurationsdateien wiederhergestellt werden (*.conf) -Es ist möglich die WeeChat-Sitzung auf einem anderen Rechner wiederherzustellen, sofern man den Inhalt des "~/.weechat" Verzeichnisses dorthin kopiert. + -yes: required if option weechat.look.confirm_upgrade is enabled +path_to_binary: path to WeeChat binary (default is current binary) + -dummy: do nothing (option used to prevent accidental completion with "-quit") + -quit: close *ALL* connections, save session and quit WeeChat, which makes possible a delayed restoration (see below) + +This command upgrades and reloads a running WeeChat session. The new WeeChat binary must have been compiled or installed with a package manager before running this command. + +Note: SSL connections are lost during upgrade, because reload of SSL sessions is currently not possible with GnuTLS. There is automatic reconnection after upgrade. + +Upgrade process has 4 steps: + 1. save session into files for core and plugins (buffers, history, ..) + 2. unload all plugins (configuration files (*.conf) are written on disk) + 3. save WeeChat configuration (weechat.conf) + 4. execute new WeeChat binary and reload session. + +With option "-quit", the process is slightly different: + 1. close *ALL* connections (irc, xfer, relay, ...) + 2. save session into files (*.upgrade) + 3. unload all plugins + 4. save WeeChat configuration + 5. quit WeeChat +Then later you can restore session with command: weechat --upgrade +IMPORTANT: you must restore the session with exactly same configuration (files *.conf). +It is possible to restore WeeChat session on another machine if you copy the content of directory "~/.weechat". ---- [[command_weechat_uptime]] diff -Nru weechat-1.3~dev+20150711~utopic1/doc/de/autogen/user/weechat_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/de/autogen/user/weechat_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/de/autogen/user/weechat_options.asciidoc 2015-04-26 09:06:22.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/de/autogen/user/weechat_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -542,6 +542,11 @@ ** Typ: boolesch ** Werte: on, off (Standardwert: `off`) +* [[option_weechat.look.confirm_upgrade]] *weechat.look.confirm_upgrade* +** Beschreibung: `if set, /upgrade command must be confirmed with extra argument "-yes" (see /help upgrade)` +** Typ: boolesch +** Werte: on, off (Standardwert: `off`) + * [[option_weechat.look.day_change]] *weechat.look.day_change* ** Beschreibung: `bei einem Datumswechsel wird eine entsprechende Nachricht angezeigt` ** Typ: boolesch diff -Nru weechat-1.3~dev+20150711~utopic1/doc/de/weechat_user.de.asciidoc weechat-1.3~dev+20150718~utopic1/doc/de/weechat_user.de.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/de/weechat_user.de.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/de/weechat_user.de.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -71,6 +71,7 @@ * Arch Linux: `pacman -S weechat` * Fedora Core: `yum install weechat` * Sourcemage: `cast weechat` +* Cygwin (Windows): wähle das WeeChat Paket in setup.exe aus zusätzliche Pakete können bzw. sollten installiert werden. Zum Beispiel: weechat-plugins. diff -Nru weechat-1.3~dev+20150711~utopic1/doc/en/autogen/user/weechat_commands.asciidoc weechat-1.3~dev+20150718~utopic1/doc/en/autogen/user/weechat_commands.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/en/autogen/user/weechat_commands.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/en/autogen/user/weechat_commands.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -841,8 +841,9 @@ [command]*`upgrade`* upgrade WeeChat without disconnecting from servers:: ---- -/upgrade [|-quit] +/upgrade [-yes] [|-quit] + -yes: required if option weechat.look.confirm_upgrade is enabled path_to_binary: path to WeeChat binary (default is current binary) -dummy: do nothing (option used to prevent accidental completion with "-quit") -quit: close *ALL* connections, save session and quit WeeChat, which makes possible a delayed restoration (see below) diff -Nru weechat-1.3~dev+20150711~utopic1/doc/en/autogen/user/weechat_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/en/autogen/user/weechat_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/en/autogen/user/weechat_options.asciidoc 2015-04-26 09:06:22.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/en/autogen/user/weechat_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -542,6 +542,11 @@ ** type: boolean ** values: on, off (default value: `off`) +* [[option_weechat.look.confirm_upgrade]] *weechat.look.confirm_upgrade* +** description: `if set, /upgrade command must be confirmed with extra argument "-yes" (see /help upgrade)` +** type: boolean +** values: on, off (default value: `off`) + * [[option_weechat.look.day_change]] *weechat.look.day_change* ** description: `display special message when day changes` ** type: boolean diff -Nru weechat-1.3~dev+20150711~utopic1/doc/en/weechat_plugin_api.en.asciidoc weechat-1.3~dev+20150718~utopic1/doc/en/weechat_plugin_api.en.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/en/weechat_plugin_api.en.asciidoc 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/en/weechat_plugin_api.en.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -7228,6 +7228,8 @@ ==== hook_fd +_Updated in 1.3._ + Hook a file descriptor (file or socket). Prototype: @@ -7249,6 +7251,7 @@ * 'flag_read': 1 = catch read event, 0 = ignore * 'flag_write': 1 = catch write event, 0 = ignore * 'flag_exception': 1 = catch exception event, 0 = ignore + (_WeeChat ≥ 1.3_: this argument is ignored and not used any more) * 'callback': function called a selected event occurs for file (or socket), arguments and return value: ** 'void *data': pointer diff -Nru weechat-1.3~dev+20150711~utopic1/doc/en/weechat_user.en.asciidoc weechat-1.3~dev+20150718~utopic1/doc/en/weechat_user.en.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/en/weechat_user.en.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/en/weechat_user.en.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -65,6 +65,7 @@ * Arch Linux: `pacman -S weechat` * Fedora Core: `yum install weechat` * Sourcemage: `cast weechat` +* Cygwin (Windows): select WeeChat packages in setup.exe Some additional packages may be useful, like weechat-plugins. diff -Nru weechat-1.3~dev+20150711~utopic1/doc/fr/autogen/user/weechat_commands.asciidoc weechat-1.3~dev+20150718~utopic1/doc/fr/autogen/user/weechat_commands.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/fr/autogen/user/weechat_commands.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/fr/autogen/user/weechat_commands.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -841,8 +841,9 @@ [command]*`upgrade`* mettre à jour WeeChat sans se déconnecter des serveurs:: ---- -/upgrade [|-quit] +/upgrade [-yes] [|-quit] + -yes : requis si l'option weechat.look.confirm_upgrade est activée chemin_vers_binaire : chemin vers le binaire WeeChat (par défaut le binaire courant) -dummy : ne rien faire (option utilisée pour éviter une complétion accidentelle avec "-quit") -quit : fermer *TOUTES* les connexions, sauver la session et quitter, ce qui rend possible une restauration différée (voir ci-dessous) diff -Nru weechat-1.3~dev+20150711~utopic1/doc/fr/autogen/user/weechat_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/fr/autogen/user/weechat_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/fr/autogen/user/weechat_options.asciidoc 2015-04-26 09:06:22.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/fr/autogen/user/weechat_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -542,6 +542,11 @@ ** type: booléen ** valeurs: on, off (valeur par défaut: `off`) +* [[option_weechat.look.confirm_upgrade]] *weechat.look.confirm_upgrade* +** description: `si activé, la commande /upgrade doit être confirmée par le paramètre supplémentaire "-yes" (voir /help upgrade)` +** type: booléen +** valeurs: on, off (valeur par défaut: `off`) + * [[option_weechat.look.day_change]] *weechat.look.day_change* ** description: `affiche un message quand le jour change` ** type: booléen diff -Nru weechat-1.3~dev+20150711~utopic1/doc/fr/weechat_plugin_api.fr.asciidoc weechat-1.3~dev+20150718~utopic1/doc/fr/weechat_plugin_api.fr.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/fr/weechat_plugin_api.fr.asciidoc 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/fr/weechat_plugin_api.fr.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -7352,6 +7352,8 @@ ==== hook_fd +_Mis à jour dans la 1.3._ + Accrocher un descripteur de fichier (fichier ou socket). Prototype : @@ -7373,6 +7375,7 @@ * 'flag_read' : 1 = intercepter un évènement de lecture, 0 = ignorer * 'flag_write' : 1 = intercepter un évènement d'écriture, 0 = ignorer * 'flag_exception' : 1 = intercepter un évènement d'exception, 0 = ignorer + (_WeeChat ≥ 1.3_ : ce paramètre est ignoré et n'est plus utilisé) * 'callback' : fonction appelée lorsqu'un des évènements sélectionnés se produit pour le fichier (ou le socket), paramètres et valeur de retour : ** 'void *data' : pointeur diff -Nru weechat-1.3~dev+20150711~utopic1/doc/fr/weechat_user.fr.asciidoc weechat-1.3~dev+20150718~utopic1/doc/fr/weechat_user.fr.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/fr/weechat_user.fr.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/fr/weechat_user.fr.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -66,6 +66,7 @@ * Arch Linux : `pacman -S weechat` * Fedora Core : `yum install weechat` * Sourcemage : `cast weechat` +* Cygwin (Windows) : sélectionnez les paquets WeeChat dans setup.exe Des paquets additionnels peuvent être utiles également, comme weechat-plugins. diff -Nru weechat-1.3~dev+20150711~utopic1/doc/it/autogen/user/weechat_commands.asciidoc weechat-1.3~dev+20150718~utopic1/doc/it/autogen/user/weechat_commands.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/it/autogen/user/weechat_commands.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/it/autogen/user/weechat_commands.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -841,8 +841,9 @@ [command]*`upgrade`* aggiorna WeeChat senza disconnettere dai server:: ---- -/upgrade [|-quit] +/upgrade [-yes] [|-quit] + -yes: required if option weechat.look.confirm_upgrade is enabled path_to_binary: path to WeeChat binary (default is current binary) -dummy: do nothing (option used to prevent accidental completion with "-quit") -quit: close *ALL* connections, save session and quit WeeChat, which makes possible a delayed restoration (see below) diff -Nru weechat-1.3~dev+20150711~utopic1/doc/it/autogen/user/weechat_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/it/autogen/user/weechat_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/it/autogen/user/weechat_options.asciidoc 2015-04-26 09:06:22.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/it/autogen/user/weechat_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -542,6 +542,11 @@ ** tipo: bool ** valori: on, off (valore predefinito: `off`) +* [[option_weechat.look.confirm_upgrade]] *weechat.look.confirm_upgrade* +** descrizione: `if set, /upgrade command must be confirmed with extra argument "-yes" (see /help upgrade)` +** tipo: bool +** valori: on, off (valore predefinito: `off`) + * [[option_weechat.look.day_change]] *weechat.look.day_change* ** descrizione: `mostra un messaggio speciale al cambio di data` ** tipo: bool diff -Nru weechat-1.3~dev+20150711~utopic1/doc/it/weechat_plugin_api.it.asciidoc weechat-1.3~dev+20150718~utopic1/doc/it/weechat_plugin_api.it.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/it/weechat_plugin_api.it.asciidoc 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/it/weechat_plugin_api.it.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -7391,6 +7391,9 @@ ==== hook_fd +// TRANSLATION MISSING +_Updated in 1.3._ + Hook su un descrittore file (file oppure socket). Prototipo: @@ -7411,7 +7414,9 @@ * 'fd': descrittore file * 'flag_read': 1 = cattura l'evento lettura (read), 0 = ignora * 'flag_write': 1 = cattura l'evento scrittura (write), 0 = ignora +// TRANSLATION MISSING * 'flag_exception': 1 = cattura l'eccezione evento (event), 0 = ignora + (_WeeChat ≥ 1.3_: this argument is ignored and not used any more) * 'callback': funzione che chiama un evento selezionato che si verifica per un file (o un socket), argomenti e valore restituito: ** 'void *data': puntatore diff -Nru weechat-1.3~dev+20150711~utopic1/doc/it/weechat_user.it.asciidoc weechat-1.3~dev+20150718~utopic1/doc/it/weechat_user.it.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/it/weechat_user.it.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/it/weechat_user.it.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -76,6 +76,8 @@ * Arch Linux: `pacman -S weechat` * Fedora Core: `yum install weechat` * Sourcemage: `cast weechat` +// TRANSLATION MISSING +* Cygwin (Windows): select WeeChat packages in setup.exe Potrebbero risultare utili alcuni pacchetti addizionali, come weechat-plugins. diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/plugin_api/infos_hashtable.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/plugin_api/infos_hashtable.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/plugin_api/infos_hashtable.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/plugin_api/infos_hashtable.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -6,7 +6,7 @@ |=== | プラグイン | 名前 | 説明 | ハッシュテーブル (入力) | ハッシュテーブル (出力) -| irc | irc_message_parse | IRC メッセージを解析 | "message": IRC メッセージ、"server": サーバ名 (任意) | "tags": tags, "message_without_tags": message without the tags, "nick": nick, "host": host, "command": command, "channel": channel, "arguments": arguments (includes channel), "text": text (for example user message), "pos_text": index of text in message ("-1" if no text found) +| irc | irc_message_parse | IRC メッセージを解析 | "message": IRC メッセージ、"server": サーバ名 (任意) | "tags": タグ、"message_without_tags": タグを含まないメッセージ、"nick": ニックネーム、"host": ホスト名、"command": コマンド、"channel": チャンネル、"arguments": 引数 (チャンネルを含む)、"text": テキスト (例えばユーザメッセージ)、"pos_text": メッセージ内テキストの位置 (テキストが見つからなかった場合 "-1") | irc | irc_message_split | IRC メッセージを分割 (512 バイトに収める) | "message": IRC メッセージ、"server": サーバ名 (任意) | "msg1" ... "msgN": 送信メッセージ (最後の "\r\n" は無し), "args1" ... "argsN": メッセージの引数、"count": メッセージの数 diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/irc_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/irc_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/irc_options.asciidoc 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/irc_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -543,7 +543,7 @@ ** 値: 未制約文字列 (デフォルト値: `""`) * [[option_irc.server_default.nicks]] *irc.server_default.nicks* -** 説明: `nicknames to use on server (separated by comma) (note: content is evaluated, see /help eval)` +** 説明: `サーバで使用するニックネーム (コンマ区切り) (注意: 値は評価されます、/help eval を参照してください)` ** タイプ: 文字列 ** 値: 未制約文字列 (デフォルト値: `""`) diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/weechat_commands.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/weechat_commands.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/weechat_commands.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/weechat_commands.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -251,51 +251,51 @@ /eval [-n|-s] [-n] -c - -n: display result without sending it to buffer (debug mode) - -s: split expression before evaluating it (many commands can be separated by semicolons) - -c: evaluate as condition: use operators and parentheses, return a boolean value ("0" or "1") -expression: expression to evaluate, variables with format ${variable} are replaced (see below); many commands can be separated by semicolons - operator: a logical or comparison operator: - - logical operators: - && boolean "and" - || boolean "or" - - comparison operators: - == equal - != not equal - <= less or equal - < less - >= greater or equal - > greater - =~ is matching POSIX extended regex - !~ is NOT matching POSIX extended regex - -An expression is considered as "true" if it is not NULL, not empty, and different from "0". -The comparison is made using integers if the two expressions are valid integers. -To force a string comparison, add double quotes around each expression, for example: + -n: 結果をバッファに送信せずに表示 (デバッグモード) + -s: 評価前に式を分割する (複数のコマンドを指定する場合はセミコロンで区切ってください) + -c: 条件として評価: 演算子と括弧をを使い、ブール値 ("0" または "1") を返します +expression: 評価する式、フォーマット、${variable} 型のフォーマットの変数は置換されます (以下を参照); 複数のコマンドを指定する場合はセミコロンで区切ってください + operator: 論理演算子や比較演算子: + - 論理演算子: + && ブール演算の "and" + || ブール演算の "or" + - 比較演算子: + == 等しい + != 等しくない + <= 以下 + < より少ない + >= 以上 + > より大きい + =~ 正規表現にマッチ + !~ 正規表現にマッチしない + +式が NULL でない場合、空でない場合、"0" でない場合、式は "真" と評価されます。 +両方の式が有効な整数である場合、比較は整数を使って行われます。 +文字列比較を強制するには、それぞれの式をダブルクォートで囲みます、例: 50 > 100 ==> 0 "50" > "100" ==> 1 -Some variables are replaced in expression, using the format ${variable}, variable can be, by order of priority: - 1. an evaluated sub-string (format: "eval:xxx") - 2. a string with escaped chars (format: "esc:xxx" or "\xxx") - 3. a string with chars to hide (format: "hide:char,string") - 4. a color (format: "color:xxx") - 5. an info (format: "info:name,arguments", arguments are optional) - 6. current date/time (format: "date" or "date:format") - 7. an environment variable (format: "env:XXX") - 8. an option (format: "file.section.option") - 9. a local variable in buffer - 10. a hdata name/variable (the value is automatically converted to string), by default "window" and "buffer" point to current window/buffer. -Format for hdata can be one of following: - hdata.var1.var2...: start with a hdata (pointer must be known), and ask variables one after one (other hdata can be followed) - hdata[list].var1.var2...: start with a hdata using a list, for example: - ${buffer[gui_buffers].full_name}: full name of first buffer in linked list of buffers - ${plugin[weechat_plugins].name}: name of first plugin in linked list of plugins - hdata[pointer].var1.var2...: start with a hdata using a pointer, for example: - ${buffer[0x1234abcd].full_name}: full name of the buffer with this pointer (can be used in triggers) -For name of hdata and variables, please look at "Plugin API reference", function "weechat_hdata_get". +式中の ${variable} 型のフォーマットの変数は置換されます。変数は以下の優先順位に従います: + 1. 評価済みのサブ文字列 (フォーマット: "eval:xxx") + 2. エスケープ文字を含む文字列 (フォーマット: "esc:xxx" または "\xxx") + 3. 隠す文字を含む文字列 (フォーマット: "hide:char,string") + 4. 色 (フォーマット: "color:xxx") + 5. 情報 (フォーマット: "info:name,arguments"、arguments は任意) + 6. 現在の日付/時刻 (フォーマット: "date" または "date:format") + 7. 環境変数 (フォーマット: "env:XXX") + 8. オプション (フォーマット: "file.section.option") + 9. バッファのローカル変数 + 10. hdata の名前/変数 (値は自動的に文字列に変換されます)、デフォルトでは "window" と "buffer" は現在のウィンドウ/バッファを指します。 +hdata のフォーマットは以下の 1 つです: + hdata.var1.var2...: hdata (ポインタは既知) で開始し、1 個ずつ変数を続ける (他の hdata を続けることも可能) + hdata(list).var1.var2...: リストを使う hdata で開始する、例: + ${buffer[gui_buffers].full_name}: バッファリストにリンクされた最初のバッファのフルネーム + ${plugin[weechat_plugins].name}: プラグインリストにリンクされた最初のプラグインの名前 + hdata[pointer].var1.var2...: ポインタを使う hdata で開始する、例: + ${buffer[0x1234abcd].full_name}: 与えたポインタを持つバッファの完全な名前 (トリガ中で使うことが可能です) +hdata と変数の名前については、"プラグイン API リファレンス" の "weechat_hdata_get" 関数を参照してください。 -Examples (simple strings): +例 (単純な文字列): /eval -n ${info:version} ==> 0.4.3 /eval -n ${env:HOME} ==> /home/user /eval -n ${weechat.look.scroll_amount} ==> 3 @@ -307,7 +307,7 @@ /eval -n ${hide:-,${relay.network.password}} ==> -------- /eval -n ${date:%H:%M:%S} ==> 07:46:40 -Examples (conditions): +例 (条件): /eval -n -c ${window.buffer.number} > 2 ==> 0 /eval -n -c ${window.win_width} > 100 ==> 1 /eval -n -c (8 > 12) || (5 > 2) ==> 1 @@ -841,31 +841,32 @@ [command]*`upgrade`* サーバとの接続を維持して WeeChat をアップグレード:: ---- -/upgrade [|-quit] +/upgrade [-yes] [|-quit] -path_to_binary: WeeChat バイナリへのパス (デフォルトは現在のバイナリ) - -dummy: 何もしない (補完された "-quit" オプションを不用意に使わないためのオプション) - -quit: *すべての*接続を閉じ、セッションを保存して WeeChat を終了。遅延復帰 (詳しくは後述) が可能になります。 - -このコマンドは起動中の WeeChat セッションのアップグレードと再読み込みを行います。このコマンドを実行する前に、新しい WeeChat バイナリをコンパイルするか、パッケージマネージャでインストールしなければいけません。 - -注意: SSL 接続はアップグレード中に破棄されます、これは今のところ GnuTLS では SSL セッションのリロードができないからです。アップグレードの後に自動的に再接続されます。 - -アップグレードは 4 つの手順を踏みます: - 1. コアとプラグイン (バッファ、履歴、...) のセッションをファイルに保存 - 2. 全てのプラグインをアンロード (設定ファイル (*.conf) はディスクに書き込まれます) - 3. WeeChat 設定を保存 (weechat.conf) - 4. 新しい WeeChat バイナリを実行してセッションをリロード。< - -オプション "-quit" を使うと、上の挙動が少し変わります: - 1. *すべての*接続を閉じる (irc、xfer、relay、...) - 2. すべてのセッションをファイルに保存 (*.upgrade) - 3. すべてのプラグインをアンロード - 4. WeeChat 設定を保存 - 5. WeeChat を終了 -この後、セッションを回復させるには weechat --upgrade を使ってください。 -重要: 完全に同一の設定で (*.conf ファイルで) セッションを回復させてください。 -"~/.weechat" ディレクトリの内容をコピーすれば異なるマシンで WeeChat のセッションを回復することも可能です。 + -yes: required if option weechat.look.confirm_upgrade is enabled +path_to_binary: path to WeeChat binary (default is current binary) + -dummy: do nothing (option used to prevent accidental completion with "-quit") + -quit: close *ALL* connections, save session and quit WeeChat, which makes possible a delayed restoration (see below) + +This command upgrades and reloads a running WeeChat session. The new WeeChat binary must have been compiled or installed with a package manager before running this command. + +Note: SSL connections are lost during upgrade, because reload of SSL sessions is currently not possible with GnuTLS. There is automatic reconnection after upgrade. + +Upgrade process has 4 steps: + 1. save session into files for core and plugins (buffers, history, ..) + 2. unload all plugins (configuration files (*.conf) are written on disk) + 3. save WeeChat configuration (weechat.conf) + 4. execute new WeeChat binary and reload session. + +With option "-quit", the process is slightly different: + 1. close *ALL* connections (irc, xfer, relay, ...) + 2. save session into files (*.upgrade) + 3. unload all plugins + 4. save WeeChat configuration + 5. quit WeeChat +Then later you can restore session with command: weechat --upgrade +IMPORTANT: you must restore the session with exactly same configuration (files *.conf). +It is possible to restore WeeChat session on another machine if you copy the content of directory "~/.weechat". ---- [[command_weechat_uptime]] diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/weechat_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/weechat_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/weechat_options.asciidoc 2015-04-26 09:06:22.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/weechat_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -542,6 +542,11 @@ ** タイプ: ブール ** 値: on, off (デフォルト値: `off`) +* [[option_weechat.look.confirm_upgrade]] *weechat.look.confirm_upgrade* +** 説明: `if set, /upgrade command must be confirmed with extra argument "-yes" (see /help upgrade)` +** タイプ: ブール +** 値: on, off (デフォルト値: `off`) + * [[option_weechat.look.day_change]] *weechat.look.day_change* ** 説明: `日付が変わった際に特殊メッセージを表示` ** タイプ: ブール diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/xfer_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/xfer_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/autogen/user/xfer_options.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/autogen/user/xfer_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -83,12 +83,12 @@ ** 値: on, off (デフォルト値: `on`) * [[option_xfer.file.download_path]] *xfer.file.download_path* -** 説明: `path for writing incoming files: "%h" at beginning of string is replaced by WeeChat home ("~/.weechat" by default) (note: content is evaluated, see /help eval)` +** 説明: `受信ファイルのパス; 文字列最初の "%h" は WeeChat ホーム (デフォルトでは "~/.weechat") に置換されます (注意: 内容は評価されます、/help eval 参照)` ** タイプ: 文字列 ** 値: 未制約文字列 (デフォルト値: `"%h/xfer"`) * [[option_xfer.file.upload_path]] *xfer.file.upload_path* -** 説明: `path for reading files when sending (when no path is specified by user): "%h" at beginning of string is replaced by WeeChat home ("~/.weechat" by default) (note: content is evaluated, see /help eval)` +** 説明: `送信時に読み込むファイルのパス (ユーザがパスを指定しなかった場合に使われます); 文字列最初の "%h" は WeeChat ホーム (デフォルトでは "~/.weechat") に置換されます (注意: 内容は評価されます、/help eval 参照)` ** タイプ: 文字列 ** 値: 未制約文字列 (デフォルト値: `"~"`) diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_faq.ja.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_faq.ja.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_faq.ja.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_faq.ja.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -112,17 +112,16 @@ *全ての* 設定 (ターミナル、screen、..) が ISO であり、 UTF-8 *でない* ことを確認してください。 -// TRANSLATION MISSING [[unicode_chars]] -=== Some unicode chars are displayed in terminal but not in WeeChat, why? +=== ターミナルで表示されるユニコード文字が WeeChat では表示されない場合があります、なぜでしょうか? -This may be caused by a libc bug in function 'wcwidth', which should be fixed -in glibc 2.22 (maybe not yet available in your distribution). +この問題は libc の 'wcwidth' 関数のバグによって引き起こされている可能性があります。これは glibc 2.22 +で修正されているはずです (使用中のディストリビューションではまだ提供されていないかもしれません) -There is a workaround to use the fixed 'wcwidth' function: +次の回避方法を使えば、修正済みの 'wcwidth' 関数を使う事が可能です: https://blog.nytsoi.net/2015/05/04/emoji-support-for-weechat -See this bug report for more information: +より詳しい情報を得るにはバグ報告をご覧ください: https://github.com/weechat/weechat/issues/79 [[bars_background]] diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_plugin_api.ja.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_plugin_api.ja.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_plugin_api.ja.asciidoc 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_plugin_api.ja.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -779,9 +779,8 @@ 戻り値: -// TRANSLATION MISSING * 見つかった文字列へのポインタ、見つからない場合は NULL - (_WeeChat ≥ 1.3_: pointer returned is a 'const char *' instead of 'char *') + (_WeeChat バージョン 1.3 以上の場合_: 返されるポインタは 'const char *' であり、 'char *' ではありません) C 言語での使用例: @@ -929,14 +928,13 @@ _WeeChat バージョン 0.3.3 以上で利用可。_ -// TRANSLATION MISSING -Evaluate a path in 3 steps: +3 段階でパスを評価します: -. replace leading `%h` by WeeChat home directory, -. replace leading `~` by user home directory (call to - <<_string_expand_home,weechat_string_expand_home>>), -. evaluate variables - (see <<_string_eval_expression,weechat_string_eval_expression>>). +. 先頭の `%h` を WeeChat ホームディレクトリで置換し、 +. 先頭の `~` をユーザのホームディレクトリで置換し + (<<_string_expand_home,weechat_string_expand_home>> を実行し)、 +. 変数を評価します + (<<_string_eval_expression,weechat_string_eval_expression>> を参照してください)。 プロトタイプ: @@ -948,21 +946,19 @@ struct t_hashtable *options); ---- -// TRANSLATION MISSING 引数: -* 'path': path -* 'pointers': hashtable for call to function +* 'path': パス +* 'pointers': 関数に渡されるハッシュテーブル <<_string_eval_expression,weechat_string_eval_expression>> -* 'extra_vars': hashtable for call to function +* 'extra_vars': 関数に渡されるハッシュテーブル <<_string_eval_expression,weechat_string_eval_expression>> -* 'options': hashtable for call to function +* 'options': 関数に渡されるハッシュテーブル <<_string_eval_expression,weechat_string_eval_expression>> -// TRANSLATION MISSING 戻り値: -* evaluated path (must be freed by calling "free" after use) +* 評価済みのパス (使用後には必ず "free" を呼び出して領域を開放してください) C 言語での使用例: @@ -1910,8 +1906,7 @@ ==== string_eval_expression -// TRANSLATION MISSING -_WeeChat ≥ 0.4.0, updated in 0.4.2, 1.0, 1.1, 1.2 and 1.3._ +_WeeChat バージョン 0.4.0 以上で利用可、バージョン 0.4.2、1.0、1.1、1.2、1.3 で更新。_ 式を評価して文字列として返す。`${variable}` という書式で書かれた特殊変数は展開されます (以下の表を参照)。 @@ -1970,13 +1965,12 @@ | `${name}` | 'extra_vars' の変数 `name` の値に展開 | `${name}` | `value` -// TRANSLATION MISSING | `${eval:xxx}` + - (_WeeChat ≥ 1.3_) | - String to evaluate | + (_WeeChat バージョン 1.3 以上で利用可_) | + 評価する文字列 | `${eval:${date:${weechat.look.buffer_time_format}}}` | - `19:02:45` (with colors if there are color codes in the option - weechat.look.buffer_time_format) + `19:02:45` (オプション weechat.look.buffer_time_format + 内に色コードが存在する場合色付き) | `${esc:xxx}` + `${\xxx}` | エスケープ文字を含む文字列 | @@ -2013,12 +2007,11 @@ `1.0` + `lightblue` -// TRANSLATION MISSING | `${date}` + `${date:xxx}` + - (_WeeChat ≥ 1.3_) | - Current date/time, with custom format (see `man strftime`), - default format is `%F %T` | + (_WeeChat バージョン 1.3 以上で利用可_) | + 現在の日付/時刻、カスタムフォーマットを使うことも可能です (`man strftime` を参照)、 + デフォルトフォーマットは `%F %T` | `${date}` + `${date:%H:%M:%S}` | `2015-06-30 19:02:45` + @@ -2244,9 +2237,8 @@ 戻り値: -// TRANSLATION MISSING * 1 つ前の UTF-8 文字へのポインタ、見つからなければ (文字列の開始位置に到達した場合は) NULL - (_WeeChat ≥ 1.3_: pointer returned is a 'const char *' instead of 'char *') + (_WeeChat バージョン 1.3 以上の場合_: 返されるポインタは 'const char *' であり、 'char *' ではありません) C 言語での使用例: @@ -2277,9 +2269,8 @@ 戻り値: -// TRANSLATION MISSING * 1 つ後の UTF-8 文字へのポインタ、見つからなければ (文字列の最後に到達した場合は) NULL - (_WeeChat ≥ 1.3_: pointer returned is a 'const char *' instead of 'char *') + (_WeeChat バージョン 1.3 以上の場合_: 返されるポインタは 'const char *' であり、 'char *' ではありません) C 言語での使用例: @@ -2554,9 +2545,8 @@ 戻り値: -// TRANSLATION MISSING * 文字列の N 文字後に進んだ位置へのポインタ (元文字列の最後より後の位置を指す場合は NULL) - (_WeeChat ≥ 1.3_: pointer returned is a 'const char *' instead of 'char *') + (_WeeChat バージョン 1.3 以上の場合_: 返されるポインタは 'const char *' であり、 'char *' ではありません) C 言語での使用例: @@ -2971,12 +2961,10 @@ ==== util_get_time_string -// TRANSLATION MISSING -_WeeChat ≥ 0.3.2, updated in 1.3._ +_WeeChat バージョン 0.3.2 以上で利用可、バージョン 1.3 で更新。_ -// TRANSLATION MISSING -Get date/time as a string built with "strftime" and the format defined in -option 'weechat.look.time_format'. +日付/時刻を "strftime" で作った文字列として取得します。フォーマットは +'weechat.look.time_format' で定義されています。 プロトタイプ: @@ -2991,8 +2979,7 @@ 戻り値: -// TRANSLATION MISSING -* pointer to a string with date/time +* 日付/時刻文字列へのポインタ C 言語での使用例: @@ -7240,6 +7227,8 @@ ==== hook_fd +_バージョン 1.3 で更新。_ + ファイルディスクリプタ (ファイルやソケット) をフック。 プロトタイプ: @@ -7260,7 +7249,9 @@ * 'fd': ファイルディスクリプタ * 'flag_read': 1 = 読み込みイベントをキャッチ、0 = 無視 * 'flag_write': 1 = 書き込みイベントをキャッチ、0 = 無視 +// TRANSLATION MISSING * 'flag_exception': 1 = 例外イベントをキャッチ、0 = 無視 + (_WeeChat ≥ 1.3_: this argument is ignored and not used any more) * 'callback': ファイル (またはソケット) に対してキャッチしたいイベントが発生した場合に実行する関数、 引数と戻り値: ** 'void *data': ポインタ @@ -12969,10 +12960,9 @@ } ---- -// TRANSLATION MISSING [NOTE] -See the 'WeeChat Scripting Guide' for more info about "irc_message_parse" -output. +"irc_message_parse" の出力に関するより詳しい情報を得るには +'WeeChat スクリプト作成ガイド' をご覧ください。 スクリプト (Python) での使用例: diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_scripting.ja.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_scripting.ja.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_scripting.ja.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_scripting.ja.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -902,9 +902,8 @@ "irc_message_parse" と呼ばれる info_hashtable を使って IRC メッセージを構文解析できます。 -// TRANSLATION MISSING -The result is a hashtable with following keys -(the example values are built with this message: +結果は以下のキーを持つハッシュテーブルです +(例の値は以下のメッセージから作られました: `@time=2015-06-27T16:40:35.000Z :nick!user@host PRIVMSG #weechat :hello!`): [width="100%",cols="1,^2,10,8",options="header"] diff -Nru weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_user.ja.asciidoc weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_user.ja.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/ja/weechat_user.ja.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/ja/weechat_user.ja.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -70,6 +70,7 @@ * Arch Linux: `pacman -S weechat` * Fedora Core: `yum install weechat` * Sourcemage: `cast weechat` +* Cygwin (Windows): setup.exe で WeeChat パッケージを選択してください 例えば weechat-plugins 等の追加パッケージを使うとより便利になるかもしれません。 @@ -3235,15 +3236,12 @@ | command | string | IRC コマンド (例: "PRIVMSG"、"NOTICE"、...) | channel | string | IRC チャンネル | arguments | string | コマンドの引数 ('channel' の値を含みます) -// TRANSLATION MISSING -| text | string | Text (for example user message) -// TRANSLATION MISSING -| pos_text | string | The index of text in message ("-1" if text was not found) +| text | string | テキスト (例えばユーザメッセージ) +| pos_text | string | メッセージ内のテキストの位置 (テキストが見つからない場合 "-1") |=== -// TRANSLATION MISSING -When the data is a pointer, the variable `tg_signal_data` can be used like this -to read a hdata property (in this example this is a pointer on a buffer): +データがポインタの場合、hdata の属性を読むために変数 `tg_signal_data` +を以下のようにして使うことが可能です (以下の例では、バッファのポインタとして使っています): ---- ${buffer[${tg_signal_data}].full_name} diff -Nru weechat-1.3~dev+20150711~utopic1/doc/pl/autogen/user/weechat_commands.asciidoc weechat-1.3~dev+20150718~utopic1/doc/pl/autogen/user/weechat_commands.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/pl/autogen/user/weechat_commands.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/pl/autogen/user/weechat_commands.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -841,31 +841,32 @@ [command]*`upgrade`* uaktualnia WeeChat bez rozłączania z serwerami:: ---- -/upgrade [<ścieżka_do_binarki>|-quit] +/upgrade [-yes] [|-quit] -ścieżka_do_binarki: ścieżka do pliku binarnego WeeChat (domyślnie jest to obecny plik) - -dummy: nic nie rób (opcja użyta w celu zapobiegnięcia przypadkowego dopełnienia za pomocą"-quit") - -quit: zamyka *WSZYSTKIE* połączenia, zapisuje sesję i wyłącza WeeChat, umożliwia to późniejsze przywrócenie (zobacz niżej) - -Ta komenda ponownie uruchamia plik binarny WeeChat, zatem powinna zostać skompilowana lub zainstalowana za pomocą managera pakietów przed uruchomieniem tej komendy. - -Uwaga: połączenia SSL są przerywane podczas uaktualniania, ponieważ przeładowanie sesji SSL nie jest obecnie możliwe za pomocą GnuTLS. Po uaktualnieniu nastąpi ponowne ich połączenie. - -Proces uaktualnienia składa się z 4 kroków: - 1. zapisania sesji do plików dla rdzenia i wtyczek (bufory, historia, ..) - 2. wyładowanie wszystkich wtyczek (zapisanie plików konfiguracyjnych *.conf) - 3. zapisanie konfiguracji WeeChat (weechat.conf) - 4. uruchomienie nowego pliku binarnego WeeChat i przeładowanie sesji. - -Z opcją "-quit", proces przebiega inaczej: - 1. zamknięcie *WSZYSTKICH* połączeń (irc, xfer, relay, ...) - 2. zapisanie sesji do pliku (*.upgrade) - 3. wyładowanie wszystkich wtyczek - 4. zapisanie konfiguracji WeeChat - 5. wyłączenie WeeChat -Następnie można przywrócić sesję za pomocą komendy: weechat --upgrade -WAŻNE: należy przywracać sesję z identyczną konfiguracją (pliki *.conf). -Jest możliwe przywrócenie sesji WeeChat na innej maszynie, jeśli skopiujemy zawartość katalogu "~/.weechat". + -yes: required if option weechat.look.confirm_upgrade is enabled +path_to_binary: path to WeeChat binary (default is current binary) + -dummy: do nothing (option used to prevent accidental completion with "-quit") + -quit: close *ALL* connections, save session and quit WeeChat, which makes possible a delayed restoration (see below) + +This command upgrades and reloads a running WeeChat session. The new WeeChat binary must have been compiled or installed with a package manager before running this command. + +Note: SSL connections are lost during upgrade, because reload of SSL sessions is currently not possible with GnuTLS. There is automatic reconnection after upgrade. + +Upgrade process has 4 steps: + 1. save session into files for core and plugins (buffers, history, ..) + 2. unload all plugins (configuration files (*.conf) are written on disk) + 3. save WeeChat configuration (weechat.conf) + 4. execute new WeeChat binary and reload session. + +With option "-quit", the process is slightly different: + 1. close *ALL* connections (irc, xfer, relay, ...) + 2. save session into files (*.upgrade) + 3. unload all plugins + 4. save WeeChat configuration + 5. quit WeeChat +Then later you can restore session with command: weechat --upgrade +IMPORTANT: you must restore the session with exactly same configuration (files *.conf). +It is possible to restore WeeChat session on another machine if you copy the content of directory "~/.weechat". ---- [[command_weechat_uptime]] diff -Nru weechat-1.3~dev+20150711~utopic1/doc/pl/autogen/user/weechat_options.asciidoc weechat-1.3~dev+20150718~utopic1/doc/pl/autogen/user/weechat_options.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/pl/autogen/user/weechat_options.asciidoc 2015-05-16 18:24:50.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/pl/autogen/user/weechat_options.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -542,6 +542,11 @@ ** typ: bool ** wartości: on, off (domyślna wartość: `off`) +* [[option_weechat.look.confirm_upgrade]] *weechat.look.confirm_upgrade* +** opis: `if set, /upgrade command must be confirmed with extra argument "-yes" (see /help upgrade)` +** typ: bool +** wartości: on, off (domyślna wartość: `off`) + * [[option_weechat.look.day_change]] *weechat.look.day_change* ** opis: `wyświetlaj specjalną wiadomość, kiedy zmienia się dzień` ** typ: bool diff -Nru weechat-1.3~dev+20150711~utopic1/doc/pl/weechat_user.pl.asciidoc weechat-1.3~dev+20150718~utopic1/doc/pl/weechat_user.pl.asciidoc --- weechat-1.3~dev+20150711~utopic1/doc/pl/weechat_user.pl.asciidoc 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/doc/pl/weechat_user.pl.asciidoc 2015-07-18 18:20:37.000000000 +0000 @@ -71,6 +71,8 @@ * Arch Linuxa: `pacman -S weechat` * Fedora Core: `yum install weechat` * Sourcemage: `cast weechat` +// TRANSLATION MISSING +* Cygwin (Windows): select WeeChat packages in setup.exe Niektóre dodatkowe pakiety mogą okazać się przydatne, jak weechat-plugins. diff -Nru weechat-1.3~dev+20150711~utopic1/po/cs.po weechat-1.3~dev+20150718~utopic1/po/cs.po --- weechat-1.3~dev+20150711~utopic1/po/cs.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/cs.po 2015-07-18 18:20:37.000000000 +0000 @@ -20,8 +20,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-03-21 08:41+0100\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-11 21:42+0200\n" "Last-Translator: Jiri Golembiovsky \n" "Language-Team: weechat-dev \n" "Language: cs\n" @@ -767,9 +767,9 @@ msgid "%sError: unable to set option \"%s\" for proxy \"%s\"" msgstr "%sChyba: nemohu nastavit volbu \"%s\" pro proxy \"%s\"" -#, c-format +#, fuzzy, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" "%sMusíte potvrdit příkaz quit speciálním argumentem \"-yes\" (viz /help quit)" @@ -2359,11 +2359,12 @@ msgstr "aktualizovat WeeChat bez odpojení od serveru" #, fuzzy -msgid "[|-quit]" +msgid "[-yes] [|-quit]" msgstr "[]" #, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -2964,6 +2965,14 @@ "pokud je nastaveno musí být příkaz /quit potvrzen speciálním argumentem \"-" "yes\" (viz /help quit)" +#, fuzzy +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"pokud je nastaveno musí být příkaz /quit potvrzen speciálním argumentem \"-" +"yes\" (viz /help quit)" + msgid "display special message when day changes" msgstr "zobrazit speiální zprávy při změně dne" @@ -11081,27 +11090,3 @@ #, fuzzy, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s%s: nemohu se připojit k odesílateli" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "přezdívky použité na serveru (oddělené čárkami)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "cesta pro zápis příchozích souborů (\"%h\" bude nahrazeno domácím " -#~ "adresářem WeeChat, \"~/.weechat\" je výchozí)" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "cesta pro čtení souborů při posílání (pokud není zadána cesta uživatelem) " -#~ "(\"%h\" bude nahrazeno domácím adresářem WeeChat, \"~/.weechat\" je " -#~ "výchozí)" - -#, fuzzy -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "příkaz spuštěný při startu WeeChat, před načtením pluginů" diff -Nru weechat-1.3~dev+20150711~utopic1/po/de.po weechat-1.3~dev+20150718~utopic1/po/de.po --- weechat-1.3~dev+20150711~utopic1/po/de.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/de.po 2015-07-18 18:20:37.000000000 +0000 @@ -24,8 +24,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-07-10 20:07+0200\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-14 14:19+0100\n" "Last-Translator: Nils Görs \n" "Language-Team: German <>\n" "Language: de_DE\n" @@ -809,10 +809,10 @@ #, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" -"%sUm WeeChat zu beenden, muss der \"/quit\" Befehl mit dem Argument \"-yes\" " -"ausgeführt werden (siehe /help quit)" +"%sDer Befehl /%s muss mit dem Argument \"-yes\" ausgeführt werden (siehe /" +"help %s)" #, c-format msgid "Options reloaded from %s" @@ -2784,10 +2784,11 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "Aktualisiert WeeChat ohne die Verbindung zum Server zu trennen" -msgid "[|-quit]" -msgstr "[|-quit]" +msgid "[-yes] [|-quit]" +msgstr "[-yes] [|-quit]" msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -2820,6 +2821,8 @@ "It is possible to restore WeeChat session on another machine if you copy the " "content of directory \"~/.weechat\"." msgstr "" +" -yes: wird benötigt, sobald Option weechat.look.confirm_upgrade " +"aktiviert ist\n" "path_to_binary: Pfad zu einer ausführbaren WeeChat Binärdatei " "(Standardeinstellung ist die aktuell ausführbare Datei)\n" " -dummy: ohne Funktion (dient lediglich dazu, um nicht versehentlich " @@ -3508,6 +3511,13 @@ "ist diese Einstellung aktiviert, muss der \"/quit\" Befehl mit dem Argument " "\"-yes\" ausgeführt werden (siehe /help quit)" +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"ist diese Einstellung aktiviert, muss der \"/upgrade\" Befehl mit dem " +"Argument \"-yes\" ausgeführt werden (siehe /help upgrade)" + msgid "display special message when day changes" msgstr "bei einem Datumswechsel wird eine entsprechende Nachricht angezeigt" @@ -12597,35 +12607,3 @@ msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "" "%s%s: Verbindung konnte nicht hergestellt werden: unerwarteter Fehler (%d)" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "" -#~ "Nicknamen, die auf dem IRC-Server benutzt werden sollen (durch Komma " -#~ "getrennt)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "Pfad in welchem die ankommenden Dateien gespeichert werden (\"%h\" wird " -#~ "durch das WeeChat Verzeichnis ersetzt, Standardverzeichnis: \"~/.weechat" -#~ "\")" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "Pfad in welchem sich die Quelldatei befindet (falls vom Anwender kein " -#~ "Pfad angegeben wurde) (\"%h\" wird durch das WeeChat Verzeichnis ersetzt, " -#~ "Standardverzeichnis: \"~/.weechat\")" - -#, fuzzy -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "" -#~ "Realname der auf dem Server genutzt werden soll (Hinweis: Inhalt wird " -#~ "evaluiert, siehe /help eval)" - -#~ msgid "local cache directory for scripts" -#~ msgstr "lokales Cache-Verzeichnis für Skripten" diff -Nru weechat-1.3~dev+20150711~utopic1/po/es.po weechat-1.3~dev+20150718~utopic1/po/es.po --- weechat-1.3~dev+20150711~utopic1/po/es.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/es.po 2015-07-18 18:20:37.000000000 +0000 @@ -22,8 +22,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-03-21 08:41+0100\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-11 21:42+0200\n" "Last-Translator: Elián Hanisch \n" "Language-Team: weechat-dev \n" "Language: es\n" @@ -771,9 +771,9 @@ msgid "%sError: unable to set option \"%s\" for proxy \"%s\"" msgstr "%sError: no se pudo configurar la opción \"%s\" para el proxy \"%s\"" -#, c-format +#, fuzzy, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" "%sDebes confirmar el comando de salida con el argumento extra \"-yes\" (ver /" "help quit)" @@ -2476,11 +2476,13 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "actualizar WeeChat sin desconectarse de los servidores" -msgid "[|-quit]" +#, fuzzy +msgid "[-yes] [|-quit]" msgstr "[|-quit]" #, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -3120,6 +3122,14 @@ "si es verdadero, el comando /quit debe ser confirmado con un argumento extra " "\"-yes\" (ver /help quit)" +#, fuzzy +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"si es verdadero, el comando /quit debe ser confirmado con un argumento extra " +"\"-yes\" (ver /help quit)" + msgid "display special message when day changes" msgstr "mostrar un mensaje especial cuando el día cambia" @@ -11373,28 +11383,3 @@ #, fuzzy, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s%s: no es posible conectarse al transmisor" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "apodos para usar en el servidor (separados por comas)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "ruta para guardar archivos entrantes (\"%h\" será reemplazado por el " -#~ "directorio raíz de WeeChat, \"~/.weechat\" por defecto)" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "ruta para buscar archivos a enviar (cuando no es especificado por el " -#~ "usuario) (\"%h\" será reemplazado por el directorio raíz de WeeChat, \"~/." -#~ "weechat\" por defecto)" - -#, fuzzy -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "" -#~ "comando ejecutado cuando WeeChat inicia, antes de cargar los plugins" diff -Nru weechat-1.3~dev+20150711~utopic1/po/fr.po weechat-1.3~dev+20150718~utopic1/po/fr.po --- weechat-1.3~dev+20150711~utopic1/po/fr.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/fr.po 2015-07-18 18:20:37.000000000 +0000 @@ -21,8 +21,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-07-10 20:07+0200\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-14 07:46+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" "Language: fr\n" @@ -790,10 +790,10 @@ #, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" -"%sVous devez confirmer la commande pour quitter avec le paramètre " -"supplémentaire \"-yes\" (voir /help quit)" +"%sVous devez confirmer la commande /%s avec le paramètre supplémentaire \"-" +"yes\" (voir /help %s)" #, c-format msgid "Options reloaded from %s" @@ -2718,10 +2718,11 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "mettre à jour WeeChat sans se déconnecter des serveurs" -msgid "[|-quit]" -msgstr "[|-quit]" +msgid "[-yes] [|-quit]" +msgstr "[-yes] [|-quit]" msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -2754,6 +2755,8 @@ "It is possible to restore WeeChat session on another machine if you copy the " "content of directory \"~/.weechat\"." msgstr "" +" -yes : requis si l'option weechat.look.confirm_upgrade est " +"activée\n" "chemin_vers_binaire : chemin vers le binaire WeeChat (par défaut le binaire " "courant)\n" " -dummy : ne rien faire (option utilisée pour éviter une " @@ -3417,6 +3420,13 @@ "si activé, la commande /quit doit être confirmée par le paramètre " "supplémentaire \"-yes\" (voir /help quit)" +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"si activé, la commande /upgrade doit être confirmée par le paramètre " +"supplémentaire \"-yes\" (voir /help upgrade)" + msgid "display special message when day changes" msgstr "affiche un message quand le jour change" @@ -12335,31 +12345,3 @@ #, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s%s : impossible de se connecter : erreur inattendue (%d)" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "pseudos à utiliser sur le serveur (séparés par des virgules)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "chemin où écrire les fichiers reçus (\"%h\" sera remplacé par le " -#~ "répertoire de base WeeChat, par défaut : \"~/.weechat\")" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "chemin pour lire les fichiers envoyés (quand aucun chemin n'est spécifié " -#~ "par l'utilisateur) (\"%h\" sera remplacé par le répertoire de base " -#~ "WeeChat, par défaut : \"~/.weechat\")" - -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "" -#~ "répertoire du cache local pour les scripts (note : le contenu est évalué, " -#~ "voir /help eval)" - -#~ msgid "local cache directory for scripts" -#~ msgstr "répertoire du cache local pour les scripts" diff -Nru weechat-1.3~dev+20150711~utopic1/po/hu.po weechat-1.3~dev+20150718~utopic1/po/hu.po --- weechat-1.3~dev+20150711~utopic1/po/hu.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/hu.po 2015-07-18 18:20:37.000000000 +0000 @@ -20,8 +20,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-03-21 08:41+0100\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-11 21:42+0200\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: weechat-dev \n" "Language: hu\n" @@ -806,7 +806,7 @@ #, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" #, fuzzy, c-format @@ -2073,11 +2073,12 @@ msgstr "WeeChat frissítése a szerverekről való lecsatlakozás nélkül" #, fuzzy -msgid "[|-quit]" +msgid "[-yes] [|-quit]" msgstr "[path_to_binary]" #, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -2607,6 +2608,11 @@ "help quit)" msgstr "" +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" + msgid "display special message when day changes" msgstr "speciális üzenet az aktuális nap megváltozásakor" @@ -10439,19 +10445,3 @@ #, fuzzy, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s DCC: nem sikerült kapcsolódni a küldőhöz\n" - -#, fuzzy -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "modulok elérési útvonala ('%h' helyére automatikusan a WeeChat saját " -#~ "könyvtára, alapértelmezésben ~/.weechat, kerül)" - -#, fuzzy -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "modulok elérési útvonala ('%h' helyére automatikusan a WeeChat saját " -#~ "könyvtára, alapértelmezésben ~/.weechat, kerül)" diff -Nru weechat-1.3~dev+20150711~utopic1/po/it.po weechat-1.3~dev+20150718~utopic1/po/it.po --- weechat-1.3~dev+20150711~utopic1/po/it.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/it.po 2015-07-18 18:20:37.000000000 +0000 @@ -20,8 +20,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-03-21 08:41+0100\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-11 21:42+0200\n" "Last-Translator: Esteban I. Ruiz Moreno \n" "Language-Team: weechat-dev \n" "Language: it\n" @@ -759,9 +759,9 @@ msgid "%sError: unable to set option \"%s\" for proxy \"%s\"" msgstr "%sErrore: impossibile impostare l'opzione \"%s\" per il proxy \"%s\"" -#, c-format +#, fuzzy, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" "%sBisogna confermare il comando quit con l'argomento extra \"-yes\" " "consultare /help quit)" @@ -2564,11 +2564,13 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "aggiorna WeeChat senza disconnettere dai server" -msgid "[|-quit]" +#, fuzzy +msgid "[-yes] [|-quit]" msgstr "[|-quit]" #, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -3217,6 +3219,14 @@ "se impostata, il comando /quit deve essere confermato con l'argomento extra " "\"-yes\" (consultare /help quit)" +#, fuzzy +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"se impostata, il comando /quit deve essere confermato con l'argomento extra " +"\"-yes\" (consultare /help quit)" + msgid "display special message when day changes" msgstr "mostra un messaggio speciale al cambio di data" @@ -11556,32 +11566,3 @@ #, fuzzy, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s%s: impossibile connettersi al mittente" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "nick da usare sul server (separati da virgole)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "path per il salvataggio dei file in arrivo (\"%h\" sarà sostituito dalla " -#~ "home di WeeChat, \"~/.weechat come predefinita)" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "path per la lettura dei file da inviare (quando non specificato " -#~ "dall'utente) (\"%h\" sarà sostituito dalla home di WeeChat, \"~/.weechat " -#~ "come predefinita)" - -#, fuzzy -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "" -#~ "nome utente per il server proxy (nota: il contenuto viene valutato, " -#~ "consultare /help eval)" - -#~ msgid "local cache directory for scripts" -#~ msgstr "directory locale della cache per gli script" diff -Nru weechat-1.3~dev+20150711~utopic1/po/ja.po weechat-1.3~dev+20150718~utopic1/po/ja.po --- weechat-1.3~dev+20150711~utopic1/po/ja.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/ja.po 2015-07-18 18:20:37.000000000 +0000 @@ -20,8 +20,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-06-21 22:54+0900\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-13 22:27+0900\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese \n" "Language: ja\n" @@ -780,9 +780,9 @@ msgstr "" "%1$sエラー: プロキシ \"%3$s\" に対するオプション \"%2$s\" を設定できません" -#, c-format +#, fuzzy, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" "%s引数 \"-yes\" を追加しないと quit コマンドの確認が出来なくなります (/help " "quit を読んでください)" @@ -1480,7 +1480,6 @@ msgid "[-n|-s] || [-n] -c " msgstr "[-n|-s] || [-n] -c " -#, fuzzy msgid "" " -n: display result without sending it to buffer (debug mode)\n" " -s: split expression before evaluating it (many commands can be " @@ -1594,24 +1593,29 @@ "\n" "式中の ${variable} 型のフォーマットの変数は置換されます。変数は以下の優先順位" "に従います:\n" -" 1. エスケープ文字を含む文字列 (フォーマット: \"esc:xxx\" または \"\\xxx" +" 1. 評価済みのサブ文字列 (フォーマット: \"eval:xxx\")\n" +" 2. エスケープ文字を含む文字列 (フォーマット: \"esc:xxx\" または \"\\xxx" "\")\n" -" 2. 隠す文字を含む文字列 (フォーマット: \"hide:char,string\")\n" -" 3. 色 (フォーマット: \"color:xxx\")\n" -" 4. 情報 (フォーマット: \"info:name,arguments\"、arguments は任意)\n" -" 5. 環境変数 (フォーマット: \"env:XXX\")\n" -" 6. オプション (フォーマット: \"file.section.option\")\n" -" 7. バッファのローカル変数\n" -" 8. hdata の名前/変数 (値は自動的に文字列に変換されます)、デフォルトでは " +" 3. 隠す文字を含む文字列 (フォーマット: \"hide:char,string\")\n" +" 4. 色 (フォーマット: \"color:xxx\")\n" +" 5. 情報 (フォーマット: \"info:name,arguments\"、arguments は任意)\n" +" 6. 現在の日付/時刻 (フォーマット: \"date\" または \"date:format\")\n" +" 7. 環境変数 (フォーマット: \"env:XXX\")\n" +" 8. オプション (フォーマット: \"file.section.option\")\n" +" 9. バッファのローカル変数\n" +" 10. hdata の名前/変数 (値は自動的に文字列に変換されます)、デフォルトでは " "\"window\" と \"buffer\" は現在のウィンドウ/バッファを指します。\n" "hdata のフォーマットは以下の 1 つです:\n" -" hdata.var1.var2...: hdata (ポインタは既知) で始まり、1 個ずつ変数を続ける " +" hdata.var1.var2...: hdata (ポインタは既知) で開始し、1 個ずつ変数を続ける " "(他の hdata を続けることも可能)\n" -" hdata(list).var1.var2...: リストを使って hdata を始める、例:\n" +" hdata(list).var1.var2...: リストを使う hdata で開始する、例:\n" " ${buffer[gui_buffers].full_name}: バッファリストにリンクされた最初のバッ" "ファのフルネーム\n" " ${plugin[weechat_plugins].name}: プラグインリストにリンクされた最初のプラ" "グインの名前\n" +" hdata[pointer].var1.var2...: ポインタを使う hdata で開始する、例:\n" +" ${buffer[0x1234abcd].full_name}: 与えたポインタを持つバッファの完全な名" +"前 (トリガ中で使うことが可能です)\n" "hdata と変数の名前については、\"プラグイン API リファレンス\" の " "\"weechat_hdata_get\" 関数を参照してください。\n" "\n" @@ -1625,6 +1629,7 @@ " /eval -n ${window.buffer.number} ==> 1\n" " /eval -n ${\\t} ==> \n" " /eval -n ${hide:-,${relay.network.password}} ==> --------\n" +" /eval -n ${date:%H:%M:%S} ==> 07:46:40\n" "\n" "例 (条件):\n" " /eval -n -c ${window.buffer.number} > 2 ==> 0\n" @@ -2639,10 +2644,13 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "サーバとの接続を維持して WeeChat をアップグレード" -msgid "[|-quit]" +#, fuzzy +msgid "[-yes] [|-quit]" msgstr "[|-quit]" +#, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -3312,6 +3320,14 @@ "セットされた場合、/quit コマンドは \"-yes\" 引数と共に使われなければいけない " "(help quit を参照)" +#, fuzzy +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"セットされた場合、/quit コマンドは \"-yes\" 引数と共に使われなければいけない " +"(help quit を参照)" + msgid "display special message when day changes" msgstr "日付が変わった際に特殊メッセージを表示" @@ -4390,7 +4406,7 @@ "れにより全てのデータが安全ではなくなります!)" msgid "(press ctrl-C to exit WeeChat now)" -msgstr "" +msgstr "(WeeChat を今すぐ終了するには ctrl-C を押してください)" msgid "" "To recover your secured data, you can use /secure decrypt (see /help secure)" @@ -5823,9 +5839,10 @@ msgid "%s%s: notification not found" msgstr "%s%s: 通知が見つかりません" -#, fuzzy, c-format +#, c-format msgid "%s%s: \"%s\" command can not be executed with a channel name (\"%s\")" -msgstr "%s%s: \"%s\" コマンドはチャンネルバッファ内でのみ実行可能" +msgstr "" +"%s%s: \"%s\" コマンドをチャンネル名 (\"%s\") を付けて実行することは不可能です" #, c-format msgid "%s%s: cannot create new private buffer \"%s\"" @@ -7400,13 +7417,12 @@ msgid "delay (in seconds) before trying again to reconnect to server" msgstr "サーバへの再接続の際の遅延 (秒単位) 時間" -#, fuzzy msgid "" "nicknames to use on server (separated by comma) (note: content is evaluated, " "see /help eval)" msgstr "" -"サーバで使用するユーザ名 (注意: 値は評価されます、/help eval を参照してくださ" -"い)" +"サーバで使用するニックネーム (コンマ区切り) (注意: 値は評価されます、/help " +"eval を参照してください)" msgid "user name to use on server (note: content is evaluated, see /help eval)" msgstr "" @@ -8199,7 +8215,6 @@ msgstr "\"message\": IRC メッセージ、\"server\": サーバ名 (任意)" #. TRANSLATORS: please do not translate key names (enclosed by quotes) -#, fuzzy msgid "" "\"tags\": tags, \"message_without_tags\": message without the tags, \"nick" "\": nick, \"host\": host, \"command\": command, \"channel\": channel, " @@ -8209,7 +8224,9 @@ msgstr "" "\"tags\": タグ、\"message_without_tags\": タグを含まないメッセージ、\"nick" "\": ニックネーム、\"host\": ホスト名、\"command\": コマンド、\"channel\": " -"チャンネル、\"arguments\": 引数 (チャンネルを含む)" +"チャンネル、\"arguments\": 引数 (チャンネルを含む)、\"text\": テキスト (例え" +"ばユーザメッセージ)、\"pos_text\": メッセージ内テキストの位置 (テキストが見つ" +"からなかった場合 \"-1\")" msgid "split an IRC message (to fit in 512 bytes)" msgstr "IRC メッセージを分割 (512 バイトに収める)" @@ -11755,25 +11772,22 @@ msgid "convert spaces to underscores when sending and receiving files" msgstr "ファイルの送受信時にスペースをアンダースコアに変換" -#, fuzzy msgid "" "path for writing incoming files: \"%h\" at beginning of string is replaced " "by WeeChat home (\"~/.weechat\" by default) (note: content is evaluated, " "see /help eval)" msgstr "" -"スクリプト用のローカルキャッシュディレクトリ; 文字列最初の \"%h\" は WeeChat " -"ホーム (デフォルトでは \"~/.weechat\") に置換されます (注意: 内容は評価されま" -"す、/help eval 参照)" +"受信ファイルのパス; 文字列最初の \"%h\" は WeeChat ホーム (デフォルトでは " +"\"~/.weechat\") に置換されます (注意: 内容は評価されます、/help eval 参照)" -#, fuzzy msgid "" "path for reading files when sending (when no path is specified by user): \"%h" "\" at beginning of string is replaced by WeeChat home (\"~/.weechat\" by " "default) (note: content is evaluated, see /help eval)" msgstr "" -"スクリプト用のローカルキャッシュディレクトリ; 文字列最初の \"%h\" は WeeChat " -"ホーム (デフォルトでは \"~/.weechat\") に置換されます (注意: 内容は評価されま" -"す、/help eval 参照)" +"送信時に読み込むファイルのパス (ユーザがパスを指定しなかった場合に使われま" +"す); 文字列最初の \"%h\" は WeeChat ホーム (デフォルトでは \"~/.weechat\") に" +"置換されます (注意: 内容は評価されます、/help eval 参照)" msgid "use remote nick as prefix in local filename when receiving a file" msgstr "" @@ -11853,31 +11867,3 @@ #, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s%s: 接続できません: 未定義のエラー (%d)" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "サーバで使用するニックネーム (コンマ区切り)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "受信ファイルを書き込むパス (\"%h\" は WeeChat ホームに置換されます、デフォ" -#~ "ルトは \"~/.weechat\")" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "ファイル送信の際に読み込むファイルのパス (ユーザがパスを指定しなかった場" -#~ "合) (\"%h\" は WeeChat ホームに置換されます、デフォルトは \"~/.weechat\")" - -#, fuzzy -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "" -#~ "サーバで使用する実名 (注意: 値は評価されます、/help eval を参照してくださ" -#~ "い)" - -#~ msgid "local cache directory for scripts" -#~ msgstr "スクリプトのローカルキャッシュディレクトリ" diff -Nru weechat-1.3~dev+20150711~utopic1/po/pl.po weechat-1.3~dev+20150718~utopic1/po/pl.po --- weechat-1.3~dev+20150711~utopic1/po/pl.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/pl.po 2015-07-18 18:20:37.000000000 +0000 @@ -21,8 +21,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-05-09 14:00+0100\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-11 21:42+0200\n" "Last-Translator: Krzysztof Korościk \n" "Language-Team: weechat-dev \n" "Language: pl\n" @@ -788,9 +788,9 @@ msgid "%sError: unable to set option \"%s\" for proxy \"%s\"" msgstr "%sBłąd: nie można ustawić opcji \"%s\" dla proxy \"%s\"" -#, c-format +#, fuzzy, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" "%sMusisz potwierdzić użycie komendy quit dodatkowym argumentem \"-yes" "\" (zobacz /help quit)" @@ -2693,10 +2693,13 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "uaktualnia WeeChat bez rozłączania z serwerami" -msgid "[|-quit]" +#, fuzzy +msgid "[-yes] [|-quit]" msgstr "[<ścieżka_do_binarki>|-quit]" +#, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -3374,6 +3377,14 @@ "jeśli ustawione, komenda /quit musi być potwierdzona dodatkowym argumentem " "\"-yes\" (zobacz /help quit)" +#, fuzzy +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"jeśli ustawione, komenda /quit musi być potwierdzona dodatkowym argumentem " +"\"-yes\" (zobacz /help quit)" + msgid "display special message when day changes" msgstr "wyświetlaj specjalną wiadomość, kiedy zmienia się dzień" @@ -12075,32 +12086,3 @@ #, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s%s: nie można połączyć: niespodziewany błąd (%d)" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "lista nicków używanych na serwerze (oddzielone przecinkiem)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "ścieżka do zapisywania pobieranych plików (\"%h\" zostanie zastąpione " -#~ "katalogiem domowym WeeChat - domyślnie \"~/.weechat\")" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "ścieżka dla odczytu plików podczas wysyłania (jeśli nie zostanie podana " -#~ "przez użytkownika) (\"%h\" zostanie zastąpione katalogiem domowym WeeChat " -#~ "- domyślnie \"~/.weechat\")" - -#, fuzzy -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "" -#~ "prawdziwa nazwa do użycia na serwerze (uwaga: zawartość jest " -#~ "przetwarzana, zobacz /help eval)" - -#~ msgid "local cache directory for scripts" -#~ msgstr "lokalny katalog dla skryptów" diff -Nru weechat-1.3~dev+20150711~utopic1/po/pt_BR.po weechat-1.3~dev+20150718~utopic1/po/pt_BR.po --- weechat-1.3~dev+20150711~utopic1/po/pt_BR.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/pt_BR.po 2015-07-18 18:20:37.000000000 +0000 @@ -21,8 +21,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-03-21 08:41+0100\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-11 21:42+0200\n" "Last-Translator: Eduardo Elias \n" "Language-Team: weechat-dev \n" "Language: pt_BR\n" @@ -795,9 +795,9 @@ msgid "%sError: unable to set option \"%s\" for proxy \"%s\"" msgstr "%sErro : incapaz de configurar a opção \"%s\" para o proxy \"%s\"" -#, c-format +#, fuzzy, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" "%sVocê precisa confirmar o comando quit com um argumento extra \"-yes" "\" (veja /help quit)" @@ -2507,11 +2507,13 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "atualiza o WeeChat sem desconectar dos servidores" -msgid "[|-quit]" +#, fuzzy +msgid "[-yes] [|-quit]" msgstr "[|-quit]" #, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -3151,6 +3153,14 @@ "se utilizado, o comando /quit pode ser confirmado com um argumento extra \"-" "yes\" (veja /help quit)" +#, fuzzy +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"se utilizado, o comando /quit pode ser confirmado com um argumento extra \"-" +"yes\" (veja /help quit)" + msgid "display special message when day changes" msgstr "mostra uma mensagem especial quando o dia muda" @@ -10860,29 +10870,3 @@ #, fuzzy, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s%s: não foi possível conectar ao remetente" - -#~ msgid "nicknames to use on server (separated by comma)" -#~ msgstr "apelidos para utilizar no servidor (separados por vírgula)" - -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "diretório para salvar arquivos recebidos (\"%h\" será substituído pelo " -#~ "diretório do WeeChat, \"~/.weechat\" por padrão)" - -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "diretório para ler arquivos quando enviá-los (quando nenhum diretório foi " -#~ "especificado pelo usuário) (\"%h\" será substituído pelo diretório do " -#~ "WeeChat, \"~/.weechat\" por padrão)" - -#, fuzzy -#~ msgid "" -#~ "local cache directory for scripts (note: content is evaluated, see /help " -#~ "eval)" -#~ msgstr "" -#~ "comando executado quando o WeeChat inicia, antes do carregamento dos " -#~ "plugins (nota: conteúdo é avaliado, veja /help eval)" diff -Nru weechat-1.3~dev+20150711~utopic1/po/ru.po weechat-1.3~dev+20150718~utopic1/po/ru.po --- weechat-1.3~dev+20150711~utopic1/po/ru.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/ru.po 2015-07-18 18:20:37.000000000 +0000 @@ -21,8 +21,8 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" -"PO-Revision-Date: 2015-03-21 08:41+0100\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" +"PO-Revision-Date: 2015-07-11 21:42+0200\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: weechat-dev \n" "Language: ru\n" @@ -817,9 +817,9 @@ msgid "%sError: unable to set option \"%s\" for proxy \"%s\"" msgstr "%s неизвестный параметр для команды \"%s\"\n" -#, c-format +#, fuzzy, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" "%sНеобходимо подтвердить команду выхода дополнительным аргументом \"-yes" "\" (см. /help quit)" @@ -2096,11 +2096,12 @@ msgstr "обновить WeeChat не отключаясь от серверов" #, fuzzy -msgid "[|-quit]" +msgid "[-yes] [|-quit]" msgstr "[путь_к_исполняемому_файлу]" #, fuzzy msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -2630,6 +2631,14 @@ "help quit)" msgstr "" +#, fuzzy +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" +"%sНеобходимо подтвердить команду выхода дополнительным аргументом \"-yes" +"\" (см. /help quit)" + msgid "display special message when day changes" msgstr "отображать специальное сообщение при смене дня" @@ -10462,19 +10471,3 @@ #, fuzzy, c-format msgid "%s%s: unable to connect: unexpected error (%d)" msgstr "%s DCC: не могу соединиться с отправителем\n" - -#, fuzzy -#~ msgid "" -#~ "path for writing incoming files (\"%h\" will be replaced by WeeChat home, " -#~ "\"~/.weechat\" by default)" -#~ msgstr "" -#~ "путь поиска pluginов ('%h' заменяется на домашний каталог WeeChat, по " -#~ "умолчанию - ~/.weechat)" - -#, fuzzy -#~ msgid "" -#~ "path for reading files when sending (when no path is specified by user) " -#~ "(\"%h\" will be replaced by WeeChat home, \"~/.weechat\" by default)" -#~ msgstr "" -#~ "путь поиска pluginов ('%h' заменяется на домашний каталог WeeChat, по " -#~ "умолчанию - ~/.weechat)" diff -Nru weechat-1.3~dev+20150711~utopic1/po/tr.po weechat-1.3~dev+20150718~utopic1/po/tr.po --- weechat-1.3~dev+20150711~utopic1/po/tr.po 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/tr.po 2015-07-18 18:20:37.000000000 +0000 @@ -20,7 +20,7 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" "PO-Revision-Date: 2015-03-10 21:33+0100\n" "Last-Translator: Hasan Kiran \n" "Language-Team: weechat-dev \n" @@ -724,7 +724,7 @@ #, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" #, c-format @@ -1890,10 +1890,11 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "" -msgid "[|-quit]" +msgid "[-yes] [|-quit]" msgstr "" msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -2360,6 +2361,11 @@ "help quit)" msgstr "" +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" + msgid "display special message when day changes" msgstr "" diff -Nru weechat-1.3~dev+20150711~utopic1/po/weechat.pot weechat-1.3~dev+20150718~utopic1/po/weechat.pot --- weechat-1.3~dev+20150711~utopic1/po/weechat.pot 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/po/weechat.pot 2015-07-18 18:20:37.000000000 +0000 @@ -21,7 +21,7 @@ msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2015-07-10 17:57+0200\n" +"POT-Creation-Date: 2015-07-14 07:44+0200\n" "PO-Revision-Date: 2014-08-16 10:27+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" @@ -724,7 +724,7 @@ #, c-format msgid "" -"%sYou must confirm quit command with extra argument \"-yes\" (see /help quit)" +"%sYou must confirm /%s command with extra argument \"-yes\" (see /help %s)" msgstr "" #, c-format @@ -1888,10 +1888,11 @@ msgid "upgrade WeeChat without disconnecting from servers" msgstr "" -msgid "[|-quit]" +msgid "[-yes] [|-quit]" msgstr "" msgid "" +" -yes: required if option weechat.look.confirm_upgrade is enabled\n" "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental completion " "with \"-quit\")\n" @@ -2357,6 +2358,11 @@ "help quit)" msgstr "" +msgid "" +"if set, /upgrade command must be confirmed with extra argument \"-yes" +"\" (see /help upgrade)" +msgstr "" + msgid "display special message when day changes" msgstr "" diff -Nru weechat-1.3~dev+20150711~utopic1/src/core/wee-command.c weechat-1.3~dev+20150718~utopic1/src/core/wee-command.c --- weechat-1.3~dev+20150711~utopic1/src/core/wee-command.c 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/core/wee-command.c 2015-07-18 18:20:37.000000000 +0000 @@ -4861,9 +4861,10 @@ if (CONFIG_BOOLEAN(config_look_confirm_quit) && !confirm_ok) { gui_chat_printf (NULL, - _("%sYou must confirm quit command with extra " - "argument \"-yes\" (see /help quit)"), - gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + _("%sYou must confirm /%s command with extra " + "argument \"-yes\" (see /help %s)"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + "quit", "quit"); return WEECHAT_RC_OK; } @@ -6013,14 +6014,37 @@ char *ptr_binary; char *exec_args[7] = { NULL, "-a", "--dir", NULL, "--upgrade", NULL }; struct stat stat_buf; - int rc, quit; + int confirm_ok, index_args, rc, quit; /* make C compiler happy */ (void) data; (void) buffer; - if ((argc > 1) && (string_strcasecmp (argv[1], "-dummy") == 0)) + confirm_ok = 0; + index_args = 1; + + if ((argc > 1) && (string_strcasecmp (argv[1], "-yes") == 0)) + { + confirm_ok = 1; + index_args = 2; + } + + /* if confirmation is required, check that "-yes" is given */ + if (CONFIG_BOOLEAN(config_look_confirm_upgrade) && !confirm_ok) + { + gui_chat_printf (NULL, + _("%sYou must confirm /%s command with extra " + "argument \"-yes\" (see /help %s)"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR], + "upgrade", "upgrade"); return WEECHAT_RC_OK; + } + + if ((argc > index_args) + && (string_strcasecmp (argv[index_args], "-dummy") == 0)) + { + return WEECHAT_RC_OK; + } /* * it is forbidden to upgrade while there are some background process @@ -6038,13 +6062,13 @@ ptr_binary = NULL; quit = 0; - if (argc > 1) + if (argc > index_args) { - if (string_strcasecmp (argv[1], "-quit") == 0) + if (string_strcasecmp (argv[index_args], "-quit") == 0) quit = 1; else { - ptr_binary = string_expand_home (argv_eol[1]); + ptr_binary = string_expand_home (argv_eol[index_args]); if (ptr_binary) { /* check if weechat binary is here and executable by user */ @@ -7853,8 +7877,10 @@ hook_command ( NULL, "upgrade", N_("upgrade WeeChat without disconnecting from servers"), - N_("[|-quit]"), - N_("path_to_binary: path to WeeChat binary (default is current binary)\n" + N_("[-yes] [|-quit]"), + N_(" -yes: required if option weechat.look.confirm_upgrade " + "is enabled\n" + "path_to_binary: path to WeeChat binary (default is current binary)\n" " -dummy: do nothing (option used to prevent accidental " "completion with \"-quit\")\n" " -quit: close *ALL* connections, save session and quit " diff -Nru weechat-1.3~dev+20150711~utopic1/src/core/wee-config.c weechat-1.3~dev+20150718~utopic1/src/core/wee-config.c --- weechat-1.3~dev+20150711~utopic1/src/core/wee-config.c 2015-06-06 18:37:27.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/core/wee-config.c 2015-07-18 18:20:37.000000000 +0000 @@ -107,6 +107,7 @@ struct t_config_option *config_look_command_chars; struct t_config_option *config_look_command_incomplete; struct t_config_option *config_look_confirm_quit; +struct t_config_option *config_look_confirm_upgrade; struct t_config_option *config_look_day_change; struct t_config_option *config_look_day_change_message_1date; struct t_config_option *config_look_day_change_message_2dates; @@ -2380,6 +2381,12 @@ N_("if set, /quit command must be confirmed with extra argument " "\"-yes\" (see /help quit)"), NULL, 0, 0, "off", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); + config_look_confirm_upgrade = config_file_new_option ( + weechat_config_file, ptr_section, + "confirm_upgrade", "boolean", + N_("if set, /upgrade command must be confirmed with extra argument " + "\"-yes\" (see /help upgrade)"), + NULL, 0, 0, "off", NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL); config_look_day_change = config_file_new_option ( weechat_config_file, ptr_section, "day_change", "boolean", diff -Nru weechat-1.3~dev+20150711~utopic1/src/core/wee-config.h weechat-1.3~dev+20150718~utopic1/src/core/wee-config.h --- weechat-1.3~dev+20150711~utopic1/src/core/wee-config.h 2015-04-26 09:06:22.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/core/wee-config.h 2015-07-18 18:20:37.000000000 +0000 @@ -154,6 +154,7 @@ extern struct t_config_option *config_look_command_chars; extern struct t_config_option *config_look_command_incomplete; extern struct t_config_option *config_look_confirm_quit; +extern struct t_config_option *config_look_confirm_upgrade; extern struct t_config_option *config_look_day_change; extern struct t_config_option *config_look_day_change_message_1date; extern struct t_config_option *config_look_day_change_message_2dates; diff -Nru weechat-1.3~dev+20150711~utopic1/src/core/wee-debug.c weechat-1.3~dev+20150718~utopic1/src/core/wee-debug.c --- weechat-1.3~dev+20150711~utopic1/src/core/wee-debug.c 2015-05-03 17:48:28.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/core/wee-debug.c 2015-07-18 18:20:37.000000000 +0000 @@ -391,26 +391,18 @@ void debug_hooks () { - int i, num_hooks, num_hooks_total; - struct t_hook *ptr_hook; + int i; gui_chat_printf (NULL, ""); gui_chat_printf (NULL, "hooks in memory:"); - num_hooks_total = 0; for (i = 0; i < HOOK_NUM_TYPES; i++) { - num_hooks = 0; - for (ptr_hook = weechat_hooks[i]; ptr_hook; - ptr_hook = ptr_hook->next_hook) - { - num_hooks++; - } - gui_chat_printf (NULL, "%17s:%5d", hook_type_string[i], num_hooks); - num_hooks_total += num_hooks; + gui_chat_printf (NULL, "%17s:%5d", + hook_type_string[i], hooks_count[i]); } gui_chat_printf (NULL, "%17s------", "---------"); - gui_chat_printf (NULL, "%17s:%5d", "total", num_hooks_total); + gui_chat_printf (NULL, "%17s:%5d", "total", hooks_count_total); } /* diff -Nru weechat-1.3~dev+20150711~utopic1/src/core/wee-hook.c weechat-1.3~dev+20150718~utopic1/src/core/wee-hook.c --- weechat-1.3~dev+20150711~utopic1/src/core/wee-hook.c 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/core/wee-hook.c 2015-07-18 18:20:37.000000000 +0000 @@ -32,7 +32,7 @@ #include #include #include -#include +#include #include #include #include @@ -68,10 +68,15 @@ "info", "info_hashtable", "infolist", "hdata", "focus" }; struct t_hook *weechat_hooks[HOOK_NUM_TYPES]; /* list of hooks */ struct t_hook *last_weechat_hook[HOOK_NUM_TYPES]; /* last hook */ +int hooks_count[HOOK_NUM_TYPES]; /* number of hooks */ +int hooks_count_total = 0; /* total number of hooks */ int hook_exec_recursion = 0; /* 1 when a hook is executed */ time_t hook_last_system_time = 0; /* used to detect system clock skew */ int real_delete_pending = 0; /* 1 if some hooks must be deleted */ +struct pollfd *hook_fd_pollfd = NULL; /* file descriptors for poll() */ +int hook_fd_pollfd_count = 0; /* number of file descriptors */ + void hook_process_run (struct t_hook *hook_process); @@ -89,7 +94,9 @@ { weechat_hooks[type] = NULL; last_weechat_hook[type] = NULL; + hooks_count[type] = 0; } + hooks_count_total = 0; hook_last_system_time = time (NULL); } @@ -118,6 +125,41 @@ } /* + * Reallocates the "struct pollfd" array for poll(). + */ + +void +hook_fd_realloc_pollfd () +{ + struct pollfd *ptr_pollfd; + int count; + + if (hooks_count[HOOK_TYPE_FD] == hook_fd_pollfd_count) + return; + + count = hooks_count[HOOK_TYPE_FD]; + + if (count == 0) + { + if (hook_fd_pollfd) + { + free (hook_fd_pollfd); + hook_fd_pollfd = NULL; + } + } + else + { + ptr_pollfd = realloc (hook_fd_pollfd, + count * sizeof (struct pollfd)); + if (!ptr_pollfd) + return; + hook_fd_pollfd = ptr_pollfd; + } + + hook_fd_pollfd_count = count; +} + +/* * Searches for position of hook in list (to keep hooks sorted). * * Hooks are sorted by priority, except commands which are sorted by command @@ -132,7 +174,7 @@ if (hook->type == HOOK_TYPE_COMMAND) { - /* for command hook, sort on command name */ + /* for command hook, sort on command name + priority */ for (ptr_hook = weechat_hooks[hook->type]; ptr_hook; ptr_hook = ptr_hook->next_hook) { @@ -201,6 +243,12 @@ weechat_hooks[new_hook->type] = new_hook; last_weechat_hook[new_hook->type] = new_hook; } + + hooks_count[new_hook->type]++; + hooks_count_total++; + + if (new_hook->type == HOOK_TYPE_FD) + hook_fd_realloc_pollfd (); } /* @@ -231,6 +279,12 @@ free (hook); weechat_hooks[type] = new_hooks; + + hooks_count[type]--; + hooks_count_total--; + + if (type == HOOK_TYPE_FD) + hook_fd_realloc_pollfd (); } /* @@ -1077,73 +1131,81 @@ } /* - * Sets time until next timeout. + * Returns time until next timeout (in milliseconds). */ -void -hook_timer_time_to_next (struct timeval *tv_timeout) +int +hook_timer_get_time_to_next () { struct t_hook *ptr_hook; - int found; - struct timeval tv_now; + int found, timeout; + struct timeval tv_now, tv_timeout; long diff_usec; hook_timer_check_system_clock (); found = 0; - tv_timeout->tv_sec = 0; - tv_timeout->tv_usec = 0; + tv_timeout.tv_sec = 0; + tv_timeout.tv_usec = 0; for (ptr_hook = weechat_hooks[HOOK_TYPE_TIMER]; ptr_hook; ptr_hook = ptr_hook->next_hook) { if (!ptr_hook->deleted && (!found - || (util_timeval_cmp (&HOOK_TIMER(ptr_hook, next_exec), tv_timeout) < 0))) + || (util_timeval_cmp (&HOOK_TIMER(ptr_hook, next_exec), + &tv_timeout) < 0))) { found = 1; - tv_timeout->tv_sec = HOOK_TIMER(ptr_hook, next_exec).tv_sec; - tv_timeout->tv_usec = HOOK_TIMER(ptr_hook, next_exec).tv_usec; + tv_timeout.tv_sec = HOOK_TIMER(ptr_hook, next_exec).tv_sec; + tv_timeout.tv_usec = HOOK_TIMER(ptr_hook, next_exec).tv_usec; } } /* no timeout found, return 2 seconds by default */ if (!found) { - tv_timeout->tv_sec = 2; - tv_timeout->tv_usec = 0; - return; + tv_timeout.tv_sec = 2; + tv_timeout.tv_usec = 0; + goto end; } gettimeofday (&tv_now, NULL); /* next timeout is past date! */ - if (util_timeval_cmp (tv_timeout, &tv_now) < 0) + if (util_timeval_cmp (&tv_timeout, &tv_now) < 0) { - tv_timeout->tv_sec = 0; - tv_timeout->tv_usec = 0; - return; + tv_timeout.tv_sec = 0; + tv_timeout.tv_usec = 0; + goto end; } - tv_timeout->tv_sec = tv_timeout->tv_sec - tv_now.tv_sec; - diff_usec = tv_timeout->tv_usec - tv_now.tv_usec; + tv_timeout.tv_sec = tv_timeout.tv_sec - tv_now.tv_sec; + diff_usec = tv_timeout.tv_usec - tv_now.tv_usec; if (diff_usec >= 0) - tv_timeout->tv_usec = diff_usec; + { + tv_timeout.tv_usec = diff_usec; + } else { - tv_timeout->tv_sec--; - tv_timeout->tv_usec = 1000000 + diff_usec; + tv_timeout.tv_sec--; + tv_timeout.tv_usec = 1000000 + diff_usec; } /* * to detect clock skew, we ensure there's a call to timers every * 2 seconds max */ - if (tv_timeout->tv_sec > 2) + if (tv_timeout.tv_sec >= 2) { - tv_timeout->tv_sec = 2; - tv_timeout->tv_usec = 0; + tv_timeout.tv_sec = 2; + tv_timeout.tv_usec = 0; } + +end: + /* return a number of milliseconds */ + timeout = (tv_timeout.tv_sec * 1000) + (tv_timeout.tv_usec / 1000); + return (timeout < 1) ? 1 : timeout; } /* @@ -1272,18 +1334,19 @@ } /* - * Fills sets according to fd hooked. - * - * Returns highest fd set. + * Executes fd hooks: + * - poll() on fie descriptors + * - call of hook fd callbacks if needed. */ -int -hook_fd_set (fd_set *read_fds, fd_set *write_fds, fd_set *exception_fds) +void +hook_fd_exec () { - struct t_hook *ptr_hook; - int max_fd; + int i, num_fd, timeout, ready, found; + struct t_hook *ptr_hook, *next_hook; - max_fd = 0; + /* build an array of "struct pollfd" for poll() */ + num_fd = 0; for (ptr_hook = weechat_hooks[HOOK_TYPE_FD]; ptr_hook; ptr_hook = ptr_hook->next_hook) { @@ -1305,40 +1368,29 @@ } else { + if (num_fd > hook_fd_pollfd_count) + break; + + hook_fd_pollfd[num_fd].fd = HOOK_FD(ptr_hook, fd); + hook_fd_pollfd[num_fd].events = 0; + hook_fd_pollfd[num_fd].revents = 0; if (HOOK_FD(ptr_hook, flags) & HOOK_FD_FLAG_READ) - { - FD_SET (HOOK_FD(ptr_hook, fd), read_fds); - if (HOOK_FD(ptr_hook, fd) > max_fd) - max_fd = HOOK_FD(ptr_hook, fd); - } + hook_fd_pollfd[num_fd].events |= POLLIN; if (HOOK_FD(ptr_hook, flags) & HOOK_FD_FLAG_WRITE) - { - FD_SET (HOOK_FD(ptr_hook, fd), write_fds); - if (HOOK_FD(ptr_hook, fd) > max_fd) - max_fd = HOOK_FD(ptr_hook, fd); - } - if (HOOK_FD(ptr_hook, flags) & HOOK_FD_FLAG_EXCEPTION) - { - FD_SET (HOOK_FD(ptr_hook, fd), exception_fds); - if (HOOK_FD(ptr_hook, fd) > max_fd) - max_fd = HOOK_FD(ptr_hook, fd); - } + hook_fd_pollfd[num_fd].events |= POLLOUT; + + num_fd++; } } } - return max_fd; -} - -/* - * Executes fd callbacks with sets. - */ - -void -hook_fd_exec (fd_set *read_fds, fd_set *write_fds, fd_set *exception_fds) -{ - struct t_hook *ptr_hook, *next_hook; + /* perform the poll() */ + timeout = hook_timer_get_time_to_next (); + ready = poll (hook_fd_pollfd, num_fd, timeout); + if (ready <= 0) + return; + /* execute callbacks for file descriptors with activity */ hook_exec_start (); ptr_hook = weechat_hooks[HOOK_TYPE_FD]; @@ -1347,18 +1399,25 @@ next_hook = ptr_hook->next_hook; if (!ptr_hook->deleted - && !ptr_hook->running - && (((HOOK_FD(ptr_hook, flags) & HOOK_FD_FLAG_READ) - && (FD_ISSET(HOOK_FD(ptr_hook, fd), read_fds))) - || ((HOOK_FD(ptr_hook, flags) & HOOK_FD_FLAG_WRITE) - && (FD_ISSET(HOOK_FD(ptr_hook, fd), write_fds))) - || ((HOOK_FD(ptr_hook, flags) & HOOK_FD_FLAG_EXCEPTION) - && (FD_ISSET(HOOK_FD(ptr_hook, fd), exception_fds))))) + && !ptr_hook->running) { - ptr_hook->running = 1; - (void) (HOOK_FD(ptr_hook, callback)) (ptr_hook->callback_data, - HOOK_FD(ptr_hook, fd)); - ptr_hook->running = 0; + found = 0; + for (i = 0; i < num_fd; i++) + { + if (hook_fd_pollfd[i].fd == HOOK_FD(ptr_hook, fd) + && hook_fd_pollfd[i].revents) + { + found = 1; + break; + } + } + if (found) + { + ptr_hook->running = 1; + (void) (HOOK_FD(ptr_hook, callback)) (ptr_hook->callback_data, + HOOK_FD(ptr_hook, fd)); + ptr_hook->running = 0; + } } ptr_hook = next_hook; @@ -1774,9 +1833,8 @@ void hook_process_child_read_until_eof (struct t_hook *hook_process) { - struct timeval tv_timeout; - fd_set read_fds, write_fds, except_fds; - int count, fd_stdout, fd_stderr, max_fd, ready; + struct pollfd poll_fd[2]; + int count, fd_stdout, fd_stderr, num_fd, ready, i; fd_stdout = HOOK_PROCESS(hook_process, child_read[HOOK_PROCESS_STDOUT]); fd_stderr = HOOK_PROCESS(hook_process, child_read[HOOK_PROCESS_STDERR]); @@ -1788,52 +1846,53 @@ count = 0; while (count < 1024) { - FD_ZERO (&read_fds); - FD_ZERO (&write_fds); - FD_ZERO (&except_fds); + num_fd = 0; - max_fd = -1; if (HOOK_PROCESS(hook_process, hook_fd[HOOK_PROCESS_STDOUT]) && ((fcntl (fd_stdout, F_GETFD) != -1) || (errno != EBADF))) { - FD_SET (fd_stdout, &read_fds); - if (fd_stdout > max_fd) - max_fd = fd_stdout; + poll_fd[num_fd].fd = fd_stdout; + poll_fd[num_fd].events = POLLIN; + poll_fd[num_fd].revents = 0; + num_fd++; } + if (HOOK_PROCESS(hook_process, hook_fd[HOOK_PROCESS_STDERR]) && ((fcntl (fd_stderr, F_GETFD) != -1) || (errno != EBADF))) { - FD_SET (fd_stderr, &read_fds); - if (fd_stderr > max_fd) - max_fd = fd_stderr; + poll_fd[num_fd].fd = fd_stderr; + poll_fd[num_fd].events = POLLIN; + poll_fd[num_fd].revents = 0; + num_fd++; } - if (max_fd < 0) + if (num_fd == 0) break; - tv_timeout.tv_sec = 0; - tv_timeout.tv_usec = 0; - - ready = select (max_fd + 1, - &read_fds, &write_fds, &except_fds, - &tv_timeout); + ready = poll (poll_fd, num_fd, 0); if (ready <= 0) break; - if (FD_ISSET(fd_stdout, &read_fds)) + for (i = 0; i < num_fd; i++) { - (void) hook_process_child_read_stdout_cb ( - hook_process, - HOOK_PROCESS(hook_process, - child_read[HOOK_PROCESS_STDOUT])); - } - if (FD_ISSET(fd_stderr, &read_fds)) - { - (void) hook_process_child_read_stderr_cb ( - hook_process, - HOOK_PROCESS(hook_process, - child_read[HOOK_PROCESS_STDERR])); + if (poll_fd[i].revents & POLLIN) + { + if (poll_fd[i].fd == fd_stdout) + { + (void) hook_process_child_read_stdout_cb ( + hook_process, + HOOK_PROCESS(hook_process, + child_read[HOOK_PROCESS_STDOUT])); + } + else + { + (void) hook_process_child_read_stderr_cb ( + hook_process, + HOOK_PROCESS(hook_process, + child_read[HOOK_PROCESS_STDERR])); + } + } } count++; @@ -3486,22 +3545,40 @@ /* free data */ if (hook->subplugin) + { free (hook->subplugin); + hook->subplugin = NULL; + } if (hook->hook_data) { switch (hook->type) { case HOOK_TYPE_COMMAND: if (HOOK_COMMAND(hook, command)) + { free (HOOK_COMMAND(hook, command)); + HOOK_COMMAND(hook, command) = NULL; + } if (HOOK_COMMAND(hook, description)) + { free (HOOK_COMMAND(hook, description)); + HOOK_COMMAND(hook, description) = NULL; + } if (HOOK_COMMAND(hook, args)) + { free (HOOK_COMMAND(hook, args)); + HOOK_COMMAND(hook, args) = NULL; + } if (HOOK_COMMAND(hook, args_description)) + { free (HOOK_COMMAND(hook, args_description)); + HOOK_COMMAND(hook, args_description) = NULL; + } if (HOOK_COMMAND(hook, completion)) + { free (HOOK_COMMAND(hook, completion)); + HOOK_COMMAND(hook, completion) = NULL; + } if (HOOK_COMMAND(hook, cplt_templates)) { for (i = 0; i < HOOK_COMMAND(hook, cplt_num_templates); i++) @@ -3515,11 +3592,20 @@ free (HOOK_COMMAND(hook, cplt_templates)); } if (HOOK_COMMAND(hook, cplt_templates_static)) + { free (HOOK_COMMAND(hook, cplt_templates_static)); + HOOK_COMMAND(hook, cplt_templates_static) = NULL; + } if (HOOK_COMMAND(hook, cplt_template_num_args)) + { free (HOOK_COMMAND(hook, cplt_template_num_args)); + HOOK_COMMAND(hook, cplt_template_num_args) = NULL; + } if (HOOK_COMMAND(hook, cplt_template_args)) + { free (HOOK_COMMAND(hook, cplt_template_args)); + HOOK_COMMAND(hook, cplt_template_args) = NULL; + } if (HOOK_COMMAND(hook, cplt_template_args_concat)) { for (i = 0; @@ -3529,11 +3615,15 @@ free (HOOK_COMMAND(hook, cplt_template_args_concat[i])); } free (HOOK_COMMAND(hook, cplt_template_args_concat)); + HOOK_COMMAND(hook, cplt_template_args_concat) = NULL; } break; case HOOK_TYPE_COMMAND_RUN: if (HOOK_COMMAND_RUN(hook, command)) + { free (HOOK_COMMAND_RUN(hook, command)); + HOOK_COMMAND_RUN(hook, command) = NULL; + } break; case HOOK_TYPE_TIMER: break; @@ -3541,82 +3631,174 @@ break; case HOOK_TYPE_PROCESS: if (HOOK_PROCESS(hook, command)) + { free (HOOK_PROCESS(hook, command)); + HOOK_PROCESS(hook, command) = NULL; + } if (HOOK_PROCESS(hook, options)) + { hashtable_free (HOOK_PROCESS(hook, options)); + HOOK_PROCESS(hook, options) = NULL; + } if (HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDIN])) + { unhook (HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDIN])); + HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDIN]) = NULL; + } if (HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDOUT])) + { unhook (HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDOUT])); + HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDOUT]) = NULL; + } if (HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDERR])) + { unhook (HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDERR])); + HOOK_PROCESS(hook, hook_fd[HOOK_PROCESS_STDERR]) = NULL; + } if (HOOK_PROCESS(hook, hook_timer)) + { unhook (HOOK_PROCESS(hook, hook_timer)); + HOOK_PROCESS(hook, hook_timer) = NULL; + } if (HOOK_PROCESS(hook, child_pid) > 0) { kill (HOOK_PROCESS(hook, child_pid), SIGKILL); waitpid (HOOK_PROCESS(hook, child_pid), NULL, 0); + HOOK_PROCESS(hook, child_pid) = 0; } if (HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDIN]) != -1) + { close (HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDIN])); + HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDIN]) = -1; + } if (HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDIN]) != -1) + { close (HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDIN])); + HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDIN]) = -1; + } if (HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDOUT]) != -1) + { close (HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDOUT])); + HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDOUT]) = -1; + } if (HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDOUT]) != -1) + { close (HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDOUT])); + HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDOUT]) = -1; + } if (HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDERR]) != -1) + { close (HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDERR])); + HOOK_PROCESS(hook, child_read[HOOK_PROCESS_STDERR]) = -1; + } if (HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDERR]) != -1) + { close (HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDERR])); + HOOK_PROCESS(hook, child_write[HOOK_PROCESS_STDERR]) = -1; + } if (HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDIN])) + { free (HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDIN])); + HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDIN]) = NULL; + } if (HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDOUT])) + { free (HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDOUT])); + HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDOUT]) = NULL; + } if (HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDERR])) + { free (HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDERR])); + HOOK_PROCESS(hook, buffer[HOOK_PROCESS_STDERR]) = NULL; + } break; case HOOK_TYPE_CONNECT: if (HOOK_CONNECT(hook, proxy)) + { free (HOOK_CONNECT(hook, proxy)); + HOOK_CONNECT(hook, proxy) = NULL; + } if (HOOK_CONNECT(hook, address)) + { free (HOOK_CONNECT(hook, address)); + HOOK_CONNECT(hook, address) = NULL; + } #ifdef HAVE_GNUTLS if (HOOK_CONNECT(hook, gnutls_priorities)) + { free (HOOK_CONNECT(hook, gnutls_priorities)); + HOOK_CONNECT(hook, gnutls_priorities) = NULL; + } #endif /* HAVE_GNUTLS */ if (HOOK_CONNECT(hook, local_hostname)) + { free (HOOK_CONNECT(hook, local_hostname)); + HOOK_CONNECT(hook, local_hostname) = NULL; + } if (HOOK_CONNECT(hook, hook_child_timer)) + { unhook (HOOK_CONNECT(hook, hook_child_timer)); + HOOK_CONNECT(hook, hook_child_timer) = NULL; + } if (HOOK_CONNECT(hook, hook_fd)) + { unhook (HOOK_CONNECT(hook, hook_fd)); + HOOK_CONNECT(hook, hook_fd) = NULL; + } if (HOOK_CONNECT(hook, handshake_hook_fd)) + { unhook (HOOK_CONNECT(hook, handshake_hook_fd)); + HOOK_CONNECT(hook, handshake_hook_fd) = NULL; + } if (HOOK_CONNECT(hook, handshake_hook_timer)) + { unhook (HOOK_CONNECT(hook, handshake_hook_timer)); + HOOK_CONNECT(hook, handshake_hook_timer) = NULL; + } if (HOOK_CONNECT(hook, handshake_ip_address)) + { free (HOOK_CONNECT(hook, handshake_ip_address)); + HOOK_CONNECT(hook, handshake_ip_address) = NULL; + } if (HOOK_CONNECT(hook, child_pid) > 0) { kill (HOOK_CONNECT(hook, child_pid), SIGKILL); waitpid (HOOK_CONNECT(hook, child_pid), NULL, 0); + HOOK_CONNECT(hook, child_pid) = 0; } if (HOOK_CONNECT(hook, child_read) != -1) + { close (HOOK_CONNECT(hook, child_read)); + HOOK_CONNECT(hook, child_read) = -1; + } if (HOOK_CONNECT(hook, child_write) != -1) + { close (HOOK_CONNECT(hook, child_write)); + HOOK_CONNECT(hook, child_write) = -1; + } if (HOOK_CONNECT(hook, child_recv) != -1) + { close (HOOK_CONNECT(hook, child_recv)); + HOOK_CONNECT(hook, child_recv) = -1; + } if (HOOK_CONNECT(hook, child_send) != -1) + { close (HOOK_CONNECT(hook, child_send)); + HOOK_CONNECT(hook, child_send) = -1; + } #ifdef HOOK_CONNECT_MAX_SOCKETS for (i = 0; i < HOOK_CONNECT_MAX_SOCKETS; i++) { if (HOOK_CONNECT(hook, sock_v4[i]) != -1) + { close (HOOK_CONNECT(hook, sock_v4[i])); + HOOK_CONNECT(hook, sock_v4[i]) = -1; + } if (HOOK_CONNECT(hook, sock_v6[i]) != -1) + { close (HOOK_CONNECT(hook, sock_v6[i])); + HOOK_CONNECT(hook, sock_v6[i]) = -1; + } } #endif /* HOOK_CONNECT_MAX_SOCKETS */ break; @@ -3628,69 +3810,133 @@ string_free_split (HOOK_PRINT(hook, tags_array)[i]); } free (HOOK_PRINT(hook, tags_array)); + HOOK_PRINT(hook, tags_array) = NULL; } if (HOOK_PRINT(hook, message)) + { free (HOOK_PRINT(hook, message)); + HOOK_PRINT(hook, message) = NULL; + } break; case HOOK_TYPE_SIGNAL: if (HOOK_SIGNAL(hook, signal)) + { free (HOOK_SIGNAL(hook, signal)); + HOOK_SIGNAL(hook, signal) = NULL; + } break; case HOOK_TYPE_HSIGNAL: if (HOOK_HSIGNAL(hook, signal)) + { free (HOOK_HSIGNAL(hook, signal)); + HOOK_HSIGNAL(hook, signal) = NULL; + } break; case HOOK_TYPE_CONFIG: if (HOOK_CONFIG(hook, option)) + { free (HOOK_CONFIG(hook, option)); + HOOK_CONFIG(hook, option) = NULL; + } break; case HOOK_TYPE_COMPLETION: if (HOOK_COMPLETION(hook, completion_item)) + { free (HOOK_COMPLETION(hook, completion_item)); + HOOK_COMPLETION(hook, completion_item) = NULL; + } if (HOOK_COMPLETION(hook, description)) + { free (HOOK_COMPLETION(hook, description)); + HOOK_COMPLETION(hook, description) = NULL; + } break; case HOOK_TYPE_MODIFIER: if (HOOK_MODIFIER(hook, modifier)) + { free (HOOK_MODIFIER(hook, modifier)); + HOOK_MODIFIER(hook, modifier) = NULL; + } break; case HOOK_TYPE_INFO: if (HOOK_INFO(hook, info_name)) + { free (HOOK_INFO(hook, info_name)); + HOOK_INFO(hook, info_name) = NULL; + } if (HOOK_INFO(hook, description)) + { free (HOOK_INFO(hook, description)); + HOOK_INFO(hook, description) = NULL; + } if (HOOK_INFO(hook, args_description)) + { free (HOOK_INFO(hook, args_description)); + HOOK_INFO(hook, args_description) = NULL; + } break; case HOOK_TYPE_INFO_HASHTABLE: if (HOOK_INFO_HASHTABLE(hook, info_name)) + { free (HOOK_INFO_HASHTABLE(hook, info_name)); + HOOK_INFO_HASHTABLE(hook, info_name) = NULL; + } if (HOOK_INFO_HASHTABLE(hook, description)) + { free (HOOK_INFO_HASHTABLE(hook, description)); + HOOK_INFO_HASHTABLE(hook, description) = NULL; + } if (HOOK_INFO_HASHTABLE(hook, args_description)) + { free (HOOK_INFO_HASHTABLE(hook, args_description)); + HOOK_INFO_HASHTABLE(hook, args_description) = NULL; + } if (HOOK_INFO_HASHTABLE(hook, output_description)) + { free (HOOK_INFO_HASHTABLE(hook, output_description)); + HOOK_INFO_HASHTABLE(hook, output_description) = NULL; + } break; case HOOK_TYPE_INFOLIST: if (HOOK_INFOLIST(hook, infolist_name)) + { free (HOOK_INFOLIST(hook, infolist_name)); + HOOK_INFOLIST(hook, infolist_name) = NULL; + } if (HOOK_INFOLIST(hook, description)) + { free (HOOK_INFOLIST(hook, description)); + HOOK_INFOLIST(hook, description) = NULL; + } if (HOOK_INFOLIST(hook, pointer_description)) + { free (HOOK_INFOLIST(hook, pointer_description)); + HOOK_INFOLIST(hook, pointer_description) = NULL; + } if (HOOK_INFOLIST(hook, args_description)) + { free (HOOK_INFOLIST(hook, args_description)); + HOOK_INFOLIST(hook, args_description) = NULL; + } break; case HOOK_TYPE_HDATA: if (HOOK_HDATA(hook, hdata_name)) + { free (HOOK_HDATA(hook, hdata_name)); + HOOK_HDATA(hook, hdata_name) = NULL; + } if (HOOK_HDATA(hook, description)) + { free (HOOK_HDATA(hook, description)); + HOOK_HDATA(hook, description) = NULL; + } break; case HOOK_TYPE_FOCUS: if (HOOK_FOCUS(hook, area)) + { free (HOOK_FOCUS(hook, area)); + HOOK_FOCUS(hook, area) = NULL; + } break; case HOOK_NUM_TYPES: /* @@ -4274,256 +4520,207 @@ log_printf (" running . . . . . . . . : %d", ptr_hook->running); log_printf (" priority. . . . . . . . : %d", ptr_hook->priority); log_printf (" callback_data . . . . . : 0x%lx", ptr_hook->callback_data); + if (ptr_hook->deleted) + continue; switch (ptr_hook->type) { case HOOK_TYPE_COMMAND: - if (!ptr_hook->deleted) + log_printf (" command data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMMAND(ptr_hook, callback)); + log_printf (" command . . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, command)); + log_printf (" description . . . . . : '%s'", HOOK_COMMAND(ptr_hook, description)); + log_printf (" args. . . . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, args)); + log_printf (" args_description. . . : '%s'", HOOK_COMMAND(ptr_hook, args_description)); + log_printf (" completion. . . . . . : '%s'", HOOK_COMMAND(ptr_hook, completion)); + log_printf (" cplt_num_templates. . : %d", HOOK_COMMAND(ptr_hook, cplt_num_templates)); + for (i = 0; i < HOOK_COMMAND(ptr_hook, cplt_num_templates); i++) { - log_printf (" command data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMMAND(ptr_hook, callback)); - log_printf (" command . . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, command)); - log_printf (" description . . . . . : '%s'", HOOK_COMMAND(ptr_hook, description)); - log_printf (" args. . . . . . . . . : '%s'", HOOK_COMMAND(ptr_hook, args)); - log_printf (" args_description. . . : '%s'", HOOK_COMMAND(ptr_hook, args_description)); - log_printf (" completion. . . . . . : '%s'", HOOK_COMMAND(ptr_hook, completion)); - log_printf (" cplt_num_templates. . : %d", HOOK_COMMAND(ptr_hook, cplt_num_templates)); - for (i = 0; i < HOOK_COMMAND(ptr_hook, cplt_num_templates); i++) + log_printf (" cplt_templates[%04d] . . . : '%s'", + i, HOOK_COMMAND(ptr_hook, cplt_templates)[i]); + log_printf (" cplt_templates_static[%04d]: '%s'", + i, HOOK_COMMAND(ptr_hook, cplt_templates_static)[i]); + log_printf (" num_args. . . . . . : %d", + HOOK_COMMAND(ptr_hook, cplt_template_num_args)[i]); + for (j = 0; j < HOOK_COMMAND(ptr_hook, cplt_template_num_args)[i]; j++) { - log_printf (" cplt_templates[%04d] . . . : '%s'", - i, HOOK_COMMAND(ptr_hook, cplt_templates)[i]); - log_printf (" cplt_templates_static[%04d]: '%s'", - i, HOOK_COMMAND(ptr_hook, cplt_templates_static)[i]); - log_printf (" num_args. . . . . . : %d", - HOOK_COMMAND(ptr_hook, cplt_template_num_args)[i]); - for (j = 0; j < HOOK_COMMAND(ptr_hook, cplt_template_num_args)[i]; j++) - { - log_printf (" args[%04d]. . . . . : '%s'", - j, HOOK_COMMAND(ptr_hook, cplt_template_args)[i][j]); - } - } - log_printf (" num_args_concat . . . : %d", HOOK_COMMAND(ptr_hook, cplt_template_num_args_concat)); - for (i = 0; i < HOOK_COMMAND(ptr_hook, cplt_template_num_args_concat); i++) - { - log_printf (" args_concat[%04d] . . : '%s'", - i, HOOK_COMMAND(ptr_hook, cplt_template_args_concat)[i]); + log_printf (" args[%04d]. . . . . : '%s'", + j, HOOK_COMMAND(ptr_hook, cplt_template_args)[i][j]); } } - break; - case HOOK_TYPE_COMMAND_RUN: - if (!ptr_hook->deleted) + log_printf (" num_args_concat . . . : %d", HOOK_COMMAND(ptr_hook, cplt_template_num_args_concat)); + for (i = 0; i < HOOK_COMMAND(ptr_hook, cplt_template_num_args_concat); i++) { - log_printf (" command_run data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMMAND_RUN(ptr_hook, callback)); - log_printf (" command . . . . . . . : '%s'", HOOK_COMMAND_RUN(ptr_hook, command)); + log_printf (" args_concat[%04d] . . : '%s'", + i, HOOK_COMMAND(ptr_hook, cplt_template_args_concat)[i]); } break; + case HOOK_TYPE_COMMAND_RUN: + log_printf (" command_run data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMMAND_RUN(ptr_hook, callback)); + log_printf (" command . . . . . . . : '%s'", HOOK_COMMAND_RUN(ptr_hook, command)); + break; case HOOK_TYPE_TIMER: - if (!ptr_hook->deleted) + log_printf (" timer data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_TIMER(ptr_hook, callback)); + log_printf (" interval. . . . . . . : %ld", HOOK_TIMER(ptr_hook, interval)); + log_printf (" align_second. . . . . : %d", HOOK_TIMER(ptr_hook, align_second)); + log_printf (" remaining_calls . . . : %d", HOOK_TIMER(ptr_hook, remaining_calls)); + text_time[0] = '\0'; + seconds = HOOK_TIMER(ptr_hook, last_exec).tv_sec; + local_time = localtime (&seconds); + if (local_time) { - log_printf (" timer data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_TIMER(ptr_hook, callback)); - log_printf (" interval. . . . . . . : %ld", HOOK_TIMER(ptr_hook, interval)); - log_printf (" align_second. . . . . : %d", HOOK_TIMER(ptr_hook, align_second)); - log_printf (" remaining_calls . . . : %d", HOOK_TIMER(ptr_hook, remaining_calls)); - text_time[0] = '\0'; - seconds = HOOK_TIMER(ptr_hook, last_exec).tv_sec; - local_time = localtime (&seconds); - if (local_time) - { - strftime (text_time, sizeof (text_time), - "%d/%m/%Y %H:%M:%S", local_time); - } - log_printf (" last_exec.tv_sec. . . : %ld (%s)", - HOOK_TIMER(ptr_hook, last_exec.tv_sec), - text_time); - log_printf (" last_exec.tv_usec . . : %ld", HOOK_TIMER(ptr_hook, last_exec.tv_usec)); - text_time[0] = '\0'; - seconds = HOOK_TIMER(ptr_hook, next_exec).tv_sec; - local_time = localtime (&seconds); - if (local_time) - { - strftime (text_time, sizeof (text_time), - "%d/%m/%Y %H:%M:%S", local_time); - } - log_printf (" next_exec.tv_sec. . . : %ld (%s)", - HOOK_TIMER(ptr_hook, next_exec.tv_sec), - text_time); - log_printf (" next_exec.tv_usec . . : %ld", HOOK_TIMER(ptr_hook, next_exec.tv_usec)); + strftime (text_time, sizeof (text_time), + "%d/%m/%Y %H:%M:%S", local_time); } - break; - case HOOK_TYPE_FD: - if (!ptr_hook->deleted) + log_printf (" last_exec.tv_sec. . . : %ld (%s)", + HOOK_TIMER(ptr_hook, last_exec.tv_sec), + text_time); + log_printf (" last_exec.tv_usec . . : %ld", HOOK_TIMER(ptr_hook, last_exec.tv_usec)); + text_time[0] = '\0'; + seconds = HOOK_TIMER(ptr_hook, next_exec).tv_sec; + local_time = localtime (&seconds); + if (local_time) { - log_printf (" fd data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_FD(ptr_hook, callback)); - log_printf (" fd. . . . . . . . . . : %d", HOOK_FD(ptr_hook, fd)); - log_printf (" flags . . . . . . . . : %d", HOOK_FD(ptr_hook, flags)); - log_printf (" error . . . . . . . . : %d", HOOK_FD(ptr_hook, error)); + strftime (text_time, sizeof (text_time), + "%d/%m/%Y %H:%M:%S", local_time); } + log_printf (" next_exec.tv_sec. . . : %ld (%s)", + HOOK_TIMER(ptr_hook, next_exec.tv_sec), + text_time); + log_printf (" next_exec.tv_usec . . : %ld", HOOK_TIMER(ptr_hook, next_exec.tv_usec)); + break; + case HOOK_TYPE_FD: + log_printf (" fd data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_FD(ptr_hook, callback)); + log_printf (" fd. . . . . . . . . . : %d", HOOK_FD(ptr_hook, fd)); + log_printf (" flags . . . . . . . . : %d", HOOK_FD(ptr_hook, flags)); + log_printf (" error . . . . . . . . : %d", HOOK_FD(ptr_hook, error)); break; case HOOK_TYPE_PROCESS: - if (!ptr_hook->deleted) - { - log_printf (" process data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, callback)); - log_printf (" command . . . . . . . : '%s'", HOOK_PROCESS(ptr_hook, command)); - log_printf (" options . . . . . . . : 0x%lx (hashtable: '%s')", - HOOK_PROCESS(ptr_hook, options), - hashtable_get_string (HOOK_PROCESS(ptr_hook, options), - "keys_values")); - log_printf (" detached. . . . . . . : %d", HOOK_PROCESS(ptr_hook, detached)); - log_printf (" timeout . . . . . . . : %ld", HOOK_PROCESS(ptr_hook, timeout)); - log_printf (" child_read[stdin] . . : %d", HOOK_PROCESS(ptr_hook, child_read[HOOK_PROCESS_STDIN])); - log_printf (" child_write[stdin]. . : %d", HOOK_PROCESS(ptr_hook, child_write[HOOK_PROCESS_STDIN])); - log_printf (" child_read[stdout]. . : %d", HOOK_PROCESS(ptr_hook, child_read[HOOK_PROCESS_STDOUT])); - log_printf (" child_write[stdout] . : %d", HOOK_PROCESS(ptr_hook, child_write[HOOK_PROCESS_STDOUT])); - log_printf (" child_read[stderr]. . : %d", HOOK_PROCESS(ptr_hook, child_read[HOOK_PROCESS_STDERR])); - log_printf (" child_write[stderr] . : %d", HOOK_PROCESS(ptr_hook, child_write[HOOK_PROCESS_STDERR])); - log_printf (" child_pid . . . . . . : %d", HOOK_PROCESS(ptr_hook, child_pid)); - log_printf (" hook_fd[stdin]. . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd[HOOK_PROCESS_STDIN])); - log_printf (" hook_fd[stdout] . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd[HOOK_PROCESS_STDOUT])); - log_printf (" hook_fd[stderr] . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd[HOOK_PROCESS_STDERR])); - log_printf (" hook_timer. . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_timer)); - } + log_printf (" process data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, callback)); + log_printf (" command . . . . . . . : '%s'", HOOK_PROCESS(ptr_hook, command)); + log_printf (" options . . . . . . . : 0x%lx (hashtable: '%s')", + HOOK_PROCESS(ptr_hook, options), + hashtable_get_string (HOOK_PROCESS(ptr_hook, options), + "keys_values")); + log_printf (" detached. . . . . . . : %d", HOOK_PROCESS(ptr_hook, detached)); + log_printf (" timeout . . . . . . . : %ld", HOOK_PROCESS(ptr_hook, timeout)); + log_printf (" child_read[stdin] . . : %d", HOOK_PROCESS(ptr_hook, child_read[HOOK_PROCESS_STDIN])); + log_printf (" child_write[stdin]. . : %d", HOOK_PROCESS(ptr_hook, child_write[HOOK_PROCESS_STDIN])); + log_printf (" child_read[stdout]. . : %d", HOOK_PROCESS(ptr_hook, child_read[HOOK_PROCESS_STDOUT])); + log_printf (" child_write[stdout] . : %d", HOOK_PROCESS(ptr_hook, child_write[HOOK_PROCESS_STDOUT])); + log_printf (" child_read[stderr]. . : %d", HOOK_PROCESS(ptr_hook, child_read[HOOK_PROCESS_STDERR])); + log_printf (" child_write[stderr] . : %d", HOOK_PROCESS(ptr_hook, child_write[HOOK_PROCESS_STDERR])); + log_printf (" child_pid . . . . . . : %d", HOOK_PROCESS(ptr_hook, child_pid)); + log_printf (" hook_fd[stdin]. . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd[HOOK_PROCESS_STDIN])); + log_printf (" hook_fd[stdout] . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd[HOOK_PROCESS_STDOUT])); + log_printf (" hook_fd[stderr] . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_fd[HOOK_PROCESS_STDERR])); + log_printf (" hook_timer. . . . . . : 0x%lx", HOOK_PROCESS(ptr_hook, hook_timer)); break; case HOOK_TYPE_CONNECT: - if (!ptr_hook->deleted) - { - log_printf (" connect data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, callback)); - log_printf (" address . . . . . . . : '%s'", HOOK_CONNECT(ptr_hook, address)); - log_printf (" port. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, port)); - log_printf (" sock. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, sock)); - log_printf (" ipv6. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, ipv6)); - log_printf (" retry . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, retry)); + log_printf (" connect data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, callback)); + log_printf (" address . . . . . . . : '%s'", HOOK_CONNECT(ptr_hook, address)); + log_printf (" port. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, port)); + log_printf (" sock. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, sock)); + log_printf (" ipv6. . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, ipv6)); + log_printf (" retry . . . . . . . . : %d", HOOK_CONNECT(ptr_hook, retry)); #ifdef HAVE_GNUTLS - log_printf (" gnutls_sess . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, gnutls_sess)); - log_printf (" gnutls_cb . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, gnutls_cb)); - log_printf (" gnutls_dhkey_size . . : %d", HOOK_CONNECT(ptr_hook, gnutls_dhkey_size)); - log_printf (" gnutls_priorities . . : '%s'", HOOK_CONNECT(ptr_hook, gnutls_priorities)); + log_printf (" gnutls_sess . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, gnutls_sess)); + log_printf (" gnutls_cb . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, gnutls_cb)); + log_printf (" gnutls_dhkey_size . . : %d", HOOK_CONNECT(ptr_hook, gnutls_dhkey_size)); + log_printf (" gnutls_priorities . . : '%s'", HOOK_CONNECT(ptr_hook, gnutls_priorities)); #endif /* HAVE_GNUTLS */ - log_printf (" local_hostname. . . . : '%s'", HOOK_CONNECT(ptr_hook, local_hostname)); - log_printf (" child_read. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_read)); - log_printf (" child_write . . . . . : %d", HOOK_CONNECT(ptr_hook, child_write)); - log_printf (" child_recv. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_recv)); - log_printf (" child_send. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_send)); - log_printf (" child_pid . . . . . . : %d", HOOK_CONNECT(ptr_hook, child_pid)); - log_printf (" hook_child_timer. . . : 0x%lx", HOOK_CONNECT(ptr_hook, hook_child_timer)); - log_printf (" hook_fd . . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, hook_fd)); - log_printf (" handshake_hook_fd . . : 0x%lx", HOOK_CONNECT(ptr_hook, handshake_hook_fd)); - log_printf (" handshake_hook_timer. : 0x%lx", HOOK_CONNECT(ptr_hook, handshake_hook_timer)); - log_printf (" handshake_fd_flags. . : %d", HOOK_CONNECT(ptr_hook, handshake_fd_flags)); - log_printf (" handshake_ip_address. : '%s'", HOOK_CONNECT(ptr_hook, handshake_ip_address)); + log_printf (" local_hostname. . . . : '%s'", HOOK_CONNECT(ptr_hook, local_hostname)); + log_printf (" child_read. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_read)); + log_printf (" child_write . . . . . : %d", HOOK_CONNECT(ptr_hook, child_write)); + log_printf (" child_recv. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_recv)); + log_printf (" child_send. . . . . . : %d", HOOK_CONNECT(ptr_hook, child_send)); + log_printf (" child_pid . . . . . . : %d", HOOK_CONNECT(ptr_hook, child_pid)); + log_printf (" hook_child_timer. . . : 0x%lx", HOOK_CONNECT(ptr_hook, hook_child_timer)); + log_printf (" hook_fd . . . . . . . : 0x%lx", HOOK_CONNECT(ptr_hook, hook_fd)); + log_printf (" handshake_hook_fd . . : 0x%lx", HOOK_CONNECT(ptr_hook, handshake_hook_fd)); + log_printf (" handshake_hook_timer. : 0x%lx", HOOK_CONNECT(ptr_hook, handshake_hook_timer)); + log_printf (" handshake_fd_flags. . : %d", HOOK_CONNECT(ptr_hook, handshake_fd_flags)); + log_printf (" handshake_ip_address. : '%s'", HOOK_CONNECT(ptr_hook, handshake_ip_address)); #ifdef HOOK_CONNECT_MAX_SOCKETS - for (i = 0; i < HOOK_CONNECT_MAX_SOCKETS; i++) - { - log_printf (" sock_v4[%d]. . . . . . : '%d'", HOOK_CONNECT(ptr_hook, sock_v4[i])); - log_printf (" sock_v6[%d]. . . . . . : '%d'", HOOK_CONNECT(ptr_hook, sock_v6[i])); - } -#endif /* HOOK_CONNECT_MAX_SOCKETS */ + for (i = 0; i < HOOK_CONNECT_MAX_SOCKETS; i++) + { + log_printf (" sock_v4[%d]. . . . . . : '%d'", HOOK_CONNECT(ptr_hook, sock_v4[i])); + log_printf (" sock_v6[%d]. . . . . . : '%d'", HOOK_CONNECT(ptr_hook, sock_v6[i])); } +#endif /* HOOK_CONNECT_MAX_SOCKETS */ break; case HOOK_TYPE_PRINT: - if (!ptr_hook->deleted) - { - log_printf (" print data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, callback)); - log_printf (" buffer. . . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, buffer)); - log_printf (" tags_count. . . . . . : %d", HOOK_PRINT(ptr_hook, tags_count)); - log_printf (" tags_array. . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, tags_array)); - log_printf (" message . . . . . . . : '%s'", HOOK_PRINT(ptr_hook, message)); - log_printf (" strip_colors. . . . . : %d", HOOK_PRINT(ptr_hook, strip_colors)); - } + log_printf (" print data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, callback)); + log_printf (" buffer. . . . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, buffer)); + log_printf (" tags_count. . . . . . : %d", HOOK_PRINT(ptr_hook, tags_count)); + log_printf (" tags_array. . . . . . : 0x%lx", HOOK_PRINT(ptr_hook, tags_array)); + log_printf (" message . . . . . . . : '%s'", HOOK_PRINT(ptr_hook, message)); + log_printf (" strip_colors. . . . . : %d", HOOK_PRINT(ptr_hook, strip_colors)); break; case HOOK_TYPE_SIGNAL: - if (!ptr_hook->deleted) - { - log_printf (" signal data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_SIGNAL(ptr_hook, callback)); - log_printf (" signal. . . . . . . . : '%s'", HOOK_SIGNAL(ptr_hook, signal)); - } + log_printf (" signal data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_SIGNAL(ptr_hook, callback)); + log_printf (" signal. . . . . . . . : '%s'", HOOK_SIGNAL(ptr_hook, signal)); break; case HOOK_TYPE_HSIGNAL: - if (!ptr_hook->deleted) - { - log_printf (" signal data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_HSIGNAL(ptr_hook, callback)); - log_printf (" signal. . . . . . . . : '%s'", HOOK_HSIGNAL(ptr_hook, signal)); - } + log_printf (" signal data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_HSIGNAL(ptr_hook, callback)); + log_printf (" signal. . . . . . . . : '%s'", HOOK_HSIGNAL(ptr_hook, signal)); break; case HOOK_TYPE_CONFIG: - if (!ptr_hook->deleted) - { - log_printf (" config data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_CONFIG(ptr_hook, callback)); - log_printf (" option. . . . . . . . : '%s'", HOOK_CONFIG(ptr_hook, option)); - } + log_printf (" config data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_CONFIG(ptr_hook, callback)); + log_printf (" option. . . . . . . . : '%s'", HOOK_CONFIG(ptr_hook, option)); break; case HOOK_TYPE_COMPLETION: - if (!ptr_hook->deleted) - { - log_printf (" completion data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMPLETION(ptr_hook, callback)); - log_printf (" completion_item . . . : '%s'", HOOK_COMPLETION(ptr_hook, completion_item)); - log_printf (" description . . . . . : '%s'", HOOK_COMPLETION(ptr_hook, description)); - } + log_printf (" completion data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_COMPLETION(ptr_hook, callback)); + log_printf (" completion_item . . . : '%s'", HOOK_COMPLETION(ptr_hook, completion_item)); + log_printf (" description . . . . . : '%s'", HOOK_COMPLETION(ptr_hook, description)); break; case HOOK_TYPE_MODIFIER: - if (!ptr_hook->deleted) - { - log_printf (" modifier data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_MODIFIER(ptr_hook, callback)); - log_printf (" modifier. . . . . . . : '%s'", HOOK_MODIFIER(ptr_hook, modifier)); - } + log_printf (" modifier data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_MODIFIER(ptr_hook, callback)); + log_printf (" modifier. . . . . . . : '%s'", HOOK_MODIFIER(ptr_hook, modifier)); break; case HOOK_TYPE_INFO: - if (!ptr_hook->deleted) - { - log_printf (" info data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFO(ptr_hook, callback)); - log_printf (" info_name . . . . . . : '%s'", HOOK_INFO(ptr_hook, info_name)); - log_printf (" description . . . . . : '%s'", HOOK_INFO(ptr_hook, description)); - log_printf (" args_description. . . : '%s'", HOOK_INFO(ptr_hook, args_description)); - } + log_printf (" info data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFO(ptr_hook, callback)); + log_printf (" info_name . . . . . . : '%s'", HOOK_INFO(ptr_hook, info_name)); + log_printf (" description . . . . . : '%s'", HOOK_INFO(ptr_hook, description)); + log_printf (" args_description. . . : '%s'", HOOK_INFO(ptr_hook, args_description)); break; case HOOK_TYPE_INFO_HASHTABLE: - if (!ptr_hook->deleted) - { - log_printf (" info_hashtable data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFO_HASHTABLE(ptr_hook, callback)); - log_printf (" info_name . . . . . . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, info_name)); - log_printf (" description . . . . . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, description)); - log_printf (" args_description. . . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, args_description)); - log_printf (" output_description. . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, output_description)); - } + log_printf (" info_hashtable data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFO_HASHTABLE(ptr_hook, callback)); + log_printf (" info_name . . . . . . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, info_name)); + log_printf (" description . . . . . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, description)); + log_printf (" args_description. . . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, args_description)); + log_printf (" output_description. . : '%s'", HOOK_INFO_HASHTABLE(ptr_hook, output_description)); break; case HOOK_TYPE_INFOLIST: - if (!ptr_hook->deleted) - { - log_printf (" infolist data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFOLIST(ptr_hook, callback)); - log_printf (" infolist_name . . . . : '%s'", HOOK_INFOLIST(ptr_hook, infolist_name)); - log_printf (" description . . . . . : '%s'", HOOK_INFOLIST(ptr_hook, description)); - log_printf (" pointer_description . : '%s'", HOOK_INFOLIST(ptr_hook, pointer_description)); - log_printf (" args_description. . . : '%s'", HOOK_INFOLIST(ptr_hook, args_description)); - } + log_printf (" infolist data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_INFOLIST(ptr_hook, callback)); + log_printf (" infolist_name . . . . : '%s'", HOOK_INFOLIST(ptr_hook, infolist_name)); + log_printf (" description . . . . . : '%s'", HOOK_INFOLIST(ptr_hook, description)); + log_printf (" pointer_description . : '%s'", HOOK_INFOLIST(ptr_hook, pointer_description)); + log_printf (" args_description. . . : '%s'", HOOK_INFOLIST(ptr_hook, args_description)); break; case HOOK_TYPE_HDATA: - if (!ptr_hook->deleted) - { - log_printf (" hdata data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_HDATA(ptr_hook, callback)); - log_printf (" hdata_name. . . . . . : '%s'", HOOK_HDATA(ptr_hook, hdata_name)); - log_printf (" description . . . . . : '%s'", HOOK_HDATA(ptr_hook, description)); - } + log_printf (" hdata data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_HDATA(ptr_hook, callback)); + log_printf (" hdata_name. . . . . . : '%s'", HOOK_HDATA(ptr_hook, hdata_name)); + log_printf (" description . . . . . : '%s'", HOOK_HDATA(ptr_hook, description)); break; case HOOK_TYPE_FOCUS: - if (!ptr_hook->deleted) - { - log_printf (" focus data:"); - log_printf (" callback. . . . . . . : 0x%lx", HOOK_FOCUS(ptr_hook, callback)); - log_printf (" area. . . . . . . . . : '%s'", HOOK_FOCUS(ptr_hook, area)); - } + log_printf (" focus data:"); + log_printf (" callback. . . . . . . : 0x%lx", HOOK_FOCUS(ptr_hook, callback)); + log_printf (" area. . . . . . . . . : '%s'", HOOK_FOCUS(ptr_hook, area)); break; case HOOK_NUM_TYPES: /* diff -Nru weechat-1.3~dev+20150711~utopic1/src/core/wee-hook.h weechat-1.3~dev+20150718~utopic1/src/core/wee-hook.h --- weechat-1.3~dev+20150711~utopic1/src/core/wee-hook.h 2015-05-03 17:48:28.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/core/wee-hook.h 2015-07-18 18:20:37.000000000 +0000 @@ -438,6 +438,8 @@ extern char *hook_type_string[]; extern struct t_hook *weechat_hooks[]; extern struct t_hook *last_weechat_hook[]; +extern int hooks_count[]; +extern int hooks_count_total; /* hook functions */ @@ -465,17 +467,13 @@ int max_calls, t_hook_callback_timer *callback, void *callback_data); -extern void hook_timer_time_to_next (struct timeval *tv_timeout); extern void hook_timer_exec (); extern struct t_hook *hook_fd (struct t_weechat_plugin *plugin, int fd, int flag_read, int flag_write, int flag_exception, t_hook_callback_fd *callback, void *callback_data); -extern int hook_fd_set (fd_set *read_fds, fd_set *write_fds, - fd_set *exception_fds); -extern void hook_fd_exec (fd_set *read_fds, fd_set *write_fds, - fd_set *exception_fds); +extern void hook_fd_exec (); extern struct t_hook *hook_process (struct t_weechat_plugin *plugin, const char *command, int timeout, diff -Nru weechat-1.3~dev+20150711~utopic1/src/core/wee-network.c weechat-1.3~dev+20150718~utopic1/src/core/wee-network.c --- weechat-1.3~dev+20150711~utopic1/src/core/wee-network.c 2015-05-03 17:48:28.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/core/wee-network.c 2015-07-18 18:20:37.000000000 +0000 @@ -39,7 +39,7 @@ #include #include #include -#include +#include #include #include #include @@ -611,7 +611,7 @@ int network_connect (int sock, const struct sockaddr *addr, socklen_t addrlen) { - fd_set write_fds; + struct pollfd poll_fd; int ready, value; socklen_t len; @@ -621,15 +621,19 @@ if (errno != EINPROGRESS) return 0; - /* for non-blocking sockets, the connect() may fail with EINPROGRESS, + /* + * for non-blocking sockets, the connect() may fail with EINPROGRESS, * if this happens, we wait for writability on socket and check * the option SO_ERROR, which is 0 if connect is OK (see man connect) */ while (1) { - FD_ZERO (&write_fds); - FD_SET (sock, &write_fds); - ready = select (sock + 1, NULL, &write_fds, NULL, NULL); + poll_fd.fd = sock; + poll_fd.events = POLLOUT; + poll_fd.revents = 0; + ready = poll (&poll_fd, 1, -1); + if (ready < 0) + break; if (ready > 0) { len = sizeof (value); diff -Nru weechat-1.3~dev+20150711~utopic1/src/gui/curses/gui-curses-main.c weechat-1.3~dev+20150718~utopic1/src/gui/curses/gui-curses-main.c --- weechat-1.3~dev+20150711~utopic1/src/gui/curses/gui-curses-main.c 2015-07-03 17:54:25.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/gui/curses/gui-curses-main.c 2015-07-18 18:20:37.000000000 +0000 @@ -29,7 +29,6 @@ #include #include #include -#include #include "../../core/weechat.h" #include "../../core/wee-command.h" @@ -383,10 +382,6 @@ gui_main_loop () { struct t_hook *hook_fd_keyboard; - struct timeval tv_timeout; - fd_set read_fds, write_fds, except_fds; - int max_fd; - int ready; /* catch SIGWINCH signal: redraw screen */ util_catch_signal (SIGWINCH, &gui_main_signal_sigwinch); @@ -399,7 +394,7 @@ while (!weechat_quit) { - /* execute hook timers */ + /* execute timer hooks */ hook_timer_exec (); /* auto reset of color pairs */ @@ -424,18 +419,8 @@ gui_color_pairs_auto_reset_pending = 0; - /* wait for keyboard or network activity */ - FD_ZERO (&read_fds); - FD_ZERO (&write_fds); - FD_ZERO (&except_fds); - max_fd = hook_fd_set (&read_fds, &write_fds, &except_fds); - hook_timer_time_to_next (&tv_timeout); - ready = select (max_fd + 1, &read_fds, &write_fds, &except_fds, - &tv_timeout); - if (ready > 0) - { - hook_fd_exec (&read_fds, &write_fds, &except_fds); - } + /* execute fd hooks */ + hook_fd_exec (); } /* remove keyboard hook */ diff -Nru weechat-1.3~dev+20150711~utopic1/src/plugins/irc/irc-ctcp.c weechat-1.3~dev+20150718~utopic1/src/plugins/irc/irc-ctcp.c --- weechat-1.3~dev+20150711~utopic1/src/plugins/irc/irc-ctcp.c 2015-07-11 10:10:35.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/plugins/irc/irc-ctcp.c 2015-07-18 18:20:37.000000000 +0000 @@ -443,7 +443,8 @@ return NULL; res = temp; - /* $time: local date/time of user, example: + /* + * $time: local date/time of user, example: * Sun, 16 Dec 2012 10:40:48 +0100 */ now = time (NULL); diff -Nru weechat-1.3~dev+20150711~utopic1/src/plugins/xfer/xfer-dcc.c weechat-1.3~dev+20150718~utopic1/src/plugins/xfer/xfer-dcc.c --- weechat-1.3~dev+20150711~utopic1/src/plugins/xfer/xfer-dcc.c 2015-01-01 13:47:14.000000000 +0000 +++ weechat-1.3~dev+20150718~utopic1/src/plugins/xfer/xfer-dcc.c 2015-07-18 18:20:37.000000000 +0000 @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include @@ -312,7 +312,7 @@ static char buffer[XFER_BLOCKSIZE_MAX]; time_t last_sent, new_time; unsigned long long pos_last_ack; - fd_set read_fds, write_fds, except_fds; + struct pollfd poll_fd; ssize_t written, total_written; unsigned char *bin_hash; char hash[9]; @@ -362,12 +362,11 @@ while (1) { /* wait until there is something to read on socket (or error) */ - FD_ZERO (&read_fds); - FD_ZERO (&write_fds); - FD_ZERO (&except_fds); - FD_SET (xfer->sock, &read_fds); - ready = select (xfer->sock + 1, &read_fds, &write_fds, &except_fds, NULL); - if (ready == 0) + poll_fd.fd = xfer->sock; + poll_fd.events = POLLIN; + poll_fd.revents = 0; + ready = poll (&poll_fd, 1, -1); + if (ready <= 0) { xfer_network_write_pipe (xfer, XFER_STATUS_FAILED, XFER_ERROR_RECV_BLOCK);