Prevents the need to rename the file if we end up keeping it and ensures
that pacnew files always reflect the most recent version by overwriting
stale copies.

Signed-off-by: Andrew Gregory <[email protected]>
---
 lib/libalpm/add.c | 40 +++++++++++++---------------------------
 1 file changed, 13 insertions(+), 27 deletions(-)

diff --git a/lib/libalpm/add.c b/lib/libalpm/add.c
index 74c1595..3509100 100644
--- a/lib/libalpm/add.c
+++ b/lib/libalpm/add.c
@@ -288,7 +288,7 @@ static int extract_single_file(alpm_handle_t *handle, 
struct archive *archive,
                len = strlen(filename) + 10;
                MALLOC(checkfile, len,
                                errors++; handle->pm_errno = ALPM_ERR_MEMORY; 
goto needbackup_cleanup);
-               snprintf(checkfile, len, "%s.paccheck", filename);
+               snprintf(checkfile, len, "%s.pacnew", filename);
 
                if(perform_extraction(handle, archive, entry, checkfile)) {
                        errors++;
@@ -332,35 +332,21 @@ static int extract_single_file(alpm_handle_t *handle, 
struct archive *archive,
                                errors++;
                        }
                } else {
-                       /* none of the three files matched another, unpack the 
new file alongside
-                        * the local file */
-                       char *newpath;
-                       size_t newlen = strlen(filename) + strlen(".pacnew") + 
1;
-
+                       /* none of the three files matched another,  leave the 
unpacked
+                        * file alongside the local file */
+                       alpm_event_pacnew_created_t event = {
+                               .type = ALPM_EVENT_PACNEW_CREATED,
+                               .from_noupgrade = 0,
+                               .oldpkg = oldpkg,
+                               .newpkg = newpkg,
+                               .file = filename
+                       };
                        _alpm_log(handle, ALPM_LOG_DEBUG,
                                        "action: keeping current file and 
installing"
                                        " new one with .pacnew ending\n");
-
-                       MALLOC(newpath, newlen,
-                                       errors++; handle->pm_errno = 
ALPM_ERR_MEMORY; goto needbackup_cleanup);
-                       snprintf(newpath, newlen, "%s.pacnew", filename);
-
-                       if(try_rename(handle, checkfile, newpath)) {
-                               errors++;
-                       } else {
-                               alpm_event_pacnew_created_t event = {
-                                       .type = ALPM_EVENT_PACNEW_CREATED,
-                                       .from_noupgrade = 0,
-                                       .oldpkg = oldpkg,
-                                       .newpkg = newpkg,
-                                       .file = filename
-                               };
-                               EVENT(handle, &event);
-                               alpm_logaction(handle, ALPM_CALLER_PREFIX,
-                                               "warning: %s installed as 
%s\n", filename, newpath);
-                       }
-
-                       free(newpath);
+                       EVENT(handle, &event);
+                       alpm_logaction(handle, ALPM_CALLER_PREFIX,
+                                       "warning: %s installed as %s\n", 
filename, checkfile);
                }
 
 needbackup_cleanup:
-- 
2.1.1

Reply via email to