[00:25:04] slavazanko/h вышел из конференции [06:13:24] andrew_b зашёл в конференцию [06:55:19] il.smind зашёл в конференцию [07:00:58] <il.smind > slavazanko/h: а... впопу такой тест, он не правильный [07:02:27] <il.smind > тест должен быть адекватен [07:02:30] <Зося Синицкая> il.smind : Две полоски! [07:02:51] <il.smind > Зося Синицкая: сиди дура ровно [07:03:00] <Зося Синицкая> il.smind : привет! [07:03:11] <il.smind > Зося Синицкая: привет [07:03:22] <Зося Синицкая> il.smind : А что ты умеешь? ;-) [07:03:59] <il.smind > Зося Синицкая: а ты? [07:04:07] <Зося Синицкая> il.smind : сама ты потеряшка [07:04:28] <il.smind > так и знал что этим кончится... [07:46:21] <il.smind > andrew_b: скажи [07:46:24] <il.smind > typedef struct dir_entry { char *text; struct dir_entry *next; struct stat my_stat; int merrno; } dir_entry; [07:46:34] <il.smind > это односвязный список? [07:47:02] <andrew_b> Да. [07:47:48] <il.smind > а зачем? [07:48:21] <andrew_b> ХЗ. [07:48:26] <il.smind > как по такому списку подняться? [07:48:54] <il.smind > получается он позволяет пробежать от родителя до [07:49:16] <il.smind > или надо перебором, да? [07:49:18] <andrew_b> Никак. Надо иметь указатель на голову. [07:49:32] <andrew_b> Тут одностороннее движение. [08:29:06] <il.smind > andrew_b: скажи [08:29:18] <il.smind > я могу использовать data* [08:29:27] <il.smind > data [08:29:30] <il.smind > ? [08:29:51] <il.smind > в vfs_class [08:29:58] <il.smind > которая [08:30:14] <andrew_b> Смотря для чего. [08:30:27] <il.smind > это не противоречит твоей э... [08:30:32] <il.smind > концепции [08:31:00] <il.smind > мне надо создать указатель на соединение [08:31:51] <andrew_b> Указатель на соединение - это один из supers в vfs_s_subclass. [08:32:02] <andrew_b> Тип vfs_s_super [08:32:04] <il.smind > andrew_b: у меня нет vfs_s_subclass [08:32:19] <il.smind > вот это и был вопрос [08:32:20] <andrew_b> Сделай. [08:32:26] <il.smind > надо ли? [08:32:29] <andrew_b> Тогда нельзя. [08:32:34] <il.smind > понял [08:35:29] dkostousov зашёл в конференцию [08:53:01] <slavazanko/w> > а... впопу такой тест, он не правильный чёйта неправильный? он тестирует длинную первую строку... в жизни такого никогда не будет? [08:54:32] <slavazanko/w> тесты для того и предназначены, чтобы тестить поведение в граничных условиях. На пределе возможного. так сказать. а не в сферическом идеальном окружении [08:56:58] <il.smind > >чёйта неправильный тест должен соответствовать алгоритму [08:57:09] <slavazanko/w> нет [08:57:11] <slavazanko/w> наоборот [08:57:21] <slavazanko/w> алгоритмы должны соответствовать тестам. [08:57:26] <il.smind > алгоритм подразумевает что читаются первых Х символов [08:57:35] <slavazanko/w> в идеале сначала пишутся тесты. потом пишется код. который их выполняет [08:57:49] <il.smind > как можно тестировать что будет если перевода строки нет [08:58:15] <il.smind > процедура говорит что если нет то значит возвращает умолчание [08:58:18] <slavazanko/w> а я на этот случай ещ напишу тестик... и посмотрю. как твой алгоритм выпутается из этой ситуации :) [08:58:30] <il.smind > а это \n [08:58:52] <slavazanko/w> да. Я и грю: тестами я проверяю. что твой алгоритм нормально реагирует во всех странных случаях [08:59:03] <il.smind > ты бы еще гигабайт туда перед \n\r засунул и сказал - вот видишь :) [08:59:14] <slavazanko/w> при этом тесты - это не отладка. которую убираем после написания алгоритма. тесты остаются постоянно [08:59:23] <slavazanko/w> надо будет - засуну :) [09:00:01] <il.smind > slavazanko/w: я говорю что тест должен соответствовать алгоритму а не реализации [09:00:17] <il.smind > т.е. тест должен реализовывать алгоритм [09:00:51] <slavazanko/w> алгоритм такой: читаем первую строку, проверяем на конец этой строки. Реализация: читаем первых N байт и проверяем. прохалявило там оказаться переводу строки или нет... Мой тест проверяет именно алгоритм [09:01:03] <il.smind > slavazanko/w> алгоритм такой: читаем первую строку, проверяем на конец этой строки. нет [09:01:15] <slavazanko/w> ? [09:01:32] <il.smind > алгоритм такой: читаем N байт, проверяем на конец этой строки. [09:01:45] <slavazanko/w> "читаем первых N байт и проверяем. прохалявило там оказаться переводу строки или нет" ? [09:01:48] <slavazanko/w> это криво [09:01:55] <il.smind > если читать всю строку то можно состариться [09:02:04] <slavazanko/w> чего это? [09:02:19] <il.smind > ну вот того [09:02:36] <il.smind > что такое "первую строку"? [09:02:47] <slavazanko/w> до первого \n или до конца файла [09:02:55] <il.smind > это значит читать пока не найдешь конец строки [09:03:01] <slavazanko/w> да [09:03:12] <slavazanko/w> в цикле, в один и тот же буфер [09:03:13] <il.smind > а если конца строки нет в ближайших 10 мб? [09:04:04] <slavazanko/w> у нас на редактирование открывается не больше 64Мб. При линейном чтении они влетят настолько быстро, что потеряются в последующем времени разбора синтаксиса... [09:04:29] <il.smind > slavazanko/w: не на столько быстро [09:04:30] <slavazanko/w> у нас чем больше файл, тем дольше он открывается из-за подсветки. Будет незаметно [09:04:37] <slavazanko/w> ну давай проверим [09:04:42] <il.smind > будет заметно [09:05:22] <il.smind > каждое такое мелкое торможение во совокупности выливается в общее нетриятное торможение [09:05:52] <il.smind > >у нас чем больше файл, тем дольше он открывается из-за подсветки. Будет незаметно это не так, точнее не совсем так [09:06:09] <slavazanko/w> если читать по 512 байт, то 10 метров будут читаться не медленнее, чем dd if=/dev/zero of=test.file bs=512 count=20000 [09:06:16] <il.smind > сомое большое влияние оказывает подсчёт строк [09:06:29] <slavazanko/w> time dd if=/dev/zero of=test.file bs=512 count=20000 20000+0 записей считано 20000+0 записей написано скопировано 10240000 байт (10 MB), 0,0643754 c, 159 MB/c
real 0m0.200s user 0m0.002s sys 0m0.065s [09:06:30] <Зося Синицкая> slavazanko/w: Ошибка! Удалённый сервер не найден! [09:06:44] <il.smind > slavazanko/w: я уже проводил тестирование [09:06:49] <slavazanko/w> и? [09:07:00] <il.smind > давно правда но это и не важно [09:24:09] theMIROn зашёл в конференцию [09:24:09] andrew_b зашёл в конференцию [09:24:09] dkostousov зашёл в конференцию [09:24:09] slavazanko/w зашёл в конференцию [09:24:09] Зося Синицкая зашёл в конференцию [09:24:09] slyfox^w зашёл в конференцию [09:24:09] il.smind зашёл в конференцию [09:24:09] mc_log зашёл в конференцию
[09:24:17] <slyfox^w> Если вендофайл с \r\n, но не совсем нормальный - его вредактировали во вредакторах, которые не всегда ставят \r:
printf "hi\r\n\n\r\nbye\r\n" > win mcedit win; Shitf+F2; save as unix file; созерцаем поганый \r\n посреди файла [09:26:42] <slavazanko/w> надо будет тестег напейсать на этот случай... [09:27:12] <il.smind > slyfox^w: эм... [09:27:51] <il.smind > это и решается в бранче [09:28:11] <slyfox^w> щас прямо? я не следил [09:28:27] <andrew_b> slyfox^w: я знаю про этот баг алгоритма. [09:28:49] <il.smind > не будет этих ^M видно [09:28:50] <andrew_b> Надо бы исправить, но как-то всё не до того. [09:38:11] <il.smind > кто то понял о чём Ticket #2541 ? [09:39:48] <slavazanko/w> о том. что слишком много сохранений конфигов. По многу раз одних и тех же. Грит, прям слышит. как байты со скрипом на его ВестернДигитал сохраняются [09:41:04] <andrew_b> Кстати, почему? [09:41:52] <slavazanko/w> алгоритм окончания работы надо пересмотреть. там иногда по нескольку раз вызывается сохранение конфигов [09:41:59] <slavazanko/w> то в одном месте... то во втором [09:42:41] <andrew_b> open("/home/fra/.mc/ini", O_WRONLY|O_TRUNC|O_SYNC) = 9 open("/home/fra/.mc/ini", O_WRONLY|O_TRUNC|O_SYNC) = 9 open("/home/fra/.mc/ini", O_WRONLY|O_TRUNC|O_SYNC) = 9 open("/home/fra/.mc/panels.ini", O_WRONLY|O_TRUNC|O_SYNC) = 9 open("/home/fra/.mc/ini", O_WRONLY|O_TRUNC|O_SYNC) = 9 open("/home/fra/.mc/history", O_WRONLY|O_TRUNC|O_SYNC) = 9 open("/home/fra/.mc/history", O_WRONLY|O_TRUNC|O_SYNC) = 9 open("/home/fra/.mc/history", O_WRONLY|O_TRUNC|O_SYNC) = 9
ini аж 4 раза? [09:42:46] <andrew_b> Странно. [09:44:30] <slavazanko/w> угу, странно [09:46:23] <andrew_b> Ну таки похоже на правду.
987 save_config (); 988 save_layout (); 989 panels_save_options (); 990 save_panelize (); [09:47:06] <andrew_b> И везде mc_config_save_(to_)file. [09:47:13] <il.smind > ну откладывать же запись тоже нельзя [09:51:09] <slyfox^w> у юзера fat с -osync ? :] [10:01:56] <il.smind > slyfox^w: я не знаю [10:06:01] <slyfox^w> или система atime суёт в журнал [10:06:27] theMIROn вышел из конференции: Miranda IM. Menshe. Pushche. Proshhe! [10:21:39] theMIROn зашёл в конференцию [10:24:32] <andrew_b> Ну подряд несколько раз писать файл тоже не правильно. [10:38:03] BanderOS зашёл в конференцию [10:52:27] BanderOS вышел из конференции [10:54:45] BanderOS зашёл в конференцию [10:54:52] <andrew_b> [#] Ответ на: комментарий от yytreop 13.04.2011 15:26:37
> Да, я его сейчас для этого использую, но нужна замена.
Если найдёте - скажите. Тоже спрыгну. Slavaz ** (14.04.2011 11:42:58) [10:55:11] <andrew_b> http://www.linux.org.ru/jump-message.jsp?msgid=6141990&cid=6150073 [10:56:23] <slavazanko/w> пусть найдёт сначала :) [10:56:40] <slavazanko/w> это из разряда. если найдёшь. то я олень [11:32:59] <il.smind > 1652 кто голосовать то будет? [11:33:49] <andrew_b> Там Слава ещё тесты не исправил. [11:34:25] <slavazanko/w> ща [11:39:22] <il.smind > в фаре панельный плагин в 10 раз проще [11:39:59] <il.smind > в 2 [11:40:46] <andrew_b> В 0.9. [11:40:52] <il.smind > нет [11:41:31] <il.smind > от 1.7 до 2 однозначно [11:41:48] <il.smind > не надо там никаких суперов [11:43:16] BanderOS вышел из конференции [11:44:33] <slavazanko/w> Илья. а запуль ещё раз 1652_autodetect_lb и пускани тесты... может. я опять неправильно написал тестилку? Вроде нашёл глючок... [11:46:03] <il.smind > опять в столовой что то подмешали [11:46:11] <il.smind > спать хочу [11:46:38] <il.smind > а... и да, мне не нравится каталог tests [11:46:41] <Зося Синицкая> RSS: Новости для Midnight Commander • Ticket #2198 (Terminal settings not changed when window resize) updated http://www.midnight-commander.org/ticket/2198#comment:4 [11:46:56] BanderOS зашёл в конференцию [11:47:41] <il.smind > если есть желание, пнедлагаю /tests, /unittests, /units [11:47:46] <il.smind > в корне [11:48:08] <slavazanko/w> в корне? [11:48:13] <il.smind > а не напиханные по всему проекту [11:48:26] <slavazanko/w> ну или так,да. [11:48:39] <andrew_b> Я сразу об этом говорил. [11:48:57] <il.smind > проще их найти и прочее [11:49:06] <andrew_b> И убить? [11:49:13] <il.smind > andrew_b: например [11:49:19] <il.smind > исправить [11:49:22] <il.smind > изучить [11:49:32] <il.smind > что то еще [11:49:32] <slavazanko/w> но-но-но! НИкаких убить! Тесты. единожды написанные, должны сопровождать код постоянно [11:49:46] <il.smind > для мейнтейнеров опять же [11:49:59] <il.smind > пакеты делать проще [11:50:17] <andrew_b> Когда vfs будем делать? А то я через 2 недели в отпуск ухожу, там мне некогда будет. [11:51:11] BanderOS вышел из конференции [11:51:43] <il.smind > andrew_b: прямо сейчас [11:51:50] <il.smind > давайте делать [11:52:15] <andrew_b> il.smind : Я не это имею в виду. [11:52:27] <andrew_b> Я имею в виду более глобальную вещь. [11:52:39] <il.smind > я уже 2 недели делаю [11:52:50] <il.smind > более глобальную вещь [11:53:01] <il.smind > пытаюсь понять как это всё работает [11:53:17] <il.smind > чтобы быть в теме [11:54:33] <il.smind > andrew_b: как ты видишь деланье ? [11:55:31] <andrew_b> Сначала надо бы поговорить. [11:55:53] <andrew_b> Потом кто-то напишет прототип. [11:55:54] <il.smind > andrew_b: а мы разьве не только этим и занимаемся? [11:56:17] <andrew_b> Нет. Надо поговорить конкретно о, а не вообще. [11:56:40] <il.smind > мне хотелось бы иметь представление о этапах переделки [11:57:22] <il.smind > и чтобы точно понимать что именно должно стать конечной целью [11:57:39] <il.smind > как ты ее себе представляешь эту цель? [11:58:38] <andrew_b> Цель -- избавить vfs от багов, которые в ней есть. [11:59:00] <andrew_b> Тикеты, которые блокирует 2361. [11:59:01] <il.smind > это не цель [11:59:09] <andrew_b> А что цель? [11:59:20] <il.smind > цель что то более конкретное [11:59:24] BanderOS зашёл в конференцию [11:59:34] <il.smind > надо подумать, я пока не знаю [12:00:39] <il.smind > ну вот 2361 это вполне себе цель [12:01:09] <il.smind > но я так понял из [17:17:58] <Slava Zanko> основная идея: с подсистемой vfs общаться посредством vfs_path_t Это массив структур.описывающих пути. Не строка, а массив. Соответственно. нужны будут функции-конвертеры из строки в vfs_path_t и из vfs_path_t в строку. Но конвертеры должны использоваться только при выводе пути на экран или при парсинге пути со строк ввода. и всё [12:01:37] <il.smind > [17:18:27] <Slava Zanko> сейчас у нас строка парсится на каждый чих заново [12:01:50] <il.smind > [17:22:40] <Ilia Maslakov> почему не собирается? [12:02:01] <il.smind > [17:22:58] <Slava Zanko> потому что менять надо во многих местах сразу. [17:23:20] <Slava Zanko> нет. конфликт типов. где юзается char *path, а где vfs_path_t *path [17:24:04] <Slava Zanko> я вот сходу не могу представить, как сделать плавную и прошаговую замену... получается, что везде и сразу надо... с тучей весёлых глюков. естественно [12:02:23] <andrew_b> Да. Всё сразу. [12:02:29] <il.smind > т.е. краткосрочная цель заменить char *path, а где vfs_path_t *path [12:02:55] <il.smind > эту цель же мы можем достичь [12:03:37] <il.smind > т.е. частично слава уже начал заменять [12:04:17] <il.smind > но это сложно всё сразу сделать [12:05:01] <il.smind > я предложил добавить в структуру vfs_path_t поле unparsed_path
[17:26:48] <Ilia Maslakov> и позаменять *path на ->unparsed_path [17:26:55] <Ilia Maslakov> собрать [17:27:07] <Ilia Maslakov> добиться работоспособности [12:05:47] <andrew_b> Можно всё сразу не делать. Можно взять какую-нибудь простую vfs, например, cpio, и на ней поэкспериментировать. [12:06:00] <il.smind > а после этого поочереди заменять [12:06:14] <andrew_b> Когда будет виден свет, доделать остальные. [12:11:18] <andrew_b> Тут возникает другой вопрос. Как будет выглядеть то, что сейчас выглядит как foo.cpio#ucpio, потому что на эти #ucpio и прочие завязаны команды обработки расширений. Я предложил #vfs:ucpio:foo.cpio, но кому-то это не нравится. [12:13:38] BanderOS вышел из конференции [12:14:08] slavazanko/w вышел из конференции [12:16:21] slavazanko/w зашёл в конференцию [12:19:03] <slavazanko/w> парсер vfs-пути можно оставить старый, при этом рядом можно положить новую функцию с парсером... и через #ifdef.... [12:19:41] <andrew_b> Зачем? [12:21:02] <slavazanko/w> персонально для тех, кому не нравиццо. оставить старый парсер. При этом поменять все mc.ext на нвый. чтобы жизнь малиной не казалась :) [12:21:07] <slavazanko/w> но вообще да, смысла нет [12:21:55] <andrew_b> Парсер -- это глубоко внутренне дело. Наружу он вылезает в виде mc.ext. [12:22:21] <andrew_b> Решать надо с того, что торчит наружи. [12:22:31] <andrew_b> Чтобы было что парсить. [12:27:24] BanderOS зашёл в конференцию [12:37:39] <il.smind > ну давайте посмотрим на cpio или tarfs [12:38:13] <il.smind > имхо tarfs проще [12:38:33] BanderOS вышел из конференции [12:38:57] <andrew_b> Одна малина. [12:39:06] <il.smind > насколько я помню всё начинается с _do_panel_cd [12:39:21] <il.smind > т.е. я так понимаю там должно отпарситься [12:39:29] <andrew_b> Всё начинается с mc_open. [12:40:17] <andrew_b> Не. [12:40:24] <andrew_b> С mc_chdir. [12:40:54] BanderOS зашёл в конференцию [12:41:59] <il.smind > andrew_b: ты меня в тупик своим mc_open поставил [12:42:01] <slavazanko/w> я вынес эти функции в lib/vfs/interface.[ch] [12:42:12] <il.smind > ну да mc_chdir больше похожа [12:42:21] <andrew_b> il.smind : я обшибся. [12:45:36] <andrew_b> > я вынес эти функции в lib/vfs/interface.[ch] ? Где и когда? [12:45:51] <il.smind > new_vfs [12:46:15] <il.smind > а кстати [12:46:25] <il.smind > в фаре [12:46:59] <il.smind > пишем к примеру net: \\ресурс [12:47:05] <il.smind > или [12:47:29] <il.smind > vc: путь [12:48:50] <il.smind > т.е в mc это cd путь#имявфс а в far имявфс: путь [12:48:53] <slavazanko/w> DEV_new_vfs [12:49:23] <il.smind > так вот имявфс: путь имхо более просто парсить [12:50:43] <il.smind > что скажете? [12:51:08] <andrew_b> Более просто чем что? [12:51:20] <il.smind > чем cd путь#имявфс [12:51:37] <il.smind > чем проще? [12:51:52] <andrew_b> путь#имявфс однозначно надо менять на что-то другое. Вопрос: на что? [12:51:55] <il.smind > тем что всегда идет префикс потом всё что угодно [12:52:18] <il.smind > я и предлагаю на префикс путь [12:52:33] <andrew_b> Я предложил #vfs:ucpio:foo.cpio, но кому-то это не нравится. [12:52:39] <il.smind > т.е. заход в tar будет таким [12:53:08] <il.smind > tar: имяфайла.tar.gz [12:53:39] <il.smind > т.е. вот так вот tar: это префикс [12:53:53] <il.smind > т.е. вот так вот "tar:" это префикс [12:54:13] <il.smind > без cd [12:54:44] <andrew_b> Кстати, можно всё унифицировать: ftp:// fish:// tar:// zip:// [12:54:49] <andrew_b> cd нужна. [12:54:57] <il.smind > не нужна [12:54:58] <andrew_b> Потому что это команда. [12:55:27] <andrew_b> Нууу, может, и не нужна. [12:55:30] <il.smind > а fish:// это не команда? [12:55:44] <il.smind > просто лишняя сущьность [12:55:51] <il.smind > сущность [12:56:04] <andrew_b> fish:// это урл. [12:56:18] <andrew_b> Он сам по себе ни к чему не обязывает. [12:56:23] <il.smind > какбы урл а как бы сразу и переход [12:56:27] <andrew_b> Мало ли зачем он тут. [12:56:58] <il.smind > а... "//" неочень подходит [12:57:13] <il.smind > это типа уже как бы куски пути вроде [12:57:53] <andrew_b> Если канонизацию подрихтовать, то подойдёт. [12:58:16] <il.smind > тут есть нюансик еще с этими префиксами [12:58:16] <slyfox^w> file:// [12:58:35] <andrew_b> А дальше? [12:58:39] <andrew_b> Какой файл? [12:58:48] <slyfox^w> а какой надо? :] [12:58:55] <andrew_b> А как узнать? [12:59:06] <il.smind > сейчас можно так cd 123.tar#/1234.patch#patch [12:59:24] <il.smind > но имхо это непонятно зачем так [12:59:38] <andrew_b> Понятно. [12:59:40] <slavazanko/w> > Кстати, можно всё унифицировать: +1 [12:59:46] <il.smind > в каких случаях нужно непонятно [13:00:28] <andrew_b> Ну... Это сработает в дилалоге копирования. F5 который. [13:01:02] <andrew_b> Не. [13:01:07] <il.smind > если у нас будет некая интерфейсейсная функция [13:01:17] <il.smind > putfile [13:01:25] <il.smind > или так что у нас [13:01:35] <andrew_b> Вот для чего. Чтобы сразу зайти в 1234.patch, который в 123.tar, а не сначала в тар, а потом в патч. [13:01:46] <il.smind > то та панель и так знает как данные засасывать [13:02:10] <il.smind > andrew_b: это то понятно что сразу зайти [13:02:46] <il.smind > но зайти нереально т.к. ты пока в 123.tar не зашел то и не знаешь что у тебя там есть 1234.patch [13:03:19] <andrew_b> Неважно. У тебя может быть этот путь прописан а горячих каталогах. [13:03:27] <il.smind > вот [13:03:42] <il.smind > это единственное что надо будет подрихтовать [13:04:52] <il.smind > при переходе от глобального целого пути к нескольким локальным [13:05:06] <il.smind > что я имею ввиду... [13:05:32] <il.smind > допустим мы хотим сделать аналог cd 123.tar#/1234.patch#patch [13:06:02] <il.smind > т.е. зайти в 1234.patch как в вфс patchfs [13:06:23] <il.smind > которая лежит в 123.tar [13:06:54] <il.smind > пишем tar://home/abc/123.tar [13:07:17] <il.smind > находимся внутри tarfs [13:07:40] <il.smind > пишем patchfs://1234.patch [13:07:51] <il.smind > попадаем в 1234.patch [13:08:03] <il.smind > вот как то так [13:08:47] <il.smind > т.е. запрещаем за один переход попадать в полную вложенность виртуальных фс [13:09:14] <il.smind > за счет этого внутри урла у нас смогут находиться любые данные [13:09:33] <il.smind > в том числе всякие # и прочие [13:09:42] <andrew_b> > т.е. запрещаем за один переход попадать в полную вложенность виртуальных фс Ненене. [13:09:49] <andrew_b> Запрещать не надо. [13:09:59] <andrew_b> Это будет регрессия. [13:10:00] <slavazanko/w> разделитель можно ввести [13:10:19] <il.smind > если не запретить то обязательно парсер споткнется о специальный символ [13:10:21] <slavazanko/w> tar://home/abc/123.tar///pathfs://... [13:10:36] <slavazanko/w> ну или как-нить по другому [13:10:52] <il.smind > "разделитель можно ввести" он обязательно совпадёт с чьим то паролем [13:10:56] <slavazanko/w> у нас и так есть спец. символ: слеш [13:11:08] <andrew_b> prefix:// и есть разделитель. [13:11:14] <slavazanko/w> он разделяет путь. Можно поиграться с количеством слешей и разделять VFS [13:11:19] <il.smind > есть но представь [13:11:28] <il.smind > tar://home/abc/123.tar///pathfs://... [13:11:32] <slavazanko/w> andrew_b: tar://home/abc/123.tarpathfs://... не. надо разделять [13:11:52] <il.smind > парсер берёт home/abc/123.tar///pathfs://... [13:11:57] <slavazanko/w> а можно тупо tar://home/abc/123.tar/pathfs://... [13:12:09] <il.smind > а вдруг это физический такой путь [13:12:17] <andrew_b> Вряд ли. [13:12:22] <slavazanko/w> какой? [13:12:51] <andrew_b> Коллизии возможны. [13:12:53] <il.smind > home / abc / 123.tar / pathfs: / [13:13:05] <il.smind > где 123.tar это имя каталога [13:13:38] <slavazanko/w> тогда это будет home/abc/123.tar/pathfs:/bla-bla это однозначно отличается от home/abc/123.tar////pathfs:///bla-bla [13:13:50] <slavazanko/w> home/abc/123.tar////pathfs://bla-bla [13:13:59] <slavazanko/w> мы начинаем играться с количеством слешей [13:14:11] <andrew_b> slavazanko/w: не, это некрасиво. [13:14:25] <slavazanko/w> home/abc/123.tar/pathfs://bla-bla [13:14:36] <slavazanko/w> так тоже можно точно идентифицировать [13:14:47] <il.smind > вобщем моя идея это префикс УРЛ [13:15:04] <il.smind > где префикс это префикс vfs [13:15:20] <slavazanko/w> следующий элемент пути не попадает под маску /(a-zA-Z0-9)+:// - значит. каталог [13:15:30] <il.smind > а УРЛ это любая последовательность символов [13:15:48] <andrew_b> Не любая. [13:16:04] <il.smind > это вы предлагаете не любую [13:16:10] <andrew_b> А та, которая стоит перед :// но после / или в начале строки. [13:16:12] <il.smind > я предлагаю любую [13:16:29] <il.smind > за счёт запрета комбинированного урла [13:17:23] <il.smind > т.е. я не думаю что в реальности этим комбинированным урлом кто то пользуется из людей [13:17:54] <il.smind > а если речь идет о том что где то надо знать полный путь [13:17:57] <andrew_b> Не. Алгоритм такой. Ищем ://. Если наши, идйм назад, пока не встретим / или начало строки. Потом ищем это подстроку среди vfs. Нашли -- бинго. [13:18:10] <slavazanko/w> да [13:18:13] <andrew_b> Если нашли, идём назад [13:18:15] <slavazanko/w> всё просто, на самом деле [13:18:44] <il.smind > давай проверим на пароле содержащем / [13:19:06] <andrew_b> Я же говорю: коллизии возможны. [13:19:13] <il.smind > точнее или / или //: [13:19:17] <andrew_b> Совсем избавиться от них нельзя. [13:19:28] <il.smind > а я предлагаю избавиться от коллизий [13:20:01] <il.smind > вот ты думаешь чтоо запрет вложенности это ограничение [13:20:13] <il.smind > а посути ограничения нет [13:20:38] <il.smind > текущая панель помнит всю последовательность переходов [13:20:41] <andrew_b> Можно потребовать экранировать слэши. \/\/ [13:21:09] <il.smind > и поэтому построить полный урл всегда возможно [13:21:26] <il.smind > ну вы понимаете о чём я? [13:21:33] <slavazanko/w> Илья, мы сейчас не про панель [13:21:48] <il.smind > а где еще переходы есть? [13:22:22] <slavazanko/w> в панелях понятно - если будет vfs_path_t, то там будет полная история с возможностью показа последнего. Мы про переход после ctrl+\ (каталоги быстрого доступа) [13:22:36] <slavazanko/w> вот там будет надо из строки создать vfs_path_t [13:22:40] <il.smind > slavazanko/w: вот я про него и говорю [13:22:53] <il.smind > его немного адаптировать надо вот и всё [13:23:07] <il.smind > чтобы иерархия урлов была в разных полях [13:23:25] <slavazanko/w> гм [13:23:36] <slavazanko/w> а можно я пофантазирую совсем чутка? [13:23:58] <il.smind > например так 1 tar://home/abc/123.tar 2 pathfs://bla-bla [13:24:17] <slavazanko/w> если будет фишка "внести текущий путь в панели в каталоги быстрого доступа", то станет похрену, в каком оно там виде хранится... [13:24:30] BanderOS вышел из конференции [13:24:32] <slavazanko/w> редактирование надо будет поменять... [13:24:34] <il.smind > и соответственно урл разбит на несколько урлов но без коллизий [13:24:44] <slavazanko/w> типа, чтобы править вручную элементы нового пути [13:24:56] <slavazanko/w> что-то в этом есть, надо подумать :) [13:25:13] <slyfox^w> чутка оффтопа: знаете как в DNS разбиваются компоненты имени? (те, что вежду "точками") :] [13:25:24] <slavazanko/w> с mc.ext какие проблемы намечаются? [13:25:32] <slyfox^w> (в DNS пакетах) [13:25:58] <slavazanko/w> не знаю. но предположу: нуль-терминированные? [13:26:18] <slyfox^w> неа [13:26:31] <slyfox^w> перед каждым компинентом чтоит его длина [13:27:33] <slavazanko/w> а к нам это применимо? [13:27:40] <andrew_b> Вряд ли. [13:28:48] <il.smind > поверьте от перехода от одного глобального урла к последовательности локальных все только выйграют [13:29:22] <il.smind > ну при условии что в панелях у нас хранится контекст для каждого перехода [13:29:52] <il.smind > slavazanko/w> с mc.ext какие проблемы намечаются? никаких [13:29:55] <andrew_b> Как он хранится? [13:30:10] <il.smind > в vfs_path_t [13:30:57] BanderOS зашёл в конференцию [13:31:04] <il.smind > т.е. зашли в новую vfs запомнили эту вфс и её корень [13:31:21] <il.smind > дпльше бродим и стром путь от корня [13:31:52] <il.smind > как только вошли в новую vfs снова запомнили и тп [13:33:11] <il.smind > т.е. мы всё время помним где мы и как далеко забрались относительно локального корня [13:33:24] <slavazanko/w> и при этом не парсим каждый раз [13:33:30] BanderOS вышел из конференции [13:33:39] <il.smind > плюс можно сделать сохранение пути для ctrl-/ [13:33:47] theMIROn вышел из конференции: Miranda IM. Menshe. Pushche. Proshhe! [13:33:51] <slavazanko/w> нужно [13:33:57] <il.smind > в виде набора урлов [13:34:24] <il.smind > плюс нужно сделать сохранение пути для ctrl-/ в виде набора урлов [13:37:51] <andrew_b> Это сложно. Проще хранить урл одной строкой. [13:39:40] <il.smind > хранить строкой просто [13:39:56] <il.smind > но преодолеть коллизии нереально [13:40:15] <il.smind > andrew_b: где ты видишь сложность? [13:40:54] <andrew_b> Надо будет переделывать этот самый справочник. [13:41:04] <il.smind > andrew_b: какой? [13:41:17] <il.smind > который по ctrl-/ , [13:41:19] <il.smind > ? [13:41:29] <andrew_b> Да. [13:41:47] <il.smind > это вообще не сложно [13:42:17] <andrew_b> Да понятно. Но ведь можно этого не делать. [13:42:46] <andrew_b> Почему нельзя экранировать слэши? [13:42:48] <il.smind > но тогда парсинг без гарантии [13:43:00] <il.smind > потому что это не спасёт [13:43:07] <andrew_b> Гарангию даёт только Госстрах. [13:43:18] <andrew_b> Почему не спасёт? [13:43:37] <il.smind > ну давай представим что есть парсер [13:44:10] <il.smind > давай попробуем смоделировать [13:44:22] <andrew_b> Моделируй. [13:44:35] <il.smind > такой урл который вызовет коллизию [13:45:20] <il.smind > представим что пароль это pathfs://bla-bla [13:45:26] <il.smind > представим что пароль это "pathfs://bla-bla" [13:45:53] <il.smind > пользователь пишет [13:45:56] <andrew_b> Он должен быть записан как pathfs:\/\/bla-bla [13:46:20] <andrew_b> Магической последовательности :// нет. [13:46:35] <andrew_b> Префикса нет. [13:47:06] <il.smind > т.е. \ в пароле надо экранировать? [13:47:33] <andrew_b> Мы говорим про / а не про \ [13:47:35] <il.smind > а где ещё? [13:47:45] <il.smind > ну да [13:47:55] <il.smind > т.е. / в пароле надо экранировать? [13:48:02] <andrew_b> Да, надо. А больше вроде нигде. [13:48:03] <il.smind > а где ещё? [13:49:27] <il.smind > andrew_b: ок, вторая ситуация [13:50:00] <il.smind > я нахожусь в fish://123.123.123.123/home/ [13:50:53] <il.smind > что будет если я там напишу pathfs://123.patch ? [13:53:14] <andrew_b> А что должно быть? [13:53:41] <andrew_b> Ты по идее долджен попасть в патч. Нет? [14:00:47] <il.smind > да [14:00:57] <andrew_b> И? [14:00:59] <il.smind > я на всякий уточняю [14:01:02] <andrew_b> В чём подвох? [14:01:11] <il.smind > что не надо набирать полный путь [14:08:43] <il.smind > теперь к реализации... [14:09:47] <il.smind > на данном этапе можно было бы просто переписать парсер [14:10:40] <andrew_b> И? Опять постоянно парсить урл? [14:13:34] <il.smind > andrew_b: нет! [14:13:41] <il.smind > il.smind > на данном этапе можно было бы просто переписать парсер [14:14:41] <andrew_b> Ох. Я уже один раз переписал. Ещё раз попробовать? [14:15:36] <il.smind > а еще лучше 1) переписать парсер 2) добавить в структуру vfs_path_t поле unparsed_path использовать его 3) отдышаться и продолжить [14:17:38] <il.smind > какие то из пунктов можно выкинуть или отложить [14:18:31] <il.smind > что из этого мог бы попробовать я... [14:18:38] <il.smind > наверное п. 1 [14:19:01] <andrew_b> Хехе. [14:19:15] <il.smind > самое простое? [14:19:32] <andrew_b> Да. [14:20:11] <il.smind > хоть что то [14:20:59] <slavazanko/w> я второй пункт сейчас запушу [14:21:08] dkostousov вышел из конференции [14:21:39] <slavazanko/w> запушил [14:21:45] <slavazanko/w> а не [14:21:51] <slavazanko/w> мощно можно запушить? [14:22:56] <il.smind > по идее я могу возвращать указатель на typedef struct dir_entry { char *pass; char *user; char *host; char *path; struct dir_entry *next; } dir_entry; [14:23:23] <il.smind > есть возражения? [14:23:24] <slavazanko/w> мощно запушил [14:23:41] <slavazanko/w> есть [14:24:00] <slavazanko/w> lib/vfs/path.h
vfs_path_element_t [14:25:19] <slavazanko/w> и кодировку предлагаю ывнести из пути. Нафиг она там. Это свойство панели должно быть [14:25:47] <andrew_b> Зачем interface.h? [14:26:04] <andrew_b> Почему не vfs.h? [14:26:43] <slavazanko/w> ну... хотел разделить функции, которые внутри vfs и которые интерфейсные [14:28:00] <andrew_b> А vfs_class где? Внутри или интерфейс ка бы? [14:28:41] <slavazanko/w> внутри [14:29:12] <slavazanko/w> для vfs-модулей оно. конечно. снаружи, но для mc как приложения оно спрятано должно быть [14:30:19] <slavazanko/w> я пока для начала хочу определить границы интерфейсов. Где какие юзаются. Чтобы потом чётко поменять char *path на vfs_path_t* [14:33:54] <andrew_b> Вот смотри. Хочешь ты плагины. Нужны будут заголовки. Будут они лежать где-то в /usr/include/mc. И будет там хренова туча файлов. Был бы vfs.h, а станет vfs.h и interfaces.h. Причём vfs.h без interfaces.h использовать нельзя. У Фара того же вообще один инклюд для плагинов. Слишком мелко шинковать тоже нехорошо. [14:34:33] <slavazanko/w> гм. Ок, понял, слеплю назад [14:34:58] <slavazanko/w> interface.c оставлю, с позволения... [14:35:17] <andrew_b> widget.h в таком виде, возможно, был ошибкой. [14:36:11] <slavazanko/w> я бы разбил на файлики, но сделал бы один маленький vfs.h для плагинов , в котором были бы инклюдесы этих файликов [14:44:43] theMIROn зашёл в конференцию [15:03:46] iNode зашёл в конференцию [15:14:43] andrew_b вышел из конференции [15:26:50] theMIROn вышел из конференции: Этого участника выгнали из комнаты за то, что он послал присутствие с ошибкой: remote-server-not-found [16:16:07] il.smind вышел из конференции [17:07:15] andrew_b зашёл в конференцию [17:21:34] il.smind . зашёл в конференцию [19:26:29] andrew_b вышел из конференции [19:34:53] <Зося Синицкая> RSS: Новости для Midnight Commander • Ticket #2278 (Problem in the Copy operation) updated http://www.midnight-commander.org/ticket/2278#comment:3 [20:09:08] slavazanko/h зашёл в конференцию [20:51:20] il.smind . вышел из конференции [21:00:25] slavazanko/w вышел из конференции [21:00:25] slavazanko/h вышел из конференции [21:07:44] slavazanko/w зашёл в конференцию [21:12:16] slavazanko/h зашёл в конференцию [22:40:50] BanderOS зашёл в конференцию [23:30:00] BanderOS вышел из конференции