Ответы пользователя по тегу Midnight Commander
  • Что это за символы в конце строк (редактор mc)?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Это конец строки в кодировке DOS/Windows - где, как известно конец строки отбивается двумя символами.

    Убрать:
    # tr -d "\r" < source.txt > targe.txt
    Ответ написан
    Комментировать
  • Почему mc выдает ошибку при входе в каталог с пробелом в имени?

    CityCat4
    @CityCat4 Автор вопроса
    //COPY01 EXEC PGM=IEBGENER
    Все чудесатее и чудесатее...

    Это долбаное сообщение выдается следующим кодом:
    if (bPathNotEq && mc_global.shell->type == SHELL_TCSH)
            {
                char rp_subshell_cwd[PATH_MAX];
                char rp_current_panel_cwd[PATH_MAX];
                char *p_subshell_cwd, *p_current_panel_cwd;
    
                p_subshell_cwd = mc_realpath (subshell_cwd, rp_subshell_cwd);
                p_current_panel_cwd = mc_realpath (pcwd, rp_current_panel_cwd);
    
                if (p_subshell_cwd == NULL)
                    p_subshell_cwd = subshell_cwd;
                if (p_current_panel_cwd == NULL)
                    p_current_panel_cwd = pcwd;
                bPathNotEq = strcmp (p_subshell_cwd, p_current_panel_cwd) != 0;
            }
    
            if (bPathNotEq && !DIR_IS_DOT (pcwd))
            {
                char *cwd;
    
                cwd =
                    vfs_path_to_str_flags (subshell_get_cwd_from_current_panel (), 0,
                                           VPF_STRIP_PASSWORD);
                vfs_print_message (_("Warning: Cannot change to %s.\n"), cwd);
                g_free (cwd);
            }


    Здесь subshell_cwd заполняется вызовом feed_subshell(), а pcwd - вызовом subshell_get_cwd_from_current_panel(). Первая содержит неправильное значение, вторая правильное. Естественно, условие срабатывает и бэмц. subshell_cwd в feed_subshell() заполняется через стандартный read():
    bytes = read (subshell_pipe[READ], subshell_cwd, sizeof (subshell_cwd));


    И вот тут я пока затупил - если mc запускается из tcsh, то read, найдя имя каталога с пробелом - читает до ближайшего слэша!. Если из bash - читает ровно столько, сколько надо. WTF?
    Ответ написан
  • Как переубедить mc не менять command prompt?

    CityCat4
    @CityCat4 Автор вопроса
    //COPY01 EXEC PGM=IEBGENER
    Судя по тому, что никто не ответил, всем либо как обычно, либо всех устраивает такое поведение. В общем провел я небольшой анализ. Начиная с версии 4.8.16 в mc сильно здорово переделали работу с subshell. А вот починили только для bash - то есть настройки переменной PS1 из .bashrc читаются и prompt ставится, как должен. А вот для tcsh не нашли ничего лучше, как вписать тупую замену prompt на то, что придумали сами и для того, чтобы он не менялся, пока что приходится патчить исходник:
    --- src/subshell/common.c    2017-03-05 00:51:38.000000000 +0700
    +++ src/subshell/common-new.c        2017-03-10 18:57:21.592259025 +0700
    @@ -864,7 +864,6 @@
         case SHELL_TCSH:
             g_snprintf (precmd, buff_size,
                         "set echo_style=both; "
    -                    "set prompt='%%n@%%m:%%~%%# '; "
                         "alias precmd 'echo $cwd:q >>%s; kill -STOP $$'\n", tcsh_fifo);
             break;

    Создал тикет, но есть предположение, что на него забьют...
    Ответ написан
    Комментировать
  • Существует ли аналог "Открыть с помощью..." в Midnight Commander?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Через файл расширений можно настроить три действия - реакция на Enter, F3 и F4 на файле. Файл расширений в mc достаточно хорошо откомментирован и примеров там завались.
    Ответ написан
    Комментировать
  • Файл не открывается и рядом лежит такой же с расширением SWP, что случилось?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Это рабочие файлы редактора mc. Первый - файл блокировки, признак того, что файл открыт, второй (я никогда не встречал, правда) - видимо, какая-то выгрузка редактора, сессия сохраненная, рабочая область...
    Ответ написан
    Комментировать
  • Сколько файлов одновременно передает Midnight Commander, как увеличить количество одновременно передаваемых файлов?

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Один.
    Настроить нельзя. В sftp нет понятия параллельного потока.
    Ответ написан
    Комментировать