author: kx <kx@radix.pro> 2023-03-24 03:55:33 +0300
committer: kx <kx@radix.pro> 2023-03-24 03:55:33 +0300
commit: bfc1508d26c89c9a36d2d9a827fe2c4ed128884d
parent: c836ae3775cf72f17e0b7e3792d156fdb389bee3
Commit Summary:
Diffstat:
1 file changed, 37 insertions, 0 deletions
diff --git a/csvncgi/date.h b/csvncgi/date.h
new file mode 100644
index 0000000..1883ec0
--- /dev/null
+++ b/csvncgi/date.h
@@ -0,0 +1,49 @@
+
+#ifndef __DATE_H
+#define __DATE_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum date_mode_type {
+ DATE_NORMAL = 0,
+ DATE_HUMAN,
+ DATE_RELATIVE,
+ DATE_SHORT,
+ DATE_ISO8601,
+ DATE_ISO8601_STRICT,
+ DATE_RFC2822,
+ DATE_RAW,
+ DATE_UNIX
+};
+
+struct date_mode {
+ enum date_mode_type type;
+ int local;
+};
+
+/*******************************************************
+ Convenience helper for passing a constant type, like:
+
+ show_date( t, tz, DATE_MODE(NORMAL) );
+ */
+#define DATE_MODE(t) date_mode_from_type(DATE_##t)
+struct date_mode *date_mode_from_type(enum date_mode_type type);
+
+
+/*
+ Parse data in the input TEXT, fill struct tm TM and return
+ UTC time_t. On error parse_data returns -1:
+ */
+extern time_t parse_date( struct tm *tm, const char *text );
+
+extern void show_date_relative( struct strbuf *sb, time_t t );
+extern void show_date( struct strbuf *sb, time_t t, int tz, const struct date_mode *mode );
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __DATE_H */