Скрипты Perl Irssi: переименуйте неверный файл DCC

Я на Windows, использую Irssi клиент irssi-win32-0.8.12.exe.

У меня проблемы с получением файла с неверным именем:

..nameo_\u2605_name.. (err: DCC can't create file)

Как я могу удалить эту недействительную часть "\u2605" из имени файла, используя скрипт?

Эта страница не помогает

Я думаю, что эта часть источника Irssi как-то связана с этим. Начиная со строки 195

/* if some plugin wants to change the file name/path here.. */
signal_emit("dcc get receive", 1, dcc);    

1 ответ

Я уверен, что Irssi в Windows принимает скрипты, написанные на Perl. Если это так, вот решение:

use strict;
use warnings;

our $VERSION = "1.0";
our %IRSSI = ();

# interception made by registering signal as first + Irssi::signal_continue()
sub event_ctcp_dccsend {
    my ($server, $args, $nick, $addr, $target) = @_;

    # split incomming send request args into filename (either before first space or
    #  quoted), and the rest (IP, port, +optionally filesize)
    my ($filename, $rest) = $args =~ /((?:".*")|\S*)\s+(.*)/;

    # remember file name for informing sake
    my $oldname = $filename;
    # replace backslashes with "BSL" (change to anything you wish)
    if ($filename =~ s/\\/BSL/g) {
        # some info for user
        Irssi::print('DCC SEND request from '.$nick.': renamed bad filename '.$oldname.' to '.$filename);
        $args = $filename." ".$rest;
        # propagate signal; Irssi will proceed the request with altered arguments ($args) 
        Irssi::signal_continue($server, $args, $nick, $addr, $target);  
    }
}

# register signal of incoming ctcp 'DCC SEND', before anything else
Irssi::signal_add_first('ctcp msg dcc send', 'event_ctcp_dccsend');

Сценарий перехватывает сообщения ctcp "DCC SEND" и заменяет все обратные слэши в имени файла на строку "BSL", а затем передает измененные аргументы сообщения любым другим сценариям и Irssi. Если вы хотите удалить все "\uXXXX" вместо этого, используйте s/\\u\w{4}//g на месте s/\\/BSL/g

Я надеюсь, что это помогает!

Другие вопросы по тегам