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.29.9000-97-g1b21841
- From: sthibaul at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 27 Feb 2019 17:46:45 -0000
- Subject: GNU C Library master sources branch master updated. glibc-2.29.9000-97-g1b21841
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 1b2184177553ce4ef8458034927ef50854be2af6 (commit)
from f627dd4da804c00b5e89e5e2c488c2bad6205262 (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://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=1b2184177553ce4ef8458034927ef50854be2af6
commit 1b2184177553ce4ef8458034927ef50854be2af6
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date: Wed Feb 27 07:53:13 2019 -0800
hurd: Add renameat2 support for RENAME_NOREPLACE
* include/stdio.h (__renameat2): New hidden prototype.
* stdio-common/renameat2.c (__renameat2): Add hidden definition.
* sysdeps/mach/hurd/renameat.c (__renameat): Move implementation to...
* sysdeps/mach/hurd/renameat2.c (__renameat2): ... new function, and
add support for RENAME_NOREPLACE.
* sysdeps/unix/sysv/linux/renameat2.c (__renameat2): Add hidden definition.
diff --git a/ChangeLog b/ChangeLog
index de34cdd..efe62c1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2019-02-27 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * include/stdio.h (__renameat2): New hidden prototype.
+ * stdio-common/renameat2.c (__renameat2): Add hidden definition.
+ * sysdeps/mach/hurd/renameat.c (__renameat): Move implementation to...
+ * sysdeps/mach/hurd/renameat2.c (__renameat2): ... new function.
+ * sysdeps/unix/sysv/linux/renameat2.c (__renameat2): Add hidden definition.
+
2019-02-27 Joseph Myers <joseph@codesourcery.com>
* hurd/hurdinit.c (_hurd_init): Use braces around empty body of an
diff --git a/include/stdio.h b/include/stdio.h
index 7d1877e..5302e61 100644
--- a/include/stdio.h
+++ b/include/stdio.h
@@ -261,6 +261,8 @@ __putc_unlocked (int __c, FILE *__stream)
extern __typeof (renameat) __renameat;
libc_hidden_proto (__renameat)
+extern __typeof (renameat2) __renameat2;
+libc_hidden_proto (__renameat2)
# endif /* not _ISOMAC */
#endif /* stdio.h */
diff --git a/stdio-common/renameat2.c b/stdio-common/renameat2.c
index ce60173..00cb2ec 100644
--- a/stdio-common/renameat2.c
+++ b/stdio-common/renameat2.c
@@ -20,7 +20,7 @@
#include <stdio.h>
int
-renameat2 (int oldfd, const char *old, int newfd, const char *new,
+__renameat2 (int oldfd, const char *old, int newfd, const char *new,
unsigned int flags)
{
if (flags == 0)
@@ -28,3 +28,5 @@ renameat2 (int oldfd, const char *old, int newfd, const char *new,
__set_errno (EINVAL);
return -1;
}
+libc_hidden_def (__renameat2)
+weak_alias (__renameat2, renameat2)
diff --git a/sysdeps/mach/hurd/renameat.c b/sysdeps/mach/hurd/renameat.c
index 9aa2310..a05f550 100644
--- a/sysdeps/mach/hurd/renameat.c
+++ b/sysdeps/mach/hurd/renameat.c
@@ -24,26 +24,7 @@
int
__renameat (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;
+ return __renameat2 (oldfd, old, newfd, new, 0);
}
libc_hidden_def (__renameat)
weak_alias (__renameat, renameat)
diff --git a/sysdeps/mach/hurd/renameat.c b/sysdeps/mach/hurd/renameat2.c
similarity index 80%
copy from sysdeps/mach/hurd/renameat.c
copy to sysdeps/mach/hurd/renameat2.c
index 9aa2310..2ed49cb 100644
--- a/sysdeps/mach/hurd/renameat.c
+++ b/sysdeps/mach/hurd/renameat2.c
@@ -22,11 +22,18 @@
/* Rename the file OLD relative to OLDFD to NEW relative to NEWFD. */
int
-__renameat (int oldfd, const char *old, int newfd, const char *new)
+__renameat2 (int oldfd, const char *old, int newfd, const char *new,
+ unsigned int flags)
{
error_t err;
file_t olddir, newdir;
const char *oldname, *newname;
+ int excl = 0;
+
+ if (flags & (RENAME_EXCHANGE | RENAME_WHITEOUT))
+ return __hurd_fail (ENOSYS);
+ if (flags & RENAME_NOREPLACE)
+ excl = 1;
olddir = __directory_name_split_at (oldfd, old, (char **) &oldname);
if (olddir == MACH_PORT_NULL)
@@ -38,12 +45,12 @@ __renameat (int oldfd, const char *old, int newfd, const char *new)
return -1;
}
- err = __dir_rename (olddir, oldname, newdir, newname, 0);
+ err = __dir_rename (olddir, oldname, newdir, newname, excl);
__mach_port_deallocate (__mach_task_self (), olddir);
__mach_port_deallocate (__mach_task_self (), newdir);
if (err)
return __hurd_fail (err);
return 0;
}
-libc_hidden_def (__renameat)
-weak_alias (__renameat, renameat)
+libc_hidden_def (__renameat2)
+weak_alias (__renameat2, renameat2)
diff --git a/sysdeps/unix/sysv/linux/renameat2.c b/sysdeps/unix/sysv/linux/renameat2.c
index 566868c..a9cc2ea 100644
--- a/sysdeps/unix/sysv/linux/renameat2.c
+++ b/sysdeps/unix/sysv/linux/renameat2.c
@@ -21,7 +21,7 @@
#include <sysdep.h>
int
-renameat2 (int oldfd, const char *old, int newfd, const char *new,
+__renameat2 (int oldfd, const char *old, int newfd, const char *new,
unsigned int flags)
{
#if !defined (__NR_renameat) || defined (__ASSUME_RENAMEAT2)
@@ -42,3 +42,5 @@ renameat2 (int oldfd, const char *old, int newfd, const char *new,
return -1;
#endif
}
+libc_hidden_def (__renameat2)
+weak_alias (__renameat2, renameat2)
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 8 ++++++++
include/stdio.h | 2 ++
stdio-common/renameat2.c | 4 +++-
sysdeps/mach/hurd/renameat.c | 21 +--------------------
sysdeps/mach/hurd/{renameat.c => renameat2.c} | 15 +++++++++++----
sysdeps/unix/sysv/linux/renameat2.c | 4 +++-
6 files changed, 28 insertions(+), 26 deletions(-)
copy sysdeps/mach/hurd/{renameat.c => renameat2.c} (80%)
hooks/post-receive
--
GNU C Library master sources