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

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: