[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: