From 68cf3e429366fd1416aa8ecc08e619dd3b227b8b Mon Sep 17 00:00:00 2001 From: "Rustem Gimadutdinov (rgimad)" Date: Sat, 12 Jun 2021 21:34:41 +0000 Subject: [PATCH] SHELL 0.8.2 - big refactoring, now uses libc.obj - added kfetch command git-svn-id: svn://kolibrios.org@8827 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/system/shell/.makefile | 17 - programs/system/shell/History.txt | 243 +++++--- programs/system/shell/Tupfile.lua | 32 +- programs/system/shell/all.h | 63 +- programs/system/shell/build.sh | 2 + programs/system/shell/cmd/cmd_about.c | 10 +- programs/system/shell/cmd/cmd_alias.c | 21 +- programs/system/shell/cmd/cmd_cd.c | 79 +-- programs/system/shell/cmd/cmd_clear.c | 7 +- programs/system/shell/cmd/cmd_cp.c | 6 +- programs/system/shell/cmd/cmd_date.c | 36 +- programs/system/shell/cmd/cmd_exit.c | 8 +- programs/system/shell/cmd/cmd_free.c | 18 +- programs/system/shell/cmd/cmd_help.c | 60 +- programs/system/shell/cmd/cmd_history.c | 15 +- programs/system/shell/cmd/cmd_info.c | 106 ---- programs/system/shell/cmd/cmd_kfetch.c | 53 ++ programs/system/shell/cmd/cmd_kill.c | 45 +- programs/system/shell/cmd/cmd_ls.c | 219 ++++--- programs/system/shell/cmd/cmd_mkdir.c | 66 +- programs/system/shell/cmd/cmd_more.c | 156 +++-- programs/system/shell/cmd/cmd_mv.c | 6 +- programs/system/shell/cmd/cmd_pkill.c | 30 +- programs/system/shell/cmd/cmd_ps.c | 46 +- programs/system/shell/cmd/cmd_pwd.c | 7 +- programs/system/shell/cmd/cmd_reboot.c | 13 +- programs/system/shell/cmd/cmd_ren.c | 18 +- programs/system/shell/cmd/cmd_rm.c | 78 ++- programs/system/shell/cmd/cmd_rmdir.c | 69 +-- programs/system/shell/cmd/cmd_shutdown.c | 7 +- programs/system/shell/cmd/cmd_sleep.c | 24 +- programs/system/shell/cmd/cmd_touch.c | 80 ++- programs/system/shell/cmd/cmd_uptime.c | 30 +- programs/system/shell/cmd/cmd_ver.c | 85 ++- programs/system/shell/cmd/cmd_waitfor.c | 68 +- programs/system/shell/compile_eng.bat | 15 - programs/system/shell/compile_rus.bat | 15 - programs/system/shell/compile_test.bat | 14 - programs/system/shell/compile_test_asm.bat | 6 - programs/system/shell/globals.h | 8 +- programs/system/shell/locale/eng/globals.h | 33 + programs/system/shell/locale/rus/globals.h | 91 ++- .../system/shell/modules/module_command.c | 586 +++++++++--------- .../system/shell/modules/module_executable.c | 114 ++-- .../system/shell/modules/module_parameters.c | 166 +++-- .../shell/modules/module_program_console.c | 166 +++-- programs/system/shell/modules/module_script.c | 154 +++-- programs/system/shell/prototypes.h | 1 - programs/system/shell/shell.c | 266 ++++---- programs/system/shell/start.asm | 41 -- programs/system/shell/system/console.c | 88 --- programs/system/shell/system/ctype.c | 39 -- programs/system/shell/system/ctype.h | 3 - programs/system/shell/system/kolibri.c | 8 +- programs/system/shell/system/kolibri.h | 8 +- programs/system/shell/system/stdlib.c | 33 - programs/system/shell/system/stdlib.h | 14 - programs/system/shell/system/string.c | 221 ------- programs/system/shell/system/string.h | 21 - 59 files changed, 1617 insertions(+), 2317 deletions(-) delete mode 100644 programs/system/shell/.makefile create mode 100755 programs/system/shell/build.sh delete mode 100644 programs/system/shell/cmd/cmd_info.c create mode 100644 programs/system/shell/cmd/cmd_kfetch.c delete mode 100644 programs/system/shell/compile_eng.bat delete mode 100644 programs/system/shell/compile_rus.bat delete mode 100644 programs/system/shell/compile_test.bat delete mode 100644 programs/system/shell/compile_test_asm.bat delete mode 100644 programs/system/shell/start.asm delete mode 100644 programs/system/shell/system/console.c delete mode 100644 programs/system/shell/system/ctype.c delete mode 100644 programs/system/shell/system/ctype.h delete mode 100644 programs/system/shell/system/stdlib.c delete mode 100644 programs/system/shell/system/stdlib.h delete mode 100644 programs/system/shell/system/string.c delete mode 100644 programs/system/shell/system/string.h diff --git a/programs/system/shell/.makefile b/programs/system/shell/.makefile deleted file mode 100644 index eda284be47..0000000000 --- a/programs/system/shell/.makefile +++ /dev/null @@ -1,17 +0,0 @@ -all: - fasm start.asm start.o - kos32-gcc -c -fno-builtin shell.c - kos32-gcc -c -fno-builtin system/kolibri.c - kos32-gcc -c -fno-builtin system/stdlib.c - kos32-gcc -c -fno-builtin system/string.c - kos32-gcc -c -fno-builtin system/ctype.c - kos32-ld -nostdlib -T kolibri.ld -o shell start.o kolibri.o stdlib.o string.o ctype.o shell.o - kos32-objcopy shell -O binary - -clean: - rm -f *.o - rm -f bin/rus/shell - rm -f bin/eng/shell - -install: - cp shell $(DIR) diff --git a/programs/system/shell/History.txt b/programs/system/shell/History.txt index 5a2376a6f4..5bd312b4bf 100644 --- a/programs/system/shell/History.txt +++ b/programs/system/shell/History.txt @@ -1,228 +1,267 @@ +Shell 0.8.2 // 13.06.2021 // rgimad +* use libj.obj instead of built-in "libc" +* big refactoring: + - fix indentation + - string constants moved to locale/.../globals.h files +* add new command - kfetch + it is like neofetch for KolibriOS + prints logo and main system information. +* other fixes + +Shell 0.8.1 // 14.04.2020 - 01.04.2021 // rgimad, turbocat, Kenshin + rgimad: +* fixed bug with ctrl+v +* added navigation in current string by Home, End +* directory highlighting in ls command output +* Now for incorrect scripts (which doesnt start with #SHS) shell says + that they are incorrect, not "File not found". + Also, translated comments from russian to english in two files. +* added mv command +* added ren command +* now ls works also with relative pathes +* fixed bug in strrchr +* fixed bug with cd ../ +* fixed cd . and cd ./ behavior +* added output redirection to file (> >>) for echo command + e.g. echo "">123.txt ; echo a b c >> y.txt + + turbocat: +* Added new API: SC_GET_PID +* Fixed data type pid - unsigned int. +* Fixed cmd_ps output pid; +* Added new SC_PING api +* Renamed from SC_GET_PID to SC_PID +* added pkill command + + Kenshin: +* shell.inc now suports sc_ping & sc_pid functions +* update docs + Shell 0.7.7 // 06.02.2017 // Leency -* help ⥯ 뢮 ᯨ᮪ -* ps ⥯ 뢮 ࠧ , ᯮ㥬 ᮬ -* ls ⥯ 뢮 䠩 , ᪮쪮 - ࠧ 뢠 室 ᠬ 䠩 - 뢮 ᯨ᪮ ० 㯥 १ '-1' +* help теперь выводит список комманд в три колонки +* ps теперь выводит размер ОЗУ, используемый процессом +* ls теперь выводит все файлы не в одну, а в несколько колонок + размер колонок расчитывается исходя из самого длинного имени файла в папке + старый вывод списком по прежнему доступен через ключ '-1' Shell 0.7.6 // 06.02.2017 // Siemargl -* 樨 ᯮ 64-bit ࠧ 䠩. - cp ⥯ , ᫨ - ⠫ - cp ᯮ 1, ᢮ +* Файловые операции используют 64-bit размеры файлов. + cp теперь понимает, если - каталог + cp использует буфер 1Мб, или не более половины свободной памяти Shell 0.7.5 // 06.01.2017 // Siemargl -* 䨪, ࠡ⪨ ५ /, ⮡ - waitfor ਠ ps ࠬ஬ +* Мелкие багфиксы, изменена логика обработки стрелок вверх/вниз, чтобы как у всех + Добавлена команда waitfor и вариант ps с параметром Shell 0.7.4 // 23.01.2014 // Albom -* ஬ (஢ Ctrl+C ⠢ Ctrl+V ப 楫) +* Работа с буфером обмена (копирование Ctrl+C и вставка Ctrl+V строки целиком) Shell 0.7.3 // 28.11.2013 // Albom -* ࠢ 訡 ᨬ % ਨ +* Исправлена ошибка с символом % в истории команд Shell 0.7.2 // 26.10.2013 // Albom -* .shell ७ᥭ /sys/settings/ -* ࠢ "cd .." +* Файл .shell перенесен в /sys/settings/ +* Исправлена команда "cd .." Shell 0.7.1 // 19.10.2013 // Albom -* ࠢ 訡, 易 ᠭ ⪥ ⥭ ⮩ ਨ ( 蠬 Up Down) +* Исправлена ошибка, связанная с зависанием при попытке чтения пустой истории команд (по клавишам Up и Down) Shell 0.7.0 // 13.10.2013 // Albom -* ࠡ⠭ ( ࠡ⪠ "", "ࠢ", Del) -* ࠢ +* Переработан модуль ввода команды (добавлена обработка клавиш "влево", "вправо", Del) +* Мелкие исправления Shell 0.6.4 // 09.10.2013 // Leency -* প ⭮⥫ ⥩ ਯ +* Поддержка относительных путей в скриптах Shell 0.6.3 // 20.09.2013 // Albom -* msvc-style ਡ ⪫祭 ࠢ (ᯠᨡ CleverMouse Kirakishou!) +* msvc-style атрибуты для отключения выравнивания в структурах (спасибо CleverMouse и Kirakishou!) Shell 0.6.2 // 24.02.2013 // Albom -* ࠡ⪠ ࠢ ᨬ (\n, \t, \", \', \\, \?) -* ࠢ +* Добавлена обработка управляющих символов (\n, \t, \", \', \\, \?) +* Мелкие исправления Shell 0.6.1 // 17.02.2013 // Albom -* ࠡ⪠ 訡 ७ -* killall ࠭ନ஢ ࠬ all kill -* ஢ 䠩 History.txt 1251 866 +* Простая обработка ошибок внутренних команд +* Команда killall трансформирована в параметр all команды kill +* Изменена кодировка файла History.txt с 1251 на 866 Shell 0.6 // 16.02.2013 // Albom -+ ᪠ ணࠬ, ᮤঠ ஡. ணࠬ ( ) ⮣ 室 窨. .. - ணࠬ /rd/1/File managers, 室 -+ 㭪 ࠧ ப ६ int argc, char* argv[], 砥 襭 (ࠡ⪠ ᪮쪨 ࠬ஢) -+ cp (஢ 䠩). ਭ 易⥫쭮 ࠬ - 䠩-筨 䠩-१. ⪨ ( ⥪饬 ⠫), ⠪ ( 稭 /). ࠭祭 ࠧ 䠩 - 4 -* ࠢ ஢ ᮮ饭 訡 ᮫쭮 ਫ -* ਨ ( ) ᮡ -* ⢮ ਨ 㢥祭 -* 襭 ⢮ ।० 樨 -* ccpuid ८ࠧ ࠬ cpu ver -* ࠢ 䠩 ᡮન -+ ਬ ᮫쭮 ਫ ᥬ 䠩 ᡮન ++ Добавлена возможность запускать программы, имена которых или путь к которым содержат пробелы. Имя программы (возможно с путём к ней) для этого необходимо заключать в кавычки. Т.е. наконец-то можно запустить программу из /rd/1/File managers, не переходя в неё ++ Добавлена функция разделения строковой переменной на int argc, char* argv[], что означает возможность улучшения команд (обработка нескольких параметров) ++ Добавлена команда cp (копирование файла). Принимает обязательно два параметра - имя файла-источника и имя файла-результата. Имена могут быть краткими (в текущем каталоге), так и с полным путём (должны начинаться с /). Ограничение на размер файла - 4 Гбайта +* Исправлена кодировка в сообщении об ошибке в консольном приложении +* Клавиши истории (вверх и вниз) поменяны между собой +* Количество команд в истории увеличено с пяти до десяти +* Уменьшено количество предупреждений при компиляции +* Команда ccpuid преобразована в параметр cpu команды ver +* Исправления в пакетных файлах сборки ++ Добавлен пример консольного приложения на ассемблере и пакетный файл для его сборки Shell 0.5.4 // 04.06.2012 // Albom ======================================= -* ࠢ 䥩 ᯮ塞 ᮫ ਫ. ᮧ pid-SHELL, pid - 䨪 㫥 -* ୨஢ ccpuid, free, killall -+ history +* Исправлен интерфейс исполняемых консольных приложений. Теперь они должны создавать буфер с именем pid-SHELL, где pid - идентификатор процесса без заглавных нулей +* Реинкарнированы команды ccpuid, free, killall ++ Добавлена команда history Shell 0.5.3 // 19.04.2012 // Albom ======================================= -* ࠢ pwd +* Исправление в команде pwd Shell 0.5.2 // 16.04.2012 // Albom ======================================= -* ࠢ ls -* ⥫ 㣨 ࠢ +* Исправление в команде ls +* Незначительные другие исправления Shell 0.5.1 // 15.04.2012 // Albom ======================================= -* ⥫ ࠢ +* Некоторые незначительные исправления Shell 0.5 // 23.03.2012 // Albom ======================================= -* প ᮫ ਫ, 襫 १ +* Добавлена поддержка консольных приложений, которые общаются с шеллом через именованную область Shell 0.4.6 // 30.01.2011 // Albom ======================================= -* ६ 㤠 killall ccpuid (⮡ , 室 ᪮஢ 2 窨) -* ࠢ ⥪⮢ ப +* Временно удалены команды killall и ccpuid (чтобы вернуть, необходимо раскомментировать 2 строчки) +* Исправления в текстовых строках Shell 0.4.52 // 25.10.2010 // Pterox ======================================= -* "killall" - 㡨 ஬ OS/IDLE. -* +* Добавлена команда "killall" - убивает все процессы кроме OS/IDLE. +* Фиксы Shell 0.4.51 // 21.10.2010 // Pterox ======================================= -* "turnoff" २ "shutdown", "kerver" 㤠 - ⥯ "ver kernel"; 䨪. +* Команда "turnoff" переименована в "shutdown", "kerver" удалена - теперь её заменяет "ver kernel"; фиксы. Shell 0.4.5 // 19.10.2010 // Pterox ======================================= -ணࠬ ⥯ 몮 (᪨, ᪨ ). ணࠬ ஢. -* "free" २ "memory" - 筮. -* turnoff (몫 ), kerver ( KolibriOS), uptime; reboot ⥯ १㦠 ("reboot kernel") +Программа теперь многоязыковая (английский, и русский язык). Программа полностью русифицированна. +* Команда "free" переименована в "memory" - для точности. +* Добавлены команды turnoff (выключить компьютер), kerver (версия ядра KolibriOS), uptime; reboot теперь может перезагружать ядро ("reboot kernel") Shell 0.4.4 // 20.08.2010 // Albom ======================================= -1) 襫 ४⭮ 蠥 ⨨ -2) ࠢ 2 訡 -3) 2 : -* sleep - . ࠬ - ६ ᥪ㭤. ⮫쪮 楫 ᫮. -* ccpuid - 뢮 ᮫ ଠ樨 ( 㤭) . , ⥫ cpuid ࠧ ( ᫥饬 ᥬ 㤥⠬ , 稫 ࠧ ணࠬ). +1) шелл корректно завершается при закрытии окна +2) исправлено ещё 2 ошибки +3) добавлены 2 команды: +* sleep - ждать. параметр - время в сотых частях секунды. только целое число. +* ccpuid - вывод в консоль информации (пока скудно) о процессоре. пользы мало, но давно хотел с командой cpuid разобраться (в следующем семестре буду студентам курс читать, включил разбор команды в программу). - . ॠ, ᫮. ᫨ ᭮: -1) ६ (!), 㤥 १ ⥪⮢ ଥ ( 頥 㭪) 뢠. 㤥 ࠡ ப -2) ⥪ 設 ᫥ ⢥묨 ᫠ +есть много идей. некоторые легко реализуются, некоторые сложнее. если интересно: +1) добавить переменную (одну!), в которую будет результат в текстовой форме (не то что возвращает функция) записываться. с ней можно будет работать из командной строки +2) внедрить простую стековую машину для вычислений с вещественными числами Shell 0.4.3 // 20.08.2010 // Albom ======================================= -* ᨩ 0.4.1 0.4.2. 娢 室 䠩, 室 樨 (࠭ ᯮ짮 ꥪ⭨ ⪠, 室 襫 몫뢠) +* Смесь версий 0.4.1 и 0.4.2. Теперь в архиве все исходные файлы, необходимые для компиляции (раньше использовались объектники с моими обёртками, исходники я с шеллом не выкладывал) Shell 0.4.2 // 28.08.2009 // diamond ======================================= -* ४⭮ 襭 ࠡ ⨨ ᮫, ࠡ⠥ ⮫쪮 稭 ᫥ ᨥ ⥪ ( svn, 祭 ᡮ). ४஢ VS2008 LTCG, 蠬 ⨬樥 ࠧ +* Добавил корректное завершение работы при закрытии окна консоли, работает только начиная с последней на данный момент версией библиотеки (лежит на svn, включена в ночную сборку). Перекомпилировал в VS2008 с LTCG, ещё пошаманил с оптимизацией по размеру Shell 0.4.1 // 16.03.2009 // Albom ======================================= -* ࠢ묨 訡. -* ࠡ⠥ alias, clear. +* версия с исправленными ошибками. +* работает команда alias, добавлена команда clear. Shell 0.4 // 12.08.2008 // Albom ======================================= -1) ⠥ 奬 ᥢ ( 256 ) -- ᬮ alias ( ࠬ஢) -- ᥢ ਯ ( ⮬ ᫥ .shell): alias = -- ॣ஧ᨬ, ⮬ ਤ .shell ப ⠪ +1) Работает схема псевдонимов (до 256 команд) +- просмотр по команде alias (без параметров) +- добавление псевдонима команды с клавиатуры или в скрипте (в том числе и .shell): alias новая команда = старая команда +- команды регистрозависимые, поэтому поклонникам ДОС придётся внести в .shell строки такого вида alias dir = ls alias DIR = ls alias Dir = ls alias DIr = ls - .. -- ஥ ७ , ਬ, ᫥ : +и т.д. +- встроенные команды переназвать невозможно, например, бессмысленна команда: alias ls=somecommand -- ⫠ 砫 ࠭ ଠ, ⠪ ࠡ⠥, +- при отладке получал странную информацию, но так как у меня всё работает, то пока изменений вносить не планирую -2) 襫 ᪠ ࠬ஬ ( ᠬ ᥡ, ਬ) -- ᨭ⠪: -shell -- ਬ: +2) Теперь шелл можно запускать с параметром (из самого себя, например) +- синтаксис: +shell команда +- пример: shell /sys/somescript -- ⮬ .shell ᪠ +- при этом .shell не запускается -3) more -- ᬮ ⥪⮢ 䠩 (த , 諮 ࠢ騬 ᨬ) -- 祭 ४ ᬠਢ 訥 䠩 +3) Реализована команда more +- просмотр текстовых и бинарных файлов (вроде бы задача простая, но пришлось повозиться с управляющими символами) +- очень не рекомендуется просматривать большие файлы Shell 0.3 // 07.08.2008 // Albom ======================================= -1) ᪠ ਯ⮢ -* ப ।⠢ ᮡ -* ப ⠥ ᨬ, 稢 CR+LF (Windows) LF(UNIX) CR(Mac) -* ᫨ ப 稭 #, ப (.. ਩) -* ਯ #SHS -* ᪥ 襫 ⮬᪨ ᪠ ਯ .shell +1) Возможность запуска скриптов +* каждая строка должна представляет собой команду +* строкой считается набор символов, который заканчивается CR+LF (Windows) или LF(UNIX) или CR(Mac) +* если строка начинается с #, то вся строка (т.е. комментарий) игнорируется +* скрипт должен начитаться с #SHS +* при запуске шелла автоматически запускается скрипт .shell -2) 5 ( 樨) -* ६饭 ਨ - UP/DOWN +2) История из 5 (можно изменить при компиляции) введённых команд +* перемещение по истории - UP/DOWN -3) alias, ᨭ -* 256 ( 樨) ᨭ -* ࠡ⠥ ⮫쪮 ᬮ ᨭ, ࠡ⪠ ॠ +3) Команда alias, которая позволяет вводить синонимы для команд +* до 256 (можно изменить при компиляции) синонимов +* пока работает только добавление и просмотр синонимов, а отработка пока не реализована Shell 0.2 // 04.08.2008 // Albom ======================================= -* 㭪樨 -* ᠫ ᮡ⢥ 楤 +* добавил новые функции +* написал собственную процедуру ввода команды Shell 0.11 // 01.08.2008 // Albom ======================================= -* free reboot, , ࠢ 訡 +* Добавил команды free и reboot, внёс некоторые изменения, исправил найденные ошибки Shell 0.1 // 29.07.2008 // Albom ======================================= -* ( ) : about, cd, date, echo, exit, help, kill, ls, ps, pwd, ver -* ᪥ ணࠬ (᫨ 㪠 ) ⠫ /rd/1 ⥪饬 ⠫ +* Реализованы (не полностью) команды: about, cd, date, echo, exit, help, kill, ls, ps, pwd, ver +* При запуске программы (если не указан полный путь) она ищется в каталоге /rd/1 и текущем каталоге Shell 0.02 // 27.07.2008 // Albom ======================================= -* : - exit - 室 - ls ( ࠬ஬ ) - 뢮 ᯨ᪠ ४ਨ - pwd - ⥪騩 ⠫ - ps - ᯨ᮪ ᮢ PID - kill - PID - help ( ࠬ஬ ) - +* Реализовал команды: + exit - выход + ls (с параметром и без) - вывод списка директории + pwd - текущий каталог + ps - список процессов и их PID + kill - завершить процесс по PID + help (с параметром и без) - помощь Shell 0.01 // 27.07.2008 // Albom ======================================= -* 訫 㭪樮 襫 ᯮ짮 console.obj -* ᤥ 㭪 ⤥ ࠬ஢, ⠪ ॠ help ( ࠬ஢), ver exit +* Решил написать функциональный шелл на Си с использованием console.obj +* Пока сделал функцию отделения команды и параметров, а также реализовал команды help (пока без параметров), ver и exit diff --git a/programs/system/shell/Tupfile.lua b/programs/system/shell/Tupfile.lua index fee62b43b3..f93f970921 100644 --- a/programs/system/shell/Tupfile.lua +++ b/programs/system/shell/Tupfile.lua @@ -1,26 +1,10 @@ -if tup.getconfig("NO_FASM") ~= "" or tup.getconfig("NO_GCC") ~= "" then return end -HELPERDIR = (tup.getconfig("HELPERDIR") == "") and "../.." or tup.getconfig("HELPERDIR") -tup.include(HELPERDIR .. "/use_gcc.lua") -LDFLAGS = LDFLAGS .. " -T kolibri.ld" --- compile shell -if tup.getconfig("LANG") == "ru" -then C_LANG = "LANG_RUS" -else C_LANG = "LANG_ENG" -- this includes default case without config -end +if tup.getconfig("NO_TCC") ~= "" then return end -if tup.getconfig("TUP_PLATFORM") == "win32" --- on win32 '#' is not a special character, but backslash and quotes would be printed as is -then tup.rule('echo #define ' .. C_LANG .. ' 1 > %o', {"lang.h"}) --- on unix '#' should be escaped -else tup.rule('echo "#define" ' .. C_LANG .. ' 1 > %o', {"lang.h"}) -end -tup.append_table(OBJS, tup.rule("start.asm", "fasm %f %o", "start.o")) -compile_gcc{"shell.c", "system/kolibri.c", "system/stdlib.c", "system/string.c", "system/ctype.c", extra_inputs = {"lang.h"}} -link_gcc("shell") +TCC="kos32-tcc" +CFLAGS = "-I../../develop/ktcc/trunk/libc.obj/include" +LDFLAGS = "-nostdlib ../../develop/ktcc/trunk/bin/lib/crt0.o -L../../develop/ktcc/trunk/bin/lib" --- compile ASM test -tup.rule("test.asm", "fasm %f %o " .. tup.getconfig("KPACK_CMD"), "asmtest") --- compile C test -OBJS = {"start.o", "kolibri.o", "stdlib.o", "string.o", "ctype.o"} -- remove shell.o -compile_gcc{"test.c"} -link_gcc("ctest") +LIBS = "-ltcc -lc.obj" +COMMAND=string.format("%s %s %s %s %s", TCC, CFLAGS, LDFLAGS , "%f -o %o", LIBS) + +tup.rule("shell.c", COMMAND .. tup.getconfig("KPACK_CMD"), "shell") \ No newline at end of file diff --git a/programs/system/shell/all.h b/programs/system/shell/all.h index a6df4420d0..5ae748af68 100644 --- a/programs/system/shell/all.h +++ b/programs/system/shell/all.h @@ -8,9 +8,36 @@ #include "system/boolean.h" #include "system/kolibri.h" -#include "system/stdlib.h" -#include "system/string.h" -#include "system/ctype.h" +//#include "system/stdlib.h" +//#include "system/string.h" +//#include "system/ctype.h" +//#include +#include +#include +#include +#include +//-------- +int strnicmp(const char* string1, const char* string2, unsigned count) +{ +int pc = 0; +while (1) + { + if (toupper(*string1)toupper(*string2)) + return 1; + + if (*string1=='\0' || pc == count) + return 0; + + string1++; + string2++; + pc++; + } +} +//-------- + +extern int _FUNC(sprintf)(char* buffer, const char* format, ...); #include "globals.h" #include "prototypes.h" @@ -18,7 +45,31 @@ // from main file (shell.c). TODO - in future move to library void get_file_dir_loc(char *filepath, char *dir_path); -#include "system/console.c" +//#include "system/console.c" +#include +#define con_exit (*con_exit) +#define con_set_title (*con_set_title) +#define con_write_asciiz (*con_write_asciiz) +#define con_write_string (*con_write_string) +#define con_printf (*con_printf) +#define con_get_flags (*con_get_flags) +#define con_set_flags (*con_set_flags) +#define con_get_font_height (*con_get_font_height) +#define con_get_cursor_height (*con_get_cursor_height) +#define con_set_cursor_height (*con_set_cursor_height) +#define con_getch (*con_getch) +#define con_getch2 (*con_getch2) +#define con_kbhit (*con_kbhit) +#define con_gets (*con_gets) +#define con_gets2_callback (* con_gets2_callback) +#define con_gets2 (*con_gets2) +#define con_cls (*con_cls) +#define con_get_cursor_pos (*con_get_cursor_pos) +#define con_set_cursor_pos (*con_set_cursor_pos) + +#define printf con_printf +#define gets con_gets +#define getch con_getch2 #include "cmd/cmd_about.c" #include "cmd/cmd_help.c" @@ -45,6 +96,7 @@ void get_file_dir_loc(char *filepath, char *dir_path); #include "cmd/cmd_shutdown.c" #include "cmd/cmd_uptime.c" #include "cmd/cmd_history.c" +#include "cmd/cmd_kfetch.c" #include "cmd/cmd_cp.c" #include "cmd/cmd_mv.c" #include "cmd/cmd_ren.c" @@ -58,6 +110,5 @@ void get_file_dir_loc(char *filepath, char *dir_path); #include "modules/module_alias.c" #include "modules/module_parameters.c" -typedef unsigned int size_t; +//typedef unsigned int size_t; -/// =========================================================== diff --git a/programs/system/shell/build.sh b/programs/system/shell/build.sh new file mode 100755 index 0000000000..5318dd4c89 --- /dev/null +++ b/programs/system/shell/build.sh @@ -0,0 +1,2 @@ +../../develop/ktcc/trunk/source/kos32-tcc -I../../develop/ktcc/trunk/libc.obj/include -nostdlib ../../develop/ktcc/trunk/bin/lib/crt0.o -L../../develop/ktcc/trunk/bin/lib shell.c system/kolibri.c -o shell -ltcc -lc.obj +../../other/kpack/linux/kpack shell \ No newline at end of file diff --git a/programs/system/shell/cmd/cmd_about.c b/programs/system/shell/cmd/cmd_about.c index 5c0a31e2f5..d6bfe22cd2 100644 --- a/programs/system/shell/cmd/cmd_about.c +++ b/programs/system/shell/cmd/cmd_about.c @@ -1,10 +1,6 @@ -int cmd_about(char param[]) -{ - -char message[] = {"Shell %s\n\r"}; - -printf(message, SHELL_VERSION); -return TRUE; +int cmd_about(char param[]) { + printf(CMD_ABOUT_MSG, SHELL_VERSION); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_alias.c b/programs/system/shell/cmd/cmd_alias.c index 9d307fc32c..9963e8cf89 100644 --- a/programs/system/shell/cmd/cmd_alias.c +++ b/programs/system/shell/cmd/cmd_alias.c @@ -1,20 +1,17 @@ -int cmd_alias(char arg[]) -{ +int cmd_alias(char arg[]) { + int result; -int result; - -if (NULL == arg || '\0' == arg[0]) - { - alias_list(); - return TRUE; + if (NULL == arg || '\0' == arg[0]) { + alias_list(); + return TRUE; } -result = alias_check(arg); + result = alias_check(arg); -if ( ( 0 != result ) && ( -1 != result ) ) - alias_add(arg); + if ( ( 0 != result ) && ( -1 != result ) ) + alias_add(arg); -return TRUE; + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_cd.c b/programs/system/shell/cmd/cmd_cd.c index 7a1fcde5bc..07022ab852 100644 --- a/programs/system/shell/cmd/cmd_cd.c +++ b/programs/system/shell/cmd/cmd_cd.c @@ -1,58 +1,47 @@ - int cmd_cd(char dir[]) { + char temp[256]; + unsigned result; -char temp[256]; -unsigned result; - -if (NULL == dir) - { - #if LANG_ENG - printf(" cd \n\r"); - #elif LANG_RUS - printf(" cd <४>\n\r"); - #endif - return TRUE; - } - -if ( 0 == strcmp(dir, ".") || 0 == strcmp(dir, "./") ) - return TRUE; - -if ( ( 0 == strcmp(dir, "..") || 0 == strcmp(dir, "../") ) && ( 0 != strcmp(cur_dir, "/")) ) - { - cur_dir[strlen(cur_dir)-1]='\0'; - dir_truncate(cur_dir); - set_cwd(cur_dir); - return TRUE; - } - -if ( '/' == dir[0]) - { - if ( dir_check(dir) ) - { - strcpy(cur_dir, dir); - set_cwd(cur_dir); + if (NULL == dir) { + printf(CMD_CD_USAGE); return TRUE; - } - return FALSE; } -else - { - strcpy(temp, cur_dir); - if (cur_dir[strlen(cur_dir)-1] != '/') - strcat(temp, "/"); - strcat(temp, dir); - if ( dir_check(temp) ) - { - - strcpy(cur_dir, temp); - set_cwd(cur_dir); + if ( 0 == strcmp(dir, ".") || 0 == strcmp(dir, "./") ) return TRUE; + + if ( ( 0 == strcmp(dir, "..") || 0 == strcmp(dir, "../") ) && ( 0 != strcmp(cur_dir, "/")) ) { + cur_dir[strlen(cur_dir)-1]='\0'; + dir_truncate(cur_dir); + set_cwd(cur_dir); + return TRUE; + } + + if ( '/' == dir[0]) { + if ( dir_check(dir) ) + { + strcpy(cur_dir, dir); + set_cwd(cur_dir); + return TRUE; + } + return FALSE; + } + else { + strcpy(temp, cur_dir); + if (cur_dir[strlen(cur_dir)-1] != '/') + strcat(temp, "/"); + strcat(temp, dir); + + if ( dir_check(temp) ) { + + strcpy(cur_dir, temp); + set_cwd(cur_dir); + return TRUE; } - return FALSE; + return FALSE; } } diff --git a/programs/system/shell/cmd/cmd_clear.c b/programs/system/shell/cmd/cmd_clear.c index 8f0325501f..e212e9d0b4 100644 --- a/programs/system/shell/cmd/cmd_clear.c +++ b/programs/system/shell/cmd/cmd_clear.c @@ -1,7 +1,6 @@ -int cmd_clear(char param[]) -{ -con_cls(); -return TRUE; +int cmd_clear(char param[]) { + con_cls(); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_cp.c b/programs/system/shell/cmd/cmd_cp.c index 6b4feae597..374bdd7a9e 100644 --- a/programs/system/shell/cmd/cmd_cp.c +++ b/programs/system/shell/cmd/cmd_cp.c @@ -19,11 +19,7 @@ int cmd_cp(char param[]) if (argc != 2) { - #if LANG_ENG - printf(" cp \n\r"); - #elif LANG_RUS - printf(" cp <筨> <१>\n\r"); - #endif + printf(CMD_CP_USAGE); parameters_free(argc, argv); return TRUE; } diff --git a/programs/system/shell/cmd/cmd_date.c b/programs/system/shell/cmd/cmd_date.c index 58fd6a60ba..1bd70fee6e 100644 --- a/programs/system/shell/cmd/cmd_date.c +++ b/programs/system/shell/cmd/cmd_date.c @@ -1,32 +1,22 @@ - int cmd_date(char param[]) { -unsigned date; -unsigned time; + unsigned date; + unsigned time; -date = kol_system_date_get(); -#if LANG_ENG - printf(" Date [dd.mm.yy]: %x%x.%x%x.%x%x", -#elif LANG_RUS - printf(" [..]: %x%x.%x%x.%x%x", -#endif - (date&0xf00000)>>20, (date&0xf0000)>>16, // day - (date&0xf000)>>12, (date&0xf00)>>8, //month - (date&0xf0)>>4, (date&0xf) ); // year + date = kol_system_date_get(); + printf(CMD_DATE_DATE_FMT, + (date&0xf00000)>>20, (date&0xf0000)>>16, // day + (date&0xf000)>>12, (date&0xf00)>>8, //month + (date&0xf0)>>4, (date&0xf) ); // year -time = kol_system_time_get(); + time = kol_system_time_get(); + printf(CMD_DATE_TIME_FMT, + (time&0xf0)>>4, (time&0xf), // hours + (time&0xf000)>>12, (time&0xf00)>>8, // minutes + (time&0xf00000)>>20, (time&0xf0000)>>16 ); // seconds -#if LANG_ENG - printf("\n\r Time [hh:mm:ss]: %x%x:%x%x:%x%x\n\r", -#elif LANG_RUS - printf("\n\r ६ [::]: %x%x:%x%x:%x%x\n\r", -#endif - (time&0xf0)>>4, (time&0xf), // hours - (time&0xf000)>>12, (time&0xf00)>>8, // minutes - (time&0xf00000)>>20, (time&0xf0000)>>16 ); // seconds - -return TRUE; + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_exit.c b/programs/system/shell/cmd/cmd_exit.c index 73cadcde2f..6441f72135 100644 --- a/programs/system/shell/cmd/cmd_exit.c +++ b/programs/system/shell/cmd/cmd_exit.c @@ -1,9 +1,9 @@ int cmd_exit(char param[]) { -free(ALIASES); -_exit(1); -kol_exit(); -return TRUE; + free(ALIASES); + con_exit(1); + kol_exit(); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_free.c b/programs/system/shell/cmd/cmd_free.c index b6c40ae11d..05ba1a6d12 100644 --- a/programs/system/shell/cmd/cmd_free.c +++ b/programs/system/shell/cmd/cmd_free.c @@ -1,19 +1,15 @@ int cmd_memory(char param[]) { -unsigned total, free, used; + unsigned total, free, used; -total = kol_system_mem(); -free = kol_system_memfree(); -used = total - free; + total = kol_system_mem(); + free = kol_system_memfree(); + used = total - free; -#if LANG_ENG - printf (" Total [kB / MB / %%]: %-7d / %-5d / 100\n\r Free [kB / MB / %%]: %-7d / %-5d / %d\n\r Used [kB / MB / %%]: %-7d / %-5d / %d\n\r", -#elif LANG_RUS - printf (" ᥣ [ / / %%]: %-7d / %-5d / 100\n\r [ / / %%]: %-7d / %-5d / %d\n\r ᯮ [ / / %%]: %-7d / %-5d / %d\n\r", -#endif + printf (CMD_FREE_FMT, total, total/1024, free, free/1024, (free*100)/total, used, total/1024-free/1024, 100-(free*100)/total ); - -return TRUE; + + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_help.c b/programs/system/shell/cmd/cmd_help.c index 77af706f67..7660fb62a3 100644 --- a/programs/system/shell/cmd/cmd_help.c +++ b/programs/system/shell/cmd/cmd_help.c @@ -1,46 +1,30 @@ -int cmd_help(char cmd[]) -{ +int cmd_help(char cmd[]) { + int i; -int i; - -#if LANG_ENG - char available[]={" %d commands available:\n\r"}; -#elif LANG_RUS - char available[]={" ⢮ 㯭 : %d\n\r"}; -#endif - -if ( !strlen(cmd) ) - { - int columns_max=3; - printf (available, NUM_OF_CMD); - for (i = 0; i < NUM_OF_CMD; i++) - { - printf(" %-12s", COMMANDS[i].name); - if ((i) && ((i+1)%columns_max == 0)) printf("\n\r"); + if ( !strlen(cmd) ) { + int columns_max=3; + printf (CMD_HELP_AVAIL, NUM_OF_CMD); + for (i = 0; i < NUM_OF_CMD; i++) { + printf(" %-12s", COMMANDS[i].name); + if ((i) && ((i+1)%columns_max == 0)) printf("\n\r"); + } + if ((i)%columns_max != 0) printf("\n\r"); + return TRUE; } - if ((i)%columns_max != 0) printf("\n\r"); - return TRUE; - } -else - { - for (i=0; i= 0; i--) - { - printf("%s\n", CMD_HISTORY[i]); +int cmd_history(char arg[]) { + int i; + for (i = CMD_HISTORY_NUM_REAL - 1; i >= 0; i--) { + printf("%s\n", CMD_HISTORY[i]); } - -return TRUE; + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_info.c b/programs/system/shell/cmd/cmd_info.c deleted file mode 100644 index 4b577d59ca..0000000000 --- a/programs/system/shell/cmd/cmd_info.c +++ /dev/null @@ -1,106 +0,0 @@ -/* turbocat2001 */ -#if LANG_ENG - #define HELP "info \n" - #define FILE_NOT_FOUND "Object '%s' not found!\n" - #define OBJECT_INFO "Object '%s' information:\n\n" - #define TYPE "Type: " - #define DIR "'Folder'" - #define PART "'Part'" - #define FILE "'File'" - #define CREATED "Created: %02d.%02d.%02d %02d:%02d:%02d\n" - #define MODIFID "Modified: %02d.%02d.%02d %02d:%02d:%02d\n" - #define DATE_TIME " Date Time\n" - #define ATTRIB "Attributes: " - #define RO "'Read only' " - #define HIDDEN "'Hidden' " - #define SYS "'System' " - #define NOT_ARCHIV "'Not archived' " - #define FILE_SIZE "\nFile size: %u KB (%u B)\n" - -#elif LANG_RUS - #define HELP "info <_ꥪ>\n" - #define FILE_NOT_FOUND "ꥪ '%s' !\n" - #define OBJECT_INFO "ଠ ꥪ '%s':\n\n" - #define TYPE ": " - #define DIR "''" - #define PART "''" - #define FILE "''" - #define CREATED ": %02d.%02d.%02d %02d:%02d:%02d\n" - #define MODIFID ": %02d.%02d.%02d %02d:%02d:%02d\n" - #define DATE_TIME " ६\n" - #define ATTRIB "ਡ: " - #define RO "'쪮 ⥭' " - #define HIDDEN "'' " - #define SYS "'⥬' " - #define NOT_ARCHIV "' 娢' " - #define FILE_SIZE "\n 䠩: %u K (%u )\n" -#endif - - -int cmd_info(char param[]) -{ - byte is_dir=0, is_part=0; // Folder or part? - char* argv[100]; - if(1 != parameters_prepare(param, argv)) //get number of parameters - { - printf(HELP); - return TRUE; - } - - FS_struct_BDVK *info=NULL; // BDVK struct define - info=get_bdvk(argv[0]); // Get file info (BDVK) - if(info==NULL) - { - printf(FILE_NOT_FOUND, argv[0]); - return TRUE; - } - printf(OBJECT_INFO, argv[0]); - - printf(TYPE); - if (info->attrib & (1 << 4)) - { - printf(DIR); - is_dir=1; - } - else if (info->attrib & (1 << 3)) - { - printf(PART); - is_part=1; - } - else - { - printf(FILE); - } - printf("\n\n"); - printf(DATE_TIME); // Show date and time - printf(CREATED, info->c_date.d, info->c_date.m, info->c_date.y, info->c_time.h, info->c_time.m, info->c_time.s); - printf(MODIFID, info->m_date.d, info->m_date.m, info->m_date.y, info->m_time.h, info->m_time.m, info->m_time.s); - printf("\n"); - printf(ATTRIB); // Show Attributes - - if (info->attrib & (1 << 0)) - { - printf(RO); - } - if (info->attrib & (1 << 1)) - { - printf(HIDDEN); - } - if (info->attrib & (1 << 2)) - { - printf(SYS); - } - - if (info->attrib & (1 << 5)) - { - printf(NOT_ARCHIV); - } - - printf("\n"); - - if (!is_dir && (info->size)>=0 && !is_part) // If dir or part then not show file size - { - printf(FILE_SIZE, info->size/1024, info->size); - } - return TRUE; -} diff --git a/programs/system/shell/cmd/cmd_kfetch.c b/programs/system/shell/cmd/cmd_kfetch.c new file mode 100644 index 0000000000..69eab45acc --- /dev/null +++ b/programs/system/shell/cmd/cmd_kfetch.c @@ -0,0 +1,53 @@ + +void get_str_meminfo(char *str) { + unsigned mem_all_mib = kol_system_mem() / 1024; + unsigned mem_free_mib = kol_system_memfree() / 1024; + sprintf(str, "%uMiB / %uMiB", mem_all_mib - mem_free_mib, mem_all_mib); +} + +int cmd_kfetch(char param[]) { + char *str_krnl_ver = malloc(64); + get_str_kernel_version(str_krnl_ver, "%d.%d.%d.%d. SVN-rev.: %d"); + char *str_uptime = malloc(64); + get_str_uptime(str_uptime, "%d day(s), %d:%d:%d.%d"); + char *str_resolution = malloc(24); + ksys_pos_t resol = _ksys_screen_size(); + sprintf(str_resolution, "%u x %u", resol.x + 1, resol.y + 1); + char *str_cpu_info = malloc(16); + get_str_cpu_info(str_cpu_info); + char *str_meminfo = malloc(24); + get_str_meminfo(str_meminfo); + + printf(/*"\033[0;34;40m \033[0m\n\r"*/ +/*"\033[0;34;40m \033[0m\n\r"*/ +/*"\033[0;34;40m \033[0m\n\r"*/ +"\033[0;34;40m .\033[0;31;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m t\033[0;1;30;40m@\033[0;34;40m.\033[0;31;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m ;8\033[0;1;30;40m8\033[0;34;40m8\033[0;1;30;40m8\033[0;32;40m.\033[0;34;40m.\033[0;32;40m \033[0;34;40m \033[0;31;40m.\033[0;34;40mS\033[0;1;30;46m88\033[0;1;35;47m8\033[0;35;44mX\033[0;34;40m;\033[0;32;40m.:\033[0;5;30;40mX\033[0;1;30;46mX8\033[0;34;40m8\033[0m\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m t\033[0;5;36;40m8\033[0;5;36;46m@ \033[0;5;37;46m%%\033[0;5;37;47m.\033[0;5;37;46m@\033[0;34;46m8\033[0;31;40mt\033[0;34;40m.\033[0;32;40m.\033[0;34;40m \033[0;31;40m \033[0;1;30;40m8\033[0;1;36;46m%%\033[0;5;37;46m8\033[0;5;1;35;44m8\033[0;1;34;45m8\033[0;30;44m8\033[0;32;40m;;\033[0;5;36;40m8\033[0;37;46m@\033[0;5;37;44m8\033[0;5;35;44m:\033[0;1;30;45m8\033[0;5;34;40m8\033[0m\n\r" +"\033[0;34;40m@\033[0;5;35;40m8\033[0;1;30;44m8\033[0;5;35;40m8\033[0;35;44m8\033[0;1;30;45m@\033[0;35;44m8\033[0;1;30;45m8\033[0;34;45m8\033[0;1;30;45m8\033[0;1;34;45m8\033[0;1;37;47mt\033[0;5;37;46m@\033[0;1;30;46m8S\033[0;5;37;46m8X\033[0;5;36;46m.t\033[0;1;30;44m8\033[0;31;40m \033[0;32;40m \033[0;34;40m:\033[0;5;36;40m8\033[0;1;30;46m@\033[0;1;34;47m8\033[0;5;37;45m8\033[0;5;35;44m \033[0;1;30;45m8\033[0;1;30;46m88\033[0;36;47m@\033[0;5;37;44m8\033[0;5;35;44m \033[0;5;35;45m;\033[0;5;35;44m.\033[0;37;45m8\033[0;1;30;44mX\033[0;32;40m \033[0m %s\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;32;40m \033[0;34;40m.\033[0;32;40m.\033[0;34;40m;S@\033[0;5;30;40m8\033[0;33;41m8\033[0;1;33;43m;\033[0;5;33;43m \033[0;1;33;47m8\033[0;5;33;43m \033[0;1;33;43mt\033[0;36;47m8\033[0;5;36;46m \033[0;1;36;46m%%\033[0;5;34;40m8\033[0;1;30;46m%%8\033[0;5;37;46mX\033[0;5;36;46m%%\033[0;5;35;45m.\033[0;5;36;44m.\033[0;37;46m8\033[0;1;34;47m@\033[0;1;36;47mX\033[0;5;1;35;44m8\033[0;5;37;44m8\033[0;5;1;34;45m8\033[0;1;35;45m:\033[0;1;34;47m8\033[0;1;30;45m8\033[0;5;34;40m8\033[0;31;40m: \033[0m %s%s\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m.::\033[0;34;40m.\033[0;31;40m;\033[0;1;30;43m8\033[0;5;1;33;41m8\033[0;5;33;43m \033[0;5;33;41m \033[0;5;37;43mX\033[0;5;36;46m8:\033[0;1;36;46mS.\033[0;5;36;46m;@\033[0;1;34;45m88\033[0;1;34;46m8\033[0;1;37;47m.\033[0;5;1;34;45m8\033[0;5;37;45m8\033[0;5;1;34;45m8\033[0;1;35;47m8\033[0;5;1;35;44m8\033[0;5;35;44m \033[0;35;47m8\033[0;35;44m%%\033[0;34;40m;. \033[0;31;40m \033[0m %s%s\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;32;40m \033[0;34;40m .\033[0;31;40m;\033[0;1;30;41m@\033[0;5;31;41mS\033[0;5;33;41m \033[0;5;1;31;43m8\033[0;1;30;43m8\033[0;5;36;46m88\033[0;5;37;46mX\033[0;1;36;47m@\033[0;1;36;46mS\033[0;1;34;47m@\033[0;1;35;47m@\033[0;5;37;44m8\033[0;5;1;34;45m8\033[0;5;35;44m;\033[0;1;34;45m8\033[0;5;35;44m;\033[0;35;47m8\033[0;5;1;35;44m8\033[0;1;30;45m8\033[0;5;35;40m8\033[0;34;40m%%\033[0;32;40m \033[0;34;40m \033[0;31;40m \033[0m %s%s\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m:\033[0;5;33;40mS\033[0;1;32;46m8\033[0;37;43mS\033[0;1;32;47m8\033[0;37;46mS\033[0;5;37;42m8\033[0;5;36;46mX\033[0;36;47m8\033[0;1;30;46m8\033[0;5;35;44mX\033[0;1;34;45m88\033[0;1;30;45m8\033[0;37;45m@\033[0;1;34;45m8\033[0;1;30;45m8\033[0;1;30;44m@\033[0;34;40m8\033[0;32;40m%%\033[0;34;40m; \033[0;32;40m \033[0;34;40m \033[0;31;40m \033[0m %s%s\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m .\033[0;32;40m.@\033[0;1;36;46m%%\033[0;5;36;42m;\033[0;1;33;47mX\033[0;5;37;46m8\033[0;5;37;42m8\033[0;5;33;43m \033[0;5;36;46m8\033[0;1;34;46m8\033[0;1;30;45m8\033[0;34;45m8\033[0;1;30;45m8\033[0;5;34;44m.\033[0;1;30;45m8\033[0;5;34;40m@\033[0;34;40mS:\033[0;32;40m;\033[0;34;40m: \033[0;32;40m \033[0m %s%s\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m.\033[0;31;40m;\033[0;5;36;40m8\033[0;1;36;46mt\033[0;5;36;42m.\033[0;1;33;47m@\033[0;5;36;42m \033[0;1;36;46m@X\033[0;5;36;46mX\033[0;1;36;46mS\033[0;1;30;46mX\033[0;5;34;44m8\033[0;5;35;40m;\033[0;1;30;44mS\033[0;34;40m \033[0;32;40m.\033[0;34;40m.\033[0;31;40m \033[0;34;40m \033[0;32;40m \033[0m\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m .\033[0;1;30;40mX\033[0;1;30;46m@\033[0;1;36;46m%%\033[0;5;36;42mt\033[0;5;37;43m@\033[0;1;32;47m8\033[0;5;36;46m;\033[0;1;36;46m%%S\033[0;1;30;46m@t\033[0;5;36;40m8\033[0;34;40m. \033[0;31;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m :;\033[0;5;32;40m8\033[0;1;30;46mS\033[0;32;46m8\033[0;5;32;42m.\033[0;1;32;43m8\033[0;5;37;42m88\033[0;1;36;46mX\033[0;1;30;46m.\033[0;5;36;40mX\033[0;30;44m8\033[0;31;40m:\033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0;32;40m;\033[0;5;32;40m8\033[0;5;36;40m8\033[0;32;46m8\033[0;5;36;40mt \033[0;1;30;46m8\033[0;5;35;44m8\033[0;37;45m@\033[0;5;35;44m%%\033[0;5;35;40m8\033[0;32;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;32;40m \033[0;31;40m \033[0;34;40m .\033[0;31;40m \033[0;5;34;40mX\033[0;1;30;45m8\033[0;34;45m8\033[0;1;30;45m8\033[0;5;34;44m8\033[0;1;30;45m8\033[0;1;35;47m8\033[0;5;36;44m8\033[0;1;30;40m8\033[0;31;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;31;40m \033[0;30;44m8\033[0;1;34;45m88\033[0;1;30;45m8\033[0;5;35;44m%%\033[0;1;34;45m8\033[0;5;35;44m;\033[0;5;37;45m8\033[0;34;45m@\033[0;34;40m@\033[0;32;40m.\033[0;31;40m.\033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;32;40m \033[0;34;40m \033[0;31;40m :\033[0;5;35;40m8\033[0;1;34;45m8\033[0;1;30;45m8\033[0;5;35;44m%%\033[0;37;45m@\033[0;5;35;44m:\033[0;5;35;45mS\033[0;5;35;44m%%\033[0;35;47m8\033[0;1;30;44m8\033[0;31;40m.\033[0;34;40m.\033[0;32;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;34;40m \033[0;30;44m8\033[0;1;34;45m888\033[0;5;37;45m@\033[0;35;47m8\033[0;5;35;44mt\033[0;35;47m8\033[0;5;35;44mt\033[0;5;35;45m;\033[0;30;44m8\033[0;32;40m;\033[0;31;40m \033[0;32;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;34;40m \033[0;31;40m.\033[0;1;30;40m8\033[0;5;37;45m@\033[0;5;35;44m:\033[0;1;30;45m8\033[0;5;34;44m \033[0;5;35;45m \033[0;1;34;44m8\033[0;1;35;45m.\033[0;5;34;40mX\033[0;34;40m@\033[0;32;40mS\033[0;31;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;34;40m \033[0;31;40m \033[0;34;40m.;\033[0;1;30;40m8\033[0;1;30;44m8\033[0;34;40m8\033[0;5;34;40m8\033[0;32;40m%%\033[0;34;40m8;\033[0;32;40m;\033[0;31;40m.\033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m\n\r" +"\033[0;34;40m \033[0;31;40m \033[0;34;40m \033[0;32;40m .\033[0;31;40m .:\033[0;32;40m.\033[0;31;40m.\033[0;32;40m.\033[0;31;40m.\033[0;32;40m.\033[0;31;40m \033[0;32;40m \033[0;34;40m \033[0m\n\r", + "\033[0;36mOS\033[0m: KolibriOS", "\033[0;36mKernel\033[0m: ", str_krnl_ver, "\033[0;36mUptime\033[0m: ", str_uptime, "\033[0;36mResolution\033[0m: ", str_resolution, "\033[0;36mCPU\033[0m: ", str_cpu_info, "\033[0;36mMemory\033[0m: ", str_meminfo); + + free(str_krnl_ver); + free(str_uptime); + free(str_resolution); + free(str_cpu_info); + free(str_meminfo); + return TRUE; +} \ No newline at end of file diff --git a/programs/system/shell/cmd/cmd_kill.c b/programs/system/shell/cmd/cmd_kill.c index 2bebc3f844..824785ab82 100644 --- a/programs/system/shell/cmd/cmd_kill.c +++ b/programs/system/shell/cmd/cmd_kill.c @@ -1,36 +1,29 @@ - int cmd_kill(char param[]) { + unsigned process; + int result; + int i; -unsigned process; -int result; -int i; - -if ( strlen(param) == 0 ) - { - printf(" kill \n\r"); - return TRUE; + if ( strlen(param) == 0 ) { + printf(CMD_KILL_USAGE); + return TRUE; } -if (!strcmp(param, "all")) - { - for (i = 2;i<256;i++) - { - kol_kill_process(i); + if (!strcmp(param, "all")) { + for (i = 2;i<256;i++) { + kol_kill_process(i); } - return TRUE; - } -else - { - process = _atoi(param); - if ( 0 != process ) - { - result = kol_process_kill_pid(process); - if (result < 0) - return FALSE; - else - return TRUE; + return TRUE; + } + else { + process = atoi(param); + if ( 0 != process ) { + result = kol_process_kill_pid(process); + if (result < 0) + return FALSE; + else + return TRUE; } } diff --git a/programs/system/shell/cmd/cmd_ls.c b/programs/system/shell/cmd/cmd_ls.c index b8ef045e4a..9a398d570f 100644 --- a/programs/system/shell/cmd/cmd_ls.c +++ b/programs/system/shell/cmd/cmd_ls.c @@ -1,127 +1,126 @@ -int cmd_ls(char dir[]) -{ +int cmd_ls(char dir[]) { -kol_struct70 k70; -unsigned *n; -unsigned num_of_file; // number of files in directory -unsigned *t; -unsigned type_of_file; // check is this a file or a folder -int i, result; -char tmp[FILENAME_MAX]; + kol_struct70 k70; + unsigned *n; + unsigned num_of_file; // number of files in directory + unsigned *t; + unsigned type_of_file; // check is this a file or a folder + int i, result; + char tmp[FILENAME_MAX]; -bool single_column_mode = FALSE; + bool single_column_mode = FALSE; -k70.p00 = 1; -k70.p04 = 0; -//k70.p08 = 0; -k70.p12 = 2; // just for test exist & read number of entries -k70.p16 = (unsigned) malloc(32+k70.p12*560); -k70.p20 = 0; + k70.p00 = 1; + k70.p04 = 0; + //k70.p08 = 0; + k70.p12 = 2; // just for test exist & read number of entries + k70.p16 = (unsigned) malloc(32+k70.p12*560); + k70.p20 = 0; -if (!strnicmp(dir,"-1",1)) - { - single_column_mode = TRUE; - dir += 3; - } - -if ( !strlen(dir) ) // if argument is empty, list current directory - k70.p21 = cur_dir; -else -{ - if (dir[0] != '/') // if given directory is relative path, then append cur_dir on left side - { - strcpy(tmp, cur_dir); - if (tmp[strlen(tmp)-1] != '/') - { - strcat(tmp, "/"); // add slash - } - strcat(tmp, dir); - k70.p21 = tmp; - } else // if given directory is an absolute path - { - k70.p21 = dir; - } -} - -result = kol_file_70(&k70); -if ( !((result==0) || (result==6)) ) // check does the directory exists - { - free( (void*) k70.p16); - return FALSE; - } - -n = (unsigned*) (k70.p16+8); -num_of_file = *n; - -// now read full directory -k70.p12 = num_of_file; -free( (void*) k70.p16); -k70.p16 = (unsigned) malloc(32+k70.p12*560); -if ( !k70.p16 ) - return FALSE; - -result = kol_file_70(&k70); -if ( !((result==0) || (result==6)) ) - { - free( (void*) k70.p16); - return FALSE; - } - -// if there was '-1' param, then show single column mode -// otherwise show files in several columns -if (single_column_mode == TRUE) -{ -_SINGLE_COLUMN_MODE: - for (i = 0; i < num_of_file; i++) - { - printf (" %s", k70.p16+32+40+(264+40)*i); - t = (unsigned*) (k70.p16+32+(264+40)*i); - type_of_file = *t; - if ( (0x10 == (type_of_file&0x10)) || (8 == (type_of_file&8)) ) - printf ("/"); - printf ("\n\r"); - } -} -else -{ - int longest_name_len = 0; - int console_window_width = 78; //need to get this value from console.obj if it's possible - for (i = 0; i < num_of_file; i++) + if (!strnicmp(dir,"-1",1)) { - int current_name_len; - current_name_len = strlen( (char*)k70.p16+32+40+(264+40)*i); - if (current_name_len > longest_name_len) longest_name_len = current_name_len; + single_column_mode = TRUE; + dir += 3; } - longest_name_len+=2; //consider space separator and '/' symbol for folders - int columns_max = console_window_width / longest_name_len; - - if (longest_name_len >= console_window_width) goto _SINGLE_COLUMN_MODE; //there was too long filename - - for (i = 0; i < num_of_file; i++) + if ( !strlen(dir) ) // if argument is empty, list current directory + k70.p21 = cur_dir; + else + { + if (dir[0] != '/') // if given directory is relative path, then append cur_dir on left side { - char cur_file[2048]; - strncpy(cur_file, (char*)k70.p16+32+40+(304)*i, sizeof(cur_file)-2); + strcpy(tmp, cur_dir); + if (tmp[strlen(tmp)-1] != '/') + { + strcat(tmp, "/"); // add slash + } + strcat(tmp, dir); + k70.p21 = tmp; + } else // if given directory is an absolute path + { + k70.p21 = dir; + } + } - t = (unsigned*) (k70.p16+32+(304)*i); + result = kol_file_70(&k70); + if ( !((result==0) || (result==6)) ) // check does the directory exists + { + free( (void*) k70.p16); + return FALSE; + } + + n = (unsigned*) (k70.p16+8); + num_of_file = *n; + + // now read full directory + k70.p12 = num_of_file; + free( (void*) k70.p16); + k70.p16 = (unsigned) malloc(32+k70.p12*560); + if ( !k70.p16 ) + return FALSE; + + result = kol_file_70(&k70); + if ( !((result==0) || (result==6)) ) + { + free( (void*) k70.p16); + return FALSE; + } + + // if there was '-1' param, then show single column mode + // otherwise show files in several columns + if (single_column_mode == TRUE) + { + _SINGLE_COLUMN_MODE: + for (i = 0; i < num_of_file; i++) + { + printf (" %s", k70.p16+32+40+(264+40)*i); + t = (unsigned*) (k70.p16+32+(264+40)*i); type_of_file = *t; - - int is_folder = 0; - if ( (0x10 == (type_of_file&0x10)) || (8 == (type_of_file&8)) ) { is_folder = 1; strcat(cur_file, "/"); } + if ( (0x10 == (type_of_file&0x10)) || (8 == (type_of_file&8)) ) + printf ("/"); + printf ("\n\r"); + } + } + else + { + int longest_name_len = 0; + int console_window_width = 78; //need to get this value from console.obj if it's possible + for (i = 0; i < num_of_file; i++) + { + int current_name_len; + current_name_len = strlen( (char*)k70.p16+32+40+(264+40)*i); + if (current_name_len > longest_name_len) longest_name_len = current_name_len; + } - if (is_folder) { printf("\033[0;36m"); } // set cyan for folder - printf ("%*s", -longest_name_len, cur_file); - if (is_folder) { printf("\033[0m"); } // is had been set, reset + longest_name_len+=2; //consider space separator and '/' symbol for folders + int columns_max = console_window_width / longest_name_len; - if ((i>0) && ((i+1)%columns_max == 0)) printf ("\n\r"); - } - if ((i)%columns_max != 0) printf("\n\r"); -} - -free((void*)k70.p16); -return TRUE; + if (longest_name_len >= console_window_width) goto _SINGLE_COLUMN_MODE; //there was too long filename + + for (i = 0; i < num_of_file; i++) + { + char cur_file[2048]; + strncpy(cur_file, (char*)k70.p16+32+40+(304)*i, sizeof(cur_file)-2); + + t = (unsigned*) (k70.p16+32+(304)*i); + type_of_file = *t; + + int is_folder = 0; + if ( (0x10 == (type_of_file&0x10)) || (8 == (type_of_file&8)) ) { is_folder = 1; strcat(cur_file, "/"); } + + if (is_folder) { printf("\033[0;36m"); } // set cyan for folder + printf ("%*s", -longest_name_len, cur_file); + if (is_folder) { printf("\033[0m"); } // is had been set, reset + + if ((i>0) && ((i+1)%columns_max == 0)) printf ("\n\r"); + } + if ((i)%columns_max != 0) printf("\n\r"); + } + + free((void*)k70.p16); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_mkdir.c b/programs/system/shell/cmd/cmd_mkdir.c index 676a8aea95..6a8773175a 100644 --- a/programs/system/shell/cmd/cmd_mkdir.c +++ b/programs/system/shell/cmd/cmd_mkdir.c @@ -1,51 +1,41 @@ -int cmd_mkdir(char dir[]) -{ +int cmd_mkdir(char dir[]) { + char temp[FILENAME_MAX]; + kol_struct70 k70; + unsigned result; -char temp[FILENAME_MAX]; -kol_struct70 k70; -unsigned result; - -if (NULL == dir) - { - #if LANG_ENG - printf(" mkdir \n\r"); - #elif LANG_RUS - printf(" mkdir <४>\n\r"); - #endif - return TRUE; + if (NULL == dir) { + printf(CMD_MKDIR_USAGE); + return TRUE; } - -if ( 0 == strcmp(dir, ".") || ( 0 == strcmp(dir, "..") ) || ( 0 == strcmp(cur_dir, "/")) ) - { - return FALSE; + if ( 0 == strcmp(dir, ".") || ( 0 == strcmp(dir, "..") ) || ( 0 == strcmp(cur_dir, "/")) ) { + return FALSE; } -k70.p00 = 9; -k70.p04 = 0; -//k70.p08 = 0; -k70.p12 = 0; -k70.p16 = 0; -k70.p20 = 0; + k70.p00 = 9; + k70.p04 = 0; + //k70.p08 = 0; + k70.p12 = 0; + k70.p16 = 0; + k70.p20 = 0; -if ( '/' == dir[0]) - k70.p21 = dir; -else - { - strcpy(temp, cur_dir); - if (temp[strlen(temp)-1] != '/') - strcat(temp, "/"); // add slash - strcat(temp, dir); - k70.p21 = temp; + if ( '/' == dir[0]) + k70.p21 = dir; + else { + strcpy(temp, cur_dir); + if (temp[strlen(temp)-1] != '/') + strcat(temp, "/"); // add slash + strcat(temp, dir); + k70.p21 = temp; } -result = kol_file_70(&k70); + result = kol_file_70(&k70); -if (0 == result) - return TRUE; -else - return FALSE; + if (0 == result) + return TRUE; + else + return FALSE; } diff --git a/programs/system/shell/cmd/cmd_more.c b/programs/system/shell/cmd/cmd_more.c index 38704e342b..cf6d72cc12 100644 --- a/programs/system/shell/cmd/cmd_more.c +++ b/programs/system/shell/cmd/cmd_more.c @@ -1,98 +1,92 @@ -int cmd_more(char file[]) -{ +int cmd_more(char file[]) { -kol_struct70 k70; -kol_struct_BDVK bdvk; -unsigned result, i; -unsigned long long filesize, pos; -char buf[81]; // -char temp[FILENAME_MAX]; -unsigned flags; + kol_struct70 k70; + kol_struct_BDVK bdvk; + unsigned result, i; + unsigned long long filesize, pos; + char buf[81]; //���� + char temp[FILENAME_MAX]; + unsigned flags; -if (strlen(file)<1) - { - #if LANG_ENG - printf (" more \n\r"); - #elif LANG_RUS - printf (" more < 䠩>\n\r"); - #endif - return TRUE; + if (strlen(file)<1) { + printf (CMD_MORE_USAGE); + return TRUE; } -if ( '/' == file[0]) - { - strcpy(temp, file); - - if ( !file_check(temp) ) + if ( '/' == file[0]) { - file_not_found(file); - return FALSE; + strcpy(temp, file); + + if ( !file_check(temp) ) + { + file_not_found(file); + return FALSE; + } } - } -else - { - strcpy(temp, cur_dir); - if (temp[strlen(temp)-1] != '/') - strcat(temp, "/"); // add slash - strcat(temp, file); - - if ( !file_check(temp) ) + else { - file_not_found(file); - return FALSE; + strcpy(temp, cur_dir); + if (temp[strlen(temp)-1] != '/') + strcat(temp, "/"); // add slash + strcat(temp, file); + + if ( !file_check(temp) ) + { + file_not_found(file); + return FALSE; + } } - } -k70.p00 = 5; -k70.p04 = k70.p12 = 0; -//k70.p08 = 0; -k70.p16 = (unsigned) &bdvk; -k70.p20 = 0; -k70.p21 = temp; - -result = kol_file_70(&k70); // 砥 ଠ 䠩 -if ( 0 != result ) - return FALSE; - -filesize = bdvk.p32; // 砥 ࠧ 䠩 - -buf[80]=0; -flags = con_get_flags(); - -for (pos=0;pos \n\r"); - #elif LANG_RUS - printf(" mv <筨> <१>\n\r"); - #endif + printf(CMD_MV_USAGE); parameters_free(argc, argv); return TRUE; } diff --git a/programs/system/shell/cmd/cmd_pkill.c b/programs/system/shell/cmd/cmd_pkill.c index 98160c2cc5..cefbbbc575 100644 --- a/programs/system/shell/cmd/cmd_pkill.c +++ b/programs/system/shell/cmd/cmd_pkill.c @@ -1,40 +1,28 @@ + int cmd_pkill(char param[]) { - int i=1, n=0; int process_count=0; - char *buf1k=NULL; + int i = 1, n = 0; int process_count = 0; + char *buf1k = NULL; unsigned PID=0; - #ifdef LANG_RUS - #define PKILL_HELP " pkill <_>\n\r" - #define PKILL_KILL " PID: %u - 㡨\n" - #define PKILL_NOT_KILL " PID: %u - 㡨\n" - #define PKILL_NOT_FOUND " ᮢ ⠪ !\n" - #else - #define PKILL_HELP " pkill \n\r" - #define PKILL_KILL " PID: %u - killed\n" - #define PKILL_NOT_KILL " PID: %u - not killed\n" - #define PKILL_NOT_FOUND " No processes with this name were found!\n" - #endif - - if(!strlen(param)){ - printf(PKILL_HELP); + printf(CMD_PKILL_HELP); return TRUE; } buf1k = malloc(1024); - if(buf1k==NULL){ + if (buf1k == NULL){ return FALSE; } - while(i!=n){ + while (i != n) { n = kol_process_info(i, buf1k); if(!strnicmp(buf1k+10, param, 10)){ memcpy(&PID, buf1k+30 ,sizeof(unsigned)); if(kol_process_kill_pid(PID)){ - printf(PKILL_NOT_KILL, PID); + printf(CMD_PKILL_NOT_KILL, PID); }else{ - printf(PKILL_KILL, PID); + printf(CMD_PKILL_KILL, PID); } process_count++; } @@ -42,7 +30,7 @@ int cmd_pkill(char param[]) } if(!process_count){ - printf(PKILL_NOT_FOUND); + printf(CMD_PKILL_NOT_FOUND); } free(buf1k); diff --git a/programs/system/shell/cmd/cmd_ps.c b/programs/system/shell/cmd/cmd_ps.c index 1caa170324..f39d6bc230 100644 --- a/programs/system/shell/cmd/cmd_ps.c +++ b/programs/system/shell/cmd/cmd_ps.c @@ -2,43 +2,39 @@ int cmd_ps(char param[]) { -int i, n, sel; -char *buf1k; -unsigned PID; -short STATE; + int i, n, sel; + char *buf1k; + unsigned PID; + short STATE; -buf1k = malloc(1024); -if (NULL == buf1k) - return FALSE; + buf1k = malloc(1024); + if (NULL == buf1k) + return FALSE; -sel = param && strlen(param) > 0; + sel = param && strlen(param) > 0; -printf (" PID NAME RAM KB\n\r", PID, buf1k+10); + printf (" PID NAME RAM KB\n\r", PID, buf1k+10); -for (i = 1;;i++) - { - n = kol_process_info(i, buf1k); - memcpy(&PID, buf1k+30 ,sizeof(unsigned)); - STATE = *(buf1k+50); - if (9 != STATE) - { - if (!sel || 0 == strnicmp(param, buf1k+10, 10)) - { - printf (" %7u %11s %d\n\r", PID, buf1k+10, (*(int*)(buf1k+26)+1)/1024); - if (sel) - { + for (i = 1;;i++) { + n = kol_process_info(i, buf1k); + memcpy(&PID, buf1k+30 ,sizeof(unsigned)); + STATE = *(buf1k+50); + if (9 != STATE) { + if (!sel || 0 == strnicmp(param, buf1k+10, 10)) { + printf (" %7u %11s %d\n\r", PID, buf1k+10, (*(int*)(buf1k+26)+1)/1024); + if (sel) { LAST_PID = PID; int cpu_tck = kol_system_cpufreq() / 100; printf (" CPU %d%% RAM %d\n\r", *(int*)buf1k / cpu_tck , *(int*)(buf1k+26)+1); } } } - if (i == n) - break; + if (i == n) + break; } -free(buf1k); -return TRUE; + free(buf1k); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_pwd.c b/programs/system/shell/cmd/cmd_pwd.c index ffab29969b..3accb38ac5 100644 --- a/programs/system/shell/cmd/cmd_pwd.c +++ b/programs/system/shell/cmd/cmd_pwd.c @@ -1,7 +1,6 @@ -int cmd_pwd(char param[]) -{ -printf (" %s%c\n\r", cur_dir, cur_dir[strlen(cur_dir)-1]=='/'?' ':'/' ); -return TRUE; +int cmd_pwd(char param[]) { + printf (" %s%c\n\r", cur_dir, cur_dir[strlen(cur_dir)-1]=='/'?' ':'/' ); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_reboot.c b/programs/system/shell/cmd/cmd_reboot.c index 4b3653e241..c6dd25d72f 100644 --- a/programs/system/shell/cmd/cmd_reboot.c +++ b/programs/system/shell/cmd/cmd_reboot.c @@ -1,10 +1,9 @@ -int cmd_reboot(char param[]) -{ -if (!strcmp(param, "kernel")) - kol_system_end(4); -else - kol_system_end(3); -return TRUE; +int cmd_reboot(char param[]) { + if (!strcmp(param, "kernel")) + kol_system_end(4); + else + kol_system_end(3); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_ren.c b/programs/system/shell/cmd/cmd_ren.c index 6eb3141e0a..c98054b4b1 100644 --- a/programs/system/shell/cmd/cmd_ren.c +++ b/programs/system/shell/cmd/cmd_ren.c @@ -1,6 +1,5 @@ -int cmd_ren(char param[]) -{ +int cmd_ren(char param[]) { char* argv[100]; int argc; /* @@ -9,19 +8,14 @@ int cmd_ren(char param[]) */ argc = parameters_prepare(param, argv); - if (argc != 2) - { - #if LANG_ENG - printf(" ren \n\r"); - #elif LANG_RUS - printf(" ren <䠩> <_>\n\r"); - #endif + if (argc != 2) { + printf(CMD_REN_USAGE); parameters_free(argc, argv); return TRUE; } - char *x; - if (x = strrchr(argv[1], '/') != 0) // argv[1] must be file name, not path - { + //char *x; + // argv[1] must be file name, not path + if (strrchr(argv[1], '/') != NULL) { //printf("%d %s", x, argv[1]); return FALSE; } diff --git a/programs/system/shell/cmd/cmd_rm.c b/programs/system/shell/cmd/cmd_rm.c index 0205f32a0b..35adf3512e 100644 --- a/programs/system/shell/cmd/cmd_rm.c +++ b/programs/system/shell/cmd/cmd_rm.c @@ -1,57 +1,51 @@ -int cmd_rm(char file[]) -{ +int cmd_rm(char file[]) { -kol_struct70 k70; -char temp[FILENAME_MAX]; -unsigned result; + kol_struct70 k70; + char temp[FILENAME_MAX]; + unsigned result; -if (NULL == file || strlen(file) == 0) - { - #if LANG_ENG - printf (" rm \n\r"); - #elif LANG_RUS - printf (" rm < 䠩>\n\r"); - #endif - return TRUE; + if (NULL == file || strlen(file) == 0) { + printf (CMD_RM_USAGE); + return TRUE; } -if ( '/' == file[0]) - { - strcpy(temp, file); - - if ( !file_check(temp) ) + if ( '/' == file[0]) { - return FALSE; + strcpy(temp, file); + + if ( !file_check(temp) ) + { + return FALSE; + } } - } -else - { - strcpy(temp, cur_dir); - if (temp[strlen(temp)-1] != '/') - strcat(temp, "/"); // add slash - strcat(temp, file); - - if ( !file_check(temp) ) + else { - return FALSE; + strcpy(temp, cur_dir); + if (temp[strlen(temp)-1] != '/') + strcat(temp, "/"); // add slash + strcat(temp, file); + + if ( !file_check(temp) ) + { + return FALSE; + } } - } -k70.p00 = 8; -k70.p04 = 0; -//k70.p08 = 0; -k70.p12 = 0; -k70.p16 = 0; -k70.p20 = 0; -k70.p21 = temp; + k70.p00 = 8; + k70.p04 = 0; + //k70.p08 = 0; + k70.p12 = 0; + k70.p16 = 0; + k70.p20 = 0; + k70.p21 = temp; -result = kol_file_70(&k70); + result = kol_file_70(&k70); -if (0 == result) - return TRUE; -else - return FALSE; + if (0 == result) + return TRUE; + else + return FALSE; } diff --git a/programs/system/shell/cmd/cmd_rmdir.c b/programs/system/shell/cmd/cmd_rmdir.c index 74f1d22570..75bef3c6d2 100644 --- a/programs/system/shell/cmd/cmd_rmdir.c +++ b/programs/system/shell/cmd/cmd_rmdir.c @@ -1,53 +1,44 @@ -int cmd_rmdir(char dir[]) -{ +int cmd_rmdir(char dir[]) { + char temp[FILENAME_MAX]; + kol_struct70 k70; + unsigned result; -char temp[FILENAME_MAX]; -kol_struct70 k70; -unsigned result; - -if (NULL == dir || strlen(dir) == 0) - { - #if LANG_ENG - printf(" rmdir \n\r"); - #elif LANG_RUS - printf(" rmdir <४>\n\r"); - #endif - return TRUE; + if (NULL == dir || strlen(dir) == 0) { + printf(CMD_RMDIR_USAGE); + return TRUE; } -if ( ( 0 == strcmp(dir, ".") ) || ( 0 == strcmp(dir, "..") ) || ( 0 == strcmp(cur_dir, "/")) ) - { - return FALSE; + if ( ( 0 == strcmp(dir, ".") ) || ( 0 == strcmp(dir, "..") ) || ( 0 == strcmp(cur_dir, "/")) ) { + return FALSE; } -k70.p00 = 8; -k70.p04 = 0; -//k70.p08 = 0; -k70.p12 = 0; -k70.p16 = 0; -k70.p20 = 0; + k70.p00 = 8; + k70.p04 = 0; + //k70.p08 = 0; + k70.p12 = 0; + k70.p16 = 0; + k70.p20 = 0; -if ( '/' == dir[0]) - k70.p21 = dir; -else - { - strcpy(temp, cur_dir); - if (temp[strlen(temp)-1] != '/') - strcat(temp, "/"); // add slash - strcat(temp, dir); - k70.p21 = temp; + if ( '/' == dir[0]) + k70.p21 = dir; + else { + strcpy(temp, cur_dir); + if (temp[strlen(temp)-1] != '/') + strcat(temp, "/"); // add slash + strcat(temp, dir); + k70.p21 = temp; } -if ( !dir_check(temp) ) - return FALSE; + if ( !dir_check(temp) ) + return FALSE; -result = kol_file_70(&k70); + result = kol_file_70(&k70); -if (0 == result) - return TRUE; -else - return FALSE; + if (0 == result) + return TRUE; + else + return FALSE; } diff --git a/programs/system/shell/cmd/cmd_shutdown.c b/programs/system/shell/cmd/cmd_shutdown.c index f1b6b31f1e..4900566f8f 100644 --- a/programs/system/shell/cmd/cmd_shutdown.c +++ b/programs/system/shell/cmd/cmd_shutdown.c @@ -1,7 +1,6 @@ -int cmd_shutdown(char param[]) -{ -kol_system_end(2); -return TRUE; +int cmd_shutdown(char param[]) { + kol_system_end(2); + return TRUE; } diff --git a/programs/system/shell/cmd/cmd_sleep.c b/programs/system/shell/cmd/cmd_sleep.c index 8fc3211444..b7a249f984 100644 --- a/programs/system/shell/cmd/cmd_sleep.c +++ b/programs/system/shell/cmd/cmd_sleep.c @@ -1,20 +1,12 @@ -int cmd_sleep(char param[]) -{ -int delay; - -if (!strlen(param)) - { - #if LANG_ENG - printf(" sleep