Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e463719 authored by JP Abgrall's avatar JP Abgrall Committed by Android Git Automerger
Browse files

am b4f1b3ca: am 44390474: Merge "adb: Don\'t unlink special files on sync failure."

* commit 'b4f1b3ca':
  adb: Don't unlink special files on sync failure.
parents beea8a77 b4f1b3ca
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -172,7 +172,7 @@ static int fail_errno(int s)
}

static int handle_send_file(int s, char *path, uid_t uid,
        gid_t gid, mode_t mode, char *buffer)
        gid_t gid, mode_t mode, char *buffer, bool do_unlink)
{
    syncmsg msg;
    unsigned int timestamp = 0;
@@ -236,7 +236,7 @@ static int handle_send_file(int s, char *path, uid_t uid,
        if(writex(fd, buffer, len)) {
            int saved_errno = errno;
            adb_close(fd);
            adb_unlink(path);
            if (do_unlink) adb_unlink(path);
            fd = -1;
            errno = saved_errno;
            if(fail_errno(s)) return -1;
@@ -261,7 +261,7 @@ static int handle_send_file(int s, char *path, uid_t uid,
fail:
    if(fd >= 0)
        adb_close(fd);
    adb_unlink(path);
    if (do_unlink) adb_unlink(path);
    return -1;
}

@@ -323,6 +323,7 @@ static int do_send(int s, char *path, char *buffer)
    char *tmp;
    unsigned int mode;
    int is_link, ret;
    bool do_unlink;

    tmp = strrchr(path,',');
    if(tmp) {
@@ -339,10 +340,12 @@ static int do_send(int s, char *path, char *buffer)
    if(!tmp || errno) {
        mode = 0644;
        is_link = 0;
        do_unlink = true;
    } else {
        struct stat st;
        /* Don't delete files before copying if they are not "regular" */
        if(lstat(path, &st) || S_ISREG(st.st_mode) || S_ISLNK(st.st_mode)) {
        do_unlink = lstat(path, &st) || S_ISREG(st.st_mode) || S_ISLNK(st.st_mode);
        if (do_unlink) {
            adb_unlink(path);
        }
    }
@@ -369,7 +372,7 @@ static int do_send(int s, char *path, char *buffer)
        if (is_on_system(path)) {
            fs_config(tmp, 0, &uid, &gid, &mode, &cap);
        }
        ret = handle_send_file(s, path, uid, gid, mode, buffer);
        ret = handle_send_file(s, path, uid, gid, mode, buffer, do_unlink);
    }

    return ret;