r3854 - in glibc-package/branches/eglibc-2.10/debian: . patches patches/hurd-i386
Author: sthibault
Date: 2009-09-28 18:22:05 +0000 (Mon, 28 Sep 2009)
New Revision: 3854
Added:
glibc-package/branches/eglibc-2.10/debian/patches/hurd-i386/submitted-readlinkat.diff
Modified:
glibc-package/branches/eglibc-2.10/debian/changelog
glibc-package/branches/eglibc-2.10/debian/patches/series
Log:
* debian/patches/hurd-i386/submitted-readlinkat.diff: New patch to add
support for readlinkat(), to fix insserv build.
Modified: glibc-package/branches/eglibc-2.10/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/changelog 2009-09-28 18:20:51 UTC (rev 3853)
+++ glibc-package/branches/eglibc-2.10/debian/changelog 2009-09-28 18:22:05 UTC (rev 3854)
@@ -158,6 +158,8 @@
128MB.
* debian/patches/hurd-i386/local-thread-cancel.diff: New patch to fix ext2fs
crash.
+ * debian/patches/hurd-i386/submitted-readlinkat.diff: New patch to add
+ support for readlinkat(), to fix insserv build.
* debian/patches/hurd-i386/submitted-termios-IXANY.patch: New patch to
define IXANY in XOpen environment too, to fix libgphoto2 build.
* debian/patches/hurd-i386/submitted-SOL_IP.patch: New patch to add SOL_IP
Added: glibc-package/branches/eglibc-2.10/debian/patches/hurd-i386/submitted-readlinkat.diff
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/hurd-i386/submitted-readlinkat.diff (rev 0)
+++ glibc-package/branches/eglibc-2.10/debian/patches/hurd-i386/submitted-readlinkat.diff 2009-09-28 18:22:05 UTC (rev 3854)
@@ -0,0 +1,102 @@
+2009-09-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/mkdirat.c: Include <hurd/fd.h>
+ (mkdirat): Call __directory_name_split_at instead of
+ __directory_name_split.
+ * sysdeps/mach/hurd/readlinkat.c: New file, heavily inherited from
+ sysdeps/mach/hurd/readlink.c
+
+diff --git a/sysdeps/mach/hurd/mkdirat.c b/sysdeps/mach/hurd/mkdirat.c
+index 321d59f..a300745 100644
+--- a/sysdeps/mach/hurd/mkdirat.c
++++ b/sysdeps/mach/hurd/mkdirat.c
+@@ -22,6 +22,7 @@
+ #include <stddef.h>
+ #include <sys/stat.h>
+ #include <hurd.h>
++#include <hurd/fd.h>
+
+ int
+ mkdirat (fd, path, mode)
+@@ -31,7 +32,7 @@ mkdirat (fd, path, mode)
+ {
+ error_t err;
+ const char *name;
+- file_t parent = __directory_name_split (path, (char **) &name);
++ file_t parent = __directory_name_split_at (fd, path, (char **) &name);
+ if (parent == MACH_PORT_NULL)
+ return -1;
+ err = __dir_mkdir (parent, name, mode & ~_hurd_umask);
+diff --git a/sysdeps/mach/hurd/readlinkat.c b/sysdeps/mach/hurd/readlinkat.c
+new file mode 100644
+index 0000000..5e44dbb
+--- /dev/null
++++ b/sysdeps/mach/hurd/readlinkat.c
+@@ -0,0 +1,67 @@
++/* Copyright (C) 1991,92,93,94,95,97,2002,2009 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, write to the Free
++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
++ 02111-1307 USA. */
++
++#include <unistd.h>
++#include <hurd.h>
++#include <hurd/paths.h>
++#include <hurd/fd.h>
++#include <fcntl.h>
++#include <string.h>
++
++/* Read the contents of the symbolic link FILE_NAME relative to FD into no more
++ than LEN bytes of BUF. The contents are not null-terminated.
++ Returns the number of characters read, or -1 for errors. */
++ssize_t
++readlinkat (fd, file_name, buf, len)
++ int fd;
++ const char *file_name;
++ char *buf;
++ size_t len;
++{
++ error_t err;
++ file_t file;
++ struct stat64 st;
++
++ file = __file_name_lookup_at (fd, 0, file_name, O_READ | O_NOLINK, 0);
++ if (file == MACH_PORT_NULL)
++ return -1;
++
++ err = __io_stat (file, &st);
++ if (! err)
++ if (S_ISLNK (st.st_mode))
++ {
++ char *rbuf = buf;
++
++ err = __io_read (file, &rbuf, &len, 0, len);
++ if (!err && rbuf != buf)
++ {
++ memcpy (buf, rbuf, len);
++ __vm_deallocate (__mach_task_self (), (vm_address_t)rbuf, len);
++ }
++ }
++ else
++ err = EINVAL;
++
++ __mach_port_deallocate (__mach_task_self (), file);
++
++ if (err)
++ return __hurd_fail (err);
++ else
++ return len;
++}
++libc_hidden_def (readlinkat);
Modified: glibc-package/branches/eglibc-2.10/debian/patches/series
===================================================================
--- glibc-package/branches/eglibc-2.10/debian/patches/series 2009-09-28 18:20:51 UTC (rev 3853)
+++ glibc-package/branches/eglibc-2.10/debian/patches/series 2009-09-28 18:22:05 UTC (rev 3854)
@@ -102,6 +102,7 @@
hurd-i386/submitted-null-pathname.diff
hurd-i386/submitted-sbrk.diff
hurd-i386/local-thread-cancel.diff
+hurd-i386/submitted-readlinkat.diff
hurd-i386/submitted-termios-IXANY.patch
hurd-i386/submitted-SOL_IP.patch
Reply to: