Home
mc-dev
mc-dev@conference.jabber.ru
15.04.2011< ^ >

Тема: http://www.midnight-commander.org | Latest stable release: 4.7.5.2
[01:17:30] slavazanko/h вышел из конференции
[05:26:56] dkostousov зашёл в конференцию
[05:42:33] iNode вышел из конференции
[06:19:05] andrew_b зашёл в конференцию
[06:22:22] iNode зашёл в конференцию
[06:55:12] il.smind зашёл в конференцию
[06:56:31] <il.smind > Привет
[06:57:26] <andrew_b> Прывэт!
[07:03:45] <il.smind > andrew_b: ну чо
[07:03:56] <il.smind > мы тут с женой вчера подумали
[07:04:18] <il.smind > ладно, отдам тебе парсер, чо
[07:05:08] <andrew_b> А чо так?
[07:11:10] <il.smind > а вдруг у меня не получится
[07:13:19] <andrew_b> А вдруг у меня не получится тоже?
[07:21:22] <il.smind > andrew_b: не отдавать значит?
[07:21:42] <andrew_b> Ну если жена настаивает...
[07:23:17] <andrew_b> Анекдот:
-- Ну, и как ты провёл выходной?
-- Я хотел сходить в музей, а жена хотела в кино.
-- И какой фильм смотрели?
[07:30:19] <il.smind > просто я сначала думал тут ДКА подойдёт
[07:30:44] <il.smind > но ты сказал что надо вразные стороны искать
[07:31:58] <andrew_b> ?
[07:33:20] <il.smind > Не. Алгоритм такой.
Ищем ://. Если наши, идйм назад, пока не встретим / или начало строки. Потом ищем это подстроку среди vfs. Нашли -- бинго.
[07:37:57] <il.smind > ftp://server
ftp://server@server
ftp://server:xxx@server
ftp://server:xxx@server/pub
[07:39:48] <il.smind > еще до того как начнет парситься строка мы знаем что ftp:// это ключевое слово
[07:40:18] <il.smind > или не знаем?
[07:41:17] <il.smind > ftp://server:xxx@server/patchfs://qqq.patch/
[07:41:46] <andrew_b> Сначала ищем ://.
[07:41:47] <il.smind > как быть с таким путём?
[07:42:16] <andrew_b> Если нашли, идёи назад, пока не встретим / или начало строки.
[07:43:26] <andrew_b> Берём подстроку между / и :// и смотрим, есть ли такой префикс в какой-нибудь vfs. Если есть -- хорошо. Если нет -- это localfs.
[07:43:34] <il.smind > patchfs: - каталог
//qqq.patch/ - - каталог
[07:44:28] <andrew_b> Надо экранировать, наверное.
[07:44:44] <il.smind > ещё?
[07:45:10] <andrew_b> Что ешё?
[07:45:23] <il.smind > пароли мы экранируем
[07:45:46] <il.smind > еще и пути экранирвать?
[07:46:03] <il.smind > точнее не пути а префикс?
[07:46:22] <il.smind > ftp:\/\/server:xxx@server/patchfs:\/\/qqq.patch/ ?
[07:46:33] <andrew_b> Не префикс.
[07:46:51] <il.smind > показывай
[07:47:51] <andrew_b> ftp://server:xxx@server/patchfs:\/\/qqq.patch/
[07:48:05] <andrew_b> Если patchfs: каталог
[07:49:04] <il.smind > почему не
ftp://server:xxx@server/patchfs\://qqq.patch/
?
[07:50:31] <andrew_b> Потому что / -- это разделитель пути, надо, чтобы он был разделителем пути, а не частью префикса.
[07:51:00] <il.smind > ftp://server:xxx@server/patchfs\://qqq.patch/
patchfs: - каталог
qqq.patch/ - каталог

