forked from KolibriOS/kolibrios
waitfor command
git-svn-id: svn://kolibrios.org@6825 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
61afff5eba
commit
0dd49af34c
@ -39,13 +39,16 @@ date
|
|||||||
echo Выводит <данные> на экран
|
echo Выводит <данные> на экран
|
||||||
exit завершение работы Shell
|
exit завершение работы Shell
|
||||||
free показывает объём оперативной памяти: всей, свободной и используемой
|
free показывает объём оперативной памяти: всей, свободной и используемой
|
||||||
help показать печень команд shell. С параметром <команда> справка по команде
|
help показать перечень команд shell. С параметром <команда> справка по команде
|
||||||
history cписок последних использованных команд
|
history cписок последних использованных команд
|
||||||
kill убивает процесс по <PID>. kill all убивает все пользовательские процессы PID >=2
|
kill убивает процесс по <PID>. kill all убивает все процессы, слоты >=2
|
||||||
ls выводит список файлов в текущем каталоге или указанном <каталоге>
|
ls выводит список файлов в текущем каталоге или указанном <каталоге>
|
||||||
mkdir cоздает <каталог>. Поддерживаются абсолюные и относительные пути
|
mkdir cоздает <каталог>. Поддерживаются абсолюные и относительные пути
|
||||||
more выводит содержимое <файла> на экран
|
more выводит содержимое <файла> на экран
|
||||||
ps показывает список процессов и их PID
|
ps показывает список процессов и их PID,
|
||||||
|
если задать <имя>, покажет %CPU, используемую память и запомнит
|
||||||
|
внутреннюю переменную LASTPID (полезно для команды waitfor)
|
||||||
|
<имя> - это первые 10 букв имени исполняемого файла без расширения
|
||||||
pwd показывает имя текущего каталога
|
pwd показывает имя текущего каталога
|
||||||
reboot перезагружает компьютер или ядро KolibriOS. reboot kernel перезапустить ядро Kolibri
|
reboot перезагружает компьютер или ядро KolibriOS. reboot kernel перезапустить ядро Kolibri
|
||||||
rm удаляет <файл>
|
rm удаляет <файл>
|
||||||
@ -53,5 +56,22 @@ rmdir
|
|||||||
shutdown выключает компьютер
|
shutdown выключает компьютер
|
||||||
sleep приостанавливает работу Shell'а на заданное <время в сотых долях секунды>
|
sleep приостанавливает работу Shell'а на заданное <время в сотых долях секунды>
|
||||||
touch создаёт пустой <файл> или изменяет дату/время создания файла. Не работает
|
touch создаёт пустой <файл> или изменяет дату/время создания файла. Не работает
|
||||||
uptime показывает время работу системы с момента загрузки
|
uptime показывает время работы системы с момента загрузки
|
||||||
ver показывает версию Shell, ver kernel - версию и номер ревизии ядра OS, ver cpu - информацию о процессоре
|
ver показывает версию Shell, ver kernel - версию и номер ревизии ядра OS,
|
||||||
|
ver cpu - информацию о процессоре
|
||||||
|
waitfor если перед этим была запущена программа, приостанавливает
|
||||||
|
выполнение командного файла до ее завершения по LASTPID
|
||||||
|
или до завершения явно указанного параметра <PID>
|
||||||
|
|
||||||
|
Скрипты и запуск на исполнение
|
||||||
|
=======================================
|
||||||
|
Если имя исполнимого файла начинается с / то считается что путь является абсолютным.
|
||||||
|
В противном случае, поиск сначала проводится в текущем каталоге, а затем в /rd/1.
|
||||||
|
|
||||||
|
Далее, если файл найден, проверяются первые 4 байта на сигнатуру #SHS.
|
||||||
|
С этой сигнатуры начинается командный (пакетный) файл.
|
||||||
|
В командном файле допустимы все команды приведенные выше, а комментарии
|
||||||
|
начинаются с символа # в первой позиции строки.
|
||||||
|
|
||||||
|
Если на выполнение был задан исполняемый файл, запомнит LASTPID
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
Shell 0.7.5 // 01.01.2017 // Siemargl
|
Shell 0.7.5 // 06.01.2017 // Siemargl
|
||||||
* <20>¥«×¨¥ ¡ £ה¨×בכ, ¨§¬¥¥ «®£¨× ®¡א ¡®גר בגא¥«®× ¢¢¥או/¢¨§, חג®¡כ × × ד ¢ב¥ו
|
* <20>¥«×¨¥ ¡ £ה¨×בכ, ¨§¬¥¥ «®£¨× ®¡א ¡®גר בגא¥«®× ¢¢¥או/¢¨§, חג®¡כ × × ד ¢ב¥ו
|
||||||
|
„®¡ ¢«¥ ª®¬ ¤ waitfor ¨ ¢ ਠâ ps á ¯ à ¬¥â஬
|
||||||
|
|
||||||
Shell 0.7.4 // 23.01.2014 // Albom
|
Shell 0.7.4 // 23.01.2014 // Albom
|
||||||
* <20> ¡®ג ב ¡דה¥א®¬ ®¡¬¥ (×®¯¨א®¢ ¨¥ Ctrl+C ¨ ¢בג ¢× Ctrl+V בגא®×¨ ז¥«¨×®¬)
|
* <20> ¡®ג ב ¡דה¥א®¬ ®¡¬¥ (×®¯¨א®¢ ¨¥ Ctrl+C ¨ ¢בג ¢× Ctrl+V בגא®×¨ ז¥«¨×®¬)
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
#include "cmd/cmd_uptime.c"
|
#include "cmd/cmd_uptime.c"
|
||||||
#include "cmd/cmd_history.c"
|
#include "cmd/cmd_history.c"
|
||||||
#include "cmd/cmd_cp.c"
|
#include "cmd/cmd_cp.c"
|
||||||
|
#include "cmd/cmd_waitfor.c"
|
||||||
|
|
||||||
#include "modules/module_command.c"
|
#include "modules/module_command.c"
|
||||||
#include "modules/module_program_console.c"
|
#include "modules/module_program_console.c"
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
#SHS
|
#SHS
|
||||||
|
echo
|
||||||
about
|
ver kernel
|
||||||
echo Type 'help' for help
|
echo
|
||||||
|
echo Type 'help' for help
|
||||||
echo
|
echo
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
int cmd_ps(char param[])
|
int cmd_ps(char param[])
|
||||||
{
|
{
|
||||||
|
|
||||||
int i, n;
|
int i, n, sel;
|
||||||
char *buf1k;
|
char *buf1k;
|
||||||
unsigned PID;
|
unsigned PID;
|
||||||
short STATE;
|
short STATE;
|
||||||
@ -11,13 +11,26 @@ buf1k = malloc(1024);
|
|||||||
if (NULL == buf1k)
|
if (NULL == buf1k)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
|
sel = param && strlen(param) > 0;
|
||||||
|
|
||||||
for (i = 1;;i++)
|
for (i = 1;;i++)
|
||||||
{
|
{
|
||||||
n = kol_process_info(i, buf1k);
|
n = kol_process_info(i, buf1k);
|
||||||
PID = *(buf1k+30);
|
PID = *(buf1k+30);
|
||||||
STATE = *(buf1k+50);
|
STATE = *(buf1k+50);
|
||||||
if ( 9 != STATE)
|
if (9 != STATE)
|
||||||
printf (" %7d %s\n\r", PID, buf1k+10);
|
{
|
||||||
|
if (!sel || 0 == strnicmp(param, buf1k+10, 10))
|
||||||
|
{
|
||||||
|
printf (" %7d %s\n\r", PID, buf1k+10);
|
||||||
|
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)
|
if (i == n)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
52
programs/system/shell/cmd/cmd_waitfor.c
Normal file
52
programs/system/shell/cmd/cmd_waitfor.c
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
|
||||||
|
int cmd_waitfor(char param[])
|
||||||
|
// waits for LASTPID or pid in param
|
||||||
|
{
|
||||||
|
|
||||||
|
int i, n, sel, sel_pid;
|
||||||
|
char *buf1k;
|
||||||
|
unsigned PID;
|
||||||
|
short STATE;
|
||||||
|
|
||||||
|
sel = param && strlen(param) > 0;
|
||||||
|
sel_pid = LAST_PID;
|
||||||
|
if (sel)
|
||||||
|
{
|
||||||
|
sel_pid = _atoi(param);
|
||||||
|
}
|
||||||
|
if (0 == sel_pid)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
#if LANG_ENG
|
||||||
|
printf(" Awaing finish PID %d\n\r", sel_pid);
|
||||||
|
#elif LANG_RUS
|
||||||
|
printf(" Ž¦¨¤ ¥¬ § ¢¥à襨ï PID %d\n\r", sel_pid);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
buf1k = malloc(1024);
|
||||||
|
if (NULL == buf1k)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
while(1)
|
||||||
|
{
|
||||||
|
for (i = 1;;i++)
|
||||||
|
{
|
||||||
|
n = kol_process_info(i, buf1k);
|
||||||
|
PID = *(buf1k+30);
|
||||||
|
STATE = *(buf1k+50);
|
||||||
|
if (PID == sel_pid)
|
||||||
|
if(9 == STATE)
|
||||||
|
goto exit_normal;
|
||||||
|
else break;
|
||||||
|
if (i == n)
|
||||||
|
goto exit_normal;
|
||||||
|
}
|
||||||
|
kol_sleep(10); // 100ms
|
||||||
|
}
|
||||||
|
|
||||||
|
exit_normal:
|
||||||
|
free(buf1k);
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -20,6 +20,7 @@ char CMD[256];
|
|||||||
char CMD_HISTORY[CMD_HISTORY_NUM][256];
|
char CMD_HISTORY[CMD_HISTORY_NUM][256];
|
||||||
char CMD_NUM = 0;
|
char CMD_NUM = 0;
|
||||||
char CMD_HISTORY_NUM_REAL = 0;
|
char CMD_HISTORY_NUM_REAL = 0;
|
||||||
|
unsigned LAST_PID = 0;
|
||||||
|
|
||||||
/// ===========================================================
|
/// ===========================================================
|
||||||
|
|
||||||
@ -66,7 +67,7 @@ int cmd_uptime(char param[]);
|
|||||||
int cmd_killall(char process_name[]);
|
int cmd_killall(char process_name[]);
|
||||||
int cmd_history(char arg[]);
|
int cmd_history(char arg[]);
|
||||||
int cmd_cp(char param[]);
|
int cmd_cp(char param[]);
|
||||||
|
int cmd_waitfor(char param[]);
|
||||||
|
|
||||||
/// ===========================================================
|
/// ===========================================================
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ const command_t COMMANDS[]=
|
|||||||
{"ls", " Lists the files in a directory. Usage:\n\r ls ;lists the files in current directory\n\r ls <directory> ;lists the files at specified folder\n\r", &cmd_ls},
|
{"ls", " Lists the files in a directory. Usage:\n\r ls ;lists the files in current directory\n\r ls <directory> ;lists the files at specified folder\n\r", &cmd_ls},
|
||||||
{"mkdir", " Makes directory. Usage:\n\r mkdir <folder name> ;creates the folder in working directory\n\r mkdir <path><folder name> ;create folder by specified path\n\r", &cmd_mkdir},
|
{"mkdir", " Makes directory. Usage:\n\r mkdir <folder name> ;creates the folder in working directory\n\r mkdir <path><folder name> ;create folder by specified path\n\r", &cmd_mkdir},
|
||||||
{"more", " Displays a file data to the screen. Usage:\n\r more <file name>\n\r", &cmd_more},
|
{"more", " Displays a file data to the screen. Usage:\n\r more <file name>\n\r", &cmd_more},
|
||||||
{"ps", " Lists the current processes running\n\r", &cmd_ps},
|
{"ps", " Lists the current processes running\n\r or shows more info on <procname> and save LASTPID\n\r", &cmd_ps},
|
||||||
{"pwd", " Displays the name of the working directory\n\r", &cmd_pwd},
|
{"pwd", " Displays the name of the working directory\n\r", &cmd_pwd},
|
||||||
{"reboot", " Reboots the computer or KolibriOS kernel. Usage:\n\r reboot ;reboot a PC\n\r reboot kernel ;reboot the KolibriOS kernel\n\r", &cmd_reboot},
|
{"reboot", " Reboots the computer or KolibriOS kernel. Usage:\n\r reboot ;reboot a PC\n\r reboot kernel ;reboot the KolibriOS kernel\n\r", &cmd_reboot},
|
||||||
{"rm", " Removes a file. Usage:\n\r rm file name>\n\r", &cmd_rm},
|
{"rm", " Removes a file. Usage:\n\r rm file name>\n\r", &cmd_rm},
|
||||||
@ -26,5 +26,6 @@ const command_t COMMANDS[]=
|
|||||||
{"touch", " Creates an empty file or updates the time/date stamp on a file. Usage:\n\r touch <file name>\n\r", &cmd_touch},
|
{"touch", " Creates an empty file or updates the time/date stamp on a file. Usage:\n\r touch <file name>\n\r", &cmd_touch},
|
||||||
{"uptime", " Displays the uptime\n\r", &cmd_uptime},
|
{"uptime", " Displays the uptime\n\r", &cmd_uptime},
|
||||||
{"ver", " Displays version. Usage:\n\r ver ;Shell version\n\r ver kernel ;version of KolibriOS kernel\n\r ver cpu ;information about CPU\n\r", &cmd_ver},
|
{"ver", " Displays version. Usage:\n\r ver ;Shell version\n\r ver kernel ;version of KolibriOS kernel\n\r ver cpu ;information about CPU\n\r", &cmd_ver},
|
||||||
|
{"waitfor", " Stops console waiting while process finish. Usage:\n\r waitfor ;waiting previous started executable LASTPID\n\r waitfor <PID>;awaiting PID finish\n\r", &cmd_waitfor},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ const command_t COMMANDS[]=
|
|||||||
{"ls", " ‚뢮¤¨â ᯨ᮪ ä ©«®¢. ˆá¯®«ì§®¢ ¨¥:\n\r ls ;ᯨ᮪ ä ©«®¢ ¢ ⥪ã饬 ª â «®£¥\n\r ls <¤¨à¥ªâ®à¨ï> ;ᯨ᮪ ä ©«®¢ ¨§ § ¤ ®© ¤¨à¥ªâ®à¨¨\n\r", &cmd_ls},
|
{"ls", " ‚뢮¤¨â ᯨ᮪ ä ©«®¢. ˆá¯®«ì§®¢ ¨¥:\n\r ls ;ᯨ᮪ ä ©«®¢ ¢ ⥪ã饬 ª â «®£¥\n\r ls <¤¨à¥ªâ®à¨ï> ;ᯨ᮪ ä ©«®¢ ¨§ § ¤ ®© ¤¨à¥ªâ®à¨¨\n\r", &cmd_ls},
|
||||||
{"mkdir", " ‘®§¤ ¥â ª â «®£. ˆá¯®«ì§®¢ ¨¥:\n\r mkdir <¨¬ï ¯ ¯ª¨> ;ᮧ¤ âì ¯ ¯ªã ¢ ⥪ã饬 ª â «®£¥\n\r mkdir <¯ãâì><¨¬ï ¯ ¯ª¨> ;ᮧ¤ âì ¯ ¯ªã ¯® 㪠§ ®¬ã ¯ãâ¨\n\r", &cmd_mkdir},
|
{"mkdir", " ‘®§¤ ¥â ª â «®£. ˆá¯®«ì§®¢ ¨¥:\n\r mkdir <¨¬ï ¯ ¯ª¨> ;ᮧ¤ âì ¯ ¯ªã ¢ ⥪ã饬 ª â «®£¥\n\r mkdir <¯ãâì><¨¬ï ¯ ¯ª¨> ;ᮧ¤ âì ¯ ¯ªã ¯® 㪠§ ®¬ã ¯ãâ¨\n\r", &cmd_mkdir},
|
||||||
{"more", " ‚뢮¤¨â ᮤ¥à¦¨¬®¥ ä ©« íªà . ˆá¯®«ì§®¢ ¨¥:\n\r more <¨¬ï ä ©« >\n\r", &cmd_more},
|
{"more", " ‚뢮¤¨â ᮤ¥à¦¨¬®¥ ä ©« íªà . ˆá¯®«ì§®¢ ¨¥:\n\r more <¨¬ï ä ©« >\n\r", &cmd_more},
|
||||||
{"ps", " ‚뢮¤¨â ᯨ᮪ ¯à®æ¥áᮢ\n\r", &cmd_ps},
|
{"ps", " ‚뢮¤¨â ᯨ᮪ ¯à®æ¥áᮢ\n\r …᫨ 㪠§ ® <¨¬ï¯à®æ¥áá >, ¯®ª §ë¢ ¥â ¡®«ìè¥ ¤ ëå ¨ á®åà ï¥â LASTPID\n\r", &cmd_ps},
|
||||||
{"pwd", " <20>®ª §ë¢ ¥â ¨¬ï ⥪ã饩 ¤¨à¥ªâ®à¨¨\n\r", &cmd_pwd},
|
{"pwd", " <20>®ª §ë¢ ¥â ¨¬ï ⥪ã饩 ¤¨à¥ªâ®à¨¨\n\r", &cmd_pwd},
|
||||||
{"reboot", " <20>¥à¥§ £à㦠¥â ª®¬¯ìîâ¥à ¨«¨ ï¤à® KolibriOS. ˆá¯®«ì§®¢ ¨¥:\n\r reboot ;¯¥à¥§ £à㧨âì <20>Š\n\r reboot kernel ;¯¥à¥§ ¯ãáâ¨âì ï¤à® Kolibri\n\r", &cmd_reboot},
|
{"reboot", " <20>¥à¥§ £à㦠¥â ª®¬¯ìîâ¥à ¨«¨ ï¤à® KolibriOS. ˆá¯®«ì§®¢ ¨¥:\n\r reboot ;¯¥à¥§ £à㧨âì <20>Š\n\r reboot kernel ;¯¥à¥§ ¯ãáâ¨âì ï¤à® Kolibri\n\r", &cmd_reboot},
|
||||||
{"rm", " “¤ «ï¥â ä ©«. ˆá¯®«ì§®¢ ¨¥:\n\r rm <¨¬ï ä ©« >\n\r", &cmd_rm},
|
{"rm", " “¤ «ï¥â ä ©«. ˆá¯®«ì§®¢ ¨¥:\n\r rm <¨¬ï ä ©« >\n\r", &cmd_rm},
|
||||||
@ -26,5 +26,6 @@ const command_t COMMANDS[]=
|
|||||||
{"touch", " ‘®§¤ ñâ ¯ãá⮩ ä ©« ¨«¨ ¨§¬¥ï¥â ¤ âã/¢à¥¬ï ᮧ¤ ¨ï ä ©« . ˆá¯®«ì§®¢ ¨¥:\n\r touch <¨¬ï ä ©« >\n\r", &cmd_touch},
|
{"touch", " ‘®§¤ ñâ ¯ãá⮩ ä ©« ¨«¨ ¨§¬¥ï¥â ¤ âã/¢à¥¬ï ᮧ¤ ¨ï ä ©« . ˆá¯®«ì§®¢ ¨¥:\n\r touch <¨¬ï ä ©« >\n\r", &cmd_touch},
|
||||||
{"uptime", " <20>®ª §ë¢ ¥â uptime\n\r", &cmd_uptime},
|
{"uptime", " <20>®ª §ë¢ ¥â uptime\n\r", &cmd_uptime},
|
||||||
{"ver", " <20>®ª §ë¢ ¥â ¢¥àá¨î. ˆá¯®«ì§®¢ ¨¥:\n\r ver ;¢¥àá¨ï Shell\n\r ver kernel ;¢¥àá¨ï ¨ ®¬¥à ॢ¨§¨¨ ï¤à KolibriOS\n\r ver cpu ;¨ä®à¬ æ¨ï ® ¯à®æ¥áá®à¥\n\r", &cmd_ver},
|
{"ver", " <20>®ª §ë¢ ¥â ¢¥àá¨î. ˆá¯®«ì§®¢ ¨¥:\n\r ver ;¢¥àá¨ï Shell\n\r ver kernel ;¢¥àá¨ï ¨ ®¬¥à ॢ¨§¨¨ ï¤à KolibriOS\n\r ver cpu ;¨ä®à¬ æ¨ï ® ¯à®æ¥áá®à¥\n\r", &cmd_ver},
|
||||||
|
{"waitfor", " <20>ਮáâ ¢«¨¢ ¥â ¢ë¯®«¥¨¥ ª®¬ ¤. ˆá¯®«ì§®¢ ¨¥:\n\r waitfor ;®¦¨¤ ¥¬ ¯à¥¤ë¤ã騩 § ¯ãé¥ë© ¯à®æ¥áá LASTPID\n\r waitfor <PID>;¦¤¥¬ § ¢¥àè¥¨ï ¯à®æ¥áá á 㪠§ ë¬ PID\n\r", &cmd_waitfor},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -8,6 +8,8 @@ int i;
|
|||||||
|
|
||||||
if ('\0' == CMD[0]) return;
|
if ('\0' == CMD[0]) return;
|
||||||
|
|
||||||
|
CMD_NUM = -1;
|
||||||
|
|
||||||
for (i = 0; i < CMD_HISTORY_NUM_REAL; i++)
|
for (i = 0; i < CMD_HISTORY_NUM_REAL; i++)
|
||||||
if ( 0 == strcmp( CMD_HISTORY[i], CMD ) )
|
if ( 0 == strcmp( CMD_HISTORY[i], CMD ) )
|
||||||
return;
|
return;
|
||||||
@ -20,8 +22,6 @@ strcpy(CMD_HISTORY[0], CMD);
|
|||||||
if (CMD_HISTORY_NUM_REAL < CMD_HISTORY_NUM-1)
|
if (CMD_HISTORY_NUM_REAL < CMD_HISTORY_NUM-1)
|
||||||
CMD_HISTORY_NUM_REAL++;
|
CMD_HISTORY_NUM_REAL++;
|
||||||
|
|
||||||
CMD_NUM = -1;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -48,6 +48,7 @@ if (result > 0)
|
|||||||
|
|
||||||
if ( !program_console(result) )
|
if ( !program_console(result) )
|
||||||
{
|
{
|
||||||
|
LAST_PID = result;
|
||||||
#if LANG_ENG
|
#if LANG_ENG
|
||||||
printf (" '%s' started. PID = %d\n\r", cmd, result);
|
printf (" '%s' started. PID = %d\n\r", cmd, result);
|
||||||
#elif LANG_RUS
|
#elif LANG_RUS
|
||||||
|
@ -55,22 +55,40 @@ int strcmp(const char* string1, const char* string2)
|
|||||||
{
|
{
|
||||||
|
|
||||||
while (1)
|
while (1)
|
||||||
|
{
|
||||||
|
if (*string1<*string2)
|
||||||
|
return -1;
|
||||||
|
if (*string1>*string2)
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
if (*string1=='\0')
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
string1++;
|
||||||
|
string2++;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
int strnicmp(const char* string1, const char* string2, unsigned count)
|
||||||
{
|
{
|
||||||
if (*string1<*string2)
|
int pc = 0;
|
||||||
return -1;
|
while (1)
|
||||||
if (*string1>*string2)
|
{
|
||||||
return 1;
|
if (toupper(*string1)<toupper(*string2))
|
||||||
|
return -1;
|
||||||
|
if (toupper(*string1)>toupper(*string2))
|
||||||
|
return 1;
|
||||||
|
|
||||||
if (*string1=='\0')
|
if (*string1=='\0' || pc == count)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
string1++;
|
string1++;
|
||||||
string2++;
|
string2++;
|
||||||
|
pc++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void strcpy(char strDest[], const char strSource[])
|
void strcpy(char strDest[], const char strSource[])
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
|
@ -18,3 +18,4 @@ void _itoa(int i, char *s);
|
|||||||
void reverse(char *s);
|
void reverse(char *s);
|
||||||
void itoa(int i, char *s);
|
void itoa(int i, char *s);
|
||||||
int _atoi( char *s );
|
int _atoi( char *s );
|
||||||
|
int strnicmp(const char* string1, const char* string2, unsigned count);
|
||||||
|
Loading…
Reference in New Issue
Block a user