r4113 - in glibc-package/branches/eglibc-2.11/debian: . patches patches/hurd-i386
Author: sthibault
Date: 2010-01-30 18:44:06 +0000 (Sat, 30 Jan 2010)
New Revision: 4113
Added:
glibc-package/branches/eglibc-2.11/debian/patches/hurd-i386/submitted-readlinkat.diff
Modified:
glibc-package/branches/eglibc-2.11/debian/changelog
glibc-package/branches/eglibc-2.11/debian/patches/series
Log:
restore readlinkat: only part of it got upstream, the rest shall remain
Modified: glibc-package/branches/eglibc-2.11/debian/changelog
===================================================================
--- glibc-package/branches/eglibc-2.11/debian/changelog 2010-01-30 18:40:53 UTC (rev 4112)
+++ glibc-package/branches/eglibc-2.11/debian/changelog 2010-01-30 18:44:06 UTC (rev 4113)
@@ -16,7 +16,7 @@
- Update debian/patches/any/submitted-missing-etc-hosts.diff.
- Update debian/patches/hppa/cvs-nptl-compat.diff.
- Remove debian/patches/hurd-i386/cvs-termios-IXANY.patch (merged)
- - Remove debian/patches/hurd-i386/submitted-readlinkat.diff (merged)
+ - Update debian/patches/hurd-i386/submitted-readlinkat.diff
- Update debian/patches/localedata/first_weekday.diff
- Remove debian/patches/locale/cvs-C-first_weekday.diff (merged)
- Remove debian/patches/mips/local-lazy-eval.diff (obsolete)
Added: glibc-package/branches/eglibc-2.11/debian/patches/hurd-i386/submitted-readlinkat.diff
===================================================================
--- glibc-package/branches/eglibc-2.11/debian/patches/hurd-i386/submitted-readlinkat.diff (rev 0)
+++ glibc-package/branches/eglibc-2.11/debian/patches/hurd-i386/submitted-readlinkat.diff 2010-01-30 18:44:06 UTC (rev 4113)
@@ -0,0 +1,81 @@
+2009-09-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * sysdeps/mach/hurd/readlinkat.c: New file, heavily inherited from
+ sysdeps/mach/hurd/readlink.c
+
+---
+ readlinkat.c | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 69 insertions(+), 1 deletion(-)
+
+diff --git a/sysdeps/mach/hurd/mkdirat.c b/sysdeps/mach/hurd/mkdirat.c
+index 321d59f..a300745 100644
+--- /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.11/debian/patches/series
===================================================================
--- glibc-package/branches/eglibc-2.11/debian/patches/series 2010-01-30 18:40:53 UTC (rev 4112)
+++ glibc-package/branches/eglibc-2.11/debian/patches/series 2010-01-30 18:44:06 UTC (rev 4113)
@@ -99,6 +99,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-SOL_IP.patch
hurd-i386/local-bigmem.diff
hurd-i386/local-disable-ioctls.diff
Reply to: