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

Тема: http://www.midnight-commander.org | Latest stable release: 4.7.5.2
[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 зашёл в конференцию
Тема: http://www.midnight-commander.org | Latest stable release: 4.7.5.2
[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 вышел из конференции
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!