]> mj.ucw.cz Git - teatimer.git/commitdiff
Allow timeouts up to 99:99:99
authorMartin Mares <mj@ucw.cz>
Mon, 7 Oct 2013 19:36:05 +0000 (21:36 +0200)
committerMartin Mares <mj@ucw.cz>
Mon, 7 Oct 2013 19:36:05 +0000 (21:36 +0200)
Makefile
NEWS
README
teatimer.c

index b63a8818bb5f72609de48ae579ac739a5e13f379..c71a088849e5ac61d3870f49ecd0338828b955cf 100644 (file)
--- 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 6701187cd1172395e53244bc3cae32a0796c4a3b..e761f4967fab957704277a51586c3980d4092591 100644 (file)
--- 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 f3b69e1044ab54ae30d53109e4fdcf85e561d59d..83f79b77f8b284b9b667f3c430dddf40f74fac41 100644 (file)
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-Trivial Tea Timer (c) 2002, 2010 Martin Mares <mj@ucw.cz>
+Trivial Tea Timer (c) 2002, 2010, 2013 Martin Mares <mj@ucw.cz>
 
 
 This program is free software; you can redistribute it and/or modify
index 9564b6240fdfff1406abf4c7fafb65864af36006..07ef8760de467580a2bb4267aa42a36684a008a0 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     Trivial Tea Timer
  *
- *     (c) 2002, 2010 Martin Mares <mj@ucw.cz>
+ *     (c) 2002, 2010, 2013 Martin Mares <mj@ucw.cz>
  *
  *     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");