This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.16-ports-merge-98-gd2a5425
- From: pino at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 31 Jul 2012 18:01:51 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.16-ports-merge-98-gd2a5425
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via d2a54255fe7a72dc6841df3a91f0607563524dc1 (commit)
from 789bd351b45f024b7f51e4886bf46b8e887ab6da (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=d2a54255fe7a72dc6841df3a91f0607563524dc1
commit d2a54255fe7a72dc6841df3a91f0607563524dc1
Author: Pino Toscano <toscano.pino@tiscali.it>
Date: Tue Jul 31 19:59:03 2012 +0200
Hurd: implement renameat
Provide an implementation of renameat, mostly based on rename.
diff --git a/ChangeLog b/ChangeLog
index 30b9a9e..102a878 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2012-07-31 Pino Toscano <toscano.pino@tiscali.it>
+
+ * sysdeps/mach/hurd/renameat.c: New file, mostly copied from rename.c.
+
2012-07-31 Roland McGrath <roland@hack.frob.com>
* include/sys/socket.h (__libc_accept, __libc_accept4):
diff --git a/sysdeps/mach/hurd/renameat.c b/sysdeps/mach/hurd/renameat.c
new file mode 100644
index 0000000..8ab5906
--- /dev/null
+++ b/sysdeps/mach/hurd/renameat.c
@@ -0,0 +1,51 @@
+/* Rename a file using relative source and destination names. Hurd version.
+ Copyright (C) 1991-2012 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, see
+ <http://www.gnu.org/licenses/>. */
+
+#include <stdio.h>
+#include <hurd.h>
+#include <hurd/fd.h>
+
+/* Rename the file OLD relative to OLDFD to NEW relative to NEWFD. */
+int
+renameat (oldfd, old, newfd, new)
+ int oldfd;
+ const char *old;
+ int newfd;
+ const char *new;
+{
+ error_t err;
+ file_t olddir, newdir;
+ const char *oldname, *newname;
+
+ olddir = __directory_name_split_at (oldfd, old, (char **) &oldname);
+ if (olddir == MACH_PORT_NULL)
+ return -1;
+ newdir = __directory_name_split_at (newfd, new, (char **) &newname);
+ if (newdir == MACH_PORT_NULL)
+ {
+ __mach_port_deallocate (__mach_task_self (), olddir);
+ return -1;
+ }
+
+ err = __dir_rename (olddir, oldname, newdir, newname, 0);
+ __mach_port_deallocate (__mach_task_self (), olddir);
+ __mach_port_deallocate (__mach_task_self (), newdir);
+ if (err)
+ return __hurd_fail (err);
+ return 0;
+}
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 4 ++++
sysdeps/mach/hurd/{rename.c => renameat.c} | 14 +++++++++-----
2 files changed, 13 insertions(+), 5 deletions(-)
copy sysdeps/mach/hurd/{rename.c => renameat.c} (74%)
hooks/post-receive
--
GNU C Library master sources