summaryrefslogtreecommitdiffstats
path: root/patches/systemd-230/0009-HACK-add-local-copy-of-uchar.h.patch
blob: 07cc8c161665d533c779ee545ce436bf22d604fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
From: Michael Olbrich <m.olbrich@pengutronix.de>
Date: Fri, 15 Apr 2016 16:33:14 +0200
Subject: [PATCH] HACK: add local copy of uchar.h

Upstream requires glibc 2.16 and uchar.h is available in that version.

Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
---
 configure.ac        |  1 +
 src/basic/_uchar.h  | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/basic/escape.h  |  1 -
 src/basic/missing.h |  4 +++
 src/basic/utf8.h    |  1 -
 5 files changed, 83 insertions(+), 2 deletions(-)
 create mode 100644 src/basic/_uchar.h

diff --git a/configure.ac b/configure.ac
index 00a68a7ea867..650a5be1edf2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -291,6 +291,7 @@ AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"])
 AC_CHECK_HEADERS([sys/capability.h], [], [AC_MSG_ERROR([*** POSIX caps headers not found])])
 AC_CHECK_HEADERS([linux/btrfs.h], [], [])
 AC_CHECK_HEADERS([linux/memfd.h], [], [])
+AC_CHECK_HEADERS([uchar.h], [], [])
 
 # unconditionally pull-in librt with old glibc versions
 AC_SEARCH_LIBS([clock_gettime], [rt], [], [])
diff --git a/src/basic/_uchar.h b/src/basic/_uchar.h
new file mode 100644
index 000000000000..b15d355ae0c5
--- /dev/null
+++ b/src/basic/_uchar.h
@@ -0,0 +1,78 @@
+/* Copyright (C) 2011-2015 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+/*
+ *      ISO C11 Standard: 7.28
+ *	Unicode utilities	<uchar.h>
+ */
+
+#ifndef _UCHAR_H
+#define _UCHAR_H	1
+
+#include <features.h>
+
+#define __need_size_t
+#include <stddef.h>
+#define __need_mbstate_t
+#include <wchar.h>
+
+/* Public type.  */
+typedef __mbstate_t mbstate_t;
+
+
+#if defined __GNUC__ && !defined __USE_ISOCXX11
+/* Define the 16-bit and 32-bit character types.  Use the information
+   provided by the compiler.  */
+# if !defined __CHAR16_TYPE__ || !defined __CHAR32_TYPE__
+#  if defined __STDC_VERSION__ && __STDC_VERSION__ < 201000L
+#   error "<uchar.h> requires ISO C11 mode"
+#  else
+#   error "definitions of __CHAR16_TYPE__ and/or __CHAR32_TYPE__ missing"
+#  endif
+# endif
+typedef __CHAR16_TYPE__ char16_t;
+typedef __CHAR32_TYPE__ char32_t;
+#endif
+
+
+__BEGIN_DECLS
+
+/* Write char16_t representation of multibyte character pointed
+   to by S to PC16.  */
+extern size_t mbrtoc16 (char16_t *__restrict __pc16,
+			const char *__restrict __s, size_t __n,
+			mbstate_t *__restrict __p) __THROW;
+
+/* Write multibyte representation of char16_t C16 to S.  */
+extern size_t c16rtomb (char *__restrict __s, char16_t __c16,
+			mbstate_t *__restrict __ps) __THROW;
+
+
+
+/* Write char32_t representation of multibyte character pointed
+   to by S to PC32.  */
+extern size_t mbrtoc32 (char32_t *__restrict __pc32,
+			const char *__restrict __s, size_t __n,
+			mbstate_t *__restrict __p) __THROW;
+
+/* Write multibyte representation of char32_t C32 to S.  */
+extern size_t c32rtomb (char *__restrict __s, char32_t __c32,
+			mbstate_t *__restrict __ps) __THROW;
+
+__END_DECLS
+
+#endif	/* uchar.h */
diff --git a/src/basic/escape.h b/src/basic/escape.h
index deaa4def2828..36d437cfaa2f 100644
--- a/src/basic/escape.h
+++ b/src/basic/escape.h
@@ -23,7 +23,6 @@
 #include <stddef.h>
 #include <stdint.h>
 #include <sys/types.h>
-#include <uchar.h>
 
 #include "string-util.h"
 #include "missing.h"
diff --git a/src/basic/missing.h b/src/basic/missing.h
index bb97544f750e..0d28c1a4c22a 100644
--- a/src/basic/missing.h
+++ b/src/basic/missing.h
@@ -35,7 +35,11 @@
 #include <stdlib.h>
 #include <sys/resource.h>
 #include <sys/syscall.h>
+#ifdef HAVE_UCHAR_H
 #include <uchar.h>
+#else
+#include "_uchar.h"
+#endif
 #include <unistd.h>
 
 #ifdef HAVE_AUDIT
diff --git a/src/basic/utf8.h b/src/basic/utf8.h
index f9b9c9468bb1..6ac9a3c8d087 100644
--- a/src/basic/utf8.h
+++ b/src/basic/utf8.h
@@ -22,7 +22,6 @@
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
-#include <uchar.h>
 
 #include "macro.h"
 #include "missing.h"