Compare commits

..

No commits in common. "91265cc0990ac44347b78e0960a8faace24e6bcb" and "5075fb8ad89337f29d31fceea26101da9c8c576e" have entirely different histories.

2 changed files with 47 additions and 59 deletions

View File

@ -1,17 +1,8 @@
CC=gcc build:
SRC=pomo.c gcc pomo.c -o pomo
OUT=pomo
STYLE_BLUEPRINT=webkit
FORMATTER=clang-format -i -style=$(STYLE_BLUEPRINT)
build: $(SRC)
$(CC) $(SRC) -o $(OUT)
install: install:
cp ./$(OUT) /bin/pomo cp ./pomo /bin/pomo
lint: lint:
clang-tidy $(SRC) -- clang-tidy pomo.c --
format:
$(FORMATTER) $(SRC)

87
pomo.c
View File

@ -1,43 +1,41 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <time.h>
#include <unistd.h> #include <unistd.h>
#include <time.h>
#define MAX_MSG_LEN 100 #define MAX_MSG_LEN 100
#define LEN(a) (sizeof(a) / sizeof(a[0])) #define LEN(a) (sizeof(a) / sizeof(a[0]))
typedef struct { typedef struct {
unsigned int t; unsigned int t;
char* msg; char *msg;
} Timers; } Timers;
static Timers timers[] = { static Timers timers[] = {
/* timer(s) comment */ /* timer(s) comment */
{ 1500, "Time to start working!" }, { 1500, "Time to start working!"},
{ 300, "Time to start resting!" }, { 300, "Time to start resting!"},
{ 1500, "Time to start working!" }, { 1500, "Time to start working!"},
{ 300, "Time to start resting!" }, { 300, "Time to start resting!"},
{ 1500, "Time to start working!" }, { 1500, "Time to start working!"},
{ 300, "Time to start resting!" }, { 300, "Time to start resting!"},
{ 1500, "Time to start working!" }, { 1500, "Time to start working!"},
{ 900, "Time to take a longer rest!" }, { 900, "Time to take a longer rest!" },
}; };
void spawn(char* argv[]) void spawn(char *argv[]){
{ if (fork() == 0) {
if (fork() == 0) { // we need to fork the process so that
// we need to fork the process so that // when we exit the sent screen
// when we exit the sent screen // this program continues.
// this program continues. setsid();
setsid(); execvp(argv[0], argv);
execvp(argv[0], argv); perror(" failed");
perror(" failed"); exit(0);
exit(0); }
}
} }
void print_time_now() void print_time_now(){
{
time_t timer; time_t timer;
char buffer[26]; char buffer[26];
struct tm* tm_info; struct tm* tm_info;
@ -47,28 +45,27 @@ void print_time_now()
strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info); strftime(buffer, 26, "%Y-%m-%d %H:%M:%S", tm_info);
fprintf(stderr, "%s", buffer); fprintf(stderr, "%s", buffer);
} }
void display_message(char* msg) void display_message(char *msg){
{ char sh_command[MAX_MSG_LEN];
char sh_command[MAX_MSG_LEN]; snprintf(sh_command, MAX_MSG_LEN, "echo '%s' | sent", msg); // NOLINT: We are being carefull here by considering MAX_MSG_LEN explicitly.
snprintf(sh_command, MAX_MSG_LEN, "echo '%s' | sent", msg); // NOLINT: We are being carefull here by considering MAX_MSG_LEN explicitly.
printf("%s", sh_command); printf("%s", sh_command);
char* spawn_args[] = { char *spawn_args[] = {
"/bin/sh", "/bin/sh",
"-c", "-c",
sh_command, sh_command,
NULL NULL
}; };
spawn(spawn_args); spawn(spawn_args);
print_time_now(); print_time_now();
fprintf(stderr, " | %s\n", msg); fprintf(stderr, " | %s\n", msg);
} }
int main(int argc, char* argv[]) int main(int argc, char *argv[]){
{ for(int i=0; ; i = (i+1) % LEN(timers)){
for (int i = 0;; i = (i + 1) % LEN(timers)) { display_message(timers[i].msg);
display_message(timers[i].msg); sleep(timers[i].t);
sleep(timers[i].t); }
}
} }