]>
Commit | Line | Data |
---|---|---|
3d2126db JR |
1 | diff -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 |
16 | diff -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) { |