]> git.pld-linux.org Git - packages/systemd.git/blame - udev-uClibc.patch
- drop tmpfiles (no-)compatibility config and package,
[packages/systemd.git] / udev-uClibc.patch
CommitLineData
3d2126db
JR
1diff -ur udev-150/src/ata_id/ata_id.c udev-150-uclibc/src/ata_id/ata_id.c
2--- udev-150/src/ata_id/ata_id.c 2009-12-08 18:43:09.000000000 +0100
3+++ udev-150-uclibc/src/ata_id/ata_id.c 2010-01-19 17:10:19.000000000 +0100
5341464c 4@@ -168,7 +168,11 @@
ca756518 5 uint16_t *p;
5341464c 6
ca756518 7 p = (uint16_t *) identify;
5341464c 8+#ifdef __UCLIBC__
ca756518 9+ p[offset_words] = __le16_to_cpu (p[offset_words]);
5341464c 10+#else
ca756518 11 p[offset_words] = le16toh (p[offset_words]);
5341464c
JR
12+#endif
13 }
14
15 /**
8ae8de24
JR
16diff -ur udev-150/src/udevadm-info.c udev-150-uclibc/src/udevadm-info.c
17--- udev-150/src/udevadm-info.c 2009-12-24 20:40:34.000000000 +0100
18+++ udev-150-uclibc/src/udevadm-info.c 2010-01-19 17:47:00.000000000 +0100
feda1938 19@@ -200,8 +200,14 @@
ca756518 20 return 0;
feda1938
JR
21 }
22
5341464c 23+#ifdef __UCLIBC__
feda1938
JR
24+static void cleanup_dir(DIR *dir, char *dirname, mode_t mask, int depth)
25+{
ca756518 26+ char filename[UTIL_PATH_SIZE];
feda1938
JR
27+#else
28 static void cleanup_dir(DIR *dir, mode_t mask, int depth)
29 {
5341464c 30+#endif
ca756518 31 struct dirent *dent;
5341464c 32
ca756518 33 if (depth <= 0)
446024fe 34@@ -212,7 +215,12 @@
5341464c 35
ca756518
JR
36 if (dent->d_name[0] == '.')
37 continue;
5341464c 38+#ifdef __UCLIBC__
ca756518
JR
39+ util_strscpyl(filename, sizeof(filename), dirname, "/", dent->d_name, NULL);
40+ if (lstat(filename, &stats) != 0)
5341464c 41+#else
ca756518 42 if (fstatat(dirfd(dir), dent->d_name, &stats, AT_SYMLINK_NOFOLLOW) != 0)
5341464c 43+#endif
ca756518
JR
44 continue;
45 if ((stats.st_mode & mask) != 0)
46 continue;
feda1938
JR
47@@ -229,7 +232,11 @@
48
ca756518
JR
49 dir2 = fdopendir(openat(dirfd(dir), dent->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC));
50 if (dir2 != NULL) {
feda1938 51+#ifdef __UCLIBC__
ca756518 52+ cleanup_dir(dir2, filename, mask, depth-1);
feda1938 53+#else
ca756518 54 cleanup_dir(dir2, mask, depth-1);
feda1938 55+#endif
ca756518
JR
56 closedir(dir2);
57 }
58 unlinkat(dirfd(dir), dent->d_name, AT_REMOVEDIR);
feda1938 59@@ -250,35 +257,55 @@
ca756518
JR
60 util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/data", NULL);
61 dir = opendir(filename);
62 if (dir != NULL) {
feda1938 63+#ifdef __UCLIBC__
ca756518 64+ cleanup_dir(dir, filename, S_ISVTX, 1);
feda1938 65+#else
ca756518 66 cleanup_dir(dir, S_ISVTX, 1);
feda1938 67+#endif
ca756518
JR
68 closedir(dir);
69 }
feda1938 70
ca756518
JR
71 util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/links", NULL);
72 dir = opendir(filename);
73 if (dir != NULL) {
feda1938 74+#ifdef __UCLIBC__
ca756518 75+ cleanup_dir(dir, filename, 0, 2);
feda1938 76+#else
ca756518 77 cleanup_dir(dir, 0, 2);
feda1938 78+#endif
ca756518
JR
79 closedir(dir);
80 }
feda1938 81
ca756518
JR
82 util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/tags", NULL);
83 dir = opendir(filename);
84 if (dir != NULL) {
feda1938 85+#ifdef __UCLIBC__
ca756518 86+ cleanup_dir(dir, filename, 0, 2);
feda1938 87+#else
ca756518 88 cleanup_dir(dir, 0, 2);
feda1938 89+#endif
ca756518
JR
90 closedir(dir);
91 }
feda1938 92
ca756518
JR
93 util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/watch", NULL);
94 dir = opendir(filename);
95 if (dir != NULL) {
feda1938 96+#ifdef __UCLIBC__
ca756518 97+ cleanup_dir(dir, filename, 0, 1);
feda1938 98+#else
ca756518 99 cleanup_dir(dir, 0, 1);
feda1938 100+#endif
ca756518
JR
101 closedir(dir);
102 }
feda1938 103
ca756518
JR
104 util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/firmware-missing", NULL);
105 dir = opendir(filename);
106 if (dir != NULL) {
feda1938 107+#ifdef __UCLIBC__
ca756518 108+ cleanup_dir(dir, filename, 0, 1);
feda1938 109+#else
ca756518 110 cleanup_dir(dir, 0, 1);
feda1938 111+#endif
ca756518
JR
112 closedir(dir);
113 }
feda1938 114 }
8ae8de24
JR
115--- udev-168/src/udev-event.c.orig 2011-04-21 14:05:13.000000000 +0200
116+++ udev-168/src/udev-event.c 2011-04-26 01:09:16.813273489 +0200
ca756518
JR
117@@ -508,11 +508,18 @@
118 if (fd_stdout < 0 && fd_stderr < 0)
119 return;
feda1938
JR
120
121+#ifdef __UCLIBC__
ca756518 122+ fd_ep = epoll_create(1);
feda1938 123+#else
ca756518 124 fd_ep = epoll_create1(EPOLL_CLOEXEC);
feda1938 125+#endif
ca756518
JR
126 if (fd_ep < 0) {
127 err(udev, "error creating epoll fd: %m\n");
128 goto out;
129 }
feda1938 130+#ifdef __UCLIBC__
ca756518 131+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
feda1938
JR
132+#endif
133
ca756518
JR
134 if (fd_stdout >= 0) {
135 memset(&ep_outpipe, 0, sizeof(struct epoll_event));
feda1938 136@@ -698,9 +698,11 @@
ca756518
JR
137 } else if (WIFSTOPPED(status)) {
138 err(udev, "'%s' [%u] stopped\n", cmd, pid);
139 err = -1;
feda1938 140+#ifdef WIFCONTINUED
ca756518
JR
141 } else if (WIFCONTINUED(status)) {
142 err(udev, "'%s' [%u] continued\n", cmd, pid);
143 err = -1;
feda1938 144+#endif
ca756518
JR
145 } else {
146 err(udev, "'%s' [%u] exit with status 0x%04x\n", cmd, pid, status);
147 err = -1;
feda1938
JR
148@@ -759,18 +759,34 @@
149
ca756518
JR
150 /* pipes from child to parent */
151 if (result != NULL || udev_get_log_priority(udev) >= LOG_INFO) {
feda1938 152+#ifdef __UCLIBC__
ca756518 153+ if (pipe(outpipe) != 0) {
feda1938 154+#else
ca756518 155 if (pipe2(outpipe, O_NONBLOCK) != 0) {
feda1938 156+#endif
ca756518
JR
157 err = -errno;
158 err(udev, "pipe failed: %m\n");
159 goto out;
160 }
feda1938 161+#ifdef __UCLIBC__
ca756518
JR
162+ fcntl(outpipe[0], F_SETFL, O_NONBLOCK);
163+ fcntl(outpipe[1], F_SETFL, O_NONBLOCK);
feda1938 164+#endif
ca756518
JR
165 }
166 if (udev_get_log_priority(udev) >= LOG_INFO) {
feda1938 167+#ifdef __UCLIBC__
ca756518 168+ if (pipe(errpipe) != 0) {
feda1938 169+#else
ca756518 170 if (pipe2(errpipe, O_NONBLOCK) != 0) {
feda1938 171+#endif
ca756518
JR
172 err = -errno;
173 err(udev, "pipe failed: %m\n");
174 goto out;
175 }
feda1938 176+#ifdef __UCLIBC__
ca756518
JR
177+ fcntl(errpipe[0], F_SETFL, O_NONBLOCK);
178+ fcntl(errpipe[1], F_SETFL, O_NONBLOCK);
feda1938 179+#endif
ca756518 180 }
feda1938 181
8ae8de24
JR
182 /* allow programs in /lib/src/ to be called without the path */
183--- udev-168/src/udevd.c.orig 2011-04-21 14:05:13.000000000 +0200
184+++ udev-168/src/udevd.c 2011-04-26 01:13:39.984103209 +0200
feda1938 185@@ -256,12 +256,19 @@
ca756518
JR
186 goto out;
187 }
feda1938
JR
188
189+#ifdef __UCLIBC__
ca756518 190+ fd_ep = epoll_create(1);
feda1938 191+#else
ca756518 192 fd_ep = epoll_create1(EPOLL_CLOEXEC);
feda1938 193+#endif
ca756518
JR
194 if (fd_ep < 0) {
195 err(udev, "error creating epoll fd: %m\n");
196 rc = 3;
197 goto out;
198 }
feda1938 199+#ifdef __UCLIBC__
ca756518 200+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
feda1938
JR
201+#endif
202
ca756518
JR
203 memset(&ep_signal, 0, sizeof(struct epoll_event));
204 ep_signal.events = EPOLLIN;
feda1938 205@@ -826,8 +826,10 @@
ca756518
JR
206 pid, WTERMSIG(status), strsignal(WTERMSIG(status)));
207 } else if (WIFSTOPPED(status)) {
208 err(udev, "worker [%u] stopped\n", pid);
feda1938 209+#ifdef WIFCONTINUED
ca756518
JR
210 } else if (WIFCONTINUED(status)) {
211 err(udev, "worker [%u] continued\n", pid);
feda1938 212+#endif
ca756518
JR
213 } else {
214 err(udev, "worker [%u] exit with status 0x%04x\n", pid, status);
215 }
feda1938 216@@ -1547,11 +1554,18 @@
ca756518
JR
217 ep_worker.events = EPOLLIN;
218 ep_worker.data.fd = fd_worker;
feda1938
JR
219
220+#ifdef __UCLIBC__
ca756518 221+ fd_ep = epoll_create(1);
feda1938 222+#else
ca756518 223 fd_ep = epoll_create1(EPOLL_CLOEXEC);
feda1938 224+#endif
ca756518
JR
225 if (fd_ep < 0) {
226 err(udev, "error creating epoll fd: %m\n");
227 goto exit;
228 }
feda1938 229+#ifdef __UCLIBC__
ca756518 230+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
feda1938 231+#endif
ca756518
JR
232 if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_ctrl, &ep_ctrl) < 0 ||
233 epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_inotify, &ep_inotify) < 0 ||
234 epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 ||
8ae8de24
JR
235--- udev-172/src/udev-ctrl.c.orig 2011-04-26 01:20:36.150103207 +0200
236+++ udev-172/src/udev-ctrl.c 2011-04-26 01:21:48.940103224 +0200
feda1938
JR
237@@ -15,6 +15,7 @@
238 #include <stddef.h>
239 #include <string.h>
240 #include <unistd.h>
241+#include <fcntl.h>
242 #include <sys/types.h>
243 #include <sys/poll.h>
244 #include <sys/socket.h>
606aa3b0 245@@ -187,13 +187,22 @@
ca756518
JR
246 conn->refcount = 1;
247 conn->uctrl = uctrl;
feda1938
JR
248
249+#ifdef __UCLIBC__
ca756518 250+ conn->sock = accept(uctrl->sock, NULL, NULL);
feda1938 251+#else
ca756518 252 conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK);
feda1938 253+#endif
ca756518
JR
254 if (conn->sock < 0) {
255 if (errno != EINTR)
256 err(uctrl->udev, "unable to receive ctrl connection: %m\n");
257 goto err;
258 }
606aa3b0 259
feda1938 260+#ifdef __UCLIBC__
ca756518
JR
261+ fcntl(conn->sock, F_SETFD, FD_CLOEXEC);
262+ fcntl(conn->sock, F_SETFL, O_NONBLOCK);
feda1938 263+#endif
606aa3b0 264+
ca756518
JR
265 /* check peer credential of connection */
266 slen = sizeof(ucred);
267 if (getsockopt(conn->sock, SOL_SOCKET, SO_PEERCRED, &ucred, &slen) < 0) {
8ae8de24
JR
268--- udev-168/src/udevadm-monitor.c.orig 2011-04-26 01:53:44.361103209 +0200
269+++ udev-168/src/udevadm-monitor.c 2011-04-26 01:54:41.946103207 +0200
feda1938 270@@ -157,11 +157,18 @@
ca756518
JR
271 sigaddset(&mask, SIGTERM);
272 sigprocmask(SIG_UNBLOCK, &mask, NULL);
feda1938
JR
273
274+#ifdef __UCLIBC__
ca756518 275+ fd_ep = epoll_create(1);
feda1938 276+#else
ca756518 277 fd_ep = epoll_create1(EPOLL_CLOEXEC);
feda1938 278+#endif
ca756518
JR
279 if (fd_ep < 0) {
280 err(udev, "error creating epoll fd: %m\n");
281 goto out;
282 }
feda1938 283+#ifdef __UCLIBC__
ca756518 284+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
feda1938
JR
285+#endif
286
ca756518
JR
287 printf("monitor will print the received events for:\n");
288 if (print_udev) {
This page took 0.130063 seconds and 4 git commands to generate.