| Server IP : 217.160.0.212 / Your IP : 216.73.217.46 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/share/emacs/28.2/lisp/erc/ |
Upload File : |
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.
(byte-code "\300\301!\210\300\302!\210\303\304\305\306\307\301%\210\310\311\312\313\314DD\315\316\317\320\321\322\323\307\304&\207" [require erc pcomplete custom-declare-group erc-dcc nil "DCC stands for Direct Client Communication, where you and your\nfriend's client programs connect directly to each other,\nbypassing IRC servers and their occasional \"lag\" or \"split\"\nproblems. Like /MSG, the DCC chat is completely private.\n\nUsing DCC get and send, you can transfer files directly from and to other\nIRC users." :group custom-declare-variable erc-dcc-mode funcall function #[0 "\300\207" [nil] 1 ""] "Non-nil if Erc-Dcc mode is enabled.\nSee the `erc-dcc-mode' command\nfor a description of this minor mode.\nSetting this variable directly does not take effect;\neither customize it (see the info node `Easy Customization')\nor call the function `erc-dcc-mode'." :set custom-set-minor-mode :initialize custom-initialize-default :type boolean] 12)
#@240 Toggle ERC dcc mode.
With a prefix argument ARG, enable dcc if ARG is positive,
and disable it otherwise. If called from Lisp, enable the mode
if ARG is omitted or nil.
Provide Direct Client-to-Client support for ERC.
(fn &optional ARG)
(defalias 'erc-dcc-mode #[256 "\302 \303\301\304=\203 \305\301!?\202! \247\203 \306W\203 \307\202! \310\"\210\311\300!\2038 \312\301\"\305\301!\2038 \301B \203B \313 \210\202E \314 \210\315\316\305\301!\203Q \317\202R \320\"\210\321\322!\203z \323\301!\210\302 \203j \211\302 \232\203z \324\325\305\301!\203v \326\202w \327\330#\210\210\331 \210\305\301!\207" [global-minor-modes erc-dcc-mode current-message set-default toggle default-value 1 nil t boundp delq erc-dcc-enable erc-dcc-disable run-hooks erc-dcc-mode-hook erc-dcc-mode-on-hook erc-dcc-mode-off-hook called-interactively-p any customize-mark-as-set message "Erc-Dcc mode %sabled%s" "en" "dis" "" force-mode-line-update] 6 (#$ . 1045) (byte-code "\203\n \301!\202 \302C\207" [current-prefix-arg prefix-numeric-value toggle] 2)])
(defvar erc-dcc-mode-hook nil)
(byte-code "\301\302N\204\f \303\301\302\304#\210\303\301\305\306#\210\303\301\307\310C#\210\311\312\310\313\300!\205# \310\211%\207" [erc-dcc-mode-map erc-dcc-mode-hook variable-documentation put "Hook run after entering or leaving `erc-dcc-mode'.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" custom-type hook standard-value nil add-minor-mode erc-dcc-mode boundp] 6)
#@22 Enable ERC dcc mode.
(defalias 'erc-dcc-enable #[0 "\301\302\303\"\210\304\305\306\307\"\207" [erc-dcc-mode add-to-list erc-modules dcc t add-hook erc-server-401-functions erc-dcc-no-such-nick] 3 (#$ . 2579) nil])
#@23 Disable ERC dcc mode.
(defalias 'erc-dcc-disable #[0 "\302\303\"\304\305\306\307\"\207" [erc-modules erc-dcc-mode delq dcc nil remove-hook erc-server-401-functions erc-dcc-no-such-nick] 3 (#$ . 2800) nil])
(byte-code "\300\301\302\303#\210\300\304\302\303#\210\300\305\302\303#\210\306\307\310\311\312DD\313\314\315%\207" [put erc-dcc-mode definition-name dcc erc-dcc-enable erc-dcc-disable custom-declare-variable erc-dcc-verbose funcall function #[0 "\300\207" [nil] 1 ""] "If non-nil, be verbose about DCC activity reporting." :type boolean] 6)
#@87 List of valid DCC connection types.
All values of the list must be uppercase strings.
(defconst erc-dcc-connection-types '("CHAT" "GET" "SEND") (#$ . 3357))
#@1174 List of DCC connections.
Looks like:
((:nick "nick!user@host" :type GET :peer proc
:parent proc :size size :file file)
(:nick "nick!user@host" :type CHAT :peer proc :parent proc)
(:nick "nick" :type SEND :peer server-proc :parent parent-proc :file
file :sent <marker> :confirmed <marker>))
:nick - a user or userhost for the peer. Combine with :parent to reach them
:type - the type of DCC connection - SEND for outgoing files, GET for
incoming, and CHAT for both directions. To tell which end started
the DCC chat, look at :peer
:peer - the other end of the DCC connection. In the case of outgoing DCCs,
this represents a server process until a connection is established
:parent - the server process where the dcc connection was established.
Note that this can be nil or an invalid process since a DCC
connection is in general independent from a particular server
connection after it was established.
:file - for outgoing sends, the full path to the file. For incoming sends,
the suggested filename or vetted filename
:size - size of the file, may be nil on incoming DCCs
(defvar erc-dcc-list nil (#$ . 3522))
#@102 Add a new entry of type TYPE to `erc-dcc-list' and return it.
(fn TYPE NICK PEER PARENT &rest ARGS)
(defalias 'erc-dcc-list-add #[1156 "\301\302\303\304\305 \257\"B\211@\207" [erc-dcc-list append :nick :type :peer :parent] 14 (#$ . 4740)])
(defvar erc-dcc-connect-function 'erc-dcc-open-network-stream)
#@40
(fn PROCNAME BUFFER ADDR PORT ENTRY)
(defalias 'erc-dcc-open-network-stream #[1285 "\300$\207" [open-network-stream] 10 (#$ . 5060)])
(erc-define-catalog 'english '((dcc-chat-discarded . "DCC: previous chat request from %n (%u@%h) discarded") (dcc-chat-ended . "DCC: chat with %n ended %t: %e") (dcc-chat-no-request . "DCC: chat request from %n not found") (dcc-chat-offered . "DCC: chat offered by %n (%u@%h:%p)") (dcc-chat-offer . "DCC: offering chat to %n") (dcc-chat-accept . "DCC: accepting chat from %n") (dcc-chat-privmsg . "=%n= %m") (dcc-closed . "DCC: Closed %T from %n") (dcc-command-undefined . "DCC: %c undefined subcommand. GET, CHAT and LIST are defined.") (dcc-ctcp-errmsg . "DCC: `%s' is not a DCC subcommand known to this client") (dcc-ctcp-unknown . "DCC: unknown dcc command `%q' from %n (%u@%h)") (dcc-get-bytes-received . "DCC: %f: %b bytes received") (dcc-get-complete . "DCC: file %f transfer complete (%s bytes in %t seconds)") (dcc-get-cmd-aborted . "DCC: Aborted getting %f from %n") (dcc-get-file-too-long . "DCC: %f: File longer than sender claimed; aborting transfer") (dcc-get-notfound . "DCC: %n hasn't offered %f for DCC transfer") (dcc-list-head . "DCC: From Type Active Size Filename") (dcc-list-line . "DCC: -------- ---- ------ -------------- --------") (dcc-list-item . "DCC: %-8n %-4t %-6a %-14s %f") (dcc-list-end . "DCC: End of list.") (dcc-malformed . "DCC: error: %n (%u@%h) sent malformed request: %q") (dcc-privileged-port . "DCC: possibly bogus request: %p is a privileged port.") (dcc-request-bogus . "DCC: bogus dcc `%r' from %n (%u@%h)") (dcc-send-finished . "DCC: SEND of %f to %n finished (size %s)") (dcc-send-offered . "DCC: file %f offered by %n (%u@%h) (size %s)") (dcc-send-offer . "DCC: offering %f to %n")))
#@425 Return first matching entry in `erc-dcc-list' satisfying constraints in ARGS.
ARGS is a plist. Return nil on no match.
The property :nick is treated specially, if it contains a `!' character,
it is treated as a nick!user@host string, and compared with the :nick property
value of the individual elements using string-equal. Otherwise it is
compared with `erc-nick-equal-p' which is IRC case-insensitive.
(fn &rest ARGS)
(defalias 'erc-dcc-member #[128 "\302\211\203\217 \204\217 @\303\203z \211\203z @A@AA\262\304\"\205, \305\"\262\306=\203R \307Y\203A \310\311\"\202E \312\311\"\203R \203R \230\204u \306=\203l \203l \211\203l \313\314!\314!\"\204u =\204u \302\262\266\202 \211\203\206 \262\266\202 A\262\266\202 \207" [erc-dcc-list emacs-major-version nil t plist-member plist-get :nick 28 string-search "!" string-match erc-nick-equal-p erc-extract-nick] 13 (#$ . 6865)])
#@94 Convert integer into a packed string in network byte order, which is big-endian.
(fn VALUE)
(defalias 'erc-pack-int #[257 "\211\300W\203\n \301\302!\210\211\300U\203 \300\202! \303\211\304!\304\305!\245!\306\245!\211\307V\203+ \301\310!\210\210\311\307\300\"\312\211\300Y\203P \300V\203P \313\246I\210\313\245\262\211S\262\2021 \207" [0 error "ERC-DCC (erc-pack-int): packet size is negative" ceiling log 2 8.0 4 "ERC-DCC (erc-pack-int): packet too large" make-string 3 256] 7 (#$ . 7791)])
#@51 Unpack a packed string into an integer.
(fn STR)
(defalias 'erc-unpack-int #[257 "\211G\300V\203 H\300=\203 \211T\262\202 \211\300V\203) \301O\262Z\262\210\300\211\211W\203H \302ZSH\303_\"\\\262\211T\262\202, \207" [0 nil ash 8] 9 (#$ . 8299)])
(defconst erc-dcc-ipv4-regexp (byte-code "\300\301\302\303\304\305\"\306#\307Q\207" ["^" mapconcat identity make-list 4 "\\([0-9]\\{1,3\\}\\)" "\\." "$"] 6))
#@130 Convert IP address to its decimal representation.
Argument IP is the address as a string. The result is also a string.
(fn IP)
(defalias 'erc-ip-to-decimal #[257 "\301\"\204 \302\303!\207\304\305\306\307\"\"\310@\311_A@\312_\3138\314_\3158$\316\317!\2031 \320\321#\207\322\323\"\207" [erc-dcc-ipv4-regexp string-match error "Not an IP address" mapcar #[257 "\300!\211\301Y\203 \211\302W\203 \207\303\304\"\207" [string-to-number 0 256 error "%d out of range"] 5 "\n\n(fn STR)"] split-string "\\." + 16777216.0 65536.0 2 256.0 3 called-interactively-p interactive message "%s is %.0f" format "%.0f"] 8 (#$ . 8733) "sIP Address: "])
#@95 Convert a decimal representation DEC to an IP address.
The result is also a string.
(fn DEC)
(defalias 'erc-decimal-to-ip #[257 "\211;\203\f \300\301P!\262\302\303\245!\303_Z\302\304\245!\304_Z\302\305\245!\305_Z\302!\306\307%\207" [string-to-number ".0" floor 16777216.0 65536.0 256.0 format "%s.%s.%s.%s"] 14 (#$ . 9387)])
(byte-code "\301\302\303\304\305DD\306\307\310\311\312\313\314F\315\312\316\317\257E%\210\301\320\303\304\321DD\322\307\310\311\312\323\314F\315\312\316\317\257E%\210\301\324\303\304\325DD\326\307\327%\207" [erc-dcc-ipv4-regexp custom-declare-variable erc-dcc-listen-host funcall function #[0 "\300\207" [nil] 1 #1=""] "IP address to listen on when offering files.\nShould be set to a string or nil. If nil, automatic detection of\nthe host interface to use will be attempted." :type choice const :tag "Auto-detect" nil string "IP-address" :valid-regexp erc-dcc-public-host #[0 "\300\207" [nil] 1 #1#] "IP address to use for outgoing DCC offers.\nShould be set to a string or nil. If nil, use the value of\n`erc-dcc-listen-host'." "Same as erc-dcc-listen-host" erc-dcc-send-request #[0 "\300\207" [ask] 1 #1#] "How to treat incoming DCC Send requests.\n`ask' - Report the Send request, and wait for the user to manually accept it\n You might want to set `erc-dcc-auto-masks' for this.\n`auto' - Automatically accept the request and begin downloading the file\n`ignore' - Ignore incoming DCC Send requests completely." (choice (const ask) (const auto) (const ignore))] 12)
#@71 Return the local IP address used for an open process PROC.
(fn PROC)
(defalias 'erc-dcc-get-host #[257 "\300\301\302\"\303\"\207" [format-network-address process-contact :local t] 5 (#$ . 10923)])
#@149 Determine the IP address we are using.
If variable `erc-dcc-host' is non-nil, use it. Otherwise call
`erc-dcc-get-host' on the erc-server-process.
(defalias 'erc-dcc-host #[0 "\206
\302 !\206
\303\304!\207" [erc-dcc-listen-host erc-server-process erc-dcc-get-host error "Unable to determine local address"] 2 (#$ . 11129)])
(byte-code "\300\301\302\303\304DD\305\306\307%\210\300\310\302\303\311DD\312\306\313%\207" [custom-declare-variable erc-dcc-port-range funcall function #[0 "\300\207" [nil] 1 #1=""] "If nil, any available user port is used for outgoing DCC connections.\nIf set to a cons, it specifies a range of ports to use in the form (min . max)" :type (choice (const :tag "Any port" nil) (cons :tag "Port range" (integer :tag "Lower port") (integer :tag "Upper port"))) erc-dcc-auto-masks #[0 "\300\207" [nil] 1 #1#] "List of regexps matching user identifiers whose DCC send offers should be\naccepted automatically. A user identifier has the form \"nick!login@host\".\nFor instance, to accept all incoming DCC send offers automatically, add the\nstring \".*!.*@.*\" to this list." (repeat regexp)] 6)
#@132 Start listening on a port for an incoming DCC connection.
Returns the newly created subprocess, or nil.
(fn NAME FILTER SENTINEL)
(defalias 'erc-dcc-server #[771 "\203 @\206\n \301\205 A\302\211\204\201 \3031V \304\305\306\302\307\310 \311\n\312\302\313\314\315\316\317\301&\262\320!\205Q \321\322!\203G \322\323\211#\210\321\324!\205Q \324\302\"0\210\202 \211A@\325\230\203g \3268\227\327\230\204n \330@A\"\210T\262W?\205| \331\332!\266\202 \207" [erc-dcc-port-range t nil (file-error) make-network-process :name :buffer :host erc-dcc-host :service :noquery :filter :sentinel :log erc-dcc-server-accept :server processp fboundp set-process-coding-system binary set-process-filter-multibyte "Cannot bind server socket" 2 "address already in use" signal error "No available ports in erc-dcc-port-range"] 25 (#$ . 12256)])
#@129 Log an accepted DCC offer, then terminate the listening process and set up
the accepted connection.
(fn SERVER CLIENT MESSAGE)
(defalias 'erc-dcc-server-accept #[771 "\203
\301\302\303$!\210\304\305\"\2050 \306!\2050 \306!\2050 \307\310\"\311\310#\262\312!\262\207" [erc-log-p erc-log-aux format "(erc-dcc-server-accept): server %s client %s message %s" string-match "^accept from " processp erc-dcc-member :peer plist-put delete-process] 9 (#$ . 13113)])
(byte-code "\300\301\302\303\304DD\305\306\307%\207" [custom-declare-variable erc-dcc-get-default-directory funcall function #[0 "\300\207" [nil] 1 ""] "Default directory for incoming DCC file transfers.\nIf this is nil, then the current value of `default-directory' is used." :type (choice (const nil :tag "Default directory") directory)] 6)
#@253 Parser for /dcc command.
This figures out the dcc subcommand and calls the appropriate routine to
handle it. The function dispatched should be named "erc-dcc-do-FOO-command",
where FOO is one of CLOSE, GET, SEND, LIST, CHAT, etc.
(fn CMD &rest ARGS)
(defalias 'erc-cmd-DCC #[385 "\205) \301\302\226\303Q!\211\203 \304#\202'