summaryrefslogtreecommitdiffstats
path: root/fluent-bit/include/fluent-bit/flb_langinfo.h
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/include/fluent-bit/flb_langinfo.h')
-rw-r--r--fluent-bit/include/fluent-bit/flb_langinfo.h144
1 files changed, 144 insertions, 0 deletions
diff --git a/fluent-bit/include/fluent-bit/flb_langinfo.h b/fluent-bit/include/fluent-bit/flb_langinfo.h
new file mode 100644
index 00000000..6da30682
--- /dev/null
+++ b/fluent-bit/include/fluent-bit/flb_langinfo.h
@@ -0,0 +1,144 @@
+/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+
+/* Fluent Bit
+ * ==========
+ * Copyright (C) 2015-2022 The Fluent Bit Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * This is a dumb implementation of langinfo.h that only supports LC_TIME
+ * and "C" locale. We use this implemenatation to support locale-dependent
+ * specifiers of strptime(3) on Windows.
+ */
+
+#ifndef FLB_LANGINFO_H
+#define FLB_LANGINFO_H
+
+#ifndef _MSC_VER
+#include <langinfo.h>
+#else
+
+typedef int nl_item;
+
+#define D_T_FMT 0x00
+#define D_FMT 0x01
+#define T_FMT 0x02
+
+#define DAY_1 0x03
+#define DAY_2 0x04
+#define DAY_3 0x05
+#define DAY_4 0x06
+#define DAY_5 0x07
+#define DAY_6 0x08
+#define DAY_7 0x09
+
+#define ABDAY_1 0x0A
+#define ABDAY_2 0x0B
+#define ABDAY_3 0x0C
+#define ABDAY_4 0x0D
+#define ABDAY_5 0x0E
+#define ABDAY_6 0x0F
+#define ABDAY_7 0x10
+
+#define MON_1 0x11
+#define MON_2 0x12
+#define MON_3 0x13
+#define MON_4 0x14
+#define MON_5 0x15
+#define MON_6 0x16
+#define MON_7 0x17
+#define MON_8 0x18
+#define MON_9 0x19
+#define MON_10 0x1A
+#define MON_11 0x1B
+#define MON_12 0x1C
+
+#define ABMON_1 0x1D
+#define ABMON_2 0x1E
+#define ABMON_3 0x1F
+#define ABMON_4 0x20
+#define ABMON_5 0x21
+#define ABMON_6 0x22
+#define ABMON_7 0x23
+#define ABMON_8 0x24
+#define ABMON_9 0x25
+#define ABMON_10 0x26
+#define ABMON_11 0x27
+#define ABMON_12 0x28
+
+#define AM_STR 0x29
+#define PM_STR 0x2A
+#define T_FMT_AMPM 0x2B
+
+static const char *lc_time_c[] = {
+ "%a %b %e %H:%M:%S %Y", /* D_T_FMT */
+ "%m/%d/%y", /* D_FMT */
+ "%H:%M:%S", /* T_FMT */
+
+ "Sunday", /* DAY_1 */
+ "Monday", /* DAY_2 */
+ "Tuesday", /* DAY_3 */
+ "Wednesday", /* DAY_4 */
+ "Thursday", /* DAY_5 */
+ "Friday", /* DAY_6 */
+ "Saturday", /* DAY_7 */
+
+ "Sun", /* ABDAY_1 */
+ "Mon", /* ABDAY_2 */
+ "Tue", /* ABDAY_3 */
+ "Wed", /* ABDAY_4 */
+ "Thu", /* ABDAY_5 */
+ "Fri", /* ABDAY_6 */
+ "Sat", /* ABDAY_7 */
+
+ "January", /* MON_1 */
+ "February", /* MON_2 */
+ "March", /* MON_3 */
+ "April", /* MON_4 */
+ "May", /* MON_5 */
+ "June", /* MON_6 */
+ "July", /* MON_7 */
+ "August", /* MON_8 */
+ "September", /* MON_9 */
+ "October", /* MON_10 */
+ "November", /* MON_11 */
+ "December", /* MON_12 */
+
+ "Jan", /* ABMON_1 */
+ "Feb", /* ABMON_2 */
+ "Mar", /* ABMON_3 */
+ "Apr", /* ABMON_4 */
+ "May", /* ABMON_5 */
+ "Jun", /* ABMON_6 */
+ "Jul", /* ABMON_7 */
+ "Aug", /* ABMON_8 */
+ "Sep", /* ABMON_9 */
+ "Oct", /* ABMON_10 */
+ "Nov", /* ABMON_11 */
+ "Dec", /* ABMON_12 */
+
+ "AM", /* AM_STR */
+ "PM", /* PM_STR */
+ "%I:%M:%S %p", /* T_FMT_AMPM */
+};
+
+static inline const char *nl_langinfo(nl_item item)
+{
+ if (item < 0 || 0x2B < item)
+ return "";
+ return lc_time_c[item];
+}
+#endif
+#endif