diff options
Diffstat (limited to 'meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch')
-rw-r--r-- | meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch | 156 |
1 files changed, 156 insertions, 0 deletions
diff --git a/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch b/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch new file mode 100644 index 0000000000..15877bea88 --- /dev/null +++ b/meta/recipes-core/systemd/systemd/0004-don-t-fail-if-GLOB_BRACE-and-GLOB_ALTDIRFUNC-is-not-.patch | |||
@@ -0,0 +1,156 @@ | |||
1 | From 5325ab5813617f35f03806ec420829dde7104387 Mon Sep 17 00:00:00 2001 | ||
2 | From: Chen Qi <Qi.Chen@windriver.com> | ||
3 | Date: Mon, 25 Feb 2019 14:56:21 +0800 | ||
4 | Subject: [PATCH 04/22] don't fail if GLOB_BRACE and GLOB_ALTDIRFUNC is not | ||
5 | defined | ||
6 | |||
7 | If the standard library doesn't provide brace | ||
8 | expansion users just won't get it. | ||
9 | |||
10 | Dont use GNU GLOB extentions on non-glibc systems | ||
11 | |||
12 | Conditionalize use of GLOB_ALTDIRFUNC | ||
13 | |||
14 | Upstream-Status: Inappropriate [musl specific] | ||
15 | |||
16 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
17 | Signed-off-by: Chen Qi <Qi.Chen@windriver.com> | ||
18 | [rebased for systemd 243] | ||
19 | Signed-off-by: Scott Murray <scott.murray@konsulko.com> | ||
20 | --- | ||
21 | src/basic/glob-util.c | 12 ++++++++++++ | ||
22 | src/test/test-glob-util.c | 16 ++++++++++++++++ | ||
23 | src/tmpfiles/tmpfiles.c | 10 ++++++++++ | ||
24 | 3 files changed, 38 insertions(+) | ||
25 | |||
26 | diff --git a/src/basic/glob-util.c b/src/basic/glob-util.c | ||
27 | index 802ca8c655..23818a67c6 100644 | ||
28 | --- a/src/basic/glob-util.c | ||
29 | +++ b/src/basic/glob-util.c | ||
30 | @@ -12,6 +12,12 @@ | ||
31 | #include "path-util.h" | ||
32 | #include "strv.h" | ||
33 | |||
34 | +/* Don't fail if the standard library | ||
35 | + * doesn't provide brace expansion */ | ||
36 | +#ifndef GLOB_BRACE | ||
37 | +#define GLOB_BRACE 0 | ||
38 | +#endif | ||
39 | + | ||
40 | static void closedir_wrapper(void* v) { | ||
41 | (void) closedir(v); | ||
42 | } | ||
43 | @@ -19,6 +25,7 @@ static void closedir_wrapper(void* v) { | ||
44 | int safe_glob(const char *path, int flags, glob_t *pglob) { | ||
45 | int k; | ||
46 | |||
47 | +#ifdef GLOB_ALTDIRFUNC | ||
48 | /* We want to set GLOB_ALTDIRFUNC ourselves, don't allow it to be set. */ | ||
49 | assert(!(flags & GLOB_ALTDIRFUNC)); | ||
50 | |||
51 | @@ -32,9 +39,14 @@ int safe_glob(const char *path, int flags, glob_t *pglob) { | ||
52 | pglob->gl_lstat = lstat; | ||
53 | if (!pglob->gl_stat) | ||
54 | pglob->gl_stat = stat; | ||
55 | +#endif | ||
56 | |||
57 | errno = 0; | ||
58 | +#ifdef GLOB_ALTDIRFUNC | ||
59 | k = glob(path, flags | GLOB_ALTDIRFUNC, NULL, pglob); | ||
60 | +#else | ||
61 | + k = glob(path, flags, NULL, pglob); | ||
62 | +#endif | ||
63 | if (k == GLOB_NOMATCH) | ||
64 | return -ENOENT; | ||
65 | if (k == GLOB_NOSPACE) | ||
66 | diff --git a/src/test/test-glob-util.c b/src/test/test-glob-util.c | ||
67 | index 9b3e73cce0..3790ba3be5 100644 | ||
68 | --- a/src/test/test-glob-util.c | ||
69 | +++ b/src/test/test-glob-util.c | ||
70 | @@ -34,6 +34,12 @@ TEST(glob_first) { | ||
71 | assert_se(first == NULL); | ||
72 | } | ||
73 | |||
74 | +/* Don't fail if the standard library | ||
75 | + * doesn't provide brace expansion */ | ||
76 | +#ifndef GLOB_BRACE | ||
77 | +#define GLOB_BRACE 0 | ||
78 | +#endif | ||
79 | + | ||
80 | TEST(glob_exists) { | ||
81 | char name[] = "/tmp/test-glob_exists.XXXXXX"; | ||
82 | int fd = -EBADF; | ||
83 | @@ -61,11 +67,13 @@ TEST(glob_no_dot) { | ||
84 | const char *fn; | ||
85 | |||
86 | _cleanup_globfree_ glob_t g = { | ||
87 | +#ifdef GLOB_ALTDIRFUNC | ||
88 | .gl_closedir = closedir_wrapper, | ||
89 | .gl_readdir = (struct dirent *(*)(void *)) readdir_no_dot, | ||
90 | .gl_opendir = (void *(*)(const char *)) opendir, | ||
91 | .gl_lstat = lstat, | ||
92 | .gl_stat = stat, | ||
93 | +#endif | ||
94 | }; | ||
95 | |||
96 | int r; | ||
97 | @@ -73,11 +81,19 @@ TEST(glob_no_dot) { | ||
98 | assert_se(mkdtemp(template)); | ||
99 | |||
100 | fn = strjoina(template, "/*"); | ||
101 | +#ifdef GLOB_ALTDIRFUNC | ||
102 | r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g); | ||
103 | +#else | ||
104 | + r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g); | ||
105 | +#endif | ||
106 | assert_se(r == GLOB_NOMATCH); | ||
107 | |||
108 | fn = strjoina(template, "/.*"); | ||
109 | +#ifdef GLOB_ALTDIRFUNC | ||
110 | r = glob(fn, GLOB_NOSORT|GLOB_BRACE|GLOB_ALTDIRFUNC, NULL, &g); | ||
111 | +#else | ||
112 | + r = glob(fn, GLOB_NOSORT|GLOB_BRACE, NULL, &g); | ||
113 | +#endif | ||
114 | assert_se(r == GLOB_NOMATCH); | ||
115 | |||
116 | (void) rm_rf(template, REMOVE_ROOT|REMOVE_PHYSICAL); | ||
117 | diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c | ||
118 | index 230ec09b97..2cc5f391d7 100644 | ||
119 | --- a/src/tmpfiles/tmpfiles.c | ||
120 | +++ b/src/tmpfiles/tmpfiles.c | ||
121 | @@ -73,6 +73,12 @@ | ||
122 | #include "user-util.h" | ||
123 | #include "virt.h" | ||
124 | |||
125 | +/* Don't fail if the standard library | ||
126 | + * doesn't provide brace expansion */ | ||
127 | +#ifndef GLOB_BRACE | ||
128 | +#define GLOB_BRACE 0 | ||
129 | +#endif | ||
130 | + | ||
131 | /* This reads all files listed in /etc/tmpfiles.d/?*.conf and creates | ||
132 | * them in the file system. This is intended to be used to create | ||
133 | * properly owned directories beneath /tmp, /var/tmp, /run, which are | ||
134 | @@ -2434,7 +2440,9 @@ finish: | ||
135 | |||
136 | static int glob_item(Context *c, Item *i, action_t action) { | ||
137 | _cleanup_globfree_ glob_t g = { | ||
138 | +#ifdef GLOB_ALTDIRFUNC | ||
139 | .gl_opendir = (void *(*)(const char *)) opendir_nomod, | ||
140 | +#endif | ||
141 | }; | ||
142 | int r = 0, k; | ||
143 | |||
144 | @@ -2461,7 +2469,9 @@ static int glob_item_recursively( | ||
145 | fdaction_t action) { | ||
146 | |||
147 | _cleanup_globfree_ glob_t g = { | ||
148 | +#ifdef GLOB_ALTDIRFUNC | ||
149 | .gl_opendir = (void *(*)(const char *)) opendir_nomod, | ||
150 | +#endif | ||
151 | }; | ||
152 | int r = 0, k; | ||
153 | |||
154 | -- | ||
155 | 2.34.1 | ||
156 | |||