From d274292d1b143f20ea21e3781fc614f1fd438a00 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sun, 30 Jul 2017 10:53:32 -0700 Subject: [PATCH] renameat2: port better to older Solaris * lib/renameat2.c (renameat2): Set ret_val properly on old Solaris. Add goto to use a label, to silence picky compilers. --- ChangeLog | 4 ++++ lib/renameat2.c | 2 ++ 2 files changed, 6 insertions(+) diff --git a/ChangeLog b/ChangeLog index 5eee4aea31..ce7c46bd6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2017-07-30 Paul Eggert + renameat2: port better to older Solaris + * lib/renameat2.c (renameat2): Set ret_val properly on old Solaris. + Add goto to use a label, to silence picky compilers. + fts-tests: port to gcc -Wwrite-strings * tests/test-fts.c (base, base_d): New static vars. (argv, remove_tree, main): Use them. diff --git a/lib/renameat2.c b/lib/renameat2.c index e223653dd8..4f9e3d11d2 100644 --- a/lib/renameat2.c +++ b/lib/renameat2.c @@ -147,6 +147,7 @@ renameat2 (int fd1, char const *src, int fd2, char const *dst, /* See the lengthy comment in rename.c why Solaris 9 is forced to GNU behavior, while Solaris 10 is left with POSIX behavior, regarding symlinks with trailing slash. */ + ret_val = -1; if (src_slash) { src_temp = strdup (src); @@ -194,6 +195,7 @@ renameat2 (int fd1, char const *src, int fd2, char const *dst, ret_val = renameat (fd1, src_temp, fd2, dst_temp); rename_errno = errno; + goto out; out: if (src_temp != src) free (src_temp); -- 2.11.4.GIT