Simplify check_time() in "utils.c".

Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
Lukas Fleischer 2011-03-04 09:51:04 +01:00
parent 0d12a788ad
commit 8b34a0e0fd

View File

@ -643,38 +643,21 @@ min2sec (unsigned minutes)
int int
check_time (char *string) check_time (char *string)
{ {
int ok = 0; char *s = mem_strdup(string);
char hour[] = " "; char *hour = strtok(s, ":");
char minutes[] = " "; char *min = strtok(NULL, ":");
int h, m;
int ret = 0;
if (((strlen (string) == 2) || (strlen (string) == 3)) if (min) {
&& (isdigit (string[0]) != 0) && (isdigit (string[1]) != 0)) h = atoi (hour);
{ m = atoi (min);
(void)strncpy (minutes, string, 2); if (h >= 0 && h < 24 && m >= 0 && m < MININSEC) ret = 1;
if (atoi (minutes) >= 0) }
ok = 2; /* [MM] format */ else if (strlen(s) < 4 && is_all_digit(s) && atoi(s) > 0) ret = 2;
}
else if ((strlen (string) == 4) && (isdigit (string[0]) != 0) xfree(s);
&& (isdigit (string[2]) != 0) && (isdigit (string[3]) != 0) return ret;
&& (string[1] == ':'))
{
(void)strncpy (hour, string, 1);
strncpy (minutes, string + 2, 2);
if ((atoi (hour) <= 24) && (atoi (hour) >= 0)
&& (atoi (minutes) < MININSEC) && (atoi (minutes) >= 0))
ok = 1; /* [H:MM] format */
}
else if ((strlen (string) == 5) && (isdigit (string[0]) != 0)
&& (isdigit (string[1]) != 0) && (isdigit (string[3]) != 0)
&& (isdigit (string[4]) != 0) && (string[2] == ':'))
{
strncpy (hour, string, 2);
strncpy (minutes, string + 3, 2);
if ((atoi (hour) <= 24) && (atoi (hour) >= 0)
&& (atoi (minutes) < MININSEC) && (atoi (minutes) >= 0))
ok = 1; /* [HH:MM] format */
}
return (ok);
} }
/* /*