/* Parse dates for touch and date.
- Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2003, 2004,
- 2005, 2006, 2007, 2009 Free Software Foundation Inc.
+ Copyright (C) 1989-1991, 1998, 2000-2013 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- It's typically faster.
POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to
isdigit unless it's important to use the locale's definition
- of `digit' even when the host does not conform to POSIX. */
+ of "digit" even when the host does not conform to POSIX. */
#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9)
/*
case 1:
tm->tm_year = *digit_pair;
/* Deduce the century based on the year.
- POSIX requires that 00-68 be interpreted as 2000-2068,
- and that 69-99 be interpreted as 1969-1999. */
+ POSIX requires that 00-68 be interpreted as 2000-2068,
+ and that 69-99 be interpreted as 1969-1999. */
if (digit_pair[0] <= 68)
- {
- if (syntax_bits & PDS_PRE_2000)
- return 1;
- tm->tm_year += 100;
- }
+ {
+ if (syntax_bits & PDS_PRE_2000)
+ return 1;
+ tm->tm_year += 100;
+ }
break;
case 2:
if (! (syntax_bits & PDS_CENTURY))
- return 1;
+ return 1;
tm->tm_year = digit_pair[0] * 100 + digit_pair[1] - 1900;
break;
case 0:
{
- time_t now;
- struct tm *tmp;
-
- /* Use current year. */
- time (&now);
- tmp = localtime (&now);
- if (! tmp)
- return 1;
- tm->tm_year = tmp->tm_year;
+ time_t now;
+ struct tm *tmp;
+
+ /* Use current year. */
+ time (&now);
+ tmp = localtime (&now);
+ if (! tmp)
+ return 1;
+ tm->tm_year = tmp->tm_year;
}
break;
size_t s_len = strlen (s);
size_t len = (((syntax_bits & PDS_SECONDS) && (dot = strchr (s, '.')))
- ? (size_t) (dot - s)
- : s_len);
+ ? (size_t) (dot - s)
+ : s_len);
if (len != 8 && len != 10 && len != 12)
return 1;
if (dot)
{
if (!(syntax_bits & PDS_SECONDS))
- return 1;
+ return 1;
if (s_len - len != 3)
- return 1;
+ return 1;
}
for (i = 0; i < len; i++)
if (syntax_bits & PDS_LEADING_YEAR)
{
if (year (tm, p, len - 4, syntax_bits))
- return 1;
+ return 1;
p += len - 4;
len = 4;
}
- /* Handle 8 digits worth of `MMDDhhmm'. */
+ /* Handle 8 digits worth of 'MMDDhhmm'. */
tm->tm_mon = *p++ - 1;
tm->tm_mday = *p++;
tm->tm_hour = *p++;
if (syntax_bits & PDS_TRAILING_YEAR)
{
if (year (tm, p, len, syntax_bits))
- return 1;
+ return 1;
}
/* Handle seconds. */
++dot;
if (!ISDIGIT (dot[0]) || !ISDIGIT (dot[1]))
- return 1;
+ return 1;
seconds = 10 * (dot[0] - '0') + dot[1] - '0';
tm->tm_sec = seconds;
else
{
/* mktime returns -1 for errors, but -1 is also a valid time_t
- value. Check whether an error really occurred. */
+ value. Check whether an error really occurred. */
tm = localtime (&t);
if (! tm)
- return false;
+ return false;
}
/* Reject dates like "September 31" and times like "25:61".