diff --git a/programs/system/shell/cmd/cmd_kfetch.c b/programs/system/shell/cmd/cmd_kfetch.c index 5a2a63423..53875d54d 100644 --- a/programs/system/shell/cmd/cmd_kfetch.c +++ b/programs/system/shell/cmd/cmd_kfetch.c @@ -1,3 +1,4 @@ +#include "../system/kolibri.h" void get_str_meminfo(char *str) { unsigned mem_all_mib = kol_system_mem() / 1024; @@ -6,16 +7,28 @@ void get_str_meminfo(char *str) { } 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); + struct kernel_version kv; + int eol; + kol_get_kernel_ver(&kv); + char str_os_rel_offset_dbgtag[24]; + eol = sprintf(str_os_rel_offset_dbgtag, "%d.%d.%d.%d", kv.osrel[0], + kv.osrel[1], kv.osrel[2], kv.osrel[3]); + if (kv.offset) + eol += sprintf(str_os_rel_offset_dbgtag + eol, "+%u", kv.offset); + if (kv.dbgtag) + sprintf(str_os_rel_offset_dbgtag + eol, "-%c", kv.dbgtag); + char str_krn_abi_cmtid[32]; + eol = sprintf(str_krn_abi_cmtid, "ABI %u.%u", kv.abimaj, kv.abimin); + if (kv.cmtid) + sprintf(str_krn_abi_cmtid + eol, ", git %08x", kv.cmtid); + char str_uptime[64]; get_str_uptime(str_uptime, "%d day(s), %d:%d:%d.%d"); - char *str_resolution = malloc(24); + char str_resolution[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); + char str_cpu_info[16]; get_str_cpu_info(str_cpu_info); - char *str_meminfo = malloc(24); + char str_meminfo[24]; get_str_meminfo(str_meminfo); printf( @@ -25,7 +38,7 @@ int cmd_kfetch(char param[]) { "\033[0;5;34;40m8\033[0;1;30;45m8\033[0;5;35;44m:\033[0;5;37;44m8\033[0;37;46m@\033[0;5;36;40m8\033[0;32;40m;;\033[0;30;44m8\033[0;1;34;45m8\033[0;5;1;35;44m8\033[0;5;37;46m8\033[0;1;36;46m%%\033[0;1;30;40m8\033[0;31;40m \033[0;34;40m \033[0;32;40m.\033[0;34;40m.\033[0;31;40mt\033[0;34;46m8\033[0;5;37;46m@\033[0;5;37;47m.\033[0;5;37;46m%%\033[0;5;36;46m @\033[0;5;36;40m8\033[0;34;40mt \033[0;32;40m \033[0;34;40m \033[0m\n\r" "\033[0;32;40m \033[0;1;30;44mX\033[0;37;45m8\033[0;5;35;44m.\033[0;5;35;45m;\033[0;5;35;44m \033[0;5;37;44m8\033[0;36;47m@\033[0;1;30;46m88\033[0;1;30;45m8\033[0;5;35;44m \033[0;5;37;45m8\033[0;1;34;47m8\033[0;1;30;46m@\033[0;5;36;40m8\033[0;34;40m:\033[0;32;40m \033[0;31;40m \033[0;1;30;44m8\033[0;5;36;46mt.\033[0;5;37;46mX8\033[0;1;30;46mS8\033[0;5;37;46m@\033[0;1;37;47mt\033[0;1;34;45m8\033[0;1;30;45m8\033[0;34;45m8\033[0;1;30;45m8\033[0;35;44m8\033[0;1;30;45m@\033[0;35;44m8\033[0;5;35;40m8\033[0;1;30;44m8\033[0;5;35;40m8\033[0;34;40m@\033[0m\n\r" "\033[0;31;40m :\033[0;5;34;40m8\033[0;1;30;45m8\033[0;1;34;47m8\033[0;1;35;45m:\033[0;5;1;34;45m8\033[0;5;37;44m8\033[0;5;1;35;44m8\033[0;1;36;47mX\033[0;1;34;47m@\033[0;37;46m8\033[0;5;36;44m.\033[0;5;35;45m.\033[0;5;36;46m%%\033[0;5;37;46mX\033[0;1;30;46m8%%\033[0;5;34;40m8\033[0;1;36;46m%%\033[0;5;36;46m \033[0;36;47m8\033[0;1;33;43mt\033[0;5;33;43m \033[0;1;33;47m8\033[0;5;33;43m \033[0;1;33;43m;\033[0;33;41m8\033[0;5;30;40m8\033[0;34;40m@S;\033[0;32;40m.\033[0;34;40m.\033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m\n\r" - "\033[0;31;40m \033[0;34;40m .;\033[0;35;44m%%\033[0;35;47m8\033[0;5;35;44m \033[0;5;1;35;44m8\033[0;1;35;47m8\033[0;5;1;34;45m8\033[0;5;37;45m8\033[0;5;1;34;45m8\033[0;1;37;47m.\033[0;1;34;46m8\033[0;1;34;45m88\033[0;5;36;46m@;\033[0;1;36;46m.S\033[0;5;36;46m:8\033[0;5;37;43mX\033[0;5;33;41m \033[0;5;33;43m \033[0;5;1;33;41m8\033[0;1;30;43m8\033[0;31;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[0m %s\n\r" + "\033[0;31;40m \033[0;34;40m .;\033[0;35;44m%%\033[0;35;47m8\033[0;5;35;44m \033[0;5;1;35;44m8\033[0;1;35;47m8\033[0;5;1;34;45m8\033[0;5;37;45m8\033[0;5;1;34;45m8\033[0;1;37;47m.\033[0;1;34;46m8\033[0;1;34;45m88\033[0;5;36;46m@;\033[0;1;36;46m.S\033[0;5;36;46m:8\033[0;5;37;43mX\033[0;5;33;41m \033[0;5;33;43m \033[0;5;1;33;41m8\033[0;1;30;43m8\033[0;31;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[0m %s%s\n\r" "\033[0;31;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m%%\033[0;5;35;40m8\033[0;1;30;45m8\033[0;5;1;35;44m8\033[0;35;47m8\033[0;5;35;44m;\033[0;1;34;45m8\033[0;5;35;44m;\033[0;5;1;34;45m8\033[0;5;37;44m8\033[0;1;35;47m@\033[0;1;34;47m@\033[0;1;36;46mS\033[0;1;36;47m@\033[0;5;37;46mX\033[0;5;36;46m88\033[0;1;30;43m8\033[0;5;1;31;43m8\033[0;5;33;41m \033[0;5;31;41mS\033[0;1;30;41m@\033[0;31;40m;\033[0;34;40m. \033[0;32;40m \033[0;31;40m \033[0;34;40m \033[0m %s%s\n\r" "\033[0;31;40m \033[0;34;40m \033[0;32;40m \033[0;34;40m ;\033[0;32;40m%%\033[0;34;40m8\033[0;1;30;44m@\033[0;1;30;45m8\033[0;1;34;45m8\033[0;37;45m@\033[0;1;30;45m8\033[0;1;34;45m88\033[0;5;35;44mX\033[0;1;30;46m8\033[0;36;47m8\033[0;5;36;46mX\033[0;5;37;42m8\033[0;37;46mS\033[0;1;32;47m8\033[0;37;43mS\033[0;1;32;46m8\033[0;5;33;40mS\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[0m\n\r" "\033[0;32;40m \033[0;34;40m :\033[0;32;40m;\033[0;34;40m:S\033[0;5;34;40m@\033[0;1;30;45m8\033[0;5;34;44m.\033[0;1;30;45m8\033[0;34;45m8\033[0;1;30;45m8\033[0;1;34;46m8\033[0;5;36;46m8\033[0;5;33;43m \033[0;5;37;42m8\033[0;5;37;46m8\033[0;1;33;47mX\033[0;5;36;42m;\033[0;1;36;46m%%\033[0;32;40m@.\033[0;34;40m. \033[0;32;40m \033[0;34;40m \033[0m %s%s\n\r" @@ -41,13 +54,8 @@ int cmd_kfetch(char param[]) { "\033[0;34;40m \033[0;31;40m \033[0;32;40m \033[0;31;40m.\033[0;32;40m;\033[0;34;40m;8\033[0;32;40m%%\033[0;5;34;40m8\033[0;34;40m8\033[0;1;30;44m8\033[0;1;30;40m8\033[0;34;40m;.\033[0;31;40m \033[0;34;40m \033[0;31;40m \033[0;34;40m \033[0m\n\r" "\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[0;31;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 + "\033[0;36mOS\033[0m: KolibriOS ", str_os_rel_offset_dbgtag, "\033[0;36mKernel\033[0m: ", str_krn_abi_cmtid, "\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_ver.c b/programs/system/shell/cmd/cmd_ver.c index a7c2c9a0d..b729b2442 100644 --- a/programs/system/shell/cmd/cmd_ver.c +++ b/programs/system/shell/cmd/cmd_ver.c @@ -1,20 +1,21 @@ +#include "../system/kolibri.h" void get_str_kernel_version(char *str, const char *fmt) { - char *kvbuf; - char *vA, *vB, *vC, *vD; - unsigned *Rev; + struct kernel_version kv; - kvbuf = malloc(16); - kol_get_kernel_ver(kvbuf); - vA = kvbuf+0; - vB = kvbuf+1; - vC = kvbuf+2; - vD = kvbuf+3; - Rev = (unsigned*)(kvbuf + 5); + kol_get_kernel_ver(&kv); + char str_offset[8] = {'\0'}; + if (kv.offset) + sprintf(str_offset, "+%u", kv.offset); + char str_dbgtag[4] = {'\0'}; + if (kv.dbgtag) + sprintf(str_dbgtag, "-%c", kv.dbgtag); + char str_cmtid[16] = {'\0'}; + if (kv.cmtid) + sprintf(str_cmtid, " (%08x)", kv.cmtid); - sprintf (str, fmt, *vA, *vB, *vC, *vD, *Rev); - - free(kvbuf); + sprintf(str, fmt, kv.osrel[0], kv.osrel[1], kv.osrel[2], kv.osrel[3], + str_offset, str_dbgtag, str_cmtid, kv.abimaj, kv.abimin); } void get_str_cpu_info(char *str) { diff --git a/programs/system/shell/locale/eng/globals.h b/programs/system/shell/locale/eng/globals.h index 2f6fe6344..27d3afac1 100644 --- a/programs/system/shell/locale/eng/globals.h +++ b/programs/system/shell/locale/eng/globals.h @@ -59,7 +59,7 @@ const command_t COMMANDS[]= #define CMD_SLEEP_USAGE " sleep