|
1 | 1 | #include <stdio.h>
|
2 | 2 | #include <stdlib.h>
|
3 |
| -#include <sys/utsname.h> |
4 |
| -#include <sys/sysinfo.h> |
5 | 3 | #include <unistd.h>
|
6 |
| -#include <math.h> |
7 |
| -#include <string.h> |
8 | 4 | #include "fetchline.h"
|
9 | 5 | #include <stdbool.h>
|
10 |
| -#include "proc.h" |
11 |
| -#include <unistd.h> |
| 6 | +#include "fetch.h" |
12 | 7 |
|
13 | 8 | #define BUFFER_SIZE 64
|
14 | 9 |
|
15 |
| -#define SECONDS_MIN 60 |
16 |
| -#define SECONDS_HOUR 3600 |
17 |
| -#define SECONDS_DAY 86400 |
18 |
| -void format_time(char *, long); |
19 |
| -unsigned long kBtoMiB(unsigned long kBytes); |
20 |
| -char *readFirstline(FILE *f); |
21 |
| - |
22 |
| -void fetch_kernel(char *buffer); |
23 |
| -void fetch_hostname(char *buffer); |
24 |
| -void fetch_uptime(char *buffer); |
25 |
| -void fetch_cpumodel(char *buffer); |
26 |
| -void fetch_memory(char *buffer); |
27 |
| -void fetch_model(char *buffer); |
28 |
| - |
29 | 10 | int main(int argc, char *argv[]) {
|
30 | 11 | bool useIcons = false;
|
31 | 12 |
|
@@ -54,87 +35,10 @@ int main(int argc, char *argv[]) {
|
54 | 35 |
|
55 | 36 | align_fetchlist(fetcharray, sizeof(fetcharray) / sizeof(fetchlist));
|
56 | 37 |
|
57 |
| - // Get kernel information |
58 |
| - fetch_kernel(buffer); |
59 |
| - |
60 | 38 | for (size_t i = 0; i < sizeof(fetcharray) / sizeof(fetchlist); i++) {
|
61 |
| - fetcharray[i].fetchfunc(buffer); |
| 39 | + fetcharray[i].fetchfunc(buffer, sizeof(buffer)/sizeof(char)); |
62 | 40 |
|
63 | 41 | if(useIcons) printf("%s ", fetcharray[i].icon);
|
64 | 42 | printf("%s%s%s\n", fetcharray[i].title, SEPARATOR, buffer);
|
65 | 43 | }
|
66 | 44 | }
|
67 |
| - |
68 |
| -void format_time(char *buffer, long uptime_seconds) { |
69 |
| - // TODO: Tweak logic so that words aren't always plural |
70 |
| - if (uptime_seconds < SECONDS_MIN) { |
71 |
| - sprintf(buffer, "%ld seconds", uptime_seconds); |
72 |
| - } else if (uptime_seconds >= SECONDS_MIN && uptime_seconds < SECONDS_HOUR) { |
73 |
| - long uptime_minutes = uptime_seconds / SECONDS_MIN; |
74 |
| - long uptime_remaining_seconds = uptime_seconds - uptime_minutes*SECONDS_MIN; |
75 |
| - sprintf(buffer, "%ld minutes, %ld seconds", uptime_minutes, uptime_remaining_seconds); |
76 |
| - } else if (uptime_seconds >= SECONDS_HOUR && uptime_seconds < SECONDS_DAY ) { |
77 |
| - long uptime_hours = uptime_seconds / SECONDS_HOUR; |
78 |
| - long uptime_minutes = (uptime_seconds - uptime_hours*SECONDS_HOUR)/SECONDS_MIN; |
79 |
| - long uptime_remaining_seconds = uptime_seconds - uptime_hours*SECONDS_HOUR - uptime_minutes*SECONDS_MIN; |
80 |
| - sprintf(buffer, "%ld hours, %ld minutes, %ld seconds", uptime_hours, uptime_minutes, uptime_remaining_seconds); |
81 |
| - } |
82 |
| - else { |
83 |
| - long uptime_days = uptime_seconds / SECONDS_DAY; |
84 |
| - long uptime_hours = (uptime_seconds - uptime_days*SECONDS_DAY)/SECONDS_HOUR; |
85 |
| - long uptime_minutes = (uptime_seconds - uptime_hours*SECONDS_HOUR - uptime_days*SECONDS_DAY)/SECONDS_MIN; |
86 |
| - long uptime_remaining_seconds = uptime_seconds - uptime_minutes*SECONDS_MIN - uptime_hours*SECONDS_HOUR - uptime_days*SECONDS_DAY; |
87 |
| - sprintf(buffer, "%ld days, %ld hours, %ld minutes, %ld seconds", uptime_days, uptime_hours, uptime_minutes, uptime_remaining_seconds); |
88 |
| - } |
89 |
| -} |
90 |
| - |
91 |
| -char *readFirstline(FILE *f) { |
92 |
| - char *line = NULL; |
93 |
| - size_t size = 0; |
94 |
| - getline(&line, &size, f); |
95 |
| - *strstr(line, "\n") = '\0'; |
96 |
| - return line; |
97 |
| -} |
98 |
| - |
99 |
| -void fetch_kernel(char *buffer) { |
100 |
| - struct utsname local_machine; |
101 |
| - uname(&local_machine); |
102 |
| - sprintf(buffer ,"%s %s %s", local_machine.sysname, local_machine.release, local_machine.machine ); |
103 |
| -} |
104 |
| - |
105 |
| -void fetch_hostname(char *buffer) { |
106 |
| - gethostname(buffer, BUFFER_SIZE); |
107 |
| -} |
108 |
| - |
109 |
| -void fetch_uptime(char *buffer) { |
110 |
| - struct sysinfo machine_info; |
111 |
| - sysinfo(&machine_info); |
112 |
| - format_time(buffer, machine_info.uptime); |
113 |
| -} |
114 |
| - |
115 |
| -void fetch_cpumodel(char *buffer) { |
116 |
| - FILE *cpuinfo = fopen("/proc/cpuinfo", "rb"); |
117 |
| - procParse(cpuinfo, buffer, "model name"); |
118 |
| - fclose(cpuinfo); |
119 |
| -} |
120 |
| - |
121 |
| -void fetch_memory(char *buffer) { |
122 |
| - FILE *meminfo = fopen("/proc/meminfo", "rb"); |
123 |
| - // TODO: CHange these arbitrary values to something a little more known |
124 |
| - char memtotal[16]; procParse(meminfo, memtotal, "MemTotal"); |
125 |
| - char memavail[16]; procParse(meminfo, memavail, "MemAvailable"); |
126 |
| - unsigned long totalkB = strtoul(memtotal, NULL, 10); |
127 |
| - unsigned long availkB = strtoul(memavail, NULL, 10); |
128 |
| - |
129 |
| - char memLine[strlen(memtotal) + strlen(memavail) + 3]; |
130 |
| - sprintf(buffer, "%.2fGiB / %.2fGiB", (float)(totalkB - availkB) / 1024 / 1024, (float)totalkB / 1024 / 1024); |
131 |
| - fclose(meminfo); |
132 |
| -} |
133 |
| - |
134 |
| -void fetch_model(char *buffer) { |
135 |
| - FILE *model = fopen("/sys/devices/virtual/dmi/id/product_name", "rb"); |
136 |
| - char *modelname = readFirstline(model); |
137 |
| - strcpy(buffer, modelname); |
138 |
| - free(modelname); |
139 |
| - fclose(model); |
140 |
| -} |
0 commit comments