Commit ea1218f1c1c628a2c51d2e67ec0aa0dfaf7be230
1 parent
ae25085d
UI finished
Showing
5 changed files
with
117 additions
and
6 deletions
Show diff stats
Makefile
1 | 1 | #include <stdio.h> |
2 | 2 | #include "printx.h" |
3 | +#include "ui.h" | |
3 | 4 | |
4 | 5 | int main(void) |
5 | 6 | { |
6 | - initLog(); | |
7 | + initUILog(); | |
8 | + if(!initLog()) | |
9 | + { | |
10 | + printf("Log creation failed\n"); | |
11 | + return 1; | |
12 | + } | |
7 | 13 | printx(INFO, "Tweekd starting\n"); |
14 | + displayUI(); | |
8 | 15 | closeLog(); |
9 | 16 | return 0; |
10 | 17 | } | ... | ... |
printx.c
... | ... | @@ -5,6 +5,7 @@ |
5 | 5 | #include <string.h> |
6 | 6 | #include <time.h> |
7 | 7 | #include "printx.h" |
8 | +#include "ui.h" | |
8 | 9 | |
9 | 10 | #define FILENAME_LENGTH 24 |
10 | 11 | #define S_RESET "\33[0m" |
... | ... | @@ -13,11 +14,22 @@ |
13 | 14 | FILE* logfile = NULL; |
14 | 15 | char s_color[4][12] = {"\x1b[01;31m", "\x1b[01;33m", "\x1b[01;32m", "\x1b[01;36m"}; |
15 | 16 | |
17 | +void removeCharFromString(char c, char *str) | |
18 | +{ | |
19 | + int len = strlen(str)+1; | |
20 | + | |
21 | + for(int i=0; i<len; i++) | |
22 | + if(str[i] == c) | |
23 | + strncpy(&str[i],&str[i+1],len-i); | |
24 | +} | |
25 | + | |
16 | 26 | bool initLog() |
17 | 27 | { |
18 | 28 | char filename[FILENAME_LENGTH]; |
19 | 29 | time_t now = time(NULL); |
20 | 30 | |
31 | + strftime(filename, FILENAME_LENGTH, "%F-%T:%d", localtime(&now)); | |
32 | + setStartTime(filename); | |
21 | 33 | strftime(filename, FILENAME_LENGTH, "log/%F-%T:%d", localtime(&now)); |
22 | 34 | strcat(filename, ".log"); |
23 | 35 | |
... | ... | @@ -39,12 +51,13 @@ void closeLog() |
39 | 51 | void printx(severity s, char* str, ...) |
40 | 52 | { |
41 | 53 | char buffer[MAX_BUFFER]; |
54 | + char buffer2[MAX_BUFFER]; | |
42 | 55 | va_list arglist; |
43 | 56 | va_start(arglist, str); |
44 | 57 | vsprintf(buffer, str, arglist); |
45 | 58 | fprintf(logfile, buffer); |
46 | - printf(s_color[s]); | |
47 | - printf(buffer); | |
48 | - printf(S_RESET); | |
59 | + sprintf(buffer2, "%s%s%s", s_color[s], buffer, S_RESET); | |
60 | + removeCharFromString('\n', buffer2); | |
61 | + addToLog(buffer2); | |
49 | 62 | va_end(arglist); |
50 | 63 | } | ... | ... |
... | ... | @@ -0,0 +1,82 @@ |
1 | +#include <stdio.h> | |
2 | +#include <sys/types.h> | |
3 | +#include <unistd.h> | |
4 | +#include <string.h> | |
5 | +#include <time.h> | |
6 | +#include "ui.h" | |
7 | + | |
8 | +#define TIME_LENGTH 24 | |
9 | +#define HEADER_TEXT_LENGTH 24 | |
10 | +#define LOG_LINES 25 | |
11 | +#define LOG_LENGTH 69 | |
12 | + | |
13 | +char tmpretheader[HEADER_TEXT_LENGTH+1]; | |
14 | +char tmpretlog[HEADER_TEXT_LENGTH+1]; | |
15 | +char uilog[LOG_LINES][LOG_LENGTH]; | |
16 | +char started[TIME_LENGTH]; | |
17 | +char uid[HEADER_TEXT_LENGTH]; | |
18 | +char uidDate[HEADER_TEXT_LENGTH]; | |
19 | + | |
20 | +void initUILog() | |
21 | +{ | |
22 | + uid[0]='\0'; | |
23 | + uidDate[0]='\0'; | |
24 | + for(int i=0; i<LOG_LINES; i++) | |
25 | + uilog[i][0] = '\0'; | |
26 | +} | |
27 | + | |
28 | +char* fillHeaderWithSpaces(char* text) | |
29 | +{ | |
30 | + strcpy(tmpretheader, text); | |
31 | + while(strlen(tmpretheader) < HEADER_TEXT_LENGTH) | |
32 | + strcat(tmpretheader, " "); | |
33 | + | |
34 | + return tmpretheader; | |
35 | +} | |
36 | + | |
37 | +void addToLog(char* newStr) | |
38 | +{ | |
39 | + for(int i=0; i<(LOG_LINES-1); i++) | |
40 | + strcpy(uilog[i+1], uilog[i]); | |
41 | + strcpy(uilog[0], newStr); | |
42 | +} | |
43 | + | |
44 | +char* fillLogWithSpaces(char* text) | |
45 | +{ | |
46 | + strcpy(tmpretlog, text); | |
47 | + if(strlen(text) > 0) | |
48 | + while((strlen(tmpretlog)-12) < LOG_LENGTH) | |
49 | + strcat(tmpretlog, " "); | |
50 | + else | |
51 | + while(strlen(tmpretlog) < LOG_LENGTH) | |
52 | + strcat(tmpretlog, " "); | |
53 | + | |
54 | + return tmpretlog; | |
55 | +} | |
56 | + | |
57 | + | |
58 | +void setStartTime(char* sT) | |
59 | +{ | |
60 | + strcpy(started, sT); | |
61 | +} | |
62 | + | |
63 | +void displayUI() | |
64 | +{ | |
65 | + char buffer[HEADER_TEXT_LENGTH]; | |
66 | + //header | |
67 | + printf("\u250F\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2533\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2513\n"); | |
68 | + printf("\u2503 %s \u2503 T H E \u2503", fillHeaderWithSpaces("Started since")); | |
69 | + printf(" %s \u2503\n", fillHeaderWithSpaces("No Tag Detected")); | |
70 | + printf("\u2503 %s \u2503 T W E E K \u2503 ", fillHeaderWithSpaces(started)); | |
71 | + sprintf(buffer, "%s", strlen(uidDate) > 0 ? uidDate : "Waiting for a tag"); | |
72 | + printf("%s \u2503\n", fillHeaderWithSpaces(buffer)); | |
73 | + sprintf(buffer, "PID %d", getpid()); | |
74 | + printf("\u2503 %s \u2503 P R O J E C T \u2503 ", fillHeaderWithSpaces(buffer)); | |
75 | + sprintf(buffer, "UID : %s", strlen(uid) > 0 ? uid : "Nope"); | |
76 | + printf("%s \u2503\n", fillHeaderWithSpaces(buffer)); | |
77 | + printf("\u2523\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253B\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u253B\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u252B\n"); | |
78 | + //body | |
79 | + for(int i=0; i<LOG_LINES; i++) | |
80 | + printf("\u2503 %s \u2503\n", fillLogWithSpaces(uilog[i])); | |
81 | + printf("\u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u251B\n"); | |
82 | +} | ... | ... |