ftp://server:xxx@server/patchfs://qqq.patch/
patchfs:// - префикс
qqq.patch - элемент урла
[07:51:57] <il.smind > надо 2 парсера
[07:52:12] <il.smind > один разбивает на подъурлы
[07:52:20] <il.smind > второй парсит урр
[07:52:25] <il.smind > второй парсит урл
[08:45:07] <slavazanko/w> всем привет
[08:45:25] <andrew_b> !
[08:45:39] <slavazanko/w> господа. парсера можно и на регекспах делать.
[08:46:01] <il.smind > slavazanko/w: это ничего не меняет
[08:46:53] <il.smind > путь должен быть не противоречивым
[08:47:13] <il.smind > я вот еще думал со вчерашнего
[08:47:29] <il.smind > это может дать запрет вложенных урлов
[08:47:37] <slavazanko/w> я к тому. что если примем URL-подобные пути. то примеров регекстпов в инете для разбора хоть опой жуй
[08:48:27] <andrew_b> il.smind : что значит запрет? Что я не могу войти в патч, который в таре?
[08:48:42] <il.smind > andrew_b: можешь
[08:49:02] <il.smind > только урлы должны быть отделены
[08:49:19] <il.smind > одна строка - один урл
[08:49:30] <slavazanko/w> не
[08:49:41] <il.smind > а не в одной строке много урлов
[08:49:49] <slavazanko/w> чем не разделитель такая конструкция: .../vfstype://...
[08:50:10] <il.smind > ftp://server:xxx@server/patchfs://qqq.patch/
[08:50:14] <slavazanko/w> то есть, /[a-zA-Z0-9]+://
[08:50:24] <il.smind > patchfs: - каталог
//qqq.patch/ - - каталог
[08:50:38] <slavazanko/w> схрена бы patchfs - это каталог?
[08:50:48] <il.smind > slavazanko/w: а кто запретит?
[08:50:52] <slavazanko/w> после него есть признак ://
[08:50:57] <il.smind > не patchfs
[08:51:07] <il.smind > а patchfs:
[08:51:08] <slavazanko/w> при налиции этого признака это не каталог. Даже если есть такой каталог
[08:51:13] <slavazanko/w> если нету :// - да, каталог
[08:51:20] <andrew_b> slavazanko/w: не.
[08:51:23] <il.smind > это каталог
[08:51:23] <slavazanko/w> два слэша подряд
[08:51:28] <il.smind > ну и
[08:51:31] <slavazanko/w> в реальной жизни такого никогда не будет
[08:51:32] <il.smind > хоть 10
[08:51:40] <slavazanko/w> это и есть однозначный признак
[08:52:09] <slavazanko/w> надо на примерах и на пальцах общаться, а то мы друг друга слегка не понимаем
[08:52:17] <il.smind > slavazanko/w: пример
[08:52:32] <il.smind > на сервере server
[08:52:43] <il.smind > есть каталог patchfs:
[08:53:16] <il.smind > а внём каталог /qqq.patch/
[08:53:21] <il.smind > зайди в него
[08:53:40] <andrew_b> Никто в зравом уме не будет называть каталог с двоеточием.
[08:53:52] <il.smind > andrew_b: само собой
[08:53:58] <slavazanko/w> да. обращаться к нему как
<ftp://server:xxx@server/patchfs://qqq.patch/>ftp://server:xxx@server/patchfs:/qqq.patch
А если рядом с каталогом patchfs: лежит патчег. то входить в него так:
ftp://server:xxx@server/patchfs://qqq.patch

Найди одно отличие
[08:54:07] <il.smind > но никто не обещает обратного
[08:55:28] <il.smind > и чем
ftp://server:xxx@server/patchfs://qqq.patch
отличается от
ftp://server:xxx@server/patchfs://qqq.patch/
?
[08:55:45] <slavazanko/w> ты неправильно скопировал
[08:56:01] <slavazanko/w> у тебя два слэша в обоих случаях
[08:56:07] <slavazanko/w> после patchfs:
[08:56:35] <slavazanko/w> а у меня в первом случае был один слэш (вход в каталог), во втором - два (начало второй VFS)
[08:57:11] <il.smind > // == /
[08:57:24] <il.smind > ладно
[08:57:30] <slavazanko/w> где так оно равно?
[08:57:33] <il.smind > но всё равно надо 2 парсера
[08:57:49] <il.smind > cd //
[08:57:52] <il.smind > cd /
[08:58:07] <slavazanko/w> это у нас есть канонизация пути. так вот. надо там подправить. чтобы не трогало ://
[08:58:16] <slavazanko/w> ифсё
[08:59:36] <il.smind > 1 парсер бьёт набор урлов в строке на несколько отдельных строк
[08:59:54] <il.smind > 2-й парсер парсит урл
[09:00:45] <il.smind > так будет проще унит тестами проверить
[09:01:20] <slavazanko/w> не вопрос, хоть десять парсеров. Если это будет парситься только один раз при "входе" в vfs, то простительно
[09:01:25] slyfox^w вышел из конференции
[09:03:12] <il.smind > второй парсер у нас уже есть
[09:04:22] <il.smind > это vfs_split_url
[09:05:01] <il.smind > нужен парсер который разобьёт строку содержащую несколько урлов
[09:45:12] <andrew_b> .
[09:47:56] <il.smind > andrew_b: привет!
[09:48:08] <slavazanko/w> :)
[10:13:26] <slavazanko/w> Илья. по 1652_autodetect_lb
/home/slavaz/work/mc-devel/git/src/editor/tests/detect_linebreaks.c:141:F:Core:test_detect_lb_type_nnnnnr:0: Incorrect lineBreak: result(3) != LB_UNIX(1)
/home/slavaz/work/mc-devel/git/src/editor/tests/detect_linebreaks.c:185:F:Core:test_detect_lb_type_nnnnnn:0: Incorrect lineBreak: result(0) != LB_UNIX(1)
[10:15:46] <slavazanko/w> то есть, на строку \n\n\n\n\r оно думает, что это LB_MAC
а строку \n\n\n\n\n воспринимает как LB_ASIS... хотя в моём понимании LB_ASIS - это "как есть". Не трогать и не менять ничего
[10:16:42] <andrew_b> Да.
[10:17:37] <slavazanko/w> тесты переносить в корень ?
[10:18:40] <andrew_b> В этом бранче?
[10:18:52] <slavazanko/w> хз. Можно в будущем клинапе
[10:19:07] <andrew_b> Лучше в клинапе.
[10:19:11] <slavazanko/w> ок
[10:19:30] iNode вышел из конференции
[10:19:54] <slavazanko/w> смотрю сейчас на функцию detect_lb_type () и что-то не вижу там даже намёка на LB_UNIX...
[10:20:16] ASM зашёл в конференцию
[10:21:25] <slavazanko/w> и вообще. LB_UNIX используется только в опреациях сравнения. но не присваивания... это косяк?
[10:21:42] <andrew_b> ХЗ.
[10:21:56] <slavazanko/w> il.smind : тык
[10:22:06] <andrew_b> Жрёт небось.
[10:44:05] ASM вышел из конференции
[10:44:13] iNode зашёл в конференцию
[10:44:50] ASM зашёл в конференцию
[10:45:14] <slavazanko/w> что-то многовато он там жрёт... не лопнул бы
[10:47:48] iNode вышел из конференции
[10:49:12] <il.smind > andrew_b: ась
[10:49:31] <slavazanko/w> во, живой!
[10:50:14] <andrew_b> slavazanko/w: ща его в сон клонит.
[10:50:20] <andrew_b> После обеда.
[10:50:24] <slavazanko/w> жесть
[10:51:42] <slavazanko/w> Илья, открой хотя бы один глаз и глянь на 1652_autodetect_lb
Я там нашёл одну интересную бяку по поводу LB_UNIX, хотел проконсультироваться по этому поводу...
[10:56:41] theMIROn зашёл в конференцию
[11:10:44] <il.smind > slavazanko/w: тут
[11:10:52] <slavazanko/w> гуд.
[11:10:59] <il.smind > у тебя тест неверный
[11:11:04] <slavazanko/w> ?
[11:13:12] <il.smind > +START_TEST (test_detect_lb_type_rrrrrn)
+{
+ LineBreaks result;
+ /* prepare for test */
+ int fd = open (filename, O_WRONLY|O_CREAT, 0644);
+ if (fd == -1)
+ {
+ fail("unable to create test input file %s",filename);
+ return;
+ }
+ write (fd, "test\r\r\r\r\r\n", 10);
+ close(fd);
+
+ result = detect_lb_type ((char *) filename);
+ fail_unless(result == LB_WIN, "Incorrect lineBreak: result(%d) != LB_WIN(%d)",result, LB_WIN);
+
+ unlink(filename);
+}
+END_TEST
[11:13:20] <il.smind > + fail_unless(result == LB_WIN, "Incorrect lineBreak: result(%d) != LB_WIN(%d)",result, LB_WIN);
[11:13:41] <il.smind > должно быть
+ fail_unless(result == LB_WIN, "Incorrect lineBreak: result(%d) != LB_WIN(%d)",result, LB_MAC);
[11:14:15] <il.smind > egc
[11:14:18] <il.smind > упс
[11:14:28] <il.smind > должно быть
+ fail_unless(result == LB_MAC, "Incorrect lineBreak: result(%d) != LB_MAC(%d)",result, LB_MAC);
[11:15:03] <slavazanko/w> согласен
[11:15:59] <il.smind > то что затесалась \n ниочем не говорит, согласен?
[11:16:20] <slavazanko/w> да. по идее. надо только первое вхождение учитывать
[11:16:26] <il.smind > да
[11:16:44] <slavazanko/w> понято. Подправлю тогда алгоритм
[11:16:45] <il.smind > Я там нашёл одну интересную бяку по поводу LB_UNIX, хотел проконсультироваться по этому поводу...
говори
[11:18:17] <il.smind > LB_ASIS
[11:19:59] <il.smind > andrew_b> slavazanko/w: ща его в сон клонит.
еще пока не клонит
[11:20:04] <il.smind > но скоро
[11:20:11] <il.smind > а как ты узнал?
[11:20:47] <slavazanko/w> "LB_UNIX используется только в опреациях сравнения. но не присваивания... это косяк?"
[11:22:36] <andrew_b> il.smind : libastral.so юзаю.
[11:22:40] <andrew_b> [2011-04-14 13:46:48]<il.smind > опять в столовой что то подмешали
[2011-04-14 13:46:56]<il.smind > спать хочу
[11:22:55] <slavazanko/w> димедрол?
[11:23:39] <slavazanko/w> лучше бы пурген подмешали... спать бы точно не хотелось
[11:25:01] <il.smind > slavazanko/w: трудно сказать
[11:25:14] <il.smind > подозреваю что еду подмешивают
[11:26:00] <il.smind > slavazanko/w> "LB_UNIX используется только в опреациях сравнения. но не присваивания... это косяк?"
не похоже
[11:36:48] iNode зашёл в конференцию
[11:39:45] iNode вышел из конференции
[11:53:20] <il.smind > вот теперь засыпаю
[12:30:29] <slavazanko/w> спи моя радость. усни....
[12:30:33] <slavazanko/w> в доме погасли огнииии
[12:30:40] <slavazanko/w> рыбки заснули в прудууу
[12:30:47] <slavazanko/w> птички затихли в садууу
[12:30:55] <slavazanko/w> спиии-и-и, усни...
[12:31:34] <andrew_b> slavazanko/w: детям поешь?
[12:31:35] <slavazanko/w> ВСТАВАЙ, БЛЯ, РОДИНА МАТЬ ЗОВЁТ!
[12:31:39] <slavazanko/w> Илья
[12:31:41] <slavazanko/w> Илье
[12:32:23] <il.smind > slavazanko/w: ну
[12:32:33] <slavazanko/w> Во! проснулси.
[12:32:50] <slavazanko/w> так что с детектом строк будем делать? LB_UNIX нужен там или нет?
[12:32:51] <il.smind > я там sftp плагин пишу...
[12:32:57] <il.smind > slavazanko/w: не нужен
[12:33:00] <slavazanko/w> гм
[12:33:13] <slavazanko/w> то есть. LB_ASIS - это норма?
[12:33:48] <slavazanko/w> > я там sftp плагин пишу...
да ладно. Небось, на морде сейчас клава отпечаталась...
[12:34:02] <il.smind > slavazanko/w: да хрен там
[12:34:35] <il.smind > изучаю всё эту VFS-тическую мутатень
[12:34:52] <il.smind > от вас же слова доброго не добьёсси
[12:35:01] <andrew_b> il.smind : потом отчётик напишешь.
[12:35:10] <slavazanko/w> потому что сами не знаем. Ты будешь самым продвинутым. И я тобой уже горжусь
[12:35:45] <il.smind > да всё вы знаете
[12:35:51] <il.smind > просто косите
[12:35:57] <il.smind > я это давно понял
[12:36:28] <il.smind > вот например как можно переписать vfs_stamp_create
[12:36:34] <il.smind > не зная зачем оно?
[12:43:18] dkostousov вышел из конференции
[12:43:22] <il.smind > мне вот непонятно зачем надо вызывать vfs_s_get_path_mangle
[12:44:12] <il.smind > если ее не выполнить то
_open_archive
_archive_same
не отработают
[12:44:34] <il.smind > это так не должно работать
[12:45:01] <slavazanko/w> там парсится последний кусок пути и вычисляется vfs_s_super для этого последнего пути. Попутно возвращается путь без последнего участка. Этакий разбор VFS-строки с конца
[12:45:26] <slavazanko/w> struct vfs_s_super **archive - тут возвращается обработчик для последней части VFS-пути
[12:45:27] <il.smind > я про то что _open_archive и _archive_same должны сами срабатывать
[12:45:38] <il.smind > без этого непрозхрачного вызова
[12:45:48] <andrew_b> Строка содержит некий признак vfs. Чтобы узнать, что это за vfs, еадо распарсить.
[12:45:57] <il.smind > достаточно чтобы _open_archive срабатывала
[12:46:23] <andrew_b> open_archive у каждой vfs есть. Какой из них вызывать?
[12:46:44] <il.smind > andrew_b: плагинной
[12:46:55] <il.smind > т.е. вошли мы в vfs
[12:47:20] <il.smind > должен стрястись open_archive
[12:47:59] <andrew_b> Чтобы это стряслось, эту vfs ещё надо определить.
[12:48:20] <andrew_b> Вот vfs_s_get_path_mangle это и делает.
[12:48:31] <il.smind > а так получается в каждом плагине надо прописывать вызов vfs_s_get_path_mangle внутри _chdir
[12:49:01] <il.smind > andrew_b: определяет не vfs_s_get_path_mangle
[12:49:09] <slavazanko/w> ваще было бы идеально. чтобы open_arhive стало событием... а модули вешаются на одно событие. Событию передаётся дополнительно название vfs. Если название vfs совпало с плагинным, то обработчик выполняет всё. что надо. если название vfs не плагинное. то обработчик тупо делает return и ничего больше не обрабатывает
[12:49:12] <il.smind > решает префикс
[12:49:51] <andrew_b> il.smind : нет прфикса.
[12:50:15] <il.smind > andrew_b: я сначала не понял но получается так что сейчас по факту проверяется префикс
[12:50:21] <il.smind > andrew_b: как нет
vfs_fish_ops.prefix = "sh:";
[12:50:33] <andrew_b> А...
[12:50:39] <il.smind > vfs_cpiofs_ops.prefix = "ucpio";
[12:50:40] <andrew_b> Не у всех есмть префикс.
[12:50:53] <il.smind > да это вот плохо
[12:51:29] <il.smind > но по сути первым из событий срабатывает _chdir
[12:52:10] <il.smind > потом если в нём прописан vfs_s_get_path_mangle
[12:52:40] <il.smind > срабатывают _open_archive и _archive_same
[12:53:14] <il.smind > после них _opendir затем _readdir
[12:53:31] <andrew_b> > но по сути первым из событий срабатывает _chdir
не всегда.
[12:53:34] <il.smind > и _stat
[12:54:17] <il.smind > я как пейсатель плагина то чего ожидал
[12:54:41] <il.smind > система знает о зарегиных префиксах
[12:55:08] <il.smind > как только мы дали задачу войти в vfs
[12:55:31] <il.smind > ну написали
sftp://127.0.0.1/
[12:56:03] <il.smind > то первым отраатывает *_open_archive
[12:56:12] <il.smind > если он прописан
[12:56:55] <il.smind > а за ним уже и _chdir и _opendir затем _readdir
[12:57:52] <il.smind > внутри _open_archive я могу распарсить url, запустить инициализацию соединения, что то еще
[12:58:05] <il.smind > не обязательно соединение
[12:58:20] <il.smind > ну там список получить или что то еще
[12:59:51] <il.smind > вот такие мысли
[13:00:41] <il.smind > а ну и при выходе из vfs чотбы сработал _close_archive
[13:00:47] <il.smind > или как там его
[13:01:04] <il.smind > но шобы оно само
[13:01:17] <il.smind > а я только обработчик нарисовал
[13:22:31] theMIROn вышел из конференции
[13:22:38] theMIROn зашёл в конференцию
[13:46:10] iNode зашёл в конференцию
[13:48:20] <il.smind > andrew_b: Скажи
[13:48:43] <slavazanko/w> 80eccc9..9bf371a 1652_autodetect_lb -> 1652_autodetect_lb
[13:48:47] <il.smind > struct vfs_class *me
в me есть ссылка на
[13:48:56] <il.smind > super ?
[13:49:30] <andrew_b> Напрямую нет.
[13:50:09] <il.smind > вот вопрос у меня такой
[13:50:20] <andrew_b> Чую подвох.
[13:50:20] <il.smind > у меня отработала _open_archive
[13:50:54] <il.smind > и в SUP->session есть указатель на сессию
[13:51:08] <il.smind > но в
sftpfs_opendir (struct vfs_class *me, const char *dirname)
[13:51:16] <il.smind > нет никакого super
[13:51:32] <il.smind > его надо получается найти?
[13:52:58] <andrew_b> Да.
[13:56:08] <il.smind > и ты знаешь как?
[13:56:34] <andrew_b> Предполагаю.
[13:56:39] <il.smind > в vfs_s_get_path_mangle похожее что то
[13:57:33] <il.smind > vfs_s_find_entry_tree ?
[13:57:45] <il.smind > нет
[13:59:20] <il.smind > andrew_b: сдаюсь
[14:00:20] <il.smind > только vfs_s_get_path_mangle выходит
[14:02:28] <andrew_b> sftp_super_data_t -- это один из элементов vfs_s_super::data.
[14:02:40] <andrew_b> Точнее, не один из.
[14:02:50] <andrew_b> А он единственный.
[14:03:03] <slavazanko/w> Илья, ты №1652 бушь заниматься или могу на себя перехватить?
[14:03:43] <il.smind > да занимаюсь я занимаюсь
[14:04:02] <slavazanko/w> ок
[14:04:18] <il.smind > т.е. me->data->
[14:04:31] theMIROn вышел из конференции
[14:04:31] <il.smind > пойду пожру
[14:04:55] <andrew_b> vfs_s_super -- это структура, которая описывает одно из твоих соединений. Объекты этого типа хранятся в массиве vfs_s_subclass::supers.
[14:05:30] <andrew_b> А vfs_s_subclass -- vfs_class::data.
[14:06:07] <il.smind > gfkmwtv vj;tim gjrfpfnm&
[14:06:12] <il.smind > пальцем можешь показать?
[14:06:16] <andrew_b> Нет.
[14:06:39] <il.smind > почему?
[14:08:35] <andrew_b> Надо копать.
[14:08:43] <andrew_b> Так сказать не могу.
[14:08:54] <andrew_b> Зависит от конкретной vfs.
[14:10:26] <slavazanko/w> > пойду пожру
опять?
[14:16:09] <andrew_b> Я домой.
[14:16:19] <slavazanko/w> давай. Я тоже.
[14:16:26] andrew_b вышел из конференции: конец рабочего дня
[14:24:17] <il.smind > slavazanko/w: ну...
[14:32:18] <il.smind > slavazanko/w: тут?
[14:32:25] <slavazanko/w> пока да
[14:32:31] <il.smind > сколько?
[14:57:40] theMIROn зашёл в конференцию
[14:57:52] iNode вышел из конференции
[15:04:31] theMIROn вышел из конференции
[15:04:37] theMIROn зашёл в конференцию
[16:08:23] mc_log зашёл в конференцию
Тема: http://www.midnight-commander.org | Latest stable release: 4.7.5.2
[16:08:29] mc_log вышел из конференции
[16:36:35] andrew_b зашёл в конференцию
[16:36:35] Зося Синицкая зашёл в конференцию
[16:36:35] ASM зашёл в конференцию
[16:36:35] mc_log зашёл в конференцию
Тема: http://www.midnight-commander.org | Latest stable release: 4.7.5.2
[16:42:19] theMIROn зашёл в конференцию
[16:50:51] slavazanko/w зашёл в конференцию
[17:57:24] il.smind . зашёл в конференцию
[17:57:47] <il.smind .> andrew_b: andrew_b Андрей?
[18:45:45] andrew_b вышел из конференции
[19:31:51] ASM вышел из конференции
[21:34:04] slavazanko/h зашёл в конференцию
[22:06:04] theMIROn вышел из конференции
[22:06:11] theMIROn зашёл в конференцию
[22:17:34] theMIROn вышел из конференции
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!