commit:     8165933c5b9986b536cf91b8ba82f7e76c9cc758
Author:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 26 13:54:21 2021 +0000
Commit:     Fabian Groffen <grobian <AT> gentoo <DOT> org>
CommitDate: Sun Dec 26 13:54:21 2021 +0000
URL:        https://gitweb.gentoo.org/proj/portage-utils.git/commit/?id=8165933c

libq/move_file: remove source file when done

move suggests the source is gone, so make sure it is :)

Signed-off-by: Fabian Groffen <grobian <AT> gentoo.org>

 libq/move_file.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/libq/move_file.c b/libq/move_file.c
index 07cf69f..b98c8e2 100644
--- a/libq/move_file.c
+++ b/libq/move_file.c
@@ -85,7 +85,7 @@ move_file(int rootfd_src, const char *name_src,
                        return -1;
                }
 
-               /* Preserve the file times */
+               /* preserve the file times */
                times[0] = get_stat_atime(&st);
                times[1] = get_stat_mtime(&st);
                futimens(fd_dst, times);
@@ -93,12 +93,15 @@ move_file(int rootfd_src, const char *name_src,
                close(fd_src);
                close(fd_dst);
 
-               /* finally move the new tmp dst file to the right place, which
+               /* move the new tmp dst file to the right place, which
                 * should be on the same FS/device now */
                if (renameat(rootfd_dst, tmpname_dst, rootfd_dst, name_dst)) {
                        warnp("could not rename %s to %s", tmpname_dst, 
name_dst);
                        return -1;
                }
+
+               /* finally remove the source file */
+               return unlinkat(rootfd_src, name_src, 0);
        }
 
        return 0;

Reply via email to