Board.KolibriOS.org

Official KolibriOS board
It is currently Sun Sep 22, 2019 5:35 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 186 posts ]  Go to page Previous 19 10 11 12 13 Next
Author Message
PostPosted: Mon Dec 01, 2014 2:39 pm 
Offline
Kernel Developer
User avatar

Joined: Thu Sep 03, 2009 1:52 pm
Posts: 1620
Не переход на tup, а переход с gcc3 на gcc4. И не поломал, а показал, что код неправильный и выходит за границы массива. Локальные переменные немного по-другому легли, и там, где был нуль, стала буква "p". r5207

_________________
Сделаем мир лучше!


Top
   
PostPosted: Fri Nov 27, 2015 2:55 pm 
Offline

Joined: Sun Aug 09, 2015 3:41 pm
Posts: 112
shell.inc
В функцию shell.wait нужно добавить выход по тайм-ауту, иначе программа зависает в случае, если она была вызвана не из shell.


Top
   
PostPosted: Sat May 20, 2017 11:04 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Вроде в ту тему попал. Почему, когда я вставляю копированную строку с путём к файлу перед командой cd в shell, то при вставке, удаляется команда cd? Можно ли это как-то исправить? :roll:

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Sun May 21, 2017 4:41 pm 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
JohnXenox wrote:
Вроде в ту тему попал. Почему, когда я вставляю копированную строку с путём к файлу перед командой cd в shell, то при вставке, удаляется команда cd? Можно ли это как-то исправить? :roll:

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

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


Top
   
PostPosted: Sun May 21, 2017 5:17 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
Siemargl wrote:
Если сам заинтересован, могу подсказать где - шелл одна из самых простых программ Колибри, и написана на С. Нужно?

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

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Wed Sep 27, 2017 9:52 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5061
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 1617 times ]

_________________
Через тернии к звездам
Top
   
PostPosted: Thu Sep 28, 2017 10:59 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
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++;
        }
}


Top
   
PostPosted: Fri Sep 29, 2017 8:43 am 
Offline

Joined: Sun Aug 09, 2015 3:41 pm
Posts: 112
IgorA wrote:
думаю что pc++; нужно перенести перед проверкой if (*string1=='\0' || pc == count) может так получится

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


Top
   
PostPosted: Fri Sep 29, 2017 9:21 am 
Offline

Joined: Tue Mar 08, 2016 11:00 pm
Posts: 436
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 не бывает отрицательным


Top
   
PostPosted: Fri Sep 29, 2017 11:53 am 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
Думаю, можно сделать по аналогии
http://bxr.su/OpenBSD/sys/lib/libkern/strncasecmp.c
http://bxr.su/OpenBSD/lib/libc/string/strcasecmp.c
Как впрочем и всё остальное.


Top
   
PostPosted: Tue Sep 11, 2018 6:42 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5061
Привет,

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

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

_________________
Через тернии к звездам


Top
   
PostPosted: Thu Sep 13, 2018 2:24 pm 
Offline

Joined: Wed Mar 26, 2008 12:44 pm
Posts: 225
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/


Top
   
PostPosted: Thu Sep 13, 2018 3:02 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5061
На сколько я понимаю, тулчейн от Сержа это порт новой библиотеки Си. Он имеет несравнимо больше функций, чем библиотеки Шелла и следовательно им можно компилировать (портировать) большие проекты.

_________________
Через тернии к звездам


Top
   
PostPosted: Thu Sep 13, 2018 4:07 pm 
Offline
User avatar

Joined: Thu May 18, 2017 2:29 am
Posts: 170
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).

_________________
The Glass is Always Half Full! :mrgreen:


Top
   
PostPosted: Thu Sep 13, 2018 6:15 pm 
Offline

Joined: Sun Oct 30, 2011 6:43 pm
Posts: 1499
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.

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 186 posts ]  Go to page Previous 19 10 11 12 13 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited