forked from KolibriOS/kolibrios
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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <directory>\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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
|
||||
int cmd_clear(char param[])
|
||||
{
|
||||
con_cls();
|
||||
return TRUE;
|
||||
int cmd_clear(char param[]) {
|
||||
con_cls();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -19,11 +19,7 @@ int cmd_cp(char param[])
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" cp <file_in> <file_out>\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" cp <¨áâ®ç¨ª> <१ã«ìâ â>\n\r");
|
||||
#endif
|
||||
printf(CMD_CP_USAGE);
|
||||
parameters_free(argc, argv);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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<NUM_OF_CMD; i++)
|
||||
if ( !strcmp(cmd, COMMANDS[i].name) )
|
||||
{
|
||||
printf(COMMANDS[i].help);
|
||||
return TRUE;
|
||||
else {
|
||||
for (i=0; i<NUM_OF_CMD; i++)
|
||||
if ( !strcmp(cmd, COMMANDS[i].name) ) {
|
||||
printf(COMMANDS[i].help);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
#if LANG_ENG
|
||||
printf (" Command \'%s\' not found.\n\r", cmd);
|
||||
#elif LANG_RUS
|
||||
printf (" Š®¬ ¤ \'%s\' ¥ ©¤¥ .\n\r", cmd);
|
||||
#endif
|
||||
printf (available, NUM_OF_CMD);
|
||||
for (i = 0; i < NUM_OF_CMD; i++)
|
||||
printf(" %s\n\r", COMMANDS[i].name);
|
||||
}
|
||||
printf (CMD_HELP_CMD_NOT_FOUND, cmd);
|
||||
printf (CMD_HELP_AVAIL, NUM_OF_CMD);
|
||||
for (i = 0; i < NUM_OF_CMD; i++)
|
||||
printf(" %s\n\r", COMMANDS[i].name);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
|
||||
int cmd_history(char arg[])
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
for (i = CMD_HISTORY_NUM_REAL - 1; 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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,106 +0,0 @@
|
||||
/* turbocat2001 */
|
||||
#if LANG_ENG
|
||||
#define HELP "info <object_name>\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 "'<27> ¯ª '"
|
||||
#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 "'<27>¥ à娢ë©' "
|
||||
#define FILE_SIZE "\n<> §¬¥à ä ©« : %u K<> (%u <20>)\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;
|
||||
}
|
||||
53
programs/system/shell/cmd/cmd_kfetch.c
Normal file
53
programs/system/shell/cmd/cmd_kfetch.c
Normal file
@@ -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;
|
||||
}
|
||||
@@ -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 <PID>\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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <directory>\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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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]; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
char temp[FILENAME_MAX];
|
||||
unsigned flags;
|
||||
|
||||
if (strlen(file)<1)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf (" more <filename>\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<filesize;pos+=80)
|
||||
{
|
||||
|
||||
memset(buf, 0, 80);
|
||||
|
||||
k70.p00 = 0;
|
||||
k70.p04 = pos;
|
||||
// k70.p08 = 0; // bug for over 4Gb files, but "more" is unusable there
|
||||
k70.p12 = 80;
|
||||
k70.p16 = (unsigned) buf;
|
||||
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); // ç⥨¥ 80 ᨬ¢®«®¢
|
||||
for (i=0; i<80; i++)
|
||||
{
|
||||
|
||||
if (27 == buf[i])
|
||||
con_set_flags(flags|0x100);
|
||||
else con_set_flags(flags);
|
||||
|
||||
printf ("%c", buf[i]);
|
||||
}
|
||||
result = kol_file_70(&k70); // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>砥<EFBFBD> <20><><EFBFBD>ଠ<EFBFBD><E0ACA0> <20> 䠩<><E4A0A9>
|
||||
if ( 0 != result )
|
||||
{
|
||||
con_set_flags(flags);
|
||||
printf ("\n\r");
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
}
|
||||
con_set_flags(flags);
|
||||
printf ("\n\r");
|
||||
return TRUE;
|
||||
filesize = bdvk.p32; // <20><><EFBFBD><EFBFBD>砥<EFBFBD> ࠧ<><E0A0A7><EFBFBD> 䠩<><E4A0A9>
|
||||
|
||||
buf[80]=0;
|
||||
flags = con_get_flags();
|
||||
|
||||
for (pos=0;pos<filesize;pos+=80)
|
||||
{
|
||||
|
||||
memset(buf, 0, 80);
|
||||
|
||||
k70.p00 = 0;
|
||||
k70.p04 = pos;
|
||||
// k70.p08 = 0; // bug for over 4Gb files, but "more" is unusable there
|
||||
k70.p12 = 80;
|
||||
k70.p16 = (unsigned) buf;
|
||||
k70.p20 = 0;
|
||||
k70.p21 = temp;
|
||||
|
||||
result = kol_file_70(&k70); // <20>⥭<EFBFBD><E2A5AD> 80 ᨬ<><E1A8AC><EFBFBD><EFBFBD><EFBFBD>
|
||||
for (i=0; i<80; i++)
|
||||
{
|
||||
|
||||
if (27 == buf[i])
|
||||
con_set_flags(flags|0x100);
|
||||
else con_set_flags(flags);
|
||||
|
||||
printf ("%c", buf[i]);
|
||||
}
|
||||
if ( 0 != result )
|
||||
{
|
||||
con_set_flags(flags);
|
||||
printf ("\n\r");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
}
|
||||
con_set_flags(flags);
|
||||
printf ("\n\r");
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,11 +24,7 @@ int cmd_mv(char param[])
|
||||
|
||||
if (argc != 2)
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" mv <file_in> <file_out>\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" mv <¨áâ®ç¨ª> <१ã«ìâ â>\n\r");
|
||||
#endif
|
||||
printf(CMD_MV_USAGE);
|
||||
parameters_free(argc, argv);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -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 " <20>à®æ¥áᮢ á â ª¨¬ ¨¬¥¥¬ ¥ ©¤¥®!\n"
|
||||
#else
|
||||
#define PKILL_HELP " pkill <process_name>\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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <file> <new_name>\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;
|
||||
}
|
||||
|
||||
@@ -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 <filename>\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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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 <directory>\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;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,20 +1,12 @@
|
||||
|
||||
int cmd_sleep(char param[])
|
||||
{
|
||||
int delay;
|
||||
|
||||
if (!strlen(param))
|
||||
{
|
||||
#if LANG_ENG
|
||||
printf(" sleep <time in the 1/100 of second>\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" sleep <¨â¥à¢ « ¢ á®âëå ¤®«ïx ᥪã¤ë>\n\r");
|
||||
#endif
|
||||
return TRUE;
|
||||
int cmd_sleep(char param[]) {
|
||||
int delay;
|
||||
if (!strlen(param)) {
|
||||
printf(CMD_SLEEP_USAGE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
delay = _atoi(param);
|
||||
kol_sleep((unsigned)delay);
|
||||
return TRUE;
|
||||
delay = atoi(param);
|
||||
kol_sleep((unsigned)delay);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,61 +1,51 @@
|
||||
|
||||
int cmd_touch(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(" touch <filename>\n\r");
|
||||
#elif LANG_RUS
|
||||
printf(" touch <¨¬ï ä ©« >\n\r");
|
||||
#endif
|
||||
return TRUE;
|
||||
if (NULL == file || strlen(file) == 0) {
|
||||
printf(CMD_TOUCH_USAGE);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if ( ( 0 == strcmp(file, ".") ) || ( 0 == strcmp(file, "..") ) || ( 0 == strcmp(cur_dir, "/")) )
|
||||
{
|
||||
return FALSE;
|
||||
if ( ( 0 == strcmp(file, ".") ) || ( 0 == strcmp(file, "..") ) || ( 0 == strcmp(cur_dir, "/")) ) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if ( '/' == file[0])
|
||||
{
|
||||
strcpy(temp, file);
|
||||
if ( '/' == file[0]) {
|
||||
strcpy(temp, file);
|
||||
|
||||
if ( !file_check(temp) )
|
||||
k70.p00 = 2;
|
||||
else
|
||||
k70.p00 = 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
strcpy(temp, cur_dir);
|
||||
if (temp[strlen(temp)-1] != '/')
|
||||
strcat(temp, "/"); // add slash
|
||||
strcat(temp, file);
|
||||
if ( !file_check(temp) )
|
||||
k70.p00 = 2;
|
||||
else
|
||||
k70.p00 = 3;
|
||||
if ( !file_check(temp) )
|
||||
k70.p00 = 2;
|
||||
else
|
||||
k70.p00 = 3;
|
||||
} else {
|
||||
strcpy(temp, cur_dir);
|
||||
if (temp[strlen(temp)-1] != '/')
|
||||
strcat(temp, "/"); // add slash
|
||||
strcat(temp, file);
|
||||
if ( !file_check(temp) )
|
||||
k70.p00 = 2;
|
||||
else
|
||||
k70.p00 = 3;
|
||||
}
|
||||
|
||||
k70.p04 = 0;
|
||||
//k70.p08 = 0;
|
||||
k70.p12 = 0;
|
||||
k70.p16 = 0;
|
||||
k70.p20 = 0;
|
||||
k70.p21 = temp;
|
||||
k70.p04 = 0;
|
||||
//k70.p08 = 0;
|
||||
k70.p12 = 0;
|
||||
k70.p16 = 0;
|
||||
k70.p20 = 0;
|
||||
k70.p21 = temp;
|
||||
|
||||
//printf("try to touch [%s], fn70(%d)\n\r", temp, k70.p00);
|
||||
//printf("try to touch [%s], fn70(%d)\n\r", temp, k70.p00);
|
||||
|
||||
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;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
|
||||
int cmd_uptime(char param[])
|
||||
{
|
||||
unsigned time_tick, up_days, up_hours, up_minutes, up_seconds, up_millisecs;
|
||||
void get_str_uptime(char *str, const char *fmt) {
|
||||
unsigned time_tick, up_days, up_hours, up_minutes, up_seconds, up_millisecs;
|
||||
|
||||
time_tick = kol_time_tick();
|
||||
up_days = (time_tick/(24*60*60*100));
|
||||
up_hours = (time_tick/(60*60*100))%24;
|
||||
up_minutes = (time_tick/(60*100))%60;
|
||||
up_seconds = (time_tick/100)%60;
|
||||
up_millisecs = (time_tick*10)%100;
|
||||
time_tick = kol_time_tick();
|
||||
up_days = (time_tick/(24*60*60*100));
|
||||
up_hours = (time_tick/(60*60*100))%24;
|
||||
up_minutes = (time_tick/(60*100))%60;
|
||||
up_seconds = (time_tick/100)%60;
|
||||
up_millisecs = (time_tick*10)%100;
|
||||
|
||||
#if LANG_ENG
|
||||
printf (" Uptime: %d day(s), %d:%d:%d.%d\n\r", up_days, up_hours, up_minutes, up_seconds, up_millisecs);
|
||||
#elif LANG_RUS
|
||||
printf (" Uptime: %d ¤¥©, %d:%d:%d.%d\n\r", up_days, up_hours, up_minutes, up_seconds, up_millisecs);
|
||||
#endif
|
||||
return TRUE;
|
||||
sprintf (str, fmt, up_days, up_hours, up_minutes, up_seconds, up_millisecs);
|
||||
}
|
||||
|
||||
int cmd_uptime(char param[]) {
|
||||
get_str_uptime(tmpstr, CMD_UPTIME_FMT);
|
||||
printf(tmpstr);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,45 +1,31 @@
|
||||
|
||||
int cmd_ver(char param[])
|
||||
{
|
||||
void get_str_kernel_version(char *str, const char *fmt) {
|
||||
char *kvbuf;
|
||||
char *vA, *vB, *vC, *vD;
|
||||
unsigned *Rev;
|
||||
|
||||
if (!strcmp(param, "kernel"))
|
||||
{
|
||||
char *kvbuf;
|
||||
char *vA, *vB, *vC, *vD;
|
||||
unsigned *Rev;
|
||||
kvbuf = malloc(16);
|
||||
kol_get_kernel_ver(kvbuf);
|
||||
vA = kvbuf+0;
|
||||
vB = kvbuf+1;
|
||||
vC = kvbuf+2;
|
||||
vD = kvbuf+3;
|
||||
Rev = (unsigned*)(kvbuf + 5);
|
||||
|
||||
kvbuf = malloc(16);
|
||||
kol_get_kernel_ver(kvbuf);
|
||||
vA = kvbuf+0;
|
||||
vB = kvbuf+1;
|
||||
vC = kvbuf+2;
|
||||
vD = kvbuf+3;
|
||||
Rev = (unsigned*)(kvbuf + 5);
|
||||
sprintf (str, fmt, *vA, *vB, *vC, *vD, *Rev);
|
||||
|
||||
#if LANG_ENG
|
||||
printf (" KolibriOS v%d.%d.%d.%d. Kernel SVN-rev.: %d\n\r", *vA, *vB, *vC, *vD, *Rev);
|
||||
#elif LANG_RUS
|
||||
printf (" KolibriOS v%d.%d.%d.%d. SVN-ॢ. ï¤à : %d\n\r", *vA, *vB, *vC, *vD, *Rev);
|
||||
#endif
|
||||
free(kvbuf);
|
||||
}
|
||||
|
||||
free(kvbuf);
|
||||
void get_str_cpu_info(char *str) {
|
||||
unsigned a, b, c, d;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!strcmp(param, "cpu"))
|
||||
{
|
||||
unsigned a, b, c, d;
|
||||
char str[13];
|
||||
|
||||
str[12] = '\0';
|
||||
|
||||
asm ("cpuid" :
|
||||
"=a" (a),
|
||||
"=b" (b),
|
||||
"=c" (c),
|
||||
"=d" (d):
|
||||
"a"(0));
|
||||
asm ("cpuid" :
|
||||
"=a" (a),
|
||||
"=b" (b),
|
||||
"=c" (c),
|
||||
"=d" (d):
|
||||
"a"(0));
|
||||
|
||||
str[0] = (b&0x000000ff) >> 0;
|
||||
str[1] = (b&0x0000ff00) >> 8;
|
||||
@@ -55,13 +41,24 @@ if (!strcmp(param, "cpu"))
|
||||
str[9] = (c&0x0000ff00) >> 8;
|
||||
str[10] = (c&0x00ff0000) >> 16;
|
||||
str[11] = (c&0xff000000) >> 24;
|
||||
|
||||
printf("%s\n\r", str);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
printf (" Shell v%s\n\r", SHELL_VERSION);
|
||||
return TRUE;
|
||||
str[12] = '\0';
|
||||
}
|
||||
|
||||
int cmd_ver(char param[]) {
|
||||
if (!strcmp(param, "kernel")) {
|
||||
get_str_kernel_version(tmpstr, CMD_VER_FMT1);
|
||||
printf(tmpstr);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (!strcmp(param, "cpu")) {
|
||||
char str[13];
|
||||
get_str_cpu_info(str);
|
||||
printf("%s\n\r", str);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
printf (" Shell v%s\n\r", SHELL_VERSION);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,52 +1,42 @@
|
||||
|
||||
int cmd_waitfor(char param[])
|
||||
// waits for LASTPID or pid in param
|
||||
{
|
||||
/* waits for LASTPID or pid in param */
|
||||
int cmd_waitfor(char param[]) {
|
||||
int i, n, sel, sel_pid;
|
||||
char *buf1k;
|
||||
unsigned PID;
|
||||
short STATE;
|
||||
|
||||
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);
|
||||
sel = param && strlen(param) > 0;
|
||||
sel_pid = LAST_PID;
|
||||
if (sel) {
|
||||
sel_pid = atoi(param);
|
||||
}
|
||||
if (0 == sel_pid)
|
||||
return FALSE;
|
||||
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
|
||||
printf(CMD_WAITFOR_FMT, sel_pid);
|
||||
|
||||
buf1k = malloc(1024);
|
||||
if (NULL == buf1k)
|
||||
return FALSE;
|
||||
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)
|
||||
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;
|
||||
else break;
|
||||
if (i == n)
|
||||
goto exit_normal;
|
||||
}
|
||||
kol_sleep(10); // 100ms
|
||||
kol_sleep(10); // 100ms
|
||||
}
|
||||
|
||||
exit_normal:
|
||||
free(buf1k);
|
||||
return TRUE;
|
||||
exit_normal:
|
||||
free(buf1k);
|
||||
return TRUE;
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user