aboutsummaryrefslogtreecommitdiffstats
path: root/src/blogc/datetime-parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/blogc/datetime-parser.c')
-rw-r--r--src/blogc/datetime-parser.c131
1 files changed, 65 insertions, 66 deletions
diff --git a/src/blogc/datetime-parser.c b/src/blogc/datetime-parser.c
index ddaf6ef..5cb6520 100644
--- a/src/blogc/datetime-parser.c
+++ b/src/blogc/datetime-parser.c
@@ -15,10 +15,9 @@
#endif /* HAVE_TIME_H */
#include <string.h>
+#include <squareball.h>
#include "datetime-parser.h"
-#include "../common/error.h"
-#include "../common/utils.h"
typedef enum {
@@ -47,16 +46,16 @@ typedef enum {
char*
blogc_convert_datetime(const char *orig, const char *format,
- bc_error_t **err)
+ sb_error_t **err)
{
if (err == NULL || *err != NULL)
return NULL;
#ifndef HAVE_TIME_H
- *err = bc_error_new(BLOGC_WARNING_DATETIME_PARSER,
- "Your operating system does not supports the datetime functionalities "
- "used by blogc. Sorry.");
+ *err = sb_strerror_new(
+ "datetime: Your operating system does not supports the datetime "
+ "functionalities used by blogc. Sorry.");
return NULL;
#else
@@ -80,8 +79,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_SECOND_YEAR;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid first digit of year. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid first digit of year. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -91,8 +90,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_THIRD_YEAR;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid second digit of year. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid second digit of year. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -102,8 +101,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_FOURTH_YEAR;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid third digit of year. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid third digit of year. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -111,8 +110,8 @@ blogc_convert_datetime(const char *orig, const char *format,
if (c >= '0' && c <= '9') {
tmp += c - diff - 1900;
if (tmp < 0) {
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid year. Found %d, must be >= 1900.",
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid year. Found %d, must be >= 1900.",
tmp + 1900);
break;
}
@@ -120,8 +119,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_FIRST_HYPHEN;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid fourth digit of year. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid fourth digit of year. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -131,8 +130,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_FIRST_MONTH;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid separator between year and month. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid separator between year and month. "
"Found '%c', must be '-'.", c);
break;
@@ -142,8 +141,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_SECOND_MONTH;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid first digit of month. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid first digit of month. "
"Found '%c', must be integer >= 0 and <= 1.", c);
break;
@@ -151,17 +150,17 @@ blogc_convert_datetime(const char *orig, const char *format,
if (c >= '0' && c <= '9') {
tmp += c - diff - 1;
if (tmp < 0 || tmp > 11) {
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid month. Found %d, must be >= 1 and <= 12.",
- tmp + 1);
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid month. "
+ "Found %d, must be >= 1 and <= 12.", tmp + 1);
break;
}
t.tm_mon = tmp;
state = DATETIME_SECOND_HYPHEN;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid second digit of month. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid second digit of month. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -171,8 +170,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_FIRST_DAY;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid separator between month and day. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid separator between month and day. "
"Found '%c', must be '-'.", c);
break;
@@ -182,8 +181,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_SECOND_DAY;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid first digit of day. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid first digit of day. "
"Found '%c', must be integer >= 0 and <= 3.", c);
break;
@@ -191,17 +190,17 @@ blogc_convert_datetime(const char *orig, const char *format,
if (c >= '0' && c <= '9') {
tmp += c - diff;
if (tmp < 1 || tmp > 31) {
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid day. Found %d, must be >= 1 and <= 31.",
- tmp);
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid day. "
+ "Found %d, must be >= 1 and <= 31.", tmp);
break;
}
t.tm_mday = tmp;
state = DATETIME_SPACE;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid second digit of day. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid second digit of day. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -211,8 +210,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_FIRST_HOUR;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid separator between date and time. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid separator between date and time. "
"Found '%c', must be ' ' (empty space).", c);
break;
@@ -222,8 +221,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_SECOND_HOUR;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid first digit of hours. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid first digit of hours. "
"Found '%c', must be integer >= 0 and <= 2.", c);
break;
@@ -231,17 +230,17 @@ blogc_convert_datetime(const char *orig, const char *format,
if (c >= '0' && c <= '9') {
tmp += c - diff;
if (tmp < 0 || tmp > 23) {
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid hours. Found %d, must be >= 0 and <= 23.",
- tmp);
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid hours. "
+ "Found %d, must be >= 0 and <= 23.", tmp);
break;
}
t.tm_hour = tmp;
state = DATETIME_FIRST_COLON;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid second digit of hours. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid second digit of hours. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -251,8 +250,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_FIRST_MINUTE;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid separator between hours and minutes. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid separator between hours and minutes. "
"Found '%c', must be ':'.", c);
break;
@@ -262,8 +261,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_SECOND_MINUTE;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid first digit of minutes. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid first digit of minutes. "
"Found '%c', must be integer >= 0 and <= 5.", c);
break;
@@ -274,17 +273,17 @@ blogc_convert_datetime(const char *orig, const char *format,
// this won't happen because we are restricting the digits
// to 00-59 already, but lets keep the code here for
// reference.
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid minutes. Found %d, must be >= 0 and <= 59.",
- tmp);
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid minutes. "
+ "Found %d, must be >= 0 and <= 59.", tmp);
break;
}
t.tm_min = tmp;
state = DATETIME_SECOND_COLON;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid second digit of minutes. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid second digit of minutes. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -294,8 +293,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_FIRST_SECOND;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid separator between minutes and seconds. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid separator between minutes and seconds. "
"Found '%c', must be ':'.", c);
break;
@@ -305,8 +304,8 @@ blogc_convert_datetime(const char *orig, const char *format,
state = DATETIME_SECOND_SECOND;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid first digit of seconds. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid first digit of seconds. "
"Found '%c', must be integer >= 0 and <= 6.", c);
break;
@@ -314,17 +313,17 @@ blogc_convert_datetime(const char *orig, const char *format,
if (c >= '0' && c <= '9') {
tmp += c - diff;
if (tmp < 0 || tmp > 60) {
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid seconds. Found %d, must be >= 0 and <= 60.",
- tmp);
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid seconds. "
+ "Found %d, must be >= 0 and <= 60.", tmp);
break;
}
t.tm_sec = tmp;
state = DATETIME_DONE;
break;
}
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid second digit of seconds. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid second digit of seconds. "
"Found '%c', must be integer >= 0 and <= 9.", c);
break;
@@ -355,8 +354,8 @@ blogc_convert_datetime(const char *orig, const char *format,
case DATETIME_SECOND_MINUTE:
case DATETIME_FIRST_SECOND:
case DATETIME_SECOND_SECOND:
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Invalid datetime string. "
+ *err = sb_strerror_new_printf(
+ "datetime: Invalid datetime string. "
"Found '%s', formats allowed are: 'yyyy-mm-dd hh:mm:ss', "
"'yyyy-mm-dd hh:ss', 'yyyy-mm-dd hh' and 'yyyy-mm-dd'.",
orig);
@@ -374,13 +373,13 @@ blogc_convert_datetime(const char *orig, const char *format,
char buf[1024];
if (0 == strftime(buf, sizeof(buf), format, &t)) {
- *err = bc_error_new_printf(BLOGC_WARNING_DATETIME_PARSER,
- "Failed to format DATE variable, FORMAT is too long: %s",
+ *err = sb_strerror_new_printf(
+ "datetime: Failed to format DATE variable, FORMAT is too long: %s",
format);
return NULL;
}
- return bc_strdup(buf);
+ return sb_strdup(buf);
#endif
}