Replace fetchy.c

This commit is contained in:
Јован Ђокић-Шумарац 2021-05-10 06:25:03 +00:00
parent f62afcca8e
commit b59c2bdaf3

205
fetchy.c
View file

@ -1,54 +1,54 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <dirent.h>
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[] = {
"",
" ▟█▙ ",
" ▟███▙ ",
" ▟█████▙ ",
" ▟███████▙ ",
" ▂▔▀▜██████▙ ",
" ▟██▅▂▝▜█████▙ ",
" ▟█████████████▙ ",
" ▟███████████████▙ ",
" ▟█████████████████▙ ",
" ▟███████████████████▙ ",
" ▟█████████▛▀▀▜████████▙ ",
" ▟████████▛ ▜███████▙ ",
" ▟█████████ ████████▙ ",
" ▟██████████ █████▆▅▄▃▂ ",
" ▟██████████▛ ▜█████████▙ ",
" ▟██████▀▀▀ ▀▀██████▙ ",
" ▟███▀▘ ▝▀███▙ ",
" ▟▛▀ ▀▜▙ "
};
*/