#include #include #include #include #include "config.h" #if STUDY_SESSION_25 #define TIMER_S 25 #endif #if STUDY_SESSION_50 #define TIMER_S 50 #endif #if BREAK_TIME_5 #define TIMER_B 5 #endif #if BREAK_TIME_10 #define TIMER_B 10 #endif #define STUDY 0 #define BREAK 1 int n_repeat = 0, time_elapsed = 0, timer_s = TIMER_S, timer_b = TIMER_B, check = 0; long time_started = 0; void get_stuff(void); void start_timer(int); void countdown(long, short, char*); int main(int argc, char *argv[]){ if( argv[1] != NULL ){ for(int i = 1; i < argc ; i++){ if( *(argv[i]+1) == 's') timer_s = atoi(argv[i+1]); if( *(argv[i]+1) == 'b' ) timer_b = atoi(argv[i+1]); } } get_stuff(); system("clear"); for(int i = 1; i <= n_repeat; i++){ printf("Session %d\n\n", i); start_timer(STUDY); start_timer(BREAK); printf("%c[3F%c[2K%c[G", 27, 27, 27); } return 0; } void get_stuff(void){ printf("Enter number of pomodoro sessions (%d minute periods with %d minute breaks) : ", timer_s, timer_b); if ( !(scanf("%d", &n_repeat)) ){ printf("\n\nThat's not a number you globussaire\n\n"); fprintf(stderr, 0); } } void start_timer(int x){ time_started = time(0); if(x == STUDY) countdown(time_started, timer_s, "STUDY SESSION"); if(x == BREAK) countdown(time_started, timer_b, "BREAK"); } void countdown(long time_started, short timer, char *type){ struct timespec tim; tim.tv_sec = 0; tim.tv_nsec = 333000000; int count_timer = 1; short mins = 0, secs = 0; while(count_timer > 0){ nanosleep(&tim, NULL); short old_secs = secs; time_elapsed = time(0) - time_started; count_timer = (timer * 60) - time_elapsed; mins = count_timer / 60; secs = count_timer - mins * 60; if(old_secs != secs){ printf("%s => %d:%02d\n", type, mins, secs); printf("%c[1F%c[2K%c[G", 27, 27, 27); } } }