/*
* Trivial Tea Timer
*
- * (c) 2002, 2010 Martin Mares <mj@ucw.cz>
+ * (c) 2002, 2010, 2013 Martin Mares <mj@ucw.cz>
*
* GPL'ed
*/
#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;
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 = "";
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();
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;
}
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");