fetchy/fetchy.c

155 lines
3.5 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include <stdio.h>
#include <string.h>
#include <stdlib.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 init(char gpu[], char cpu[], char kernel[], char syst[], char *sys, int *hr, int *min, int *pkgs){
getSys(syst, sys);
getGPU(gpu);
getCPU(cpu);
getKernel(kernel);
getUptime(hr, min);
getPackages(pkgs, *sys);
}
int main(int argc, char *argv[]){
int hr, min, pkgs;
char kernel[50], cpu[70], gpu[70], syst[20], sys;
init(gpu, cpu, kernel, syst, &sys, &hr, &min, &pkgs);
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[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[36m\x1b[0m \n");
printf("\n\n");
}
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[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[36m\x1b[0m \n");
printf("\x1b[1m `./ / .-.` \x1b[36m\x1b[0m \n");
printf("\x1b[1m `-..-( ) \x1b[36m\x1b[0m \n");
printf("\x1b[1m `-` \x1b[36m\x1b[0m \n");
printf("\n\n");
}
return 0;
}
void getSys(char syst[], char *sys){
FILE *sysName = fopen("/etc/issue", "r");
fscanf(sysName, "%s", syst);
fclose(sysName);
if ( !strcmp( syst, "Arch"))
*sys = 'a';
if ( !strcmp( syst, "Ubuntu"))
*sys = 'u';
}
void getCPU(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[]){
FILE *gpuName = popen("lspci -v | grep VGA -m 1 | awk -F'[' '{ print $2 }' | awk -F']' '{ print $1 }' ", "r");
fscanf(gpuName, "%[^\n]%s", gpu);
fclose(gpuName);
}
void getKernel(char kernel[]){
FILE *kInfo = fopen("/proc/version", "r");
fscanf(kInfo, "%s %s %s ", dump, dump, kernel);
fclose(kInfo);
}
void getUptime(int *hr, int *min){
int sec;
FILE *FUp = fopen("/proc/uptime", "r");
fscanf(FUp, "%d", &sec);
fclose(FUp);
*hr = (sec/60/60%24);
*min = (sec/60%60);
}
void getPackages(int *pkgs, char sys){
FILE *packages;
switch (sys){
case 'a':
packages = popen("pacman -Q | wc -l", "r");
break;
case 'u':
packages = popen("apt list -installed | wc -l", "r");;
break;
default:
printf("\n\n\aUnable to find package list\n\n");
}
fscanf(packages, "%d", pkgs);
fclose(packages);
}