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 зашёл в конференцию
[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 вышел из конференции