mc-dev
mc-dev@conference.jabber.ru
[03:47:02] slavazanko/w вышел из конференции
[03:49:12] slavazanko/w зашёл в конференцию
[06:22:41] andrew_b зашёл в конференцию
[07:16:00] <iliamaslakov> slavazanko/w, !
[07:16:34] <andrew_b> iliamaslakov: небось, спит ещё.
[07:16:40] <iliamaslakov> Там проблема в том что флаг передаётся c O_APPEND в любом случае
[07:16:44] <andrew_b> У них же на час позже.
[07:16:52] <iliamaslakov> а... ну да
[07:17:00] <iliamaslakov> andrew_b, привет
[07:17:08] <andrew_b> Привет.
[07:18:48] <iliamaslakov> andrew_b, а можешь ты глянуть почету именно так передаётся?
[07:20:28] <andrew_b> У меня срабатывает
112 else
113 sftp_open_flags = LIBSSH2_FXF_READ;
[07:20:48] <andrew_b> Нету никаких append.
[07:21:47] <iliamaslakov> есть есть
[07:25:24] <iliamaslakov> убедись на примере
[07:25:40] <iliamaslakov> обнули в сике посицию
[07:25:46] <iliamaslakov> обнули в сике позицию
[07:27:08] <iliamaslakov> 84 gboolean
85 sftpfs_open_file (vfs_file_handler_t * file_handler, int flags, mode_t mode, GError ** error)
[07:27:27] <iliamaslakov> ...
145 if (sftpfs_fstat (file_handler, &file_info, error) == 0)
146 libssh2_sftp_seek64 (file_handler_data->handle, file_info.st_size);
[07:27:42] <iliamaslakov> сделать
libssh2_sftp_seek64 (file_handler_data->handle, 0);
[07:28:22] <iliamaslakov> можешь внутрь
if ((flags & O_APPEND) != 0)
mc_log добавить
[07:28:54] <iliamaslakov> может просто flags & O_APPEND) != 0 по логике не верно?
[07:30:09] <iliamaslakov> может надо как то иначе?
[07:32:21] <iliamaslakov> вот этот кусок
141 if ((flags & O_APPEND) != 0)
142 {
143 struct stat file_info;
144
145 if (sftpfs_fstat (file_handler, &file_info, error) == 0)
146 libssh2_sftp_seek64 (file_handler_data->handle, file_info.st_size);
147 }
Слава добавил для того чтобы смещать позицию только если идёт дописывание на sftp хост, нажали кнопку [Докачать]
[07:32:44] <iliamaslakov> в других случаях libssh2_sftp_seek64 не должен слабатывать
[07:53:38] <andrew_b> А, ну епта.
[07:53:44] <andrew_b> 146 libssh2_sftp_seek64 (file_handler_data->handle, file_info.st_size);
[07:54:02] <andrew_b> Понятно, почему сразу eof и в итоге нудевой размер.
[07:54:25] <andrew_b> Не на тот размер сикать надо.
[07:54:46] <andrew_b> Не того файла.
[08:06:14] <andrew_b> 1551 while ((src_desc = mc_open (src_vpath, O_RDONLY | O_LINEAR)) < 0 && !ctx->skip_all)
51 #define O_LINEAR O_APPEND
[08:06:37] <andrew_b> Вот откуда O_APPEND появился.
[08:08:19] <andrew_b> 141 if ((flags & O_APPEND) != 0)
142 {
143 struct stat file_info;
144
145 if (sftpfs_fstat (file_handler, &file_info, error) == 0)
146 libssh2_sftp_seek64 (file_handler_data->handle, file_info.st_size);
147 }
делать не надо. Оно само должно сделаться в
1564 if (ctx->do_reget != 0)
1565 {
1566 if (mc_lseek (src_desc, ctx->do_reget, SEEK_SET) != ctx->do_reget)
1567 {
1568 message (D_ERROR, _("Warning"), _("Reget failed, about to overwrite file"));
1569 ctx->do_reget = 0;
1570 ctx->do_append = FALSE;
1571 }
1572 }
[08:10:52] <andrew_b> Ну да. Всё так оно и есть.
[08:11:03] <andrew_b> Ура?
[08:15:36] <iliamaslakov> ?
[08:15:59] <iliamaslakov> само не делалось
[08:19:57] <andrew_b> Чёйта?
[08:20:10] <iliamaslakov> он потому и добавлял код
[08:24:39] <iliamaslakov> попробуй заремарить
libssh2_sftp_seek64 (file_handler_data->handle, file_info.st_size);
[08:24:54] <iliamaslakov> и посмотри будет ли дописывание работать
[08:25:02] <andrew_b> не будет.
[08:25:10] <iliamaslakov> воот
[08:31:52] <andrew_b> Потому что у нас глобально дописывание сломано.
[08:33:10] <iliamaslakov> Какие ваши доказательства?
[08:33:22] <andrew_b> Не, поспешил.
[08:34:16] <andrew_b> Всё работает.
[08:34:21] <andrew_b> И докачка тоже.
[08:35:14] <andrew_b> Я перепутал "Докачать" с "Дописать в конец".
[08:35:34] <iliamaslakov> а...
[08:35:41] <andrew_b> Всё нормально.
141 if ((flags & O_APPEND) != 0)
142 {
143 struct stat file_info;
144
145 if (sftpfs_fstat (file_handler, &file_info, error) == 0)
146 libssh2_sftp_seek64 (file_handler_data->handle, file_info.st_size);
147 }
не нужно.
[08:35:54] <iliamaslakov> ща..
[08:39:57] <iliamaslakov> >Всё нормально.
нет!
[08:40:14] <iliamaslakov> смотри
[08:40:24] <iliamaslakov> создаём файл
[08:40:38] <iliamaslakov> с содержимым
0123456789
[08:40:49] <iliamaslakov> копируем "ТУДА"
[08:41:20] <iliamaslakov> открываем там и оставляем
01234
[08:41:30] <iliamaslakov> делаем еще раз копирование
[08:41:36] <andrew_b> Ну дык.
[08:41:41] <iliamaslakov> выбираем докачать
[08:42:09] <iliamaslakov> не докачивает а перезаписывает
[08:42:28] <iliamaslakov> в итоге получается 56789
[08:42:33] <andrew_b> Это другая сторона бага.
[08:42:42] <iliamaslakov> а ожидается 0123456789
[08:42:50] <andrew_b> Я говорю про то, что не копируется ОТТУДА ваще.
[08:43:03] <andrew_b> Из-за этого сика на размер файла.
[08:43:24] <andrew_b> Сикать не нужно, если открывается файл на чтение.
[08:43:29] <iliamaslakov> >Я говорю про то, что не копируется ОТТУДА ваще.
>Из-за этого сика на размер файла.
ну это я вчера и написал
[08:43:50] <andrew_b> Сик делается позже уровнем выше.
[08:44:15] <iliamaslakov> >Сикать не нужно, если открывается файл на чтение.
по идее вот проверка
if ((flags & O_APPEND) != 0)
[08:44:58] <andrew_b> Нет.
[08:45:05] <andrew_b> Этого недостаточно.
[08:45:23] <andrew_b> copy_file_file
[08:47:01] <andrew_b> Надо смотреть, что тут делается.
[08:48:34] <andrew_b> 1610 while ((dest_desc = mc_open (dst_vpath, open_flags, src_mode)) < 0)
[08:49:45] <andrew_b> if ((flags & O_APPEND) != 0)
Из-за того, что
1551 while ((src_desc = mc_open (src_vpath, O_RDONLY | O_LINEAR)) < 0 && !ctx->skip_all)
51 #define O_LINEAR O_APPEND
это условие срабатывает при копировании оттуда. А это не нужно.
[08:52:20] <iliamaslakov> да
[08:52:41] <iliamaslakov> нельзя ли убрать этот флаг?
[08:52:47] <andrew_b> Нет.
[08:53:08] <iliamaslakov> поясни
[08:53:28] <andrew_b> Всё сломается.
[08:53:57] <andrew_b> Вот когда уберёщь промежуточный темп, тогда можно убрать O_LINEAR.
[08:55:14] <iliamaslakov> O_LINEAR пусть
[08:55:38] <iliamaslakov> а нельля ли что то еще добавить?
[08:55:51] <andrew_b> Не надо.
[08:56:06] <andrew_b> diff --git a/src/vfs/sftpfs/file.c b/src/vfs/sftpfs/file.c
index 94ec70d..b93c79b 100644
--- a/src/vfs/sftpfs/file.c
+++ b/src/vfs/sftpfs/file.c
@@ -86,6 +86,7 @@ sftpfs_open_file (vfs_file_handler_t * file_handler, int flags, mode_t mode, GEr
{
unsigned long sftp_open_flags = 0;
int sftp_open_mode = 0;
+ gboolean do_append = FALSE;
sftpfs_file_handler_data_t *file_handler_data;
sftpfs_super_data_t *super_data;
char *name;
@@ -103,7 +104,11 @@ sftpfs_open_file (vfs_file_handler_t * file_handler, int flags, mode_t mode, GEr
{
sftp_open_flags = (flags & O_WRONLY) != 0 ? LIBSSH2_FXF_WRITE : 0;
sftp_open_flags |= (flags & O_CREAT) != 0 ? LIBSSH2_FXF_CREAT : 0;
- sftp_open_flags |= (flags & O_APPEND) != 0 ? LIBSSH2_FXF_APPEND : 0;
+ if ((flags & O_APPEND) != 0)
+ {
+ sftp_open_flags |= LIBSSH2_FXF_APPEND;
+ do_append = TRUE;
+ }
sftp_open_flags |= (flags & O_TRUNC) != 0 ? LIBSSH2_FXF_TRUNC : 0;
sftp_open_mode = LIBSSH2_SFTP_S_IRUSR |
@@ -138,7 +143,7 @@ sftpfs_open_file (vfs_file_handler_t * file_handler, int flags, mode_t mode, GEr
file_handler_data->mode = mode;
file_handler->data = file_handler_data;
- if ((flags & O_APPEND) != 0)
+ if (do_append)
{
struct stat file_info;
[08:56:24] <iliamaslakov> O_EXCL
[08:56:44] <andrew_b> Так всё работает.
[08:56:48] <iliamaslakov> а...
[08:57:23] <andrew_b> Ещё надо fill_names написать.
[08:57:43] <iliamaslakov> fill_names ?
[08:58:09] <andrew_b> Список активных ВФС C-x a
[08:58:31] <andrew_b> Там sftp-инфы нет.
[09:00:02] <iliamaslakov> а...
[09:00:12] <iliamaslakov> ты умный...
[09:00:24] <andrew_b> Так. Итого.
1. Патч сборуи имени С. Трофимовича.
2. Мой патч на докачку.
3. Отсутствует fill_names.
[09:03:01] <iliamaslakov> ну я могу fill_names
[09:03:06] <iliamaslakov> делать?
[09:03:24] <andrew_b> Конечно.
[09:03:37] <iliamaslakov> ог
[09:03:48] <iliamaslakov> ты запушишь патч?
[09:03:57] <iliamaslakov> или мне?
[09:04:06] <andrew_b> Ща.
[09:04:46] <slavazanko/w> всем привет
[09:04:53] <andrew_b> Привет.
[09:05:34] iliamaslakov вышел из конференции: Replaced by new connection
[09:05:38] iliamaslakov зашёл в конференцию
[09:08:59] <Зося_Синицкая> RSS: Новости для Midnight Commander
• Ticket #1535 (Feature: support SCP/SFTP) updated
http://www.midnight-commander.org/ticket/1535#comment:18
[09:09:18] <andrew_b> 1535_vfs_sftp_fixes
[09:09:30] <slavazanko/w> ага.. ща
[09:09:40] <andrew_b> Что ага? :)
[09:10:38] <iliamaslakov> fill_names добавит
[09:11:44] <andrew_b> И ещё то, что IceMan неделю назад нарепортил.
[09:12:25] <iliamaslakov> slavazanko/w: если коротко то выяснилось что
[09:32:23] iliamaslakov: вот этот кусок
141 if ((flags & O_APPEND) != 0)
142 {
143 struct stat file_info;
144
145 if (sftpfs_fstat (file_handler, &file_info, error) == 0)
146 libssh2_sftp_seek64 (file_handler_data->handle, file_info.st_size);
147 }
вызывал проблемы
[09:12:30] <andrew_b> https://www.midnight-commander.org/chatlogs/mc-dev@conference.jabber.ru/2012/06/22.html#09:24:31
[09:12:54] <iliamaslakov> т.к. O_APPEND был изза
[10:49:46] andrew_b:
if ((flags & O_APPEND) != 0)
Из-за того, что
1551 while ((src_desc = mc_open (src_vpath, O_RDONLY | O_LINEAR)) < 0 && !ctx->skip_all)
51 #define O_LINEAR O_APPEND
[09:13:16] <slavazanko/w> гм
[09:13:52] <iliamaslakov> соответственно всегда сикало на конец файла
[09:13:54] <andrew_b> iliamaslakov: я думаю, что slavazanko/w лог прочитает.
[09:14:31] <iliamaslakov> ну читать лог это муторно а узнать краткое содержание предыдущих серий это быстро
[09:25:40] slyfox^w вышел из конференции
[09:26:36] <slavazanko/w> провел только что утреннее совещание.
Есть полчаса свободных. Ща гляну историю и 1535_vfs_sftp_fixes
[09:32:27] <andrew_b> И ещё мне диалог запроса пароля не нравится.
[09:33:09] <andrew_b> Заголовок окна должен быть кратким, а не
sftp: Enter password for borodin
[09:34:40] <andrew_b> А когда на диалоге пароля жмёшь "Прервать", выскакивает ошибка "Невозможно перейти в". Можно как-то от этого избавиться?
[09:36:05] <slavazanko/w> запрос пароля и поведение после него абсолютно такие же, как и на других VFS. если что-то менять. то в рамках всех VFS, а не в рамках конкретного sftp
[09:36:15] <andrew_b> А...
[09:36:21] <slavazanko/w> fill_names - что за оно?
[09:36:34] <slavazanko/w> а(09:58:09) andrew_b: Список активных ВФС C-x a
(09:58:32) andrew_b: Там sftp-инфы нет.
[09:36:34] <andrew_b> Список активных ВФС C-x a
[09:37:11] <andrew_b> Оно нужно для заполнения этого окна.
[09:38:08] <andrew_b> vfs_get_password() надо переделать.
[09:39:42] <andrew_b> Ладно, после релиза.
[09:46:31] <iliamaslakov> Андрей
[09:46:36] <iliamaslakov> Умоляю
[09:46:46] <iliamaslakov> Посмотри проверку орфографии
[09:46:58] <iliamaslakov> На коленях тебя молю
[09:50:04] slavazanko/w вышел из конференции
[09:51:02] slavazanko/w зашёл в конференцию
[09:53:30] <iliamaslakov> попробовал написать fill_names
[09:53:43] <iliamaslakov> вот жеж жесть
[09:54:02] <iliamaslakov> я склонен винить во всём Славега
[10:13:04] IceMan зашёл в конференцию
[10:34:51] monkey вышел из конференции: Replaced by new connection
[10:34:59] monkey зашёл в конференцию
[11:12:11] <slavazanko/w> уфф, опять совещание было. Только уже с моими вышестоящими начхальниками. Как так работать можно? сплошные базары...
> попробовал написать fill_names
я напишу
[11:27:33] BanderOS зашёл в конференцию
[11:30:05] BanderOS вышел из конференции
[11:35:18] D-ion вышел из конференции: Replaced by new connection
[11:35:19] D-ion зашёл в конференцию
[11:39:21] BanderOS зашёл в конференцию
[11:41:39] <slavazanko/w> >> попробовал написать fill_names
> я напишу
запушил
[11:42:49] <slavazanko/w> ща заапрувленные тикеты повливаю... время хоть появилось
[11:44:46] BanderOS вышел из конференции
[11:47:31] <andrew_b> -SFTP connections now shows
+SFTP connections are shown now
[11:47:48] <slavazanko/w> ок
[11:48:24] <iliamaslakov> >[11:46:31] iliamaslakov: Андрей
>[11:46:36] iliamaslakov: Умоляю
>[11:46:46] iliamaslakov: Посмотри проверку орфографии
[11:49:42] <andrew_b> Не хочу.
[11:50:31] <iliamaslakov> блин
[11:52:27] <slavazanko/w> выставляй на голосование
[11:53:36] <andrew_b> slavazanko/w: ты исправишь или я? Я заодно ещё подпушу.
[11:54:10] <slavazanko/w> исправь. Я сейчас апрувленные вливаю. по sftp #2834gjnjv levfk jnkj;bnm
[11:54:26] <slavazanko/w> блин
[11:54:36] <slavazanko/w> по sftp на потом отложил
[11:55:15] <iliamaslakov> по sftp на потом отложил
???
[11:56:23] <slavazanko/w> после того. как волью полностью хотя бы один заапрувленный тикет. Чтобы не оставлять недоделанные задачи.
[11:56:41] <slavazanko/w> я про
-SFTP connections now shows
+SFTP connections are shown now
[12:01:46] ASM вышел из конференции
[12:01:47] ASM зашёл в конференцию
[12:10:26] <Зося_Синицкая> RSS: Новости для Midnight Commander
• Ticket #2834 (FTBFS with --disable-vfs) closed
http://www.midnight-commander.org/ticket/2834#comment:6
• Ticket #2803 (do_panel_cd: FTBFS with --enable-tests on …) closed
http://www.midnight-commander.org/ticket/2803#comment:9
[12:12:32] BanderOS зашёл в конференцию
[12:22:32] BanderOS вышел из конференции
[12:24:06] BanderOS зашёл в конференцию
[12:30:09] BanderOS вышел из конференции
[12:40:42] <Зося_Синицкая> RSS: Новости для Midnight Commander
• Ticket #2820 (misc/ext.d/*.sh) closed
http://www.midnight-commander.org/ticket/2820#comment:6
[12:45:08] <andrew_b> Да, с файлами с пробелами не всё хорошо.
[12:52:10] <andrew_b> Где-то лишнее экранирование делается, что ли...
[13:10:03] <andrew_b> В name_quote
[13:11:39] <slavazanko/w> ща перепроверю
[13:12:23] <andrew_b> Не, чо-то я гоню.
[13:12:34] <andrew_b> Оно ж и раньше так было.
[13:12:56] <andrew_b> Значит, с экранированием всё в порядке.
[13:14:44] <andrew_b> Что-то, значит, с передачей экранированных символов в скрипт.
[13:38:21] BanderOS зашёл в конференцию
[13:53:05] andrew_b вышел из конференции
[14:11:22] <Зося_Синицкая> RSS: Новости для Midnight Commander
• Ticket #2837 (Home and End key definitions) created
http://www.midnight-commander.org/ticket/2837
• mc-wterm.patch attached to Ticket #2837
http://www.midnight-commander.org/attachment/ticket/2837/mc-wterm.patch
• Ticket #2837 (Home and End key definitions) updated
http://www.midnight-commander.org/ticket/2837#comment:1
[15:12:38] monkey вышел из конференции
[16:03:14] andrew_b зашёл в конференцию
[16:33:26] IceMan вышел из конференции
[16:57:12] <Зося_Синицкая> RSS: Новости для Midnight Commander
• Ticket #2838 ('Enter' action on a rpm file containing space character in filename) created
http://www.midnight-commander.org/ticket/2838
[17:12:20] <Зося_Синицкая> RSS: Новости для Midnight Commander
• Ticket #2838 ('Enter' action on a rpm file containing space character in filename) updated
http://www.midnight-commander.org/ticket/2838#comment:1
[17:32:46] andrew_b вышел из конференции
[17:38:38] iliamaslakov вышел из конференции
[17:58:40] slavazanko/h зашёл в конференцию
[19:16:11] ASM вышел из конференции
[21:32:29] D-ion вышел из конференции
[21:35:03] D-ion зашёл в конференцию
[22:46:16] D-ion вышел из конференции
[22:50:14] D-ion зашёл в конференцию
[23:36:57] BanderOS вышел из конференции