Page 4 of 14

Re: Очень функциональный шелл

Posted: Tue Jun 16, 2009 5:33 pm
by Gluk
"..воплощать свою идею по поводу специального формата консольных приложений - в виде библиотек coff." а что, классная идея)

Re: Очень функциональный шелл

Posted: Tue Jun 16, 2009 6:12 pm
by Veliant
что то не пойму если будет как обычная dll то как будет чередоваться ввод/вывод
предлагаю линковать как coff но где то договрится чтоб было выделена память на указатели функций работы с консолью, при подгрузке чтоб shell записывал в эту область настоящие адреса

Re: Очень функциональный шелл

Posted: Tue Jun 16, 2009 8:30 pm
by Albom
раз кого-то заинтересовала моя идея, то раскрываю карты.

предполагаю сделать так:
консольное приложение - coff с 2 экспортируемыми (стандартно, как и в других либах КолибриОС) функциями. назовём их условно init и main. ф-ция init вызывается при первом обращении к консольному приложению. ей передаётся массив указателей на ф-ции ввода/вывода. порядок функций будет стандартизирован и будет дополняться при возможном развитии программы. init сохраняет указатели. если init возвращает значение, соответсвующее нормальному завершению, вызывается ф-ция main. стандартная main со стандартными параметрами (int argc, char* argv[]).

ну вот и всё. теоретически просто, но есть нюансы... кроме того у меня сейчас на работе полный завал. :( времени нет совсем. а с 1 июля иду в отпуск и отправляюсь на моря. так что приступить к работе смогу не раньше 15 июля. в версии 0.5 планируются существенные улучшения касательно кода (к сожалению, на счёт пользовательского интерфейса не знаю). в код внёс столько изменений, что он сейчас не работает. :(

карты раскрыты. код пока выкладывать не хочу. ничего не обещаю, кроме того, что с 15 июля попробую довести код до ума.

Re: Очень функциональный шелл

Posted: Fri Aug 28, 2009 1:09 am
by diamond
Добавил корректное завершение работы при закрытии окна консоли, работает только начиная с последней на данный момент версией библиотеки (лежит на svn, включена в ночную сборку). Перекомпилировал в VS2008 с LTCG, ещё пошаманил с оптимизацией по размеру, результаты прилагаю.

Re: Очень функциональный шелл

Posted: Fri Aug 28, 2009 8:29 am
by Albom
diamond
огромнейшее спасибо! буду разбираться с исправлениями.

all
работу на программой не прекращаю. почти полностью переписываю её. изменения (в плане кода, но не функциональности) серьёзные, но пока программа не работает.

Re: Очень функциональный шелл

Posted: Sat Jan 30, 2010 10:33 pm
by Albom
Нашёл ошибку в работе команды ls.
Немного поправил файл cmd_ls.c из архива 0.4.2 (сборка от diamond'а).
Скомпилировать и проверить не могу из-за отсутствия на компе MSVC.

Re: Очень функциональный шелл

Posted: Wed Apr 14, 2010 1:50 am
by XVilka
Готов помочь с развитием шелла - для меня написание консольных приложений более привычно, к тому же большой опыт патчения busybox, c которого и предлагаю использовать идеи.
С чего мне начать?
1. Где взять последние исходники?
2. Что надо в первую очередь сделать?
3. Как быть с системой контроля версий?

P.S. Рад приступить к воплощению прямо сейчас - жду ответа.

Re: Очень функциональный шелл

Posted: Wed Apr 14, 2010 10:25 am
by SoUrcerer
XVilka, последние исходники скорее всего на SVN, хотя, я думаю, их можно найти и в составе архива с исходными кодами ночной сборки системы. Точных ссылок не помню, но они есть на форуме и на wiki.
Насколько я понимаю, в проекте никто никого не принуждает, и люди делают то, что хотят, в своё удовольствие. Любая помощь, так или иначе, полезна. С контролем версий должен помочь, по логике, SVN

Re: Очень функциональный шелл

Posted: Wed Apr 14, 2010 3:08 pm
by Albom
1) самые последние исходники в этой ветке.
diamond (Пт авг 28, 2009 12:09 am) - версия 0.4.2
Albom (Сб янв 30, 2010 9:33 pm) - исправленный вариант команды ls.
Но лучше развивать версию 0.4.1, так как она "заточена" под GCC.
2) если основываться на версии 0.4.1, то нужно сделать то, что сделал diamond - изменить вызов команд (лучше сразу написать парсер, преобразующий строку в стандартные параметры int argc, char* argv[]) и подправить корректное завершение шелла при закрытии консоли (как сделать последнее - понятия не имею, не было времени разбираться).
если нужно, могу отправить все свои наработки по шеллу в ЛС.

Re: Очень функциональный шелл

Posted: Wed Apr 14, 2010 3:24 pm
by XVilka
Да, лучше в ЛС - сегодня вечером поковыряюсь

Re: Очень функциональный шелл

Posted: Thu Apr 15, 2010 12:58 am
by diamond
Albom wrote:Но лучше развивать версию 0.4.1, так как она "заточена" под GCC.
Мои изменения должны нормально компилироваться и под gcc, ничего непосредственно под vc я не "затачивал".

Re: Очень функциональный шелл

Posted: Thu Apr 15, 2010 7:41 am
by Albom
в принципе да. только нужно использовать мои обёртки системных вызовов (там ассемблер с синтаксисом AT&T, а не Intel, как в 0.4.1).

Re: Очень функциональный шелл

Posted: Thu Apr 15, 2010 8:37 am
by XVilka
Да, я уже переписал то что было в архиве на синтаксис интел совместимый с gcc.
Только не нашел string.c

И проблема при линкове такого рода:

undefined reference to 'ecx'
undefined reference to 'edx'
ну и в таком духе

Но в целом это уже мелочи - более менее разобрался в структуре, сечас пытаюсь реализовать архиватор и shasum.
точнее заставить работать то что уже написал.

А можно мне идеи по развитию узнать? Или какие-то куски бета-кода?

Re: Очень функциональный шелл

Posted: Thu Apr 15, 2010 12:03 pm
by Albom
XVilka
Посмотри вот эти исходники:
download/file.php?id=1429
Насчёт идей - читай эту ветку и ветку "что я хочу увидеть завтра..."

Re: Очень функциональный шелл

Posted: Fri Apr 16, 2010 12:58 am
by XVilka
Вот добавил возможность нормальной сборки под GCC(MinGW) для последних в этой ветке сырцов,
апплеты выделил в отдельный каталог, библиотеки stdlib, kolibri, string - тоже в отдельный каталог для простоты.
Пофиксил некоторые баги в доступе к памяти (приведение типов), перевел ассемблер в интел-нотацию понимаемую gcc(mingw)
компилятор msvcc тоже вроде работает.

Пока не включил реализацию sha256sum и архиватора LZMA(XZ формат), доведу до ума, выложу. Думаю через день два, будет готово.
В принципе криптолибу можно выделить отдельно, если надо.

Скомпилированный бинарник тоже там.
[Обновил скрипт сборки из под Windows]