В проекте, над которым я работаю, я пытаюсь заставить его принимать пользовательские команды и отображать историю со стрелкой вверх. Я стремлюсь сохранить этот проект свободным от зависимостей, и я не хочу требовать, чтобы люди также устанавливали файлы разработки readline только для компиляции моего проекта. Кто-нибудь знает о простой замене GNU Readline, которая предоставляет только простые функции?
Есть ли простая альтернатива Readline?
Ответы (6)
В большинстве систем установлен readline, так что я не вижу в этом большой проблемы.
Во-вторых, я не думаю, что есть какая-то замена библиотеке GNU Readline. Вам придется придерживаться этого. :(
Редактировать 11.05.2016: этот ответ устарел, и любое изменение, которое я бы сделал, было бы почти полностью заимствовано из других, более правильных ответов. Резюме: см. linenoise и editline для современных альтернатив readline.
Строка редактирования. Он имеет лицензию в стиле BSD.
EDIT: Старые версии строки редактирования были довольно простыми. Вот один с всего двумя файлами C и заголовком, всего около 1500 строк кода. Мы используем его в течение многих лет.
Я нашел один. antirez из Redis придумал linenoise, гораздо более простую альтернативу.
BusyBox содержит код редактирования командной строки, похожий на readline, но намного меньше и проще, с полной поддержкой UTF-8. Вероятно, было бы легко сделать его независимой библиотекой.
Еще одна альтернатива — библиотека editline. Из README:
Библиотека editline была создана Simmule Turner и Rich Salz еще в 1992 году. В то время, когда они решили распространять код под авторским правом "C News-like", подробности см. в файле LICENSE.
[...]
Эта версия библиотеки editline является ответвлением исходных кодов Minix3. Другие известные версии, часто основанные на исходной публикации comp.sources.unix:
- Debian libeditline, http://packages.qa.debian.org/e/editline.html< /а>
- Хеймдал, http://www.h5l.org
- Ораторские инструменты фестиваля, http://festvox.org/festival/
- Патчи строки редактирования Стива Телля, http://www.cs.unc.edu/~tell/dist.html
Здесь собраны самые интересные патчи и исправления ошибок из каждого форка.
editline(libedit) пока не поддерживает многобайтовые символы.
Я также согласен с Dan Loewenherz, библиотека readline широко распространена. Например, большинство дистрибутивов Linux поставляются с bash с readline. Большинство дистрибутивов Python также поставляется с readline. Если вашему проекту нужна библиотека, подобная readline, рекомендуется использовать библиотеку GNU readline, так как это популярный выбор, и пользователи могут уже установить ее в ОС.
./configure --enable-widec
.
- person Graham Miln; 05.06.2014
--enable-widec
устарел.
- person AndreyT; 04.10.2016
If your project needs a readline-like library, it's a good idea to use GNU readline library since it's a popular choice and users may have it installed on the OS already.
Обратите внимание, что сам readline и, таким образом, объединенная производная работа (т. е. двоичный файл) находятся под лицензией GPL, которая может подходить или не подходить для конкретного проекта.
- person Ivan Vučica; 30.10.2018