[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] erc-dcc: allow SEND commands containing quoted filenames wit
From: |
Mario Lang |
Subject: |
Re: [PATCH] erc-dcc: allow SEND commands containing quoted filenames with spaces in them |
Date: |
Thu, 03 Nov 2011 12:32:37 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) |
Michael Olson <address@hidden> writes:
Looks fine.
> +1 from me
>
> On Sun, Oct 30, 2011 at 8:56 PM, Mike Kazantsev <address@hidden> wrote:
>> Good day,
>>
>> This patch allows receiving DCC SEND requests like these:
>>
>> DCC SEND "some name with spaces" 3473212121 3746 322641
>>
>> Filename here is enclosed in double quotes, which seem to be a common
>> IRC client (and dcc bot) convention for names with whitespaces and is
>> widely used in file-sharing channels.
>>
>> Main change here is regexp, matching the filename, with additional
>> processing of matched result to unescape any double quotes and slashes
>> that might be inside.
>>
>> Any quoted filename will be processed through erc-dcc-unquote-filename
>> from now on, which contradicts pre-patch behavior somewhat in that now
>> "file\"x" will be stored as file"x, not as-is (with enclosing quotes),
>> even if filename doesn't have any spaces in it.
>> It seemed to be more consistent behavor for cases when clients might use
>> quoting w/o regard to the actual quoted contents.
>>
>> Patch was created on top of erc tree.
>> Many thanks to Michael Olson for giving the patch a thorough review.
>>
>> Thanks.
>>
>>
>> From b18c2639d53c2b87270ad21198cfe09a9b6a6684 Mon Sep 17 00:00:00 2001
>> From: Mike Kazantsev <address@hidden>
>> Date: Sat, 29 Oct 2011 11:36:49 +0600
>> Subject: [PATCH] erc-dcc: allow SEND commands containing quoted filenames
>> with spaces in them
>>
>> * erc-dcc.el (erc-dcc-ctcp-query-send-regexp): Updated regexp to match
>> quoted filenames with spaces inside.
>> (erc-dcc-handle-ctcp-send): Updated regexp match group numbers, added
>> processing of escaped quotes and backslashes if filename itself was
>> in quotes.
>> ---
>> erc-dcc.el | 21 ++++++++++++++++-----
>> 1 files changed, 16 insertions(+), 5 deletions(-)
>>
>> diff --git a/erc-dcc.el b/erc-dcc.el
>> index 9e53edc..5aa346b 100644
>> --- a/erc-dcc.el
>> +++ b/erc-dcc.el
>> @@ -646,7 +646,16 @@ that subcommand."
>> ?q query ?n nick ?u login ?h host))))
>>
>> (defconst erc-dcc-ctcp-query-send-regexp
>> - "^DCC SEND \\([^ ]+\\) \\([0-9]+\\) \\([0-9]+\\) *\\([0-9]*\\)")
>> + (concat "^DCC SEND \\("
>> + ;; Following part matches either filename without spaces
>> + ;; or filename enclosed in double quotes with any number
>> + ;; of escaped double quotes inside.
>> + "\"\\(\\(.*?\\(\\\\\"\\)?\\)+?\\)\"\\|\\([^ ]+\\)"
>> + "\\) \\([0-9]+\\) \\([0-9]+\\) *\\([0-9]*\\)"))
>> +
>> +(defsubst erc-dcc-unquote-filename (filename)
>> + (erc-replace-regexp-in-string "\\\\\\\\" "\\"
>> + (erc-replace-regexp-in-string "\\\\\"" "\"" filename t t) t t))
>>
>> (defun erc-dcc-handle-ctcp-send (proc query nick login host to)
>> "This is called if a CTCP DCC SEND subcommand is sent to the client.
>> @@ -661,10 +670,12 @@ It extracts the information about the dcc request and
>> adds it to
>> 'dcc-request-bogus
>> ?r "SEND" ?n nick ?u login ?h host))
>> ((string-match erc-dcc-ctcp-query-send-regexp query)
>> - (let ((filename (match-string 1 query))
>> - (ip (erc-decimal-to-ip (match-string 2 query)))
>> - (port (match-string 3 query))
>> - (size (match-string 4 query)))
>> + (let ((filename
>> + (or (match-string 3 query)
>> + (erc-dcc-unquote-filename (match-string 2 query))))
>> + (ip (erc-decimal-to-ip (match-string 6 query)))
>> + (port (match-string 7 query))
>> + (size (match-string 8 query)))
>> ;; FIXME: a warning really should also be sent
>> ;; if the ip address != the host the dcc sender is on.
>> (erc-display-message
>> --
>> 1.7.7
>>
>>
>>
>> --
>> Mike Kazantsev // fraggod.net
>>
--
CYa,
⡍⠁⠗⠊⠕ | Debian Developer <URL:http://debian.org/>
.''`. | Get my public key via finger mlang/address@hidden
: :' : | 1024D/7FC1A0854909BCCDBE6C102DDFFC022A6B113E44
`. `'
`- <URL:http://delysid.org/> <URL:http://www.staff.tugraz.at/mlang/>
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH] erc-dcc: allow SEND commands containing quoted filenames with spaces in them,
Mario Lang <=