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

Тема: http://www.midnight-commander.org | Latest stable release: 4.7.5.2
[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!
Powered by freQ Powered by Python Valid XHTML 1.0 Transitional Valid CSS!