2 * This file is part of DisOrder
3 * Copyright (C) 2008 Richard Kettlewell
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 /** @file lib/dateparse.c
27 #include "dateparse.h"
30 /** @brief Date parsing patterns
32 * This set of patterns is designed to parse a specific time of a specific day,
33 * since that's what the scheduler needs. Other requirements might need other
36 * NB DisOrder now uses my_strptime() instead of the system strptime(). This
37 * has some bits missing. Therefore check carefuly before adding to this
40 static const char *const datemsk[] = {
43 /* Generic time, same day */
46 /* "%Y-%m-%d %H:%M:%S %Z" - no, not sensibly supported anywhere */
47 /* Locale-specific date + time */
50 /* Locale-specific time, same day */
56 /** @brief Convert string to a @c time_t */
57 time_t dateparse(const char *s) {
61 switch(rc = xgetdate_r(s, &t, datemsk)) {
65 disorder_fatal(0, "date string '%s' not in a recognized format", s);
67 disorder_fatal(0, "date string '%s' not representable", s);
69 disorder_fatal(0, "date string '%s' produced unexpected error %d", s, rc);