-
Notifications
You must be signed in to change notification settings - Fork 0
/
f.c
59 lines (48 loc) · 1.21 KB
/
f.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <libgen.h>
#include <pwd.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/utsname.h>
#include <unistd.h>
void printitem(const char* name, const char* val) {
if (name && *name && val && *val) {
printf("\033[36m%7s\033[m | %s\n", name, val);
}
}
int main(void) {
struct utsname un;
if (uname(&un) == -1) {
perror("error getting system info");
return 1;
}
struct passwd* pw = getpwuid(getuid());
if (!pw) {
perror("error getting user info");
return 1;
}
char* editor = getenv("EDITOR");
if (editor && *editor) editor = basename(editor);
printf(" \033[32m%s\033[m@\033[32m%s\033m\n", pw->pw_name, un.nodename);
char* os = malloc(strlen(un.sysname) + strlen(un.release) + 2);
if (!os) {
perror("malloc");
return 1;
}
sprintf(os, "%s %s", un.sysname, un.release);
printitem("os", os);
printitem("arch", un.machine);
printitem("editor", editor);
printitem("shell", basename(pw->pw_shell));
for (int i = 0; i < 6; i++) {
printf(" \033[%dm▄▄\033[m", 31 + i);
}
printf("\n");
for (int i = 0; i < 6; i++) {
printf(" \033[%dm▀▀\033[m", 91 + i);
}
printf("\n");
free(os);
return 0;
}