[06:19:20] iNode зашёл в конференцию [06:51:34] il.smind. зашёл в конференцию [08:26:23] andrew_b зашёл в конференцию [08:27:54] slavazanko/h вышел из конференции [08:37:13] slavazanko/h зашёл в конференцию [08:51:40] <Зося Синицкая> RSS: Новости для Midnight Commander • Ticket #2532 (bad panel in connect to FreeBSD-8.2 FISH) updated http://www.midnight-commander.org/ticket/2532#comment:1 [08:53:31] <andrew_b> il.smind.: привет! [08:53:53] <andrew_b> il.smind.: дефолты в 2534 не прописал. [08:54:52] <slavazanko/h> привет [09:00:21] <il.smind.> andrew_b: а обещал, да? [09:01:42] <il.smind.> напомни на что ты хотел поменять +MarkLeft = shift-left [09:01:53] <il.smind.> убрать? [09:03:55] <il.smind.> я помню что мы обсуждали но запамятовал [09:03:59] <il.smind.> slavazanko/h: привет [09:04:07] <il.smind.> andrew_b: привет [09:04:11] <il.smind.> il.smind.: привет [09:06:46] <slavazanko/h> вошёл в рекурсию [09:13:49] <il.smind.> slavazanko/h: нет [09:13:58] <slavazanko/h> :) [09:29:01] <andrew_b> il.smind.: поменять не здесь. [09:29:14] <il.smind.> ? [09:29:15] <andrew_b> А в ресайзе панелей. [09:29:20] <il.smind.> а... [09:30:32] <il.smind.> andrew_b: погоди... 2534 это не про ресайз [09:30:40] <il.smind.> это про пометку [09:31:18] <andrew_b> Да. [09:31:51] <andrew_b> il.smind.: create onto ~/.local/share/mc/fish/ В 4.7.5 этого ещё нет. [09:32:11] <andrew_b> Там всё в ~/.mc [09:32:49] <andrew_b> Исправь в http://midnight-commander.org/ticket/2532#comment:2 [09:35:50] <andrew_b> slavazanko/h: ты уверен в 2544_search_trim_leading_spaces? [09:36:16] <andrew_b> Там каждая строка два раза будет перекодироваться. [09:36:41] <il.smind.> В 4.7.5 этого ещё нет. как нет? [09:36:47] <il.smind.> вроде есть [09:36:55] <il.smind.> а... [09:37:01] <il.smind.> ~/.mc [09:37:03] <il.smind.> ну да [09:37:38] <il.smind.> OSError: [Errno 12] Cannot allocate memory [09:39:29] <slavazanko/h> апач нужен? [09:39:46] <slavazanko/h> после его запуска стало чаще [09:40:34] <il.smind.> slavazanko/h> апач нужен? ну ты же знаешь что я через вебдав [09:40:53] <il.smind.> давай на крон поставим [09:41:53] <slavazanko/h> рестарт? [09:42:41] <slavazanko/h> я сегодня уже рестартовал апач и трак [09:44:44] <il.smind.> slavazanko/h> рестарт? [09:44:50] <il.smind.> рестарт [09:45:05] <il.smind.> можно как то это отследить? [09:45:12] <il.smind.> вожно я думаю [09:45:21] <il.smind.> ну как временную меру [09:47:58] <il.smind.> а почему именно Cannot allocate memory ? [09:48:14] <il.smind.> нельзя её выделить из свопа? [09:48:51] <il.smind.> в гугле поищите Trac detected an internal error: OSError: [Errno 12] Cannot allocate memory [09:49:13] <il.smind.> первая ссылка ведёт на "Форум - Desktop - нужна замена файловому менеджеру" :) [09:52:08] <slavazanko/h> да, забавно :) [09:52:45] <slavazanko/h> по поводу свопа: нет у нас его. и не может быть. ибо мы в XEN живём. свопа не подключаются [09:53:14] <il.smind.> т.е. выхода нет? [09:54:45] <slavazanko/h> ну можно попробовать Винни попромить памяти в виртуалку докинуть.... [09:56:15] <il.smind.> гигочек? [09:56:36] <slavazanko/h> угу [09:58:21] <il.smind.> кто просить будет? [10:00:25] <slavazanko/h> я [10:01:06] il.smind. вышел из конференции [10:01:49] <slavazanko/h> только чуток попозжа :) на мне сейчас два спиногз\рыза повисли. руку освободил и пишу коекак. жена поехала в магазы на закупки. в эту субботу будут кресьбины детей [10:33:39] andrew_b вышел из конференции [10:54:09] il.smind. зашёл в конференцию [10:55:45] andrew_b зашёл в конференцию [11:05:06] BanderOS зашёл в конференцию [11:08:10] <slavazanko/h> всё, я тут [11:08:57] andrew_b вышел из конференции: Replaced by new connection [11:09:04] andrew_b зашёл в конференцию [11:15:40] BanderOS вышел из конференции [11:17:26] BanderOS зашёл в конференцию [11:21:18] BanderOS вышел из конференции [11:26:49] <il.smind.> это я тут [11:30:12] <andrew_b> il.smind.: - for (i = 0; i < lines; i++) + for (; lines != 0; lines--) [11:30:56] <il.smind.> почему? [11:31:06] <il.smind.> т.е. смысл какой? [11:31:25] <il.smind.> то что считать меньше будет вроде понятно [11:31:52] <il.smind.> но на 20 пометках ты там не сильно выгадаешь [11:31:54] <andrew_b> Избавляемся от лишней переменной. [11:32:11] <il.smind.> а что это даст в килобайтах? [11:32:25] <il.smind.> хоть пару бит убавится? [11:32:31] <andrew_b> Да. [11:32:36] <il.smind.> ок [11:33:22] <andrew_b> Дефолты пропиши. [11:35:30] <il.smind.> andrew_b: намекни что именно? [11:44:52] <il.smind.> andrew_b: тут static const global_keymap_ini_t default_main_keymap[] = {
? [11:45:46] <il.smind.> а не... [11:45:49] <il.smind.> вот тут static const global_keymap_ini_t default_panel_keymap[] = { [12:41:50] <andrew_b> il.smind.: ну что за... int i; variable defined but not used. [12:42:04] <il.smind.> ) [12:42:13] <il.smind.> вам не угодишь ) [12:42:19] <andrew_b> Два раза. [12:42:25] <il.smind.> ща всё будет в лучшем виде [12:45:00] <il.smind.> andrew_b: готово [13:11:04] <andrew_b> il.smind.: ты сам-то тестировал? [13:12:26] <slavazanko/h> на sftp копирует с глюком в виде "ресурс временно недоступен". [13:19:59] <andrew_b> il.smind.: чё молчим? [13:21:51] <slavazanko/h> il.smind.: а в чём смысл диалога настроек для sftp-соединения? зачем там вводить ключи? Они разве не читаются из ~/.ssh/config? [13:32:50] <il.smind.> а вдруг будут в другом месте? [13:33:24] <il.smind.> slavazanko/h> на sftp копирует с глюком в виде "ресурс временно недоступен". да я это испортил и именно это и хотел бы починить но я запутался [13:33:46] <andrew_b> il.smind.: можно я? [13:33:54] <slavazanko/h> ключ - это не свойство VFS, это свойство соединения. Поэтому логичнее было бы при вводе строки подключения иметь где-нить на диалоге кнопку "настройки". Там вводить путь к ключу [13:33:55] <il.smind.> Фамилия? [13:34:16] <il.smind.> slavazanko/h: конечно ! [13:34:21] <il.smind.> но я не владею! [13:34:23] <andrew_b> il.smind.: Табуреткин. [13:34:36] <il.smind.> andrew_b: Пожалуйста Табуреткин! [13:35:16] <andrew_b> il.smind.: вопрос по 2534: в каком объеме было проведено тестирование бранча? [13:36:07] <il.smind.> andrew_b: до того как он подвергся улучшению я его тестировал [13:36:18] <il.smind.> сейчас оно тоже работает [13:36:27] <andrew_b> Условно. [13:36:27] <il.smind.> а что конкретно не так? [13:36:46] <andrew_b> Во-первых, шифт-стрелками уже не выделить текст в комстроке. [13:37:04] <andrew_b> Они перехватываются панелью. [13:37:39] <il.smind.> andrew_b: мы это обсуждали с тобой [13:38:07] <il.smind.> поэтому я и предлагал убрать из дефолтов [13:38:50] <andrew_b> Только из дефолтов? [13:40:20] <il.smind.> ну да [13:40:40] <il.smind.> там можно проверять конечно пустоту комстроки [13:40:55] <il.smind.> но получается более заморочено и не очевидно [13:42:33] <il.smind.> >Поэтому логичнее было бы при вводе строки подключения иметь где-нить на диалоге кнопку "настройки". у нас нет диалога настроек [13:42:48] <il.smind.> т.к. не предусмотрено по дизайну [13:43:23] <il.smind.> а так то да, мне нравится как в фаре [13:43:34] <andrew_b> il.smind.: Убрать только из дефолтов, но оставить в mc.keybind? Это как-то наполовину. Лучше вообще не назначать ничего.
Дальше. Настрой панель в режим "Укороченный" (в две колонки). Открой каталог src/filemanager. Стань на .. Сколько у тебя строк в панели? [13:43:42] <il.smind.> для каждого соединения свои настройки [13:44:43] <il.smind.> 46 [13:45:13] <il.smind.> >Лучше вообще не назначать ничего. я не против [13:46:39] <il.smind.> andrew_b: что то не так? [13:47:47] <andrew_b> строк 46, а файлов в панели 51 включая .. [13:48:36] <andrew_b> Стань на .. и нажми shift-right два раза. [13:48:52] <andrew_b> Ты должен оказаться на последнем файле. [13:49:18] <andrew_b> По идее, он должен быть помечен. А он нет. [13:50:58] <il.smind.> не... [13:51:07] <il.smind.> он просто последний не помечает [13:51:12] <il.smind.> надо поправить [13:51:23] <il.smind.> честно говоря просто не заметил [13:51:24] <andrew_b> Да. [13:51:26] <il.smind.> ща [13:52:08] <il.smind.> еще по поводу инверсии [13:52:18] <il.smind.> мне не нравится как сейчас [13:52:26] <il.smind.> то что оно инверсирует [13:52:57] <andrew_b> Всё в твоих руках. [13:53:04] <il.smind.> я переделаю чтобы оно помечало в зависимости от текущего состояния файла под курсором [13:53:23] <il.smind.> если он помечен будет сниматься отметка [13:53:27] <andrew_b> Ну... Логично. [13:53:41] <il.smind.> если не помечен то ставиться [13:54:04] <il.smind.> т.е. если тек файл не помечен начнется пометка а не инвертирование [13:54:16] <andrew_b> Да поняли уже все. [13:54:16] <il.smind.> сейчас инвертирование происходит [13:54:53] <il.smind.> е если на пути встречаются не помеченные то они метятся и наоборот [13:54:57] <il.smind.> :)) [13:55:02] <il.smind.> ок [15:18:47] <andrew_b> Ну, что у нас плохого? [15:19:28] iNode вышел из конференции [15:19:29] <slavazanko/h> Илья меня изнасиловал при помощи своего sftp [15:19:52] <andrew_b> slavazanko/h: он и меня пытался. [15:20:01] <andrew_b> Я не отдался. [15:20:04] <slavazanko/h> ну.. тебя пытался, а меня сделал [15:21:22] <slavazanko/h> наверное, скоро новый vfs-плагин у нас будет :) внебрачный [15:22:16] <andrew_b> Вот только из-за DEV_new_vfs его потом переделывать придётся. [15:24:32] <Зося Синицкая> RSS: Новости для Midnight Commander • Ticket #2459 (mc switches to left panel before calling command history) updated http://www.midnight-commander.org/ticket/2459#comment:11 [15:34:19] <slavazanko/h> угу. это всё привычка Ильи бежать впереди паровоза... [15:38:00] <slavazanko/h> > dir = SELECT_NEXT; это можно не делать. без break оно и так зайдёт в следующий case вне зависимости от результата. в ассемблерном коде там просто генерится пачка jmp в начале и непрерывный код вместо case. Break просто генерит jmp на конец switch (следующую инструкцию) [15:43:40] <andrew_b> Нет. [15:44:03] <andrew_b> Если этого не делать, получится вечный цикл. [15:44:13] <andrew_b> Я на это налетел. [15:46:18] <andrew_b> Важно не то, что он зайдёт в следующий case сечас, а то, что оне зайдёт туда на следующей итерации цикла. [15:46:56] <il.smind.> slavazanko/h> угу. это всё привычка Ильи бежать впереди паровоза... чооо? [15:47:10] <andrew_b> il.smind.: через плечо. [15:47:18] <il.smind.> andrew_b: так и знал [15:47:49] <andrew_b> il.smind.: Взвалил брёвнышко на плечо и весело понёс. [15:48:11] <il.smind.> andrew_b> slavazanko/h: он и меня пытался. да с тебя разве дождёшься? [15:49:14] <il.smind.> andrew_b> Вот только из-за DEV_new_vfs его потом переделывать придётся. переделать не проблема [15:49:27] <il.smind.> главное понять как оно устроено [15:49:41] <il.smind.> оно - "плагины" [15:50:00] <il.smind.> заодно понять что можно улучшить или добавить [15:50:23] <il.smind.> разве оно того не стоит? [15:52:24] <slavazanko/h> Эта... Илья, давно хотел попросить. Ты пиши даже отладку так, чтобы она без варнингов собиралась. [15:53:09] <andrew_b> slavazanko/h: у него tcc, ему пофигу. [15:53:47] <slavazanko/h> печально. [15:54:26] <slavazanko/h> andrew_b: да, зависает, если убрать.. гм. Ок, ща немного погоняю и проголосую [15:56:02] <andrew_b> slavazanko/h: у тебя некто Slyfox где-то в пределах досягаемости есть? [15:56:15] <andrew_b> У меня его JID нету. [15:56:35] <slavazanko/h> ща поищу [15:59:12] <andrew_b> Если найдешь, спроси его, что он хотел http://midnight-commander.org/ticket/2129. [15:59:39] slavazanko/h вышел из конференции [16:02:33] slavazanko/h зашёл в конференцию [16:02:35] <slavazanko/h> slyfox@jabber.ru [16:09:18] <il.smind.> slavazanko/h: попросить то можешь :) [16:09:40] <slavazanko/h> jy gjrf yt lfk lj,hj yf fdnjhbpfwb. [16:09:49] <slavazanko/h> он пока не дал добро на авторизацию [16:09:59] <slavazanko/h> без неё он не увидит моих мессаг [16:10:00] <il.smind.> я про отладку [16:10:19] <il.smind.> а слая нет [16:10:22] <slavazanko/h> а. вот гад ненагибаемый [16:11:13] <il.smind.> я ему вечером напишу про 2129 [16:12:23] <il.smind.> slavazanko/h: кстати [16:12:29] <il.smind.> по поводу sftp [16:12:33] <slavazanko/h> ? [16:12:46] <il.smind.> там есть баг который я не одолел [16:12:53] <slavazanko/h> какой? [16:13:03] <il.smind.> seek [16:13:12] <il.smind.> увидеть просто [16:13:19] <il.smind.> нажимаем F4 [16:13:32] <il.smind.> и видим что первых 5 байт нема [16:13:53] <il.smind.> в логе вот это sftpfs_open write mode: [0] sftpfs_open SUP->session [0x8222ec8] sftp_handle [0x8237500] sftpfs_read: [0x8237500] 5 sftpfs_lseek sftpfs_read: [0x8237500] 1024 sftpfs_read: [0x8237500] 1024 sftpfs_read: [0x8237500] 1024 [16:14:13] <slavazanko/h> lseek на какую позицию? есть отладка? [16:14:32] <slavazanko/h> а, пять байт в куда-то прочитались.. гм [16:14:57] <il.smind.> они не просто кудато [16:15:05] <slavazanko/h> в gdb пускал? останавливался там? стэк вызовов видел? [16:15:09] <il.smind.> да [16:15:17] <il.smind.> я тут логи кидал [16:15:17] <slavazanko/h> кто эти пять байт читает надо узнать [16:15:26] <il.smind.> но я не понял как победить [16:15:36] <il.smind.> slavazanko/h: ща скажу кто [16:32:05] <il.smind.> andrew_b: тут? [16:33:25] <il.smind.> andrew_b: я тебе кидал кусочки из отладки из gdb [16:33:39] <il.smind.> можешь сюда запостить? [16:34:37] <andrew_b> Если это было на работе, то нет. [16:34:50] <andrew_b> Логи там остались. [16:35:37] <il.smind.> понял [16:37:10] <il.smind.> Breakpoint 1, sftpfs_read (data=0x8216460, buffer=0x8215210 "", count=5) at sftpfs.c:881 881 struct vfs_s_super *super = (struct vfs_s_super *) data; (gdb) bt #0 sftpfs_read (data=0x8216460, buffer=0x8215210 "", count=5) at sftpfs.c:881 #1 0x0809c9a8 in mc_read (handle=100, buffer=0x8215210, count=5) at vfs.c:886 #2 0x080ec45f in edit_insert_file (edit=0x8234448, filename=0x81f7478 "bla.c") at edit.c:2036 #3 0x080e8fee in edit_load_file (edit=0x8234448) at edit.c:479 #4 0x080ec8f9 in edit_init (edit=0x8234448, lines=34, columns=114, filename=0x821daf0 "bla.c", line=0) at edit.c:2164 #5 0x080f8f5d in edit_file (_file=0x821daf0 "bla.c", line=0) at editwidget.c:378 #6 0x080ae66b in do_edit_at_line (what=0x821daf0 "bla.c", internal=1, start_line=0) at cmd.c:754 #7 0x080ad397 in do_edit (what=0x821daf0 "bla.c") at cmd.c:195 #8 0x080ae78b in edit_cmd () at cmd.c:786 #9 0x080c80e3 in midnight_execute_cmd (sender=0x82181d8, command=42) at midnight.c:1225 #10 0x080c88d6 in midnight_callback (h=0x81f7950, sender=0x82181d8, msg=DLG_ACTION, parm=42, data=0x0) at midnight.c:1618 #11 0x0808d769 in buttonbar_call (bb=0x82181d8, i=3) at buttonbar.c:150 #12 0x0808d7ed in buttonbar_callback (w=0x82181d8, msg=WIDGET_HOTKEY, parm=1004) at buttonbar.c:172 #13 0x0808e316 in send_message (w=0x82181d8, msg=WIDGET_HOTKEY, parm=1004) at ../../lib/widget/widget-common.h:132 #14 0x0808ebd6 in dlg_try_hotkey (h=0x81f7950, d_key=1004) at dialog.c:419 #15 0x0808ece6 in dlg_key_event (h=0x81f7950, d_key=1004) at dialog.c:468 #16 0x0808fdd0 in dlg_process_event (h=0x81f7950, key=1004, event=0xbffff290) at dialog.c:1111 #17 0x0808eea5 in frontend_run_dlg (h=0x81f7950) at dialog.c:527 #18 0x0808fe83 in run_dlg (h=0x81f7950) at dialog.c:1143 #19 0x080c7b96 in create_panels_and_run_mc () at midnight.c:1010 #20 0x080c8e9d in do_nc () at midnight.c:1761 #21 0x0805881d in main (argc=1, argv=0xbffff414) at main.c:499 [16:38:52] <andrew_b> blocklen = mc_read (file, buf, sizeof (VERTICAL_MAGIC)); [16:39:01] <andrew_b> Вот твои 5 байт. [16:39:03] <il.smind.> )) [16:39:05] <il.smind.> lf [16:39:07] <il.smind.> да [16:39:12] <il.smind.> мало того [16:39:19] <il.smind.> это еще и мой код :) [16:39:35] <andrew_b> Я помню. [16:39:43] <il.smind.> понаберут ля по объявлению [16:40:30] <slavazanko/h> отмазаться, что "мопед не мой, я только объяву кинул" не получится [16:41:41] <il.smind.> т.е. сик не скачет на 0 [16:41:45] <il.smind.> так? [16:41:52] <slavazanko/h> угу [16:41:57] <il.smind.> по факту... [16:42:05] <il.smind.> надо зыредь [16:42:48] <andrew_b> Не отрабатывает 2043 mc_lseek (file, 0, SEEK_SET); [16:43:06] <il.smind.> это то то да [16:43:23] <il.smind.> но это ведь обёткка а реализация она в [16:43:36] <il.smind.> sftpfs_lseek [16:46:29] <andrew_b> Что-то странное 956 LIBSSH2_SFTP_HANDLE *fh = SUP->sftpfile_handle; [16:46:52] <andrew_b> А... [16:47:02] <il.smind.> andrew_b: это говнокод, а почему вы спрашиваете? [16:47:11] <il.smind.> тут такое дело [16:47:55] <il.smind.> по сути это означает что для одного супера я выделяю только один хэндл [16:48:12] <il.smind.> т.е. одновветенно можно открыть только 1 файл [16:48:25] <il.smind.> а применительно в мультиэдиту [16:48:59] <il.smind.> это значит что второе открытие файла приведёт к переписыванию хэндла [16:49:23] <il.smind.> но я не знаю как решить данную задачу [16:49:31] <slavazanko/h> http://www.libssh2.org/libssh2_sftp_seek.html Deprecated function. Use libssh2_sftp_seek64(3) <http://www.libssh2.org/libssh2_sftp_seek64.html> instead! [16:49:52] <il.smind.> libssh2_sftp_seek64 это libssh2_sftp_seek [16:50:12] <il.smind.> наоборот [16:50:23] <slavazanko/h> You MUST NOT seek during writing or reading a file with SFTP, as the internals use outstanding packets and changing the "file position" during transit will results in badness. [16:50:26] <il.smind.> libssh2_sftp_seek это libssh2_sftp_seek64 [16:50:29] <andrew_b> Это не одно и то же. 255 LIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset); 256 LIBSSH2_API void libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle, 257 libssh2_uint64_t offset); [16:50:52] <il.smind.> странно [16:50:53] <il.smind.> ща [16:52:18] <il.smind.> LIBSSH2_API void libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset) { libssh2_sftp_seek64(handle, (libssh2_uint64_t)offset); } [16:52:41] <andrew_b> Версия какая? [16:52:42] <Зося Синицкая> andrew_b: Ошибка! Удалённый сервер не найден! [16:52:49] <andrew_b> Зося Синицкая: иди в опу. [16:52:55] <il.smind.> 1.2.8 [16:52:59] <Зося Синицкая> andrew_b: издеваешься чтоли? [16:53:03] <il.smind.> )) [16:53:28] <andrew_b> В 1.2.7
1602 /* libssh2_sftp_seek 1603 * Set the read/write pointer to an arbitrary position within the file 1604 */ 1605 LIBSSH2_API void 1606 libssh2_sftp_seek(LIBSSH2_SFTP_HANDLE *handle, size_t offset) 1607 { 1608 if(handle) 1609 handle->u.file.offset = offset; 1610 } 1611 1612 /* libssh2_sftp_seek64 1613 * Set the read/write pointer to an arbitrary position within the file 1614 */ 1615 LIBSSH2_API void 1616 libssh2_sftp_seek64(LIBSSH2_SFTP_HANDLE *handle, libssh2_uint64_t offset) 1617 { 1618 if(handle) 1619 handle->u.file.offset = offset; 1620 } [16:53:35] <andrew_b> Ну не суть. [16:53:46] <andrew_b> В принципе то же самое. [16:53:49] <il.smind.> да это не меняет [16:53:57] <il.smind.> и никак не причастно к [16:54:05] <il.smind.> но я поменяю [16:54:20] <il.smind.> вот только не пойму вот этого... [16:55:24] <il.smind.> sftpfs_open SUP->session [0x8222f10] sftp_handle [0x820e480] sftpfs_read: [0x820e480] 5 sftpfs_lseek: [0] sftpfs_read: [0x820e480] 1024 sftpfs_read: [0x820e480] 1024 [16:55:38] <il.smind.> зачем 2К читать [16:55:47] <il.smind.> если файл 20 байт [16:57:17] <slavazanko/h> оно не читает 2К. оно заявляет, что не прочь прочитать столько. реально читаются всё те же 20 байт [17:00:46] <andrew_b> You MUST NOT seek during writing or reading a file with SFTP, as the internals use outstanding packets and changing the "file position" during transit will results in badness. [17:02:18] <il.smind.> первый 1024 это (gdb) bt #0 sftpfs_read (data=0x8216750, buffer=0x8220b50 "perte", count=1024) at sftpfs.c:881 #1 0x0809c9ac in mc_read (handle=100, buffer=0x8220b50, count=1024) at vfs.c:886 #2 0x080ec57e in edit_insert_file (edit=0x8234448, filename=0x8221180 "help.c") at edit.c:2061 #3 0x080e8ff2 in edit_load_file (edit=0x8234448) at edit.c:479 #4 0x080ec8fd in edit_init (edit=0x8234448, lines=34, columns=114, filename=0x81feef0 "help.c", line=0) at edit.c:2164
вторые
#0 sftpfs_read (data=0x8216750, buffer=0x8220b50 "xt file br\n", count=1024) at sftpfs.c:881 #1 0x0809c9ac in mc_read (handle=100, buffer=0x8220b50, count=1024) at vfs.c:886 #2 0x080ec57e in edit_insert_file (edit=0x8234448, filename=0x8221180 "help.c") at edit.c:2061 #3 0x080e8ff2 in edit_load_file (edit=0x8234448) at edit.c:479 #4 0x080ec8fd in edit_init (edit=0x8234448, lines=34, columns=114, filename=0x81feef0 "help.c", line=0) at edit.c:2164 #5 0x080f8f61 in edit_file (_file=0x81feef0 "help.c", line=0) at editwidget.c:378 #6 0x080ae66f in do_edit_at_line (what=0x81feef0 "help.c", internal=1, start_line=0) at cmd.c:754 #7 0x080ad39b in do_edit (what=0x81feef0 "help.c") at cmd.c:195 #8 0x080ae78f in edit_cmd () at cmd.c:786 #9 0x080c80e7 in midnight_execute_cmd (sender=0x82185f8, command=42) at midnight.c:1225 #10 0x080c88da in midnight_callback (h=0x81f7950, sender=0x82185f8, msg=DLG_ACTION, parm=42, data=0x0) at midnight.c:1618 [17:03:38] <il.smind.> andrew_b: эм я правильно понял, то что там написано мелкими буквами? [17:03:55] <il.smind.> я не должен делать сик ? [17:04:15] <il.smind.> если открыл файл на запись? [17:04:25] <andrew_b> Я пока не понял. [17:05:40] <slavazanko/h> что-то мне кажется, что надо переоткрывать файл и делать сначала seek, а потом уже читать или писать... [17:05:54] <slavazanko/h> в середине чтения нельзя сикать... [17:06:16] <slavazanko/h> или нельзя сикать в обратном направлении, ибо там поток валит [17:07:40] <slavazanko/h> http://translate.google.com/?langpair=en|ru#en|ru|You%20MUST%20NOT%20seek%20during%20writing%20or%20reading%20a%20file%20with%20SFTP%2C%20as%20the%20internals%20use%20outstanding%20packets%20and%20changing%20the%20%22file%20position%22%20during%20transit%20will%20results%20in%20badness. [17:08:33] <andrew_b> http://trac.libssh2.org/changeset/0cc14be09dbd388edb7816f70b1a9dbfea2277d1/libssh2 [17:08:49] <andrew_b> Нужно попробовать 1.2.8 [17:14:25] <il.smind.> дак у меня 1.2.8 [17:14:31] <il.smind.> и всё плохо [17:14:59] <il.smind.> вот только вопрос, это нормально что я файл наживую правлю [17:15:21] <il.smind.> может его в tmp закинуть предварительно? [17:16:06] <il.smind.> только как понять что его из редактора читают а не из функции копирования? [17:17:43] <slavazanko/h> в lseek и копируй в temp. С переоткрытием handle и изменением где-нить флагом "файл теперь локальный". А при закрытии копируй файл на удалённую сторону [17:17:48] <slavazanko/h> хотя и комтыль... [17:17:51] <slavazanko/h> костыль [17:18:09] <il.smind.> slavazanko/h: ты не понял [17:18:16] <andrew_b> il.smind.: А без разницы. Файл в редакторе всё равно в памяти. [17:18:19] <il.smind.> lseek делается не только [17:18:21] <andrew_b> А не на диске. [17:18:30] <il.smind.> andrew_b: а. да точно [17:18:35] <il.smind.> вот тогда [17:18:56] <slavazanko/h> может, эти пять байт читать после прочтения файла? [17:19:02] <il.smind.> надо если lseek то закрыть открыть и сикнуть [17:19:14] <il.smind.> тьху [17:19:14] <slavazanko/h> типа, прочитали в редакторе и потом читаем неиз mc_read, а из памяти [17:19:38] <il.smind.> надо если lseek на позицию меньшую чем уже считано то закрыть открыть и сикнуть [17:19:50] <andrew_b> Не получится. [17:19:55] <slavazanko/h> моя мысля: пять байт не читать и сикать, а прочитать весь файл в редакторе и потом проверить первых пять байт [17:19:55] <il.smind.> почему? [17:20:14] <il.smind.> slavazanko/h: ну это не то [17:20:15] <andrew_b> il.smind.: хэндл другой будет. [17:20:20] <il.smind.> сделать можно [17:20:31] <il.smind.> andrew_b> il.smind.: хэндл другой будет. а... [17:20:49] <il.smind.> и чо? [17:20:52] <il.smind.> я его заменю [17:20:58] <andrew_b> vfs не поймёт. [17:21:01] <il.smind.> мне в sftpfs_lseek [17:21:09] <il.smind.> попадает не хэндл [17:21:22] <il.smind.> а (struct vfs_s_super *) data; [17:21:39] <il.smind.> а в ней уже ссылка на хэндл [17:21:49] <andrew_b> Тебе в mc_read попадает хэндл. [17:21:51] <il.smind.> заменил и концы в воду [17:22:02] <il.smind.> andrew_b: ну это не важно [17:22:06] <il.smind.> а... [17:22:10] <il.smind.> ща... [17:22:24] <il.smind.> нет [17:22:27] <il.smind.> ssize_t sftpfs_read (void *data, char *buffer, size_t count) { int rc; struct vfs_s_super *super = (struct vfs_s_super *) data; LIBSSH2_SFTP_HANDLE *fh = SUP->sftpfile_handle; [17:22:36] <il.smind.> попадает (struct vfs_s_super *) data; [17:22:47] <andrew_b> Надо всегда использовать хэндл, который вернула mc_open. [17:23:34] <slavazanko/h> а что изменится, если закрыть старый хэндл и открыть новый и подсунуть это в vfs_s_super? [17:24:13] <il.smind.> slavazanko/h: дак я про то и говорю [17:24:31] <il.smind.> andrew_b: у меня open не хэндл вертает [17:24:37] <il.smind.> а super [17:25:16] <il.smind.> иначе там никак не получалось вытащить хэндл сессии [17:28:21] <il.smind.> я вот что подумал [17:28:43] <il.smind.> мне надо еще имя файла хранить в супере [17:29:13] <andrew_b> Все хэндлы на открытые файлы хранятся в массиве. 100 static GPtrArray *vfs_openfiles; [17:29:28] <il.smind.> в связке хэндл файла - имя файла [17:29:42] <andrew_b> il.smind.: зачем тебе имя файла? [17:30:17] <il.smind.> я уже выше писал что для одной сессии я могу сейчас открыть не более одного файла [17:30:29] <il.smind.> а это плохо [17:30:49] <andrew_b> Ну дак дело не в имени файла. [17:30:55] <il.smind.> если пользователь откроет еще один файл то кирдык [17:31:26] <andrew_b> Я же тебе говорил, что твой плугин не поддерживает несколько файлов. [17:31:28] <il.smind.> а как мне привязать хэндл к открытому файлу [17:31:42] <il.smind.> если я передаю не хэндл а super [17:32:12] <il.smind.> а не супер передавать а хэндл я не могу [17:32:19] <andrew_b> Другие vfs как-то справляются. [17:32:37] <il.smind.> нет других vfs [17:32:46] <il.smind.> кроме локальной [17:32:59] <andrew_b> Почему? [17:33:07] <andrew_b> А архивы? [17:33:15] <il.smind.> то что через afs оно работает с tmp [17:33:29] <il.smind.> т.е. читай локально [17:33:33] <andrew_b> А самба? [17:33:43] <il.smind.> остаётся самба [17:33:49] <il.smind.> воот.. [17:34:00] <il.smind.> я не до конца разобрался с апи [17:34:11] <il.smind.> но вот с sftp есть загвоздка [17:34:59] <il.smind.> в нём внутри есть функции для вытаскивания хэндла сессии [17:35:09] <il.smind.> но оно наружу не отсвечивает [17:35:55] <il.smind.> если бы было то мне не пришлось бы изгаляться с супером [17:36:10] <il.smind.> я бы просто вызвал бы их функцию [17:37:46] <il.smind.> у себя они это делают примерно так
sftp_packet_read(LIBSSH2_SFTP *sftp) { LIBSSH2_CHANNEL *channel = sftp->channel; LIBSSH2_SESSION *session = channel->session; [17:38:26] <andrew_b> С супером тебе всё равно надо что-то делать, если ты хочешь боддерживать несколько сессий одновременно. [17:38:39] <il.smind.> andrew_b: это уже работает [17:38:52] <il.smind.> я переделал поиск супера [17:39:13] <il.smind.> оно по хосту и имени пользователя находит [17:39:21] <il.smind.> там всё ок [17:39:33] <il.smind.> можно открывать несколько сессий [17:39:59] <il.smind.> раньше оно брало первую [17:40:07] <il.smind.> теперь находит нужную [17:41:23] <il.smind.> ээх, вот бы на google summer of code бы вывесить создание samba плагина [17:41:44] <il.smind.> там реально я думаю писать неделю первый прототип... [17:42:16] <il.smind.> если использовать libsamba или как там его... [17:42:29] <il.smind.> smbclient [17:46:32] iNode зашёл в конференцию [17:49:00] <il.smind.> о есть libssh2_sftp_tell64 [17:49:15] <il.smind.> которая мне скажет текущий офсет [17:49:51] <andrew_b> Она-то скажет. [17:49:58] <andrew_b> А дальше? [17:50:31] <il.smind.> закрываю, открываю, смещаюсь если надо сместиться на меньшее чем сейчас [18:06:38] <il.smind.> блин [18:06:41] <il.smind.> в sftpfs_lseek [18:06:53] <il.smind.> не передаётся me [18:07:04] <il.smind.> struct vfs_class *me [18:07:12] <il.smind.> где его взять? [18:07:26] <il.smind.> имея super [18:08:59] <il.smind.> super->me [18:18:31] andrew_b вышел из конференции [18:28:04] iron.mask зашёл в конференцию [18:28:39] iron.mask вышел из конференции: qutIM : Jabber plugin [18:56:56] il.smind. вышел из конференции [21:12:18] il.smind зашёл в конференцию [22:06:43] theMIROn вышел из конференции: Miranda IM. Menshe. Pushche. Proshhe! [22:18:23] ASM вышел из конференции [22:27:04] theMIROn зашёл в конференцию [22:31:43] theMIROn вышел из конференции: Miranda IM. Menshe. Pushche. Proshhe! [22:52:15] theMIROn зашёл в конференцию [22:56:43] theMIROn вышел из конференции: Miranda IM. Menshe. Pushche. Proshhe! [23:17:14] theMIROn зашёл в конференцию [23:18:21] slavazanko/h вышел из конференции [23:21:43] theMIROn вышел из конференции: Miranda IM. Menshe. Pushche. Proshhe! [23:22:10] il.smind вышел из конференции: Logged out [23:42:01] theMIROn зашёл в конференцию [23:46:43] theMIROn вышел из конференции: Miranda IM. Menshe. Pushche. Proshhe!