Board.KolibriOS.org
http://board.kolibrios.org/

Очень функциональный шелл
http://board.kolibrios.org/viewtopic.php?f=48&t=1111
Page 12 of 13

Author:  CleverMouse [ Mon Dec 01, 2014 2:39 pm ]
Post subject:  Re: Очень функциональный шелл

Не переход на tup, а переход с gcc3 на gcc4. И не поломал, а показал, что код неправильный и выходит за границы массива. Локальные переменные немного по-другому легли, и там, где был нуль, стала буква "p". r5207

Author:  Ray [ Fri Nov 27, 2015 2:55 pm ]
Post subject:  Re: Очень функциональный шелл

shell.inc
В функцию shell.wait нужно добавить выход по тайм-ауту, иначе программа зависает в случае, если она была вызвана не из shell.

Author:  JohnXenox [ Sat May 20, 2017 11:04 pm ]
Post subject:  Re: Очень функциональный шелл

Вроде в ту тему попал. Почему, когда я вставляю копированную строку с путём к файлу перед командой cd в shell, то при вставке, удаляется команда cd? Можно ли это как-то исправить? :roll:

Author:  Siemargl [ Sun May 21, 2017 4:41 pm ]
Post subject:  Re: Очень функциональный шелл

JohnXenox wrote:
Вроде в ту тему попал. Почему, когда я вставляю копированную строку с путём к файлу перед командой cd в shell, то при вставке, удаляется команда cd? Можно ли это как-то исправить? :roll:

Конечно можно.

Если сам заинтересован, могу подсказать где - шелл одна из самых простых программ Колибри, и написана на С. Нужно?

Author:  JohnXenox [ Sun May 21, 2017 5:17 pm ]
Post subject:  Re: Очень функциональный шелл

Siemargl wrote:
Если сам заинтересован, могу подсказать где - шелл одна из самых простых программ Колибри, и написана на С. Нужно?

Я бы не прочь поправить, но к сожалению, не умею программировать на С, только мальца на bash shell. :oops:

Author:  Leency [ Wed Sep 27, 2017 9:52 pm ]
Post subject:  Re: Очень функциональный шелл

Shell 0.7.7
* help теперь выводит список комманд в три колонки
* ps теперь выводит размер ОЗУ, используемый процессом
* ls теперь выводит все файлы не в одну, а в несколько колонок, размер колонок расчитывается исходя из самого длинного имени файла в папке, старый вывод списком по прежнему доступен через ключ '-1'

Я почти уверен, что в файле http://websvn.kolibrios.org/filedetails ... 2Fstring.c в функции strnicmp ошибка.
Оно требует количество символов на 1 меньше. Т.е. в коде сейчас strnicmp(param, "-1", 1), хотя я думаю что нужно 2, но с ним не работает.
Буду рад, если кто-то подтвердит или опровергнет.

Вообще очень нравится SHELL из-за простоты сборки.

Приму замечанию по коду.

Attachments:
shel_077.png
shel_077.png [ 15.94 KiB | Viewed 1844 times ]

Author:  IgorA [ Thu Sep 28, 2017 10:59 am ]
Post subject:  Re: Очень функциональный шелл

Quote:
Я почти уверен, что в файле http://websvn.kolibrios.org/filedetails ... 2Fstring.c в функции strnicmp ошибка.
Оно требует количество символов на 1 меньше.

думаю что pc++; нужно перенести перед проверкой if (*string1=='\0' || pc == count) может так получится
Code:
int    strnicmp(const char* string1, const char* string2, unsigned count)
{
int pc = 0;
while (1)
        {
        if (toupper(*string1)<toupper(*string2))
                return -1;
        if (toupper(*string1)>toupper(*string2))
                return 1;
 
        pc++;
        if (*string1=='\0' || pc == count)
                return 0;
 
        string1++;
        string2++;
        }
}

Author:  Ray [ Fri Sep 29, 2017 8:43 am ]
Post subject:  Re: Очень функциональный шелл

IgorA wrote:
думаю что pc++; нужно перенести перед проверкой if (*string1=='\0' || pc == count) может так получится

и проверку исправить на
if (*string1=='\0' || pc >= count)
Иначе получится бесконечный цикл, если 3 параметр <= 0.

Author:  Siemargl [ Fri Sep 29, 2017 9:21 am ]
Post subject:  Re: Очень функциональный шелл

Code:
int    _strnicmp(const char* string1, const char* string2, unsigned count)
{
unsigned pc = 0;
while (pc < count)
        {
        if (toupper(*string1)<toupper(*string2))
                return -1;
        if (toupper(*string1)>toupper(*string2))
                return 1;
 
        if (*string1=='\0')
               break;
 
        string1++;
        string2++;
        pc++;
        }
return 0;
}


Ray, unsigned не бывает отрицательным

Author:  0CodErr [ Fri Sep 29, 2017 11:53 am ]
Post subject:  Re: Очень функциональный шелл

Думаю, можно сделать по аналогии
http://bxr.su/OpenBSD/sys/lib/libkern/strncasecmp.c
http://bxr.su/OpenBSD/lib/libc/string/strcasecmp.c
Как впрочем и всё остальное.

Author:  Leency [ Tue Sep 11, 2018 6:42 pm ]
Post subject:  Re: Очень функциональный шелл

Привет,

Сейчас SHELL ассоциирован с расширением .sh, что может ввести в заблуждение ибо наш SHELL с этими скриптами не совместим, т.к. требует в начале файла четыре символа "#SHS" без которых скрипт работать не будет.

Вопрос: может стоит нашему шеллу дать свое родное расширение? Например, .shs или .ksh.

Author:  tsdima [ Thu Sep 13, 2018 2:24 pm ]
Post subject:  Re: Очень функциональный шелл

Leency wrote:
Вообще очень нравится SHELL из-за простоты сборки.

Вот кстати, может кто-нибудь объяснить, для чего необходим тулчейн от Serge (kos32-gcc kos32-ld), если обычный gcc тоже может собирать проекты, подобные этому? Какие задачи решал Serge, создавая свой тулчейн?

Я пробовал компилировать SHELL в следующих окружениях:
- x32 debian 8 gcc 4.9.2
- x64 Ubuntu 14.04 gcc 4.9.3
- x64 debian 9 gcc 6.3.0

Компилируется и работает. Пришлось, правда, добавить define для _stdcall, __stdcall и _cdecl:
Spoiler: Show
Code:
#define _stdcall __attribute__((stdcall))
#define __stdcall __attribute__((stdcall))
#define _cdecl __attribute__((cdecl))

Вот мой make_eng.sh
Spoiler: Show
Code:
#!/bin/sh
echo "#define LANG_ENG 1" > lang.h
fasm start.asm start.o
gcc -m32 -c -fno-builtin -fno-stack-protector -fleading-underscore -fno-pie system/kolibri.c system/stdlib.c system/string.c system/ctype.c shell.c
ld -m elf_i386 -nostdlib -T kolibri.ld -o shell start.o kolibri.o stdlib.o string.o ctype.o shell.o
objcopy shell -O binary
rm lang.h start.o kolibri.o stdlib.o string.o ctype.o shell.o
#kpack shell
mv shell bin/eng/
cp locale/eng/.shell bin/eng/

Author:  Leency [ Thu Sep 13, 2018 3:02 pm ]
Post subject:  Re: Очень функциональный шелл

На сколько я понимаю, тулчейн от Сержа это порт новой библиотеки Си. Он имеет несравнимо больше функций, чем библиотеки Шелла и следовательно им можно компилировать (портировать) большие проекты.

Author:  JohnXenox [ Thu Sep 13, 2018 4:07 pm ]
Post subject:  Re: Очень функциональный шелл

Leency wrote:
Привет,

Сейчас SHELL ассоциирован с расширением .sh, что может ввести в заблуждение ибо наш SHELL с этими скриптами не совместим, т.к. требует в начале файла четыре символа "#SHS" без которых скрипт работать не будет.

Вопрос: может стоит нашему шеллу дать свое родное расширение? Например, .shs или .ksh.
.shs будет ассоциироваться c форматом системного файла в Windows, .ksh будет ассоциироваться с Korn shell.

Меня текущее расширение устраивает. Но, я бы предложил такие расширения: .shell, .kshs (kolibri shell script), .ksc (kolibri shell commands), .kscs (kolibri shell commands script),.ksd (kolibri shell directives), .ksds (kolibri shell directives script) или .ksm (kolibri shell mnemonics).

Author:  0CodErr [ Thu Sep 13, 2018 6:15 pm ]
Post subject:  Re: Очень функциональный шелл

JohnXenox wrote:
Меня текущее расширение устраивает.
Аналогично.
Вполне подходящее расширение.
Я против переименования только лишь ради переименования.
Leency wrote:
Сейчас SHELL ассоциирован с расширением .sh, что может ввести в заблуждение ибо наш SHELL с этими скриптами не совместим, т.к. требует в начале файла четыре символа "#SHS" без которых скрипт работать не будет.
Ты какую-то ерунду пишешь :)
Если скрипт написан для SHELL — он с ним совместим.
Пример для компиляции с помощью Oberon-07 и fasm viewtopic.php?f=28&t=677&p=70949#p70951
Разумеется, можно написать заведомо несовместимый скрипт и потом на это жаловаться — виноват в этом только использующий такой скрипт не по назначению.

C таким же успехом можно быть недовольным расширением obj, потому что
wikipedia wrote:
OBJ (or .OBJ) is a geometry definition file format first developed by Wavefront Technologies for its Advanced Visualizer animation package.
а не только MSCOFF.

Не надо искать проблему там, где её нет — достаточно понимать что и для чего ты делаешь, либо без понимания не делать этого вовсе.

Page 12 of 13 All times are UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/