From b59c2bdaf3ef0a8111394cdf2cae6c588b06a313 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=88=D0=BE=D0=B2=D0=B0=D0=BD=20=D0=82=D0=BE=D0=BA=D0=B8?= =?UTF-8?q?=D1=9B-=D0=A8=D1=83=D0=BC=D0=B0=D1=80=D0=B0=D1=86?= Date: Mon, 10 May 2021 06:25:03 +0000 Subject: [PATCH] Replace fetchy.c --- fetchy.c | 205 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 141 insertions(+), 64 deletions(-) diff --git a/fetchy.c b/fetchy.c index 93b91e8..ab11fd4 100644 --- a/fetchy.c +++ b/fetchy.c @@ -1,54 +1,54 @@ #include #include #include +#include +#include -char dump[1]; - -void getSys(char syst[], char *sys); -void getCPU(char cpu[]); -void getGPU(char gpu[]); -void getKernel(char kernel[]); -void getUptime(int *hr, int *min); -void getPackages(int *pkgs, char sys); -void getRAM(float *total, float *used, char bar[]); +#define BUF_SIZE 20 -void init(char gpu[], char cpu[], char kernel[], char syst[], char *sys, int *hr, int *min, int *pkgs, float *total, float *used, char bar[]){ - - getSys(syst, sys); - getGPU(gpu); - getCPU(cpu); - getKernel(kernel); - getUptime(hr, min); - getPackages(pkgs, *sys); - getRAM(total, used, bar); -} +void truncate_spaces(char *str); +static char *get_sys(char *sys); +void get_cpu(char cpu[]); +void get_gpu(char gpu[]); +static char *get_kernel(void); +static char *get_uptime(void); +static int get_packages(char sys); +void get_RAM(float *total, float *used, char bar[]); + +char *os_name = NULL, *uptime = NULL, *kern_name = NULL; int main(int argc, char *argv[]){ - int hr = 0, min = 0, pkgs = 0; - char kernel[50], cpu[70], gpu[70], syst[20], sys; + + char cpu[70], gpu[70], sys; char bar[] = "[----------]"; float total = 0, used = 0; - init(gpu, cpu, kernel, syst, &sys, &hr, &min, &pkgs, &total, &used, bar); + //These get info + + get_gpu(gpu); + get_cpu(cpu); + get_RAM(&total, &used, bar); + + if ( !strcmp(argv[1], "-arch") ) { printf("\n"); - printf("\x1b[1m . \x1b[36mOS\x1b[0m: %s Linux\n", syst); - printf("\x1b[1m / \\ \x1b[36mKERNEL\x1b[0m: %s\n", kernel); - printf("\x1b[1m / \\ \x1b[36mUPTIME\x1b[0m: %dh, %dm\n", hr, min); - printf("\x1b[1m /^. \\ \x1b[36mPACKAGES\x1b[0m: %d\n", pkgs); + printf("\x1b[1m . \x1b[36mOS\x1b[0m -> %s\n", get_sys(&sys)); + printf("\x1b[1m / \\ \x1b[36mKRNL\x1b[0m -> %s\n", get_kernel()); + printf("\x1b[1m / \\ \x1b[36mUPT\x1b[0m -> %s\n", get_uptime()); + printf("\x1b[1m /^. \\ \x1b[36mPKGS\x1b[0m -> %d\n", get_packages(sys)); printf("\x1b[1m / .-. \\ \x1b[36m\x1b[0m \n"); - printf("\x1b[1m / ( ) _\\ \x1b[36mCPU\x1b[0m: %s\n", cpu); - printf("\x1b[1m / _.~ ~._^\\ \x1b[36mGPU\x1b[0m: %s\n", gpu); - printf("\x1b[1m /.^ ^.\\ \x1b[36mRAM\x1b[0m: %.2f GB of %.2f GB, %s -> %.2f %%\n", used / 1000000, total / 1000000, bar, (used/total) * 100); + printf("\x1b[1m / ( ) _\\ \x1b[36mCPU\x1b[0m -> %s\n", cpu); + printf("\x1b[1m / _.~ ~._^\\ \x1b[36mGPU\x1b[0m -> %s\n", gpu); + printf("\x1b[1m /.^ ^.\\ \x1b[36mRAM\x1b[0m -> %.2f GB of %.2f GB, %s -> %.2f %%\n", used / 1000000, total / 1000000, bar, (used/total) * 100); printf("\n\n"); } @@ -56,14 +56,14 @@ int main(int argc, char *argv[]){ if ( !strcmp(argv[1], "-ubuntu") ) { printf("\n"); - printf("\x1b[1m .-. \x1b[36mOS\x1b[0m: %s Linux\n", syst); - printf("\x1b[1m .-'``(|||) \x1b[36mKERNEL\x1b[0m: %s\n", kernel); - printf("\x1b[1m ,`\\ \\ `-`. \x1b[36mUPTIME\x1b[0m: %dh, %dm\n", hr, min); - printf("\x1b[1m / \\ '``-. ` \x1b[36mPACKAGES\x1b[0m: %d\n", pkgs); + printf("\x1b[1m .-. \x1b[36mOS\x1b[0m -> %s\n", get_sys(&sys)); + printf("\x1b[1m .-'``(|||) \x1b[36mKERNEL\x1b[0m -> %s\n", get_kernel()); + printf("\x1b[1m ,`\\ \\ `-`. \x1b[36mUPTIME\x1b[0m -> %s\n", get_uptime()); + printf("\x1b[1m / \\ '``-. ` \x1b[36mPACKAGES\x1b[0m -> %d\n", get_packages(sys)); printf("\x1b[1m .-. , `___: \x1b[36m\x1b[0m \n"); - printf("\x1b[1m (:::) : ___ \x1b[36mCPU\x1b[0m: %s\n", cpu); - printf("\x1b[1m `-` ` , : \x1b[36mGPU\x1b[0m: %s\n", gpu); - printf("\x1b[1m \\ / ,..-` , \x1b[36mRAM\x1b[0m: %.2f GB of %.2f GB, %s -> %.2f %%\n", used / 1000000, total / 1000000, bar, (used/total) * 100); + printf("\x1b[1m (:::) : ___ \x1b[36mCPU\x1b[0m -> %s\n", cpu); + printf("\x1b[1m `-` ` , : \x1b[36mGPU\x1b[0m -> %s\n", gpu); + printf("\x1b[1m \\ / ,..-` , \x1b[36mRAM\x1b[0m -> %.2f GB of %.2f GB, %s -> %.2f %%\n", used / 1000000, total / 1000000, bar, (used/total) * 100); printf("\x1b[1m `./ / .-.` \x1b[36m\x1b[0m \n"); printf("\x1b[1m `-..-( ) \x1b[36m\x1b[0m \n"); printf("\x1b[1m `-` \x1b[36m\x1b[0m \n"); @@ -71,34 +71,58 @@ int main(int argc, char *argv[]){ } -return 0; + + free(os_name); + free(uptime); + return 0; +} + + +void truncate_spaces(char *str) { + int src = 0, dst = 0; + while(*(str + dst) == ' ') dst++; + + while(*(str + dst) != '\0') { + *(str + src) = *(str + dst); + if(*(str + (dst++)) == ' ') + while(*(str + dst) == ' ') dst++; + + src++; + } + + *(str + src) = '\0'; } - -void getSys(char syst[], char *sys){ +static char *get_sys(char *sys){ + os_name = malloc(BUF_SIZE); + char *name = malloc(BUF_SIZE); FILE *sysName = fopen("/etc/issue", "r"); - - fscanf(sysName, "%s ", syst); + + fscanf(sysName, "%s ", name); fclose(sysName); - - if ( !strcmp( syst, "Arch")) *sys = 'a'; - - if ( !strcmp( syst, "Ubuntu")) *sys = 'u'; + snprintf(os_name, BUF_SIZE, "%s Linux", name ); + + if ( !strcmp( name, "Arch")) + *sys = 'a'; + if ( !strcmp( name, "Ubuntu")) + *sys = 'u'; - + free(name); + truncate_spaces(os_name); + return os_name; } -void getCPU(char cpu[]){ +void get_cpu(char cpu[]){ FILE *cpuName = popen("grep -m 1 name /proc/cpuinfo | awk -F':' '{print $2}' | cut -c 2- ", "r"); fscanf(cpuName, "%[^\n]%s", cpu); fclose(cpuName); } -void getGPU(char gpu[]){ +void get_gpu(char gpu[]){ FILE *gpuName = popen("lspci -v | grep VGA -m 1 | awk -F'[' '{ print $2 }' | awk -F']' '{ print $1 }' ", "r"); fscanf(gpuName, "%[^\n]%s", gpu); @@ -107,54 +131,107 @@ void getGPU(char gpu[]){ -void getKernel(char kernel[]){ +static char *get_kernel(){ + kern_name = malloc(BUF_SIZE); + char *kernel = malloc(BUF_SIZE); FILE *kInfo = fopen("/proc/version", "r"); - fscanf(kInfo, "%s %s %s ", dump, dump, kernel); + fscanf(kInfo, "Linux version %s ", kernel); fclose(kInfo); + + truncate_spaces(kernel); + snprintf(kern_name, BUF_SIZE + 5, "Linux %s", kernel); + free(kernel); + + return kern_name; } -void getUptime(int *hr, int *min){ - int sec; - +static char *get_uptime(void){ + int sec, hr, min; FILE *FUp = fopen("/proc/uptime", "r"); + uptime = malloc(BUF_SIZE); fscanf(FUp, "%d", &sec); fclose(FUp); - *hr = (sec/60/60%24); - *min = (sec/60%60); + hr = (sec/60/60%24); + min = (sec/60%60); + + snprintf(uptime, BUF_SIZE, "%dh, %dmin", hr, min); + return uptime; } -void getPackages(int *pkgs, char sys){ - FILE *packages; +static int get_packages(char sys){ + + DIR *packageDir; + int fileCount = 0; + struct dirent * entry; switch (sys){ case 'a': - packages = popen("pacman -Q | wc -l", "r"); + packageDir = opendir("/var/lib/pacman/local"); break; case 'u': - packages = popen("dpkg-query -l | wc -l", "r");; + break; default: printf("\n\n\aUnable to find package list\n\n"); } - fscanf(packages, "%d", pkgs); - fclose(packages); + + + while ((entry = readdir(packageDir)) != NULL) { + if (entry->d_type == DT_DIR) { + fileCount++; + } + } + closedir(packageDir); + + + + return fileCount; + } -void getRAM(float *total, float *used, char bar[]){ +void get_RAM(float *total, float *used, char bar[]){ int usedPercent; FILE *RAM = popen("free | grep Mem", "r"); - fscanf(RAM, "%s %f %f ", dump, total, used); + fscanf(RAM, "Mem: %f %f ", total, used); fclose(RAM); - usedPercent = (int) (((*used) / (*total)) * 10); + usedPercent = round(((*used) / (*total)) * 10); for( int i = 1; i <= usedPercent; i++){ bar[i] = '*'; } } + + + + + +/* +char *LOGO[] = { +" ▄ ", +" ▟█▙ ", +" ▟███▙ ", +" ▟█████▙ ", +" ▟███████▙ ", +" ▂▔▀▜██████▙ ", +" ▟██▅▂▝▜█████▙ ", +" ▟█████████████▙ ", +" ▟███████████████▙ ", +" ▟█████████████████▙ ", +" ▟███████████████████▙ ", +" ▟█████████▛▀▀▜████████▙ ", +" ▟████████▛ ▜███████▙ ", +" ▟█████████ ████████▙ ", +" ▟██████████ █████▆▅▄▃▂ ", +" ▟██████████▛ ▜█████████▙ ", +" ▟██████▀▀▀ ▀▀██████▙ ", +" ▟███▀▘ ▝▀███▙ ", +" ▟▛▀ ▀▜▙ " +}; +*/ \ No newline at end of file