From: Martin Mares Date: Mon, 7 Oct 2013 19:36:05 +0000 (+0200) Subject: Allow timeouts up to 99:99:99 X-Git-Tag: v1.3~1 X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=496dcd69a32e6f0bc9f064fe7f5b81addeb51cc5;p=teatimer.git Allow timeouts up to 99:99:99 --- diff --git a/Makefile b/Makefile index b63a881..c71a088 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION=1.2 +VERSION=1.3 GTK_LIBS:=$(shell pkg-config --libs gtk+-x11-2.0 glib-2.0) GTK_CFLAGS:=$(shell pkg-config --cflags gtk+-x11-2.0 glib-2.0) diff --git a/NEWS b/NEWS index 6701187..e761f49 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,8 @@ +Version 1.3 (2013-10-07) + + o Supports teas, which require more than 99 minutes of brewing. + Maximum timeout has been increased to 99:99:99. + Version 1.2 (2010-07-17) o Added the --run switch. diff --git a/README b/README index f3b69e1..83f79b7 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ -Trivial Tea Timer (c) 2002, 2010 Martin Mares +Trivial Tea Timer (c) 2002, 2010, 2013 Martin Mares This program is free software; you can redistribute it and/or modify diff --git a/teatimer.c b/teatimer.c index 9564b62..07ef876 100644 --- a/teatimer.c +++ b/teatimer.c @@ -1,7 +1,7 @@ /* * Trivial Tea Timer * - * (c) 2002, 2010 Martin Mares + * (c) 2002, 2010, 2013 Martin Mares * * GPL'ed */ @@ -18,7 +18,7 @@ #define UNUSED __attribute__((unused)) static guint second_timer; -static char old_text[8]; +static char old_text[16]; static GtkWidget *win, *hbox1, *timebox, *togglebutton1; static time_t alarm_time; static char *run_cmd; @@ -48,7 +48,7 @@ it_tolls_for_thee(void) static gint on_second_timeout(gpointer data UNUSED) { - char buf[8]; + char buf[16]; time_t now = time(NULL); int delta = alarm_time - now; char *sign = ""; @@ -58,9 +58,12 @@ on_second_timeout(gpointer data UNUSED) sign = "-"; delta = -delta; } - if (delta >= 6000) - delta = 5999; - sprintf(buf, "%s%02d:%02d", sign, delta/60, delta%60); + if (delta >= 100*60*60) + delta = 100*60*60 - 1; + if (delta < 60*60) + sprintf(buf, "%s%02d:%02d", sign, delta/60, delta%60); + else + sprintf(buf, "%s%02d:%02d:%02d", sign, delta/3600, (delta%3600)/60, delta%60); gtk_entry_set_text(GTK_ENTRY(timebox), buf); if (now >= alarm_time) it_tolls_for_thee(); @@ -83,28 +86,29 @@ static int parse_time(char *c) { int t = 0; + int parts = 0; - while (*c && *c != ':') + while (*c) { - if (*c >= '0' && *c <= '9') - t = 10*t + *c++ - '0'; - else + parts++; + if (parts > 3) return -1; - } - if (*c) - { int m = 0; - c++; - while (*c) + while (*c >= '0' && *c <= '9') + m = 10*m + *c++ - '0'; + t += m; + if (*c == ':') { - if (*c >= '0' && *c <= '9') - m = 10*m + *c++ - '0'; - else - return -1; + c++; + t = 60*t; } - t = 60*t + m; + else if (*c) + return -1; } - if (t >= 6000) + + if (!parts) + return -1; + if (t >= 100*60*60) return -1; return t; } @@ -157,7 +161,7 @@ open_window(void) gtk_widget_show(hbox1); gtk_container_add(GTK_CONTAINER (win), hbox1); - timebox = gtk_entry_new_with_max_length(6); + timebox = gtk_entry_new_with_max_length(9); gtk_widget_show(timebox); gtk_box_pack_start(GTK_BOX(hbox1), timebox, TRUE, TRUE, 0); gtk_entry_set_text(GTK_ENTRY(timebox), "00:00");