Replace fetchy.c

This commit is contained in:
Јован Ђокић-Шумарац 2021-05-10 10:24:24 +00:00
parent 083d601f11
commit e20d4dc705

View file

@ -7,26 +7,27 @@
#define BUF_SIZE 20 #define BUF_SIZE 20
void truncate_spaces(char *str); void truncate_spaces_leading(char *str);
void read_line(char x);
int count_files(char *path);
static char *get_sys(char *sys); static char *get_sys(char *sys);
void get_cpu(char cpu[]);
void get_gpu(char gpu[]);
static char *get_kernel(void); static char *get_kernel(void);
static char *get_uptime(void); static char *get_uptime(void);
static int get_packages(char sys); static int get_packages(char sys);
static char *get_RAM(); static char *get_RAM(void);
void read_line(char x); static char *get_cpu(void);
void get_gpu(char gpu[]);
char *os_name = NULL, *uptime = NULL, *kern_name = NULL, *ram_info = NULL; char *os_name = NULL, *uptime = NULL, *kern_name = NULL, *ram_info = NULL, *cpu_name = NULL;
int main(int argc, char *argv[]){ int main(int argc, char *argv[]){
char cpu[70], gpu[70], sys; char gpu[70], sys;
char *os = malloc(BUF_SIZE); char *os = malloc(BUF_SIZE);
get_gpu(gpu); get_gpu(gpu);
get_cpu(cpu);
os = get_sys(&sys); os = get_sys(&sys);
@ -38,7 +39,7 @@ int main(int argc, char *argv[]){
printf("\x1b[1m / \\ \x1b[36mUPT\x1b[0m -> %s\n", get_uptime()); 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[36mPKGS\x1b[0m -> %d\n", get_packages(sys));
printf("\x1b[1m / .-. \\ \x1b[36m\x1b[0m \n"); printf("\x1b[1m / .-. \\ \x1b[36m\x1b[0m \n");
printf("\x1b[1m / ( ) _\\ \x1b[36mCPU\x1b[0m -> %s\n", cpu); printf("\x1b[1m / ( ) _\\ \x1b[36mCPU\x1b[0m -> %s\n", get_cpu());
printf("\x1b[1m / _.~ ~._^\\ \x1b[36mGPU\x1b[0m -> %s\n", gpu); printf("\x1b[1m / _.~ ~._^\\ \x1b[36mGPU\x1b[0m -> %s\n", gpu);
printf("\x1b[1m /.^ ^.\\ \x1b[36mRAM\x1b[0m -> %s\n", get_RAM()); printf("\x1b[1m /.^ ^.\\ \x1b[36mRAM\x1b[0m -> %s\n", get_RAM());
printf("\n\n"); printf("\n\n");
@ -53,7 +54,7 @@ int main(int argc, char *argv[]){
printf("\x1b[1m ,`\\ \\ `-`. \x1b[36mUPTIME\x1b[0m -> %s\n", get_uptime()); 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[36mPACKAGES\x1b[0m -> %d\n", get_packages(sys));
printf("\x1b[1m .-. , `___: \x1b[36m\x1b[0m \n"); printf("\x1b[1m .-. , `___: \x1b[36m\x1b[0m \n");
printf("\x1b[1m (:::) : ___ \x1b[36mCPU\x1b[0m -> %s\n", cpu); printf("\x1b[1m (:::) : ___ \x1b[36mCPU\x1b[0m -> %s\n", get_cpu());
printf("\x1b[1m `-` ` , : \x1b[36mGPU\x1b[0m -> %s\n", gpu); printf("\x1b[1m `-` ` , : \x1b[36mGPU\x1b[0m -> %s\n", gpu);
printf("\x1b[1m \\ / ,..-` , \x1b[36mRAM\x1b[0m -> %s\n", get_RAM()); printf("\x1b[1m \\ / ,..-` , \x1b[36mRAM\x1b[0m -> %s\n", get_RAM());
printf("\x1b[1m `./ / .-.` \x1b[36m\x1b[0m \n"); printf("\x1b[1m `./ / .-.` \x1b[36m\x1b[0m \n");
@ -68,20 +69,21 @@ int main(int argc, char *argv[]){
free(uptime); free(uptime);
free(ram_info); free(ram_info);
free(kern_name); free(kern_name);
free(cpu_name);
return 0; return 0;
} }
void read_line(char x) { void read_line(char x){
int c; int c;
while (( c = getchar()) != x && c != EOF) { } while (( c = getchar()) != x && c != EOF) { }
} }
void truncate_spaces(char *str) { void truncate_spaces_leading(char *str){
int src = 0, dst = 0; int src = 0, dst = 0;
while(*(str + dst) == ' ') dst++; while(*(str + dst) == ' ') dst++;
@ -96,16 +98,30 @@ void truncate_spaces(char *str) {
*(str + src) = '\0'; *(str + src) = '\0';
} }
void truncate_spaces_trailing(char *str){
int index, i = -1;
/* Find last index of non-white space character */
i = 0;
while(str[i] != '\0'){
if(str[i] != ' ' && str[i] != '\t' && str[i] != '\n'){
index= i;
}
i++;
}
/* Mark next character to last non-white space character as NULL */
str[index + 1] = '\0';
}
static char *get_sys(char *sys){ static char *get_sys(char *sys){
os_name = malloc(BUF_SIZE); os_name = malloc(BUF_SIZE);
char *name = malloc(BUF_SIZE); char *name = malloc(BUF_SIZE);
FILE *sysName = fopen("/etc/issue", "r"); FILE *sysName = fopen("/etc/issue", "rt");
fscanf(sysName, "%s ", name); fscanf(sysName, "%s ", name);
fclose(sysName); fclose(sysName);
truncate_spaces(name); truncate_spaces_leading(name);
snprintf(os_name, BUF_SIZE, "%s Linux", name); snprintf(os_name, BUF_SIZE, "%s Linux", name);
@ -117,11 +133,21 @@ static char *get_sys(char *sys){
} }
void get_cpu(char cpu[]){ static char *get_cpu(void){
FILE *cpuName = popen("grep -m 1 name /proc/cpuinfo | awk -F':' '{print $2}' | cut -c 2- ", "r"); char *line = malloc(BUF_SIZE * 4);
cpu_name = malloc(BUF_SIZE * 4);
FILE *cpu = fopen("/proc/cpuinfo", "rt");
fscanf(cpuName, "%[^\n]%s", cpu); for(int i = 0; i < 5; i++)
fclose(cpuName); 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);
return cpu_name;
} }
void get_gpu(char gpu[]){ void get_gpu(char gpu[]){
@ -136,12 +162,12 @@ void get_gpu(char gpu[]){
static char *get_kernel(void){ static char *get_kernel(void){
kern_name = malloc(BUF_SIZE); kern_name = malloc(BUF_SIZE);
char *kernel = malloc(BUF_SIZE); char *kernel = malloc(BUF_SIZE);
FILE *kInfo = fopen("/proc/version", "r"); FILE *kInfo = fopen("/proc/version", "rt");
fscanf(kInfo, "Linux version %s ", kernel); fscanf(kInfo, "Linux version %s ", kernel);
fclose(kInfo); fclose(kInfo);
truncate_spaces(kernel); truncate_spaces_leading(kernel);
snprintf(kern_name, BUF_SIZE + 5, "Linux %s", kernel); snprintf(kern_name, BUF_SIZE + 5, "Linux %s", kernel);
free(kernel); free(kernel);
@ -150,7 +176,7 @@ static char *get_kernel(void){
static char *get_uptime(void){ static char *get_uptime(void){
int sec, hr, min; int sec, hr, min;
FILE *FUp = fopen("/proc/uptime", "r"); FILE *FUp = fopen("/proc/uptime", "rt");
uptime = malloc(BUF_SIZE); uptime = malloc(BUF_SIZE);
fscanf(FUp, "%d", &sec); fscanf(FUp, "%d", &sec);
@ -203,16 +229,16 @@ static char *get_RAM(){
char *line = malloc(BUF_SIZE * 3); char *line = malloc(BUF_SIZE * 3);
char bar[] = "[----------]"; char bar[] = "[----------]";
FILE *RAM = fopen("/proc/meminfo", "r"); FILE *RAM = fopen("/proc/meminfo", "rt");
fgets(line, BUF_SIZE * 3, RAM); fgets(line, BUF_SIZE * 3, RAM);
truncate_spaces(line); truncate_spaces_leading(line);
sscanf(line, " MemTotal: %f", &total); sscanf(line, " MemTotal: %f", &total);
fgets(line, BUF_SIZE * 3, RAM); fgets(line, BUF_SIZE * 3, RAM);
truncate_spaces(line); truncate_spaces_leading(line);
sscanf(line, " MemFree: %f", &free_mem); sscanf(line, " MemFree: %f", &free_mem);
fclose(RAM); fclose(RAM);