From 167bf81633e307978428d9e93a4b444d5715b33c 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: Wed, 26 May 2021 12:23:42 +0200 Subject: [PATCH] Reworked quite a lot --- Makefile | 2 +- fetchy | Bin 25904 -> 0 bytes fetchy.c | 448 +++++++++++++++++++++++++++---------------------------- logos.h | 193 ++++++++---------------- 4 files changed, 283 insertions(+), 360 deletions(-) delete mode 100755 fetchy diff --git a/Makefile b/Makefile index 27c2969..4daee3c 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ PREFIX = /usr/local CC = gcc -CFLAGS = -lm +CFLAGS = -lm -g -O0 all: fetchy diff --git a/fetchy b/fetchy deleted file mode 100755 index e706b8cfaba4af8c71d3fbd39971c32ecfbaa28a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25904 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 diff --git a/fetchy.c b/fetchy.c index 2be7d10..f878b5f 100644 --- a/fetchy.c +++ b/fetchy.c @@ -2,72 +2,77 @@ #include #include #include -#include -#include +#include // directory management + #define BUF_SIZE 50 +#define COLS 8 +#define ROWS 100 +#define SUPPORTED_OS "xadurm" +#define ARCH_BASED "axmr" +#define DEBIAN_BASED "du" -void truncate_spaces_leading(char *str); -void truncate_spaces_trailing(char *str); +#include "logos.h" + + + +void truncate_spaces(char *str); void read_line(char x); -void cache_info(char *cache_path, char **cpu_name, char **gpu); +void cache_info(char *cache_path, char **cpu_name, char **gpu, char *os_table); static int count_files(DIR *package_dir); -static char *get_sys(char *ascii, char *sys, char *os_name); +static char *get_sys(char *s_os, char *os_name, char *os_table); static char *get_kernel(char *kern_name); static char *get_uptime(char *uptime); static char *get_RAM(char *ram_info); static char *get_cpu(char *cpuname); static char *get_gpu(char *gpu); -static char *get_packages(char *package_count, char sys); +static char *get_packages(char *package_count); -void concatenate_and_print(char ascii, char sys, char *os, char *cpu_name, char *gpu); +void concatenate_print(char *os, char *cpu_name, char *gpu); + + +char sys; +int logo_number = 0; int main(int argc, char *argv[]){ - char sys, ascii, - *os_name = NULL, - *cpu_name = NULL, - *gpu = NULL, - *os = malloc(BUF_SIZE), - *cache_path = malloc(BUF_SIZE * 2); - cache_info(cache_path, &cpu_name, &gpu); - os = get_sys(&ascii, &sys, os_name); + char *os_name = NULL, + *cpu_name = NULL, + *gpu = NULL, + *os = malloc(BUF_SIZE), + *os_table = malloc(BUF_SIZE * 2), + *cache_path = malloc(BUF_SIZE * 2), + *s_os = SUPPORTED_OS; - if ( argv[1] != NULL ){ + + + cache_info(cache_path, &cpu_name, &gpu, os_table); + os = get_sys(s_os, os_name, os_table); + + + if ( argv[1] != NULL ) { - switch ( *(argv[1] + 1) ){ - - case 'a': - case 'x': - case 'r': - case 'u': - case 'd': - case 'm': - case 'o': - case 'v': - - ascii = *(argv[1] + 1) ; - break; - - - default: - printf("\n\nArgument not supported\n\n"); - exit(EXIT_FAILURE); - } -} + if ( strchr(SUPPORTED_OS, *(argv[1] + 1)) ) + logo_number = (int) (strchr(s_os, *(argv[1] + 1) ) - s_os); + + else { + fprintf(stderr, "\n\nArgument not supported\n\n"); + exit(EXIT_FAILURE); + } + } - //This one is in logos.h - concatenate_and_print(ascii, sys, os, cpu_name, gpu); + concatenate_print( os, cpu_name, gpu); + free(os_name); @@ -76,24 +81,24 @@ int main(int argc, char *argv[]){ free(cache_path); - return 0; + return EXIT_SUCCESS; } -void read_line(char x){ +void read_line(char x) { int c; while (( c = getchar()) != x && c != EOF) { } } -// taken from https://github.com/ss7m/paleofetch -void truncate_spaces_leading(char *str){ - int src = 0, dst = 0; - while(*(str + dst) == ' ') dst++; +void truncate_spaces(char *str) { + int src = 0, dst = 0, index, i = -1; + + while(*(str + dst) == ' ') dst++; while(*(str + dst) != '\0') { *(str + src) = *(str + dst); @@ -104,20 +109,12 @@ void truncate_spaces_leading(char *str){ } *(str + src) = '\0'; -} - - - - -void truncate_spaces_trailing(char *str){ - int index, i = -1; - i = 0; while(str[i] != '\0'){ if(str[i] != ' ' && str[i] != '\t' && str[i] != '\n'){ index= i; - } + } i++; } @@ -127,33 +124,34 @@ void truncate_spaces_trailing(char *str){ +void cache_info(char *cache_path, char **cpu_name, char **gpu, char *os_table) { -void cache_info(char *cache_path, char **cpu_name, char **gpu){ + snprintf(cache_path, BUF_SIZE * 2, "%s/.local/share/fetchy.cache", getenv("HOME")); + FILE *FCache = NULL; - snprintf(cache_path, BUF_SIZE * 2, "%s/.local/share/fetchy.cache", getenv("HOME")); - FILE *FCache = NULL; + if( (FCache = fopen(cache_path, "r")) ){ + *cpu_name = malloc(BUF_SIZE * 4); + *gpu = malloc(BUF_SIZE * 4); - if( (FCache = fopen(cache_path, "r")) ){ - *cpu_name = malloc(BUF_SIZE * 4); - *gpu = malloc(BUF_SIZE * 4); + char *line = malloc(BUF_SIZE * 4); - char *line = malloc(BUF_SIZE * 4); + fgets(line, BUF_SIZE * 4, FCache); + truncate_spaces(line); + snprintf(*cpu_name, BUF_SIZE * 4, "\x1b[36mCPU\x1b[0m -> %s", strchr(line, ':') +2); - fgets(line, BUF_SIZE * 4, FCache); - snprintf(*cpu_name, BUF_SIZE * 4, "\x1b[36mCPU\x1b[0m -> %s", strchr(line, ':') +2); - truncate_spaces_trailing(*cpu_name); + fgets(line, BUF_SIZE * 4, FCache); + truncate_spaces(line); + snprintf(*gpu, BUF_SIZE * 4, "\x1b[36mGPU\x1b[0m -> %s", strchr(line, ':') +2); - fgets(line, BUF_SIZE * 4, FCache); - snprintf(*gpu, BUF_SIZE * 4, "\x1b[36mGPU\x1b[0m -> %s", strchr(line, ':') +2); - truncate_spaces_trailing(*gpu); + fgets(os_table, BUF_SIZE * 2, FCache); - fclose(FCache); - free(line); - } + fclose(FCache); + free(line); + } - else { - - FCache = fopen(cache_path, "w"); + else { + + FCache = fopen(cache_path, "w"); if( FCache == NULL ){ printf("\nCan't open cache file.\n"); @@ -161,107 +159,84 @@ void cache_info(char *cache_path, char **cpu_name, char **gpu){ } - fprintf(FCache, "CPU : %s\n", get_cpu(*cpu_name)); - fprintf(FCache, "GPU : %s\n", get_gpu(*gpu)); - fclose(FCache); + fprintf(FCache, "CPU : %s\n", get_cpu(*cpu_name)); + fprintf(FCache, "GPU : %s\n", get_gpu(*gpu)); + fprintf(FCache, "a:Arch|x:Artix|r:Arco|m:Manjaro|u:Ubuntu|d:Debian\n"); - printf("\n\aFILE CACHING DONE!! \n\nValues returned : \nCPU -> %s\nGPU -> %s\n\n Caching occurs only once, every subsequent execution will run program normally. Enjoy!\n\n", get_cpu(*cpu_name), get_gpu(*gpu)); + fclose(FCache); - free(*cpu_name); free(*gpu); - exit(0); - } + + + printf("\n FILE CACHING DONE!!\n"); + printf("Caching occurs only once,\n"); + printf("every subsequent execution will\n"); + printf("run program normally. Enjoy!\n\n"); + + + cache_info(cache_path, cpu_name, gpu, os_table); + } } -static int count_files(DIR *package_dir){ +static int count_files(DIR *package_dir) { - struct dirent * entry; - int file_count = 0; + struct dirent * entry; + int file_count = 0; - while ((entry = readdir(package_dir)) != NULL) { - if (entry->d_type == DT_DIR) { - file_count++; - } - } - closedir(package_dir); + while ((entry = readdir(package_dir)) != NULL) { + if (entry->d_type == DT_DIR) { + file_count++; + } + } + closedir(package_dir); - return file_count; + return file_count; } -static char *get_sys(char *ascii, char *sys, char *os_name){ - os_name = malloc(BUF_SIZE); - char *name = malloc(BUF_SIZE); - FILE *sysName = fopen("/etc/issue", "rt"); - +static char *get_sys(char *s_os, char *os_name, char *os_table) { + + os_name = malloc(BUF_SIZE); + char *name = malloc(BUF_SIZE); + FILE *sysName = fopen("/etc/issue", "rt"); + + if( sysName == NULL ){ - printf("\nCan't get os name\n"); + fprintf(stderr, "\nCan't get os name\n"); exit(EXIT_FAILURE); } - fscanf(sysName, "%s ", name); - fclose(sysName); - truncate_spaces_leading(name); - - if ( !strcmp( name, "Artix") ) { - *sys = 'x'; - *ascii = 'x'; - } - - if ( !strcmp( name, "Arch") ) { - *sys = 'a'; - *ascii = 'a'; - } + fscanf(sysName, "%s ", name); + fclose(sysName); + truncate_spaces(name); - if ( !strcmp( name, "Manjaro") ) { - *sys = 'm'; - *ascii = 'm'; - } + sys = *(strstr(os_table, name) - 2); + + logo_number = (int) (strchr(s_os, sys) - s_os); + + if( sys == 'r' ) + snprintf(os_name, BUF_SIZE, "\x1b[36mOS\x1b[0m -> %s", name); + else + snprintf(os_name, BUF_SIZE, "\x1b[36mOS\x1b[0m -> %s Linux", name); - - if ( !strcmp( name, "ArcoLinux") ) { - *sys = 'r'; - *ascii = 'r'; - } - - - - if ( !strcmp( name, "Debian")) { - *sys = 'd'; - *ascii = 'd'; - } - - - if ( !strcmp( name, "Ubuntu")) { - *sys = 'u'; - *ascii = 'u'; - } - - - if( *sys == 'r' ) - snprintf(os_name, BUF_SIZE, "\x1b[36mOS\x1b[0m -> %s", name); - else - snprintf(os_name, BUF_SIZE, "\x1b[36mOS\x1b[0m -> %s Linux", name); - - free(name); - return os_name; + free(name); + return os_name; } - static char *get_cpu(char *cpu_name){ - char *line = malloc(BUF_SIZE * 4); - cpu_name = malloc(BUF_SIZE * 4); + char *line = malloc(BUF_SIZE * 4); + cpu_name = malloc(BUF_SIZE * 4); - FILE *cpu = fopen("/proc/cpuinfo", "rt"); - + FILE *cpu = fopen("/proc/cpuinfo", "rt"); + if( cpu == NULL ){ printf("\nCan't get cpu info\n"); @@ -269,16 +244,16 @@ static char *get_cpu(char *cpu_name){ } - for(int i = 0; i < 5; i++) + for(int i = 0; i < 5; i++) fgets(line, BUF_SIZE * 4, cpu); - snprintf(cpu_name, BUF_SIZE * 4, "%s", strchr(line, ':') +2); - truncate_spaces_trailing(cpu_name); - - fclose(cpu); - free(line); + snprintf(cpu_name, BUF_SIZE * 4, "%s", strchr(line, ':') +2); + truncate_spaces(cpu_name); + + fclose(cpu); + free(line); - return cpu_name; + return cpu_name; } @@ -286,21 +261,21 @@ static char *get_cpu(char *cpu_name){ static char *get_gpu(char *gpu){ - gpu = malloc(BUF_SIZE * 3); - FILE *gpuName = popen("lspci -v | grep VGA -m 1 | awk -F'[' '{ print $2 }' | awk -F']' '{ print $1 }' ", "r"); + gpu = malloc(BUF_SIZE * 3); + FILE *gpuName = popen("lspci -v | grep VGA -m 1 | awk -F'[' '{ print $2 }' | awk -F']' '{ print $1 }' ", "r"); - fscanf(gpuName, "%[^\n]%s", gpu); + fscanf(gpuName, "%[^\n]%s", gpu); - truncate_spaces_leading(gpu); - truncate_spaces_trailing(gpu); + truncate_spaces(gpu); + - fclose(gpuName); + fclose(gpuName); if(strstr(gpu, "VGA")) strcpy(gpu, "CPU's integrated graphics"); - - return gpu; + + return gpu; } @@ -308,9 +283,9 @@ static char *get_gpu(char *gpu){ static char *get_kernel(char *kern_name){ - kern_name = malloc(BUF_SIZE); - char *kernel = malloc(BUF_SIZE); - FILE *kInfo = fopen("/proc/version", "rt"); + kern_name = malloc(BUF_SIZE); + char *kernel = malloc(BUF_SIZE); + FILE *kInfo = fopen("/proc/version", "rt"); if( kInfo == NULL ){ printf("\nCan't get kernel info\n"); @@ -319,14 +294,14 @@ static char *get_kernel(char *kern_name){ - fscanf(kInfo, "Linux version %s ", kernel); - fclose(kInfo); + fscanf(kInfo, "Linux version %s ", kernel); + fclose(kInfo); - truncate_spaces_leading(kernel); - snprintf(kern_name, BUF_SIZE + 5, "\x1b[36mKERN\x1b[0m -> Linux %s", kernel); - free(kernel); + truncate_spaces(kernel); + snprintf(kern_name, BUF_SIZE + 5, "\x1b[36mKERN\x1b[0m -> Linux %s", kernel); + free(kernel); - return kern_name; + return kern_name; } @@ -334,12 +309,12 @@ static char *get_kernel(char *kern_name){ static char *get_uptime(char *uptime){ - int sec, + int sec, hr, min; - FILE *FUp = fopen("/proc/uptime", "rt"); - uptime = malloc(BUF_SIZE); + FILE *FUp = fopen("/proc/uptime", "rt"); + uptime = malloc(BUF_SIZE); if( FUp == NULL ){ @@ -349,52 +324,42 @@ static char *get_uptime(char *uptime){ - fscanf(FUp, "%d", &sec); - fclose(FUp); + 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, "\x1b[36mUPT\x1b[0m -> %dh, %dmin", hr, min); - return uptime; + snprintf(uptime, BUF_SIZE, "\x1b[36mUPT\x1b[0m -> %dh, %dmin", hr, min); + return uptime; } -static char *get_packages(char *package_count, char sys){ +static char *get_packages(char *package_count){ - int pkg_count = 0; - package_count = malloc(BUF_SIZE); + int pkg_count = 0; + package_count = malloc(BUF_SIZE); - switch (sys){ + if( strchr(ARCH_BASED, sys) ) + pkg_count = count_files(opendir("/var/lib/pacman/local")); - case 'r': - case 'x': - case 'a': - case 'm': - - pkg_count = count_files(opendir("/var/lib/pacman/local")); - break; + else if( strchr(DEBIAN_BASED, sys) ) + pkg_count = count_files(opendir("/usr/bin")) + count_files(opendir("/sbin")); - case 'd': - case 'u': - pkg_count = count_files(opendir("/usr/bin")) + count_files(opendir("/sbin")); - break; + else{ + printf("\n\n\aUnable to find package list\n\n"); + exit(EXIT_FAILURE); + } + snprintf(package_count, BUF_SIZE, "\x1b[36mPKGS\x1b[0m -> %d", pkg_count); - default: - printf("\n\n\aUnable to find package list\n\n"); - exit(EXIT_FAILURE); - } - - snprintf(package_count, BUF_SIZE, "\x1b[36mPKGS\x1b[0m -> %d", pkg_count); - - - return package_count; + + return package_count; } @@ -402,51 +367,78 @@ static char *get_packages(char *package_count, char sys){ static char *get_RAM(char *ram_info){ - int bar_percent; + int bar_percent; - float total, + float total, free_mem, used, - real_percent; + real_percent; - ram_info = malloc(BUF_SIZE * 3); + ram_info = malloc(BUF_SIZE * 3); - char *line = malloc(BUF_SIZE * 3), - bar[] = "[----------]"; + char *line = malloc(BUF_SIZE * 3), + bar[] = "[----------]"; - FILE *RAM = fopen("/proc/meminfo", "rt"); + FILE *RAM = fopen("/proc/meminfo", "rt"); - + - fgets(line, BUF_SIZE * 3, RAM); - truncate_spaces_leading(line); - sscanf(line, " MemTotal: %f", &total); + fgets(line, BUF_SIZE * 3, RAM); + truncate_spaces(line); + sscanf(line, " MemTotal: %f", &total); - fgets(line, BUF_SIZE * 3, RAM); + fgets(line, BUF_SIZE * 3, RAM); - fgets(line, BUF_SIZE * 3, RAM); - truncate_spaces_leading(line); - sscanf(line, " MemAvailable: %f", &free_mem); + fgets(line, BUF_SIZE * 3, RAM); + truncate_spaces(line); + sscanf(line, " MemAvailable: %f", &free_mem); - fclose(RAM); + fclose(RAM); - used = total - free_mem; - real_percent = (used / total) * 100; - bar_percent = (real_percent / 10 + 0.35); + used = total - free_mem; + real_percent = (used / total) * 100; + bar_percent = (real_percent / 10 + 0.35); - for( int i = 1; i <= bar_percent; i++){ - bar[i] = '*'; - } + for( int i = 1; i <= bar_percent; i++){ + bar[i] = '*'; + } - snprintf(ram_info, BUF_SIZE * 3, "\x1b[36mRAM\x1b[0m -> %.2f GB of %.2f GB, %s -> %.2f %%", used / 1000000, total / 1000000, bar, real_percent); + snprintf(ram_info, BUF_SIZE * 3, "\x1b[36mRAM\x1b[0m -> %.2f GB of %.2f GB, %s -> %.2f %%", used / 1000000, total / 1000000, bar, real_percent); - free(line); - return ram_info; + free(line); + return ram_info; } -#include "logos.h" +void concatenate_print(char *os, char *cpu_name, char *gpu){ + + + char *uptime = NULL, + *kern_name = NULL, + *ram_info = NULL, + *package_count = NULL; + + + strcat( (logo + logo_number)->logo[0], os); + strcat( (logo + logo_number)->logo[1], get_kernel(kern_name)); + strcat( (logo + logo_number)->logo[2], get_uptime(uptime)); + strcat( (logo + logo_number)->logo[3], get_packages(package_count)); + strcat( (logo + logo_number)->logo[4], cpu_name); + strcat( (logo + logo_number)->logo[5], gpu); + strcat( (logo + logo_number)->logo[6], get_RAM(ram_info)); + + + + for(int i = 0; i < COLS ; i++) + printf("%s\n", (logo + logo_number)->logo[i]); + + + free(uptime); + free(ram_info); + free(kern_name); + free(package_count); +} diff --git a/logos.h b/logos.h index 3f81f01..7a45de4 100644 --- a/logos.h +++ b/logos.h @@ -1,147 +1,78 @@ -void concatenate_and_print(char ascii, char sys, char *os, char *cpu_name, char *gpu){ - - char *uptime = NULL, - *kern_name = NULL, - *ram_info = NULL, - *package_count = NULL; - - - - - switch(ascii){ - - case 'a': - - printf("\n"); - printf("\x1b[1m . %s\n", os); - printf("\x1b[1m / \\ %s\n", get_kernel(kern_name)); - printf("\x1b[1m / \\ %s\n", get_uptime(uptime)); - printf("\x1b[1m /^. \\ %s\n", get_packages(package_count, sys)); - printf("\x1b[1m / .-. \\ %s\n", cpu_name); - printf("\x1b[1m / ( ) _\\ %s\n", gpu); - printf("\x1b[1m / _.~ ~._^\\ %s\n", get_RAM(ram_info)); - printf("\x1b[1m /.^ ^.\\ \n"); - printf("\n\n"); - - - break; +typedef struct s_logos { - - case 'x': - - printf("\n"); - printf("\x1b[1m /\\ %s\n", os); - printf("\x1b[1m / \\ %s\n", get_kernel(kern_name)); - printf("\x1b[1m /`'.,\\ %s\n", get_uptime(uptime)); - printf("\x1b[1m / ', %s\n", get_packages(package_count, sys)); - printf("\x1b[1m / ,`\\ %s\n", cpu_name); - printf("\x1b[1m / ,.'`. \\ %s\n", gpu); - printf("\x1b[1m /.,'` `'.\\ %s\n", get_RAM(ram_info)); - printf("\n\n"); - - break; + char logo[COLS][ROWS]; + +} t_logos; +t_logos logo[6] = { - case 'd': - - printf("\n"); - printf("\x1b[1m _____ %s\n", os); - printf("\x1b[1m / __ \\ %s\n", get_kernel(kern_name)); - printf("\x1b[1m | / | %s\n", get_uptime(uptime)); - printf("\x1b[1m | \\___- %s\n", get_packages(package_count, sys)); - printf("\x1b[1m -_ %s\n", cpu_name); - printf("\x1b[1m --_ %s\n", gpu); - printf("\x1b[1m %s\n", get_RAM(ram_info)); - printf("\n\n"); - - break; - - - - case 'u': - - printf("\n"); - printf("\x1b[1m _ %s\n", os); - printf("\x1b[1m ---(_) %s\n", get_kernel(kern_name)); - printf("\x1b[1m _/ --- \\ %s\n", get_uptime(uptime)); - printf("\x1b[1m (_) | | %s\n", get_packages(package_count, sys)); - printf("\x1b[1m \\ --- / %s\n", cpu_name); - printf("\x1b[1m ---(_) %s\n", gpu); - printf("\x1b[1m %s\n", get_RAM(ram_info)); - printf("\n\n"); - - break; + { "\x1b[1m /\\ ", + "\x1b[1m / \\ ", + "\x1b[1m /`'.,\\ ", + "\x1b[1m / ', ", + "\x1b[1m / ,`\\ ", + "\x1b[1m / ,.'`. \\ ", + "\x1b[1m /.,'` `'.\\ " + }, - case 'r': - - printf("\n"); - printf("\x1b[1m /\\ %s\n", os); - printf("\x1b[1m / \\ %s\n", get_kernel(kern_name)); - printf("\x1b[1m / /\\ \\ %s\n", get_uptime(uptime)); - printf("\x1b[1m / / \\ \\ %s\n", get_packages(package_count, sys)); - printf("\x1b[1m / / \\ \\ %s\n", cpu_name); - printf("\x1b[1m / / _____\\ \\ %s\n", gpu); - printf("\x1b[1m /_/ \\`----.\\_\\ %s\n", get_RAM(ram_info)); - printf("\n\n"); - - break; + { "\x1b[1m . ", + "\x1b[1m / \\ ", + "\x1b[1m / \\ ", + "\x1b[1m /^. \\ ", + "\x1b[1m / .-. \\ ", + "\x1b[1m / ( ) _\\ ", + "\x1b[1m / _.~ ~._^\\ ", + "\x1b[1m /.^ ^.\\ " + }, - case 'm': - - printf("\n"); - printf("\x1b[1m ||||||||| |||| %s\n", os); - printf("\x1b[1m ||||||||| |||| %s\n", get_kernel(kern_name)); - printf("\x1b[1m |||| |||| %s\n", get_uptime(uptime)); - printf("\x1b[1m |||| |||| |||| %s\n", get_packages(package_count, sys)); - printf("\x1b[1m |||| |||| |||| %s\n", cpu_name); - printf("\x1b[1m |||| |||| |||| %s\n", gpu); - printf("\x1b[1m |||| |||| |||| %s\n", get_RAM(ram_info)); - printf("\n\n"); - - break; - - case 'v': - printf("\n"); - printf("\x1b[1m | | | | (_)(_) | | %s\n", os); - printf("\x1b[1m | | | | ___ _ ___ _____ __| | __ _ %s\n", get_kernel(kern_name)); - printf("\x1b[1m | | | |/ _ \\| || \\ \\ / / _ \\ / _` |/ _` | %s\n", get_uptime(uptime)); - printf("\x1b[1m \\ \\_/ / (_) | || |\\ V / (_) | (_| | (_| | %s\n", get_packages(package_count, sys)); - printf("\x1b[1m \\___/ \\___/| || | \\_/ \\___/ \\__,_|\\__,_| %s\n", cpu_name); - printf("\x1b[1m _/ |/ | %s\n", gpu); - printf("\x1b[1m |__/__/ %s\n", get_RAM(ram_info)); - printf("\n\n"); - - break; - - case 'o': - printf("\n"); - printf("\x1b[1m %s\n", os); - printf("\x1b[1m ______ _____ ________ ___ %s\n", get_kernel(kern_name)); - printf("\x1b[1m | _ \\ _ | _ | \\/ | %s\n", get_uptime(uptime)); - printf("\x1b[1m | | | | | | | | | | . . | %s\n", get_packages(package_count, sys)); - printf("\x1b[1m | | | | | | | | | | |\\/| | %s\n", cpu_name); - printf("\x1b[1m | |/ /\\ \\_/ | \\_/ / | | | %s\n", gpu); - printf("\x1b[1m |___/ \\___/ \\___/\\_| |_/ %s\n", get_RAM(ram_info)); - printf("\n\n"); - break; - - default: - printf("\n\n ERROR : Unsupported system\n\n"); - exit(EXIT_FAILURE); - } + { "\x1b[1m _____ ", + "\x1b[1m / __ \\ ", + "\x1b[1m | / | ", + "\x1b[1m | \\___- ", + "\x1b[1m -_ ", + "\x1b[1m --_ ", + "\x1b[1m " + }, + + + { "\x1b[1m _ ", + "\x1b[1m ---(_) ", + "\x1b[1m _/ --- \\ ", + "\x1b[1m (_) | | ", + "\x1b[1m \\ --- / ", + "\x1b[1m ---(_) ", + "\x1b[1m " + }, + + + { "\x1b[1m /\\ ", + "\x1b[1m / \\ ", + "\x1b[1m / /\\ \\ ", + "\x1b[1m / / \\ \\ ", + "\x1b[1m / / \\ \\ ", + "\x1b[1m / / _____\\ \\ ", + "\x1b[1m /_/ \\`----.\\_\\ " + }, + + { "\x1b[1m ||||||||| |||| ", + "\x1b[1m ||||||||| |||| ", + "\x1b[1m |||| |||| ", + "\x1b[1m |||| |||| |||| ", + "\x1b[1m |||| |||| |||| ", + "\x1b[1m |||| |||| |||| ", + "\x1b[1m |||| |||| |||| " + } + + +}; - free(uptime); - free(ram_info); - free(kern_name); - free(package_count); -}