LINUX.ORG.RU

mc - не работают регексы по расширениям

 


0

2

Преамбула.

Я тут недавно обновил убунту до 24.04.1. И мне в подарок прилетела обновлённая версия mc. С изменившимся форматом файла расширений, блин. Мало того, что мой выстраданный файл расширений оказался не у дел, так ещё и новый, «улучшенный» файл расширений не работает нормально.

Амбула

Не работают регекс-выражения в файле расширений. Типа:

[mp4]
Regex=\.(mp4|m4v|mpe?g)$
Include=video

При таком варианте по нажатию Enter на файле video.mp4 ничего не происходит.

Если я заменяю регексы на метасимволы шелл:

[mp4]
Shell=.mp4
Include=video

, то по нажатию Enter запускается mpv.

Я так понимаю, у меня не хватает какой-то библиотеки, которая нужна mc для обработки регексов. Но как узнать, какая ему нужна библиотека, я не знаю.

Вопрос такой: как узнать, правильно ли я предположил, и какую библиотеку доставить, если я прав?

★★

Последнее исправление: cetjs2 (всего исправлений: 1)

не хватает какой-то библиотеки, которая нужна mc для обработки регексов

Неправильно.

Было, когда только появился mc.ext.ini, не работал регексп. Сейчас уже исправили.

Проверил. Файл *.mp4 по энтер открылся в mpv.

andytux ★★★★★
()
Ответ на: комментарий от Beewek

Правильно ли я понял, что это косяк версии 4.8.30, который исправили в 4.8.31?

Неправильно.

Так работать будет:

Regex=\\.(mp4|m4v|mpe?g)$

А так не будет:

Regex=\.(mp4|m4v|mpe?g)$

Это не баг в mc, это изменение поведения в glib2.

wandrien ★★
()
Ответ на: комментарий от andytux

Да я могу второй слеш просто вручную поставить. Однако вопрос остаётся: у @dmitry237 выше работает с одним слешом в mc 4.8.32. Получается, что мне потом, когда до убунты дойдёт новая версия mc, обратно придётся убирать слеши?

Beewek ★★
() автор топика
Ответ на: комментарий от Beewek

Получается, что мне потом, когда до убунты дойдёт новая версия mc, обратно придётся убирать слеши?

Нет, это финальный результат.

$ pacman -Q mc
mc 4.8.32-1
$ grep -F '=\\' /etc/mc/mc.ext.ini | head -5
#                Regex=\\.t(ar\\.lzma|lz)$
Regex=\\.t([gp]?z|ar\\.g?[zZ])$
Regex=\\.t(ar\\.bz2|bz2?|b2)$
Regex=\\.t(ar\\.lzma|lz)$
Regex=\\.t(ar\\.lz4|lz4)$

wandrien ★★
()
Ответ на: комментарий от Beewek

Да я могу второй слеш просто вручную поставить. Однако вопрос остаётся

Вот теперь вспомнил, да действительно приходилось слеш экранировать слешем, да в следующих версиях надо будет заменить \\ на \. Я изменял не весь файл, поэтому быстренько все вернул назад.

dmitry237 ★★★★
()
Последнее исправление: dmitry237 (всего исправлений: 1)