-diff -ur udev-150/extras/ata_id/ata_id.c udev-150-uclibc/extras/ata_id/ata_id.c
---- udev-150/extras/ata_id/ata_id.c 2009-12-08 18:43:09.000000000 +0100
-+++ udev-150-uclibc/extras/ata_id/ata_id.c 2010-01-19 17:10:19.000000000 +0100
+diff -ur udev-150/src/ata_id/ata_id.c udev-150-uclibc/src/ata_id/ata_id.c
+--- udev-150/src/ata_id/ata_id.c 2009-12-08 18:43:09.000000000 +0100
++++ udev-150-uclibc/src/ata_id/ata_id.c 2010-01-19 17:10:19.000000000 +0100
@@ -168,7 +168,11 @@
- uint16_t *p;
+ uint16_t *p;
- p = (uint16_t *) identify;
+ p = (uint16_t *) identify;
+#ifdef __UCLIBC__
-+ p[offset_words] = __le16_to_cpu (p[offset_words]);
++ p[offset_words] = __le16_to_cpu (p[offset_words]);
+#else
- p[offset_words] = le16toh (p[offset_words]);
+ p[offset_words] = le16toh (p[offset_words]);
+#endif
}
/**
-diff -ur udev-150/udev/udevadm-info.c udev-150-uclibc/udev/udevadm-info.c
---- udev-150/udev/udevadm-info.c 2009-12-24 20:40:34.000000000 +0100
-+++ udev-150-uclibc/udev/udevadm-info.c 2010-01-19 17:47:00.000000000 +0100
+diff -ur udev-150/src/udevadm-info.c udev-150-uclibc/src/udevadm-info.c
+--- udev-150/src/udevadm-info.c 2009-12-24 20:40:34.000000000 +0100
++++ udev-150-uclibc/src/udevadm-info.c 2010-01-19 17:47:00.000000000 +0100
@@ -200,8 +200,14 @@
- return 0;
+ return 0;
}
+#ifdef __UCLIBC__
+static void cleanup_dir(DIR *dir, char *dirname, mode_t mask, int depth)
+{
-+ char filename[UTIL_PATH_SIZE];
++ char filename[UTIL_PATH_SIZE];
+#else
static void cleanup_dir(DIR *dir, mode_t mask, int depth)
{
+#endif
- struct dirent *dent;
+ struct dirent *dent;
- if (depth <= 0)
+ if (depth <= 0)
@@ -212,7 +215,12 @@
- if (dent->d_name[0] == '.')
- continue;
+ if (dent->d_name[0] == '.')
+ continue;
+#ifdef __UCLIBC__
-+ util_strscpyl(filename, sizeof(filename), dirname, "/", dent->d_name, NULL);
-+ if (lstat(filename, &stats) != 0)
++ util_strscpyl(filename, sizeof(filename), dirname, "/", dent->d_name, NULL);
++ if (lstat(filename, &stats) != 0)
+#else
- if (fstatat(dirfd(dir), dent->d_name, &stats, AT_SYMLINK_NOFOLLOW) != 0)
+ if (fstatat(dirfd(dir), dent->d_name, &stats, AT_SYMLINK_NOFOLLOW) != 0)
+#endif
- continue;
- if ((stats.st_mode & mask) != 0)
- continue;
+ continue;
+ if ((stats.st_mode & mask) != 0)
+ continue;
@@ -229,7 +232,11 @@
- dir2 = fdopendir(openat(dirfd(dir), dent->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC));
- if (dir2 != NULL) {
+ dir2 = fdopendir(openat(dirfd(dir), dent->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC));
+ if (dir2 != NULL) {
+#ifdef __UCLIBC__
-+ cleanup_dir(dir2, filename, mask, depth-1);
++ cleanup_dir(dir2, filename, mask, depth-1);
+#else
- cleanup_dir(dir2, mask, depth-1);
+ cleanup_dir(dir2, mask, depth-1);
+#endif
- closedir(dir2);
- }
- unlinkat(dirfd(dir), dent->d_name, AT_REMOVEDIR);
+ closedir(dir2);
+ }
+ unlinkat(dirfd(dir), dent->d_name, AT_REMOVEDIR);
@@ -250,35 +257,55 @@
- util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/data", NULL);
- dir = opendir(filename);
- if (dir != NULL) {
+ util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/data", NULL);
+ dir = opendir(filename);
+ if (dir != NULL) {
+#ifdef __UCLIBC__
-+ cleanup_dir(dir, filename, S_ISVTX, 1);
++ cleanup_dir(dir, filename, S_ISVTX, 1);
+#else
- cleanup_dir(dir, S_ISVTX, 1);
+ cleanup_dir(dir, S_ISVTX, 1);
+#endif
- closedir(dir);
- }
+ closedir(dir);
+ }
- util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/links", NULL);
- dir = opendir(filename);
- if (dir != NULL) {
+ util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/links", NULL);
+ dir = opendir(filename);
+ if (dir != NULL) {
+#ifdef __UCLIBC__
-+ cleanup_dir(dir, filename, 0, 2);
++ cleanup_dir(dir, filename, 0, 2);
+#else
- cleanup_dir(dir, 0, 2);
+ cleanup_dir(dir, 0, 2);
+#endif
- closedir(dir);
- }
+ closedir(dir);
+ }
- util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/tags", NULL);
- dir = opendir(filename);
- if (dir != NULL) {
+ util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/tags", NULL);
+ dir = opendir(filename);
+ if (dir != NULL) {
+#ifdef __UCLIBC__
-+ cleanup_dir(dir, filename, 0, 2);
++ cleanup_dir(dir, filename, 0, 2);
+#else
- cleanup_dir(dir, 0, 2);
+ cleanup_dir(dir, 0, 2);
+#endif
- closedir(dir);
- }
+ closedir(dir);
+ }
- util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/watch", NULL);
- dir = opendir(filename);
- if (dir != NULL) {
+ util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/watch", NULL);
+ dir = opendir(filename);
+ if (dir != NULL) {
+#ifdef __UCLIBC__
-+ cleanup_dir(dir, filename, 0, 1);
++ cleanup_dir(dir, filename, 0, 1);
+#else
- cleanup_dir(dir, 0, 1);
+ cleanup_dir(dir, 0, 1);
+#endif
- closedir(dir);
- }
+ closedir(dir);
+ }
- util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/firmware-missing", NULL);
- dir = opendir(filename);
- if (dir != NULL) {
+ util_strscpyl(filename, sizeof(filename), udev_get_run_path(udev), "/firmware-missing", NULL);
+ dir = opendir(filename);
+ if (dir != NULL) {
+#ifdef __UCLIBC__
-+ cleanup_dir(dir, filename, 0, 1);
++ cleanup_dir(dir, filename, 0, 1);
+#else
- cleanup_dir(dir, 0, 1);
+ cleanup_dir(dir, 0, 1);
+#endif
- closedir(dir);
- }
+ closedir(dir);
+ }
}
---- udev-168/udev/udev-event.c.orig 2011-04-21 14:05:13.000000000 +0200
-+++ udev-168/udev/udev-event.c 2011-04-26 01:09:16.813273489 +0200
-@@ -508,12 +508,19 @@
- if (fd_stdout < 0 && fd_stderr < 0)
- return 0;
+--- udev-168/src/udev-event.c.orig 2011-04-21 14:05:13.000000000 +0200
++++ udev-168/src/udev-event.c 2011-04-26 01:09:16.813273489 +0200
+@@ -508,11 +508,18 @@
+ if (fd_stdout < 0 && fd_stderr < 0)
+ return;
+#ifdef __UCLIBC__
-+ fd_ep = epoll_create(1);
++ fd_ep = epoll_create(1);
+#else
- fd_ep = epoll_create1(EPOLL_CLOEXEC);
+ fd_ep = epoll_create1(EPOLL_CLOEXEC);
+#endif
- if (fd_ep < 0) {
- err = -errno;
- err(udev, "error creating epoll fd: %m\n");
- goto out;
- }
+ if (fd_ep < 0) {
+ err(udev, "error creating epoll fd: %m\n");
+ goto out;
+ }
+#ifdef __UCLIBC__
-+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
++ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
+#endif
- if (fd_stdout >= 0) {
- memset(&ep_outpipe, 0, sizeof(struct epoll_event));
+ if (fd_stdout >= 0) {
+ memset(&ep_outpipe, 0, sizeof(struct epoll_event));
@@ -698,9 +698,11 @@
- } else if (WIFSTOPPED(status)) {
- err(udev, "'%s' [%u] stopped\n", cmd, pid);
- err = -1;
+ } else if (WIFSTOPPED(status)) {
+ err(udev, "'%s' [%u] stopped\n", cmd, pid);
+ err = -1;
+#ifdef WIFCONTINUED
- } else if (WIFCONTINUED(status)) {
- err(udev, "'%s' [%u] continued\n", cmd, pid);
- err = -1;
+ } else if (WIFCONTINUED(status)) {
+ err(udev, "'%s' [%u] continued\n", cmd, pid);
+ err = -1;
+#endif
- } else {
- err(udev, "'%s' [%u] exit with status 0x%04x\n", cmd, pid, status);
- err = -1;
+ } else {
+ err(udev, "'%s' [%u] exit with status 0x%04x\n", cmd, pid, status);
+ err = -1;
@@ -759,18 +759,34 @@
- /* pipes from child to parent */
- if (result != NULL || udev_get_log_priority(udev) >= LOG_INFO) {
+ /* pipes from child to parent */
+ if (result != NULL || udev_get_log_priority(udev) >= LOG_INFO) {
+#ifdef __UCLIBC__
-+ if (pipe(outpipe) != 0) {
++ if (pipe(outpipe) != 0) {
+#else
- if (pipe2(outpipe, O_NONBLOCK) != 0) {
+ if (pipe2(outpipe, O_NONBLOCK) != 0) {
+#endif
- err = -errno;
- err(udev, "pipe failed: %m\n");
- goto out;
- }
+ err = -errno;
+ err(udev, "pipe failed: %m\n");
+ goto out;
+ }
+#ifdef __UCLIBC__
-+ fcntl(outpipe[0], F_SETFL, O_NONBLOCK);
-+ fcntl(outpipe[1], F_SETFL, O_NONBLOCK);
++ fcntl(outpipe[0], F_SETFL, O_NONBLOCK);
++ fcntl(outpipe[1], F_SETFL, O_NONBLOCK);
+#endif
- }
- if (udev_get_log_priority(udev) >= LOG_INFO) {
+ }
+ if (udev_get_log_priority(udev) >= LOG_INFO) {
+#ifdef __UCLIBC__
-+ if (pipe(errpipe) != 0) {
++ if (pipe(errpipe) != 0) {
+#else
- if (pipe2(errpipe, O_NONBLOCK) != 0) {
+ if (pipe2(errpipe, O_NONBLOCK) != 0) {
+#endif
- err = -errno;
- err(udev, "pipe failed: %m\n");
- goto out;
- }
+ err = -errno;
+ err(udev, "pipe failed: %m\n");
+ goto out;
+ }
+#ifdef __UCLIBC__
-+ fcntl(errpipe[0], F_SETFL, O_NONBLOCK);
-+ fcntl(errpipe[1], F_SETFL, O_NONBLOCK);
++ fcntl(errpipe[0], F_SETFL, O_NONBLOCK);
++ fcntl(errpipe[1], F_SETFL, O_NONBLOCK);
+#endif
- }
+ }
- /* allow programs in /lib/udev/ to be called without the path */
---- udev-168/udev/udevd.c.orig 2011-04-21 14:05:13.000000000 +0200
-+++ udev-168/udev/udevd.c 2011-04-26 01:13:39.984103209 +0200
+ /* allow programs in /lib/src/ to be called without the path */
+--- udev-168/src/udevd.c.orig 2011-04-21 14:05:13.000000000 +0200
++++ udev-168/src/udevd.c 2011-04-26 01:13:39.984103209 +0200
@@ -256,12 +256,19 @@
- goto out;
- }
+ goto out;
+ }
+#ifdef __UCLIBC__
-+ fd_ep = epoll_create(1);
++ fd_ep = epoll_create(1);
+#else
- fd_ep = epoll_create1(EPOLL_CLOEXEC);
+ fd_ep = epoll_create1(EPOLL_CLOEXEC);
+#endif
- if (fd_ep < 0) {
- err(udev, "error creating epoll fd: %m\n");
- rc = 3;
- goto out;
- }
+ if (fd_ep < 0) {
+ err(udev, "error creating epoll fd: %m\n");
+ rc = 3;
+ goto out;
+ }
+#ifdef __UCLIBC__
-+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
++ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
+#endif
- memset(&ep_signal, 0, sizeof(struct epoll_event));
- ep_signal.events = EPOLLIN;
+ memset(&ep_signal, 0, sizeof(struct epoll_event));
+ ep_signal.events = EPOLLIN;
@@ -826,8 +826,10 @@
- pid, WTERMSIG(status), strsignal(WTERMSIG(status)));
- } else if (WIFSTOPPED(status)) {
- err(udev, "worker [%u] stopped\n", pid);
+ pid, WTERMSIG(status), strsignal(WTERMSIG(status)));
+ } else if (WIFSTOPPED(status)) {
+ err(udev, "worker [%u] stopped\n", pid);
+#ifdef WIFCONTINUED
- } else if (WIFCONTINUED(status)) {
- err(udev, "worker [%u] continued\n", pid);
+ } else if (WIFCONTINUED(status)) {
+ err(udev, "worker [%u] continued\n", pid);
+#endif
- } else {
- err(udev, "worker [%u] exit with status 0x%04x\n", pid, status);
- }
+ } else {
+ err(udev, "worker [%u] exit with status 0x%04x\n", pid, status);
+ }
@@ -1547,11 +1554,18 @@
- ep_worker.events = EPOLLIN;
- ep_worker.data.fd = fd_worker;
+ ep_worker.events = EPOLLIN;
+ ep_worker.data.fd = fd_worker;
+#ifdef __UCLIBC__
-+ fd_ep = epoll_create(1);
++ fd_ep = epoll_create(1);
+#else
- fd_ep = epoll_create1(EPOLL_CLOEXEC);
+ fd_ep = epoll_create1(EPOLL_CLOEXEC);
+#endif
- if (fd_ep < 0) {
- err(udev, "error creating epoll fd: %m\n");
- goto exit;
- }
+ if (fd_ep < 0) {
+ err(udev, "error creating epoll fd: %m\n");
+ goto exit;
+ }
+#ifdef __UCLIBC__
-+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
++ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
+#endif
- if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_ctrl, &ep_ctrl) < 0 ||
- epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_inotify, &ep_inotify) < 0 ||
- epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 ||
---- udev-168/libudev/libudev-ctrl.c.orig 2011-04-26 01:20:36.150103207 +0200
-+++ udev-168/libudev/libudev-ctrl.c 2011-04-26 01:21:48.940103224 +0200
+ if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_ctrl, &ep_ctrl) < 0 ||
+ epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_inotify, &ep_inotify) < 0 ||
+ epoll_ctl(fd_ep, EPOLL_CTL_ADD, fd_signal, &ep_signal) < 0 ||
+--- udev-172/src/udev-ctrl.c.orig 2011-04-26 01:20:36.150103207 +0200
++++ udev-172/src/udev-ctrl.c 2011-04-26 01:21:48.940103224 +0200
@@ -15,6 +15,7 @@
#include <stddef.h>
#include <string.h>
#include <sys/types.h>
#include <sys/poll.h>
#include <sys/socket.h>
-@@ -184,11 +185,18 @@
- conn->refcount = 1;
- conn->uctrl = uctrl;
+@@ -187,13 +187,22 @@
+ conn->refcount = 1;
+ conn->uctrl = uctrl;
+#ifdef __UCLIBC__
-+ conn->sock = accept(uctrl->sock, NULL, NULL);
++ conn->sock = accept(uctrl->sock, NULL, NULL);
+#else
- conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC);
+ conn->sock = accept4(uctrl->sock, NULL, NULL, SOCK_CLOEXEC|SOCK_NONBLOCK);
+#endif
- if (conn->sock < 0) {
- free(conn);
- return NULL;
- }
+ if (conn->sock < 0) {
+ if (errno != EINTR)
+ err(uctrl->udev, "unable to receive ctrl connection: %m\n");
+ goto err;
+ }
+
+#ifdef __UCLIBC__
-+ fcntl(conn->sock, F_SETFD, FD_CLOEXEC);
++ fcntl(conn->sock, F_SETFD, FD_CLOEXEC);
++ fcntl(conn->sock, F_SETFL, O_NONBLOCK);
+#endif
-
- /* enable receiving of the sender credentials */
- setsockopt(conn->sock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
---- udev-168/udev/udevadm-monitor.c.orig 2011-04-26 01:53:44.361103209 +0200
-+++ udev-168/udev/udevadm-monitor.c 2011-04-26 01:54:41.946103207 +0200
++
+ /* check peer credential of connection */
+ slen = sizeof(ucred);
+ if (getsockopt(conn->sock, SOL_SOCKET, SO_PEERCRED, &ucred, &slen) < 0) {
+--- udev-168/src/udevadm-monitor.c.orig 2011-04-26 01:53:44.361103209 +0200
++++ udev-168/src/udevadm-monitor.c 2011-04-26 01:54:41.946103207 +0200
@@ -157,11 +157,18 @@
- sigaddset(&mask, SIGTERM);
- sigprocmask(SIG_UNBLOCK, &mask, NULL);
+ sigaddset(&mask, SIGTERM);
+ sigprocmask(SIG_UNBLOCK, &mask, NULL);
+#ifdef __UCLIBC__
-+ fd_ep = epoll_create(1);
++ fd_ep = epoll_create(1);
+#else
- fd_ep = epoll_create1(EPOLL_CLOEXEC);
+ fd_ep = epoll_create1(EPOLL_CLOEXEC);
+#endif
- if (fd_ep < 0) {
- err(udev, "error creating epoll fd: %m\n");
- goto out;
- }
+ if (fd_ep < 0) {
+ err(udev, "error creating epoll fd: %m\n");
+ goto out;
+ }
+#ifdef __UCLIBC__
-+ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
++ fcntl(fd_ep, F_SETFD, FD_CLOEXEC);
+#endif
- printf("monitor will print the received events for:\n");
- if (print_udev) {
+ printf("monitor will print the received events for:\n");
+ if (print_udev) {