[00:29:24] slavazanko/h вышел из конференции [00:31:12] slavazanko/h зашёл в конференцию [06:11:15] andrew_b зашёл в конференцию [06:57:52] <il.smind > andrew_b привет [06:58:07] <il.smind > смотри [06:59:33] <il.smind > мне бы хотелось чтобы в vfs_class были open_conn/close_conn [07:01:28] <andrew_b> Зачем? [07:02:56] <il.smind > чтобы они выполнялись 1 раз [07:03:08] <il.smind > при соединении и разсоединении [07:03:44] <il.smind > сейчас таких нет [07:04:11] <il.smind > есть опен и клосе но они незнаю в каких случаях работают [07:15:25] iNode зашёл в конференцию [07:50:38] <andrew_b> il.smind : open_archive? [07:50:48] <il.smind > нет [07:51:16] <il.smind > оно вызывается из vfs_s_get_path_mangle [07:51:30] <andrew_b> 103 /* 104 * One of our subclasses (tar, cpio, fish, ftpfs) with data and methods. 105 * Extends vfs_class. Stored in the "data" field of vfs_class. 106 */ 107 struct vfs_s_subclass [07:51:32] <il.smind > слава вчера мне нашептал [07:51:49] <andrew_b> Кто оно? [07:52:28] <andrew_b> Ну вызывается. И что? [07:52:40] <il.smind > само vfs_s_get_path_mangle вызывается из разных мест внутри ftpfs и fish [07:53:20] <andrew_b> А в vfs_s_get_path_mangle() есть вызов archive_same(). [07:55:00] <il.smind > неудобно [07:55:07] <il.smind > и черезжопно оно [07:55:34] <il.smind > нужно чтобы оно нормально отрабатывало без вопросов [07:55:51] <il.smind > этот самый open_conn [07:59:00] <andrew_b> Мы же стваим цель избавиться от парсинга url, то есть от в итоге от vfs_s_get_path_mangle. Может, есть смысл объединить vfs_class и vfs_s_subclass? [08:26:25] andrew_b вышел из конференции [08:38:10] <il.smind > и человек знал что первым методом будет open_conn [08:38:28] <il.smind > andrew_b: есть смысл [08:39:17] <il.smind > но имхо достаточно gpointer *plugindata внутри vfs_class [08:45:28] slavazanko/h вышел из конференции [08:48:58] andrew_b зашёл в конференцию [08:50:46] <andrew_b> il.smind : Внезапно vfs_class::data. [08:50:57] <il.smind > я в курсе [08:51:06] <andrew_b> И? [08:51:15] <il.smind > оно так и употребляется [08:51:22] <il.smind > в принципе [08:51:23] <slavazanko> всем привет [08:51:31] <andrew_b> il.smind : Жорик, в чём дело? Делов чём? [08:51:42] <il.smind > для подцепки vfs_s_subclass [08:51:56] <andrew_b> slavazanko/w: ! [08:52:32] <il.smind > я говорю о том что объединяем vfs_class и vfs_s_subclass и оставляем data [08:52:47] <andrew_b> Зачем? [08:52:48] <il.smind > для подцепки специфичных вещей из плагина [08:53:06] <il.smind > andrew_b: зачем что? [08:53:40] <andrew_b> > для подцепки специфичных вещей из плагина [08:53:48] <andrew_b> Я уже понял. [08:53:48] <il.smind > а как? [08:54:31] <il.smind > мне надо подцепить например typedef struct { LIBSSH2_SESSION *session; LIBSSH2_SFTP *sftp_session; LIBSSH2_SFTP_HANDLE *sftp_handle; const char *fingerprint; struct in_addr dest_ip; char *outbuf; char *inbuf; int bufsize; } cli_state_t; [08:54:40] <il.smind > andrew_b> Я уже понял. ок [08:56:55] <il.smind > slavazanko: привет [09:16:24] <il.smind > Слав [09:16:27] <il.smind > 390 *next_char = *(curr_str + 1); [09:16:37] <slavazanko> ну и? [09:16:40] <il.smind > что то я проверки не вижу на [09:17:42] <slavazanko> ? [09:18:07] <il.smind > просто берётся первое попавшееся и никак не проверяется что там вообще [09:18:28] <il.smind > может там curr_str длиной 0 [09:19:25] <slavazanko> гм. да, есть такое [09:20:13] <il.smind > вообще сама процедура мне не нравится, я конечно вряд ли написал бы лучше [09:20:40] <il.smind > но она как то очень похожа на говнокодовую, но может я и ошибаюсь [09:21:16] <il.smind > я правильно понимаю что тут надо определить последовательность? [09:21:23] <slavazanko> да [09:21:47] <il.smind > почему не конечный автомат использован? [09:22:26] <andrew_b> :) [09:22:28] <slavazanko> ты меня спрашиваешь? [09:22:32] <il.smind > да [09:22:35] <slavazanko> хз [09:22:46] <slavazanko> если есть желание - вперёд, правь [09:22:58] <slavazanko> делай автоматы. пулемёты и прочие гаубицы [09:23:14] <il.smind > нету желания :) [09:23:19] <slavazanko> проверки, конечно, надо добавить [09:23:29] <il.smind > но думал может у тебя есть :) [09:23:51] <slavazanko> да я уже забыл, что такое "конечный автомат". [09:24:00] <il.smind > есть пример [09:24:09] <slavazanko> а ты меня про реализацию этого зверя спрашиваешь... [09:24:20] <slavazanko> вроде там автомат, не? [09:24:37] <il.smind > parse_define [09:24:46] <il.smind > в etags.c [09:25:05] <il.smind > у автомата должны быть состояния [09:25:30] <il.smind > автомат перебирает последовательно каждый символ [09:26:06] <slavazanko> ну... и тут также [09:26:55] <il.smind > не вижу цикла по входному потоку [09:27:03] <slavazanko> чё? [09:27:13] <slavazanko> f [09:27:15] <il.smind > смотри [09:27:19] <slavazanko> а. уже понял [09:27:38] <slavazanko> ща. есть мысля как переделать... [09:27:47] <il.smind > автомат не перескакивает через байты [09:28:07] <il.smind > не может обратиться к уже пропущенному [09:28:21] <il.smind > он просто меняет состояния [09:28:46] <il.smind > обрабатывая текущий элемент поступающий на входе [09:36:42] <il.smind > еще вот это 707 if (charset != NULL && strncasecmp (charset, "utf-8", 6) != 0) выглядит немного странно [09:37:40] <andrew_b> Да. [09:37:49] <andrew_b> Я тоже заметил. [09:38:19] <slavazanko> угу. у нас есть флаг [09:39:08] <il.smind > да [09:39:33] dkostousov зашёл в конференцию [09:43:02] <il.smind > 611 if (len == (gsize) - 1) это так этот самый парсер пробел добавил? [09:43:11] <il.smind > перед '1' [09:43:38] <il.smind > интересно нет ли у нас готовой константы [09:43:57] <andrew_b> -1 в скобки взять? [09:44:43] <il.smind > в других местах вроде без скобок [09:44:58] <il.smind > как тут например #define UP_KEEPSEL ((char *) -1) [09:45:30] <andrew_b> Везде скобки добавить. [09:46:39] <il.smind > мне больше утвердительные предложения нрявятся нежели вопросительные :) [09:47:24] <andrew_b> Это было побудительное. [09:55:02] <il.smind > больше вроде ничего... [09:55:40] <il.smind > как же мне надо чтобы кто то из грамотных мне уделил минут 20-30... [09:56:38] <il.smind > застопорился и не могу дальше двигаться [10:32:39] BanderOS зашёл в конференцию [10:42:27] <slavazanko> Илья, у емня к тебе вопрос: а автомат в парсере заменя нужен или ты его из веяний моду упомянул? Я просто начал было сейчас переделывать под автомат, но вижу, что текущая реализация выглядит более лаконичной и как-то попроще для понимания [10:43:00] <slavazanko> > Илья, у емня к тебе вопрос: а автомат в парсере заменя нужен или ты его из веяний моду упомянул? вот русская языка. Исправляюсь: Илья, у меня к тебе вопрос: а автомат в парсере замены нужен или ты его из веяний моды упомянул? [11:02:37] <slavazanko> поправил 1882_esc_seq_in_replace_field [11:19:24] <il.smind > >Илья, у меня к тебе вопрос: а автомат в парсере замены нужен или ты его из веяний моды упомянул? он нужен для упрощения, если твой алгоритм лучше я не настаиваю [11:19:37] <il.smind > slavazanko: мода непричем [11:19:50] <slavazanko> это не мой алгоритм [11:19:57] <il.smind > я понимаю [11:20:02] <slavazanko> там переделанный немного патч из тикета [11:20:20] <il.smind > пы просто объяву дал [11:20:26] <slavazanko> да [11:21:34] <il.smind > почему if (len < 1) а не как Андрей предлагал учитывая положительность [11:21:59] <slavazanko> if (len < 1) быстрее работает чем if (len <= 0) [11:22:16] <slavazanko> твоя фраза [11:22:33] <il.smind > моя то моя [11:23:07] <il.smind > а перед этим андрей сказал что len всегда больше или равен 0 [11:23:11] <il.smind > я не проверял [11:23:19] <il.smind > просто уточняю у тебя [11:23:22] <slavazanko> да [11:23:25] <slavazanko> он беззнаковый [11:24:04] <il.smind > тогда if (len == 1) [11:24:07] <il.smind > тогда if (len == 0) [11:24:15] <il.smind > ? [11:24:16] <slavazanko> if ((ssize_t) len <= 0) [11:24:28] <il.smind > ох... [11:24:31] <andrew_b> нет. [11:24:49] <slavazanko> сделал if (len == 0) [11:25:34] <il.smind > в mc_search_regex__replace_handle_esc_seq [11:25:40] <il.smind > что надо распознать? [11:25:48] <slavazanko> ничего [11:25:57] <il.smind > дану [11:26:06] <il.smind > а куча кода там зачем? [11:26:15] <slavazanko> а [11:26:36] <il.smind > что на входе что на выходе? [11:26:56] <slavazanko> распознать надо \{<число>} - десятично \x{число} или \x<число> - hex [11:27:07] <il.smind > ок [11:27:36] <il.smind > ща маленький парсер попробую сделать в приемлимое время [11:29:18] <slavazanko> в дополнение: там ещё \n \b \t и прочие распознаются. и меняются на перевод строки, возврат каретки, табуляцию и т.д. [11:29:54] <il.smind > if (strchr ("ntvbrfa", *next_char) != NULL) ? [11:30:43] <slavazanko> да [11:31:42] <slavazanko> mc_search_regex__replace_handle_esc_seq - это подготовка к замене. Просто определяется, сколько символов скипнуть для следующего этапа. Сама замена происходит в mc_search_regex__process_escape_sequence [11:31:47] <il.smind > т.е возможны варианты \{число} \x{число} \xчисло \Хчисло \xчислоh [11:32:00] <il.smind > \a \b \n \t [11:32:46] <slavazanko> \{число} - десятичное \x{число} - HEX \Хчисло - HEX, только два символа \xчислоh - такого нет [11:33:30] <il.smind > я понял надо принять строку и сказать сколько пропустить и надо ли? [11:33:45] <slavazanko> да. Сколько пропустить и надо ли обрабатывать [11:33:57] <il.smind > \\x [11:34:01] <il.smind > \\n [11:34:13] <il.smind > обрабатывается? [11:34:24] <il.smind > и надо ли? [11:34:33] <il.smind > есть экранирование? [11:34:56] <slavazanko> экранирования нет, насколько я вижу по коду... [11:35:05] <il.smind > это я тоже вижу [11:35:12] <slavazanko> у меня есть там функция - проверить, не заэкранирован ли слэш... [11:35:17] <il.smind > я имею ввиду в теории [11:35:30] <slavazanko> в теории конечно надо проверить [12:08:49] <Зося Синицкая> RSS: Новости для Midnight Commander • Ticket #2531 (pascal syntax highlighting bug) created http://www.midnight-commander.org/ticket/2531 • snapshot5.png attached to Ticket #2531 http://www.midnight-commander.org/attachment/ticket/2531/snapshot5.png • Ticket #2531 (pascal syntax highlighting bug) updated http://www.midnight-commander.org/ticket/2531#comment:1 • Ticket #2531 (pascal syntax highlighting bug) updated http://www.midnight-commander.org/ticket/2531#comment:2 [12:18:36] <il.smind > slavazanko: я нарисовал автомат [12:19:10] <il.smind > сможешь из теста сделать законченную функцию? [12:19:49] <slavazanko> покажь [12:21:02] <il.smind > куда закинуть? [12:21:06] <il.smind > а ща... [12:21:11] <slavazanko> в бранч. коммитом [12:21:21] <andrew_b> В почту. [12:21:32] <il.smind > не [12:21:44] <il.smind > есть чудная вещь [12:21:52] <il.smind > admin@darkstar:/home/projects/test$ cat par.c |fpaste Uploading (3.8K)... http://fpaste.org/Yg94/ [12:22:33] <il.smind > в файл macros засунь последовательность [12:22:59] <il.smind > и запускай par [12:23:21] <il.smind > по идее у меня там ДКА [12:23:32] <andrew_b> Ужасно. [12:23:35] <il.smind > в смысле детерминированный [12:24:36] <il.smind > чо? [12:25:01] <andrew_b> Где case (c), где if (c). Разброд и шатания. [12:25:10] <il.smind > а... [12:25:28] <slavazanko> сделай отдельную функцию. плиз. При этом [12:25:30] <il.smind > ну яж побыстрому писал, смысл то понятен и работает [12:25:35] <slavazanko> case '\\': не нужен [12:25:46] <slavazanko> оно уже так перед вызовом функции [12:25:51] <il.smind > slavazanko: это вход в '\' [12:26:19] <il.smind > ты не понял это не 2 слэша [12:26:28] <il.smind > это экранируется слэш [12:26:30] <slavazanko> и. кстати, это отличный просто повод для юниттеста. Я ща нарисую для старого алгоритма тестик, потом подменю на твой и посмотрю, как он проходит тесты [12:26:42] <il.smind > это и есть юнит тест [12:26:50] <slavazanko> это алгоритм [12:26:54] <il.smind > нет [12:27:02] <il.smind > это писалось как юнит тест [12:27:07] <slavazanko> а тест - это подсовывание ему входных данных и проверка выходных [12:27:15] <il.smind > просто он незаконченные юниттест [12:27:26] <il.smind > но писалось именно так [12:28:23] <il.smind > просто работу такого автомата понять гораздо проще чем ту процедуру [12:28:35] <il.smind > и это не ради моды [12:28:42] <slavazanko> ок. понял [12:29:03] <il.smind > сначала автомат в состоянии START [12:30:20] <il.smind > как только он получил '\' он ждет '{' или 'x' или abnt (допиши по вкусу) [12:30:28] <il.smind > если получил { [12:31:14] BanderOS вышел из конференции [12:31:51] <il.smind > переходит в состояние in_d_key (десятичное число) [12:32:14] <il.smind > дальше ждет '}' или конца передачи [12:32:52] <slavazanko> и опять статус "start"? [12:33:00] <il.smind > если получил 'x' в состоянии START то переходит в состояние in_d_key [12:33:17] <slavazanko> почему он скидывается опять в старт? [12:33:25] <il.smind > slavazanko> и опять статус "start"? да но если не т больше данных то не надо переходить в start [12:33:58] <il.smind > это чтобы считать много всяких полей [12:34:07] <il.smind > последовательностей [12:34:26] <il.smind > если последовательность одна то надо просто выходить их процедуры [12:35:07] <il.smind > т.е. если заведома одна всегда передаётся то переход в start не нужен [12:40:34] BanderOS зашёл в конференцию [13:07:35] <andrew_b> Когда релиз? [13:08:04] <andrew_b> 2520_ctrlg_closes_panels_stable вливать? [13:08:41] <slavazanko> да. вольём [13:08:50] <slavazanko> релиз... давайте послезавтра [13:09:23] <andrew_b> Я про 4.7.5.2, есличо. [13:10:03] <slavazanko> да [13:12:24] <andrew_b> slavazanko: послезавтра? Хорошо бы 2516 в релизе исправить. [13:12:46] <andrew_b> Только я не уверен, как корректно это сделать. [13:13:47] <slavazanko> может, так как в патче? с пометкой TODO [13:13:55] <andrew_b> Не. [13:14:02] <andrew_b> Зачем нам полумеры? [13:16:42] BanderOS вышел из конференции [13:19:05] <il.smind > а с 2516 какие варианты? [13:22:15] <andrew_b> Так?
/*** structures declarations (and typedefs of structures)*****************************************/ [13:24:22] <il.smind > ну мне казалось что как то так [13:25:56] <andrew_b> Ок, так и запишем. [13:37:29] <andrew_b> Please review 2516. [13:39:32] <Зося Синицкая> RSS: Новости для Midnight Commander • Ticket #2516 (mc fails to build on DragonFlyBSD) updated http://www.midnight-commander.org/ticket/2516#comment:7 [13:56:28] <slavazanko> словил сегфайулт на 2501 /path/to/#iso9660/CentOS/openoffice.org-langpack-af_ZA-3.1.1-19.5.el5.x86_64.rpm#rpm/CONTENTS.cpio пробую зайти в CONTENTS.cpio - сегфолт [13:58:12] <andrew_b> Не воспроизводится. [13:58:20] <andrew_b> Надо iso создать? [13:59:31] <slavazanko> гм... у меня скачанный от Центоси [13:59:57] <andrew_b> Завернул rpm в iso. [14:00:05] <andrew_b> Всё равно не сегфолтится. [14:00:30] <slavazanko> ща корку изучу [14:00:47] <andrew_b> slavazanko: а если зайти в простой cpio? [14:01:04] dkostousov вышел из конференции [14:01:10] <andrew_b> О. [14:01:14] <andrew_b> Упало. [14:01:23] <andrew_b> Но не при заходе. [14:01:32] <slavazanko> в простой упало [14:02:02] <slavazanko> есть. стабильно падает на cpio у меня. Я просто скопировал CONTENTS.cpio из rpm [14:02:21] <andrew_b> Хорошо. [14:02:51] <andrew_b> У меня, похоже, падает, когда таймаут истекает. [14:03:42] <andrew_b> Не, не похоже. [14:04:12] <slavazanko> cpio_defer_find (struct defer_inode *l, struct defer_inode *i) строка 159. про переменную l пишет Cannot access memory at address 0x8cd182d1b5d0 [14:05:07] <slavazanko> предыдущая функция в стеке cpio_create_entry():401 [14:05:27] <andrew_b> Есно. [14:05:37] <andrew_b> Там один вызов. [14:06:12] <slavazanko> cpio_read_crc_head ():713 [14:21:09] <andrew_b> У меня падает тут:
#0 0x0805c953 in cpio_free_archive (me=0x8133960, super=0x8220850) at /home/borodin/work/work.c/mc/mc-2501_vfs_split/src/vfs/cpio/cpio.c:203 #1 0x08074bbe in vfs_s_free_super (me=0x8133960, super=0x8220850) at /home/borodin/work/work.c/mc/mc-2501_vfs_split/lib/vfs/direntry.c:386 #2 0x08075872 in vfs_s_free (id=0x8220850) at /home/borodin/work/work.c/mc/mc-2501_vfs_split/lib/vfs/direntry.c:860 #3 0x08080aa6 in vfs_expire (now=0) at /home/borodin/work/work.c/mc/mc-2501_vfs_split/lib/vfs/gc.c:227 [14:21:53] <slavazanko> значит, где-то ещё раньше... повторный free? [14:22:09] <andrew_b> ХЗ. [14:22:41] <andrew_b> У меня падает позже, чем у тебя. У тебя при заходе, а у меня после выхода. [14:29:24] <andrew_b> slavazanko: попробуй так:
type = get_compression_type (fd, name); if (type != COMPRESSION_NONE) [14:34:30] <slavazanko> g_new0 помог [14:34:58] <andrew_b> Все поля, кроме deffered, инициализируются. Всё обнулять не обязательно. [14:35:04] <slavazanko> но после выхода из mc - сегфолт [14:35:17] <andrew_b> :) [14:35:33] <il.smind > slavazanko> g_new0 помог вот я и говорю "вы такие умные..." [14:37:19] <andrew_b> slavazanko/w: а при выходе где? [14:39:38] <slavazanko> src/filemanager.c check_panel_timestamp():495 при этом panel==NULL [14:39:51] <slavazanko> vclass->data == NULL [14:39:58] <slavazanko> vclass->prefix == NULL [14:40:03] <andrew_b> Гм. [14:40:13] <slavazanko> vclass->name = 'axtfs' [14:40:28] <andrew_b> Это после g_free. [14:40:33] <andrew_b> Нормально. [14:41:03] <slavazanko> там главное, что panel == NULL [14:41:19] <andrew_b> Видимо, да. [14:42:38] theMIROn зашёл в конференцию [14:44:48] <slavazanko> extfs_close():973 extfs_ungetlocalcopy():1519 extfs_free_archive():371 extfs_free():1478 [14:44:59] <slavazanko> это выдержки из стека стек [14:55:56] <andrew_b> Это, похоже, ивент возникает, когда панелей уже нет. [14:56:01] <slavazanko> https://bugzilla.redhat.com/show_bug.cgi?id=694042 автодополнение команд пропало. причём если жмакнуть esc-tab в пустой комстроке, то нарисует список всех команд. Если ввести первую букву команды и esc-tab. то нуль реакции [14:57:00] <andrew_b> After some update (can't exactly say version) [14:57:08] <andrew_b> Я ж это исправлял. [14:57:26] <slavazanko> да, сорри [14:57:34] <slavazanko> я погорячился, не на мастере проверил [14:58:06] <il.smind > ты знаешь что с паникёрами во время войны делают? [14:58:39] <slavazanko> бегут за ними [14:59:06] <andrew_b> http://www.midnight-commander.org/ticket/2458 [15:00:55] <il.smind > slavazanko: понял [15:01:15] <il.smind > вот так своим дружкам из редхэта и передай [15:01:22] <slavazanko> уже [15:02:18] <slavazanko> > Это, похоже, ивент возникает, когда панелей уже нет. может, просто грохать обработчик ивента? [15:02:38] <slavazanko> или просто проверять panel != NULL [15:02:40] <andrew_b> Надо уточнить. [15:03:39] <andrew_b> Какой обработчик грохать? vfs_timestamp? [15:03:58] <andrew_b> 644 mc_event_add (MCEVENT_GROUP_CORE, "vfs_timestamp", check_other_panel_timestamp, NULL, NULL); 645 mc_event_add (MCEVENT_GROUP_CORE, "vfs_timestamp", check_current_panel_timestamp, NULL, NULL); [15:04:11] <slavazanko> угу [15:04:43] <slavazanko> mc_event_destroy(MCEVENT_GROUP_CORE, "vfs_timestamp") [15:08:51] <andrew_b> Попроьуй тут:
1737 } [15:09:01] <andrew_b> Перед скобкой. [15:09:05] <andrew_b> midnight.c [15:09:44] <slavazanko> ща [15:16:12] andrew_b вышел из конференции [15:21:53] <slavazanko> не падает [15:22:03] <slavazanko> а блин. Андрюха домой. [15:22:29] <slavazanko> Короче. влуплю все изменения в бранч, пусть засквошивает сам, куда посчитает нужным :) [15:23:54] iNode вышел из конференции [16:02:01] <slavazanko> http://asplinux.ru/ R.I.P [16:02:54] <il.smind > не сожалею, не скорблю [17:07:48] theMIROn вышел из конференции [17:08:02] theMIROn зашёл в конференцию [17:12:17] theMIROn вышел из конференции [17:13:06] il.smind вышел из конференции [17:19:42] andrew_b зашёл в конференцию [18:42:02] andrew_b вышел из конференции [20:13:33] il.smind зашёл в конференцию [20:43:07] il.smind вышел из конференции [20:43:15] il.smind зашёл в конференцию [21:38:55] BanderOS зашёл в конференцию [22:57:38] il.smind вышел из конференции: Компьютер вошёл в спящий режим [23:42:25] BanderOS вышел из конференции