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

Commit 3d28aa79 authored by caozhiyuan's avatar caozhiyuan Committed by android-build-merger
Browse files

Merge "mtp: Preserve last modified time of files." am: c11caab9 am: 607c4c0f

am: 8e2e605e

Change-Id: I939de1c7a71b23b49319668a803381c88ae6729e
parents f417a01a 8e2e605e
Loading
Loading
Loading
Loading
+16 −1
Original line number Original line Diff line number Diff line
@@ -25,6 +25,7 @@
#include <sys/types.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/stat.h>
#include <sys/stat.h>
#include <sys/stat.h>
#include <sys/time.h>


#define LOG_TAG "MtpServer"
#define LOG_TAG "MtpServer"


@@ -113,7 +114,8 @@ MtpServer::MtpServer(MtpDatabase* database, bool ptp,
        mSessionOpen(false),
        mSessionOpen(false),
        mSendObjectHandle(kInvalidObjectHandle),
        mSendObjectHandle(kInvalidObjectHandle),
        mSendObjectFormat(0),
        mSendObjectFormat(0),
        mSendObjectFileSize(0)
        mSendObjectFileSize(0),
        mSendObjectModifiedTime(0)
{
{
}
}


@@ -999,6 +1001,7 @@ MtpResponseCode MtpServer::doSendObjectInfo() {
        // save the handle for the SendObject call, which should follow
        // save the handle for the SendObject call, which should follow
        mSendObjectHandle = handle;
        mSendObjectHandle = handle;
        mSendObjectFormat = format;
        mSendObjectFormat = format;
        mSendObjectModifiedTime = modifiedTime;
    }
    }


    mResponse.setParameter(1, storageID);
    mResponse.setParameter(1, storageID);
@@ -1072,6 +1075,17 @@ MtpResponseCode MtpServer::doSendObject() {
            }
            }
        }
        }
    }
    }

    if (mSendObjectModifiedTime) {
        struct timespec newTime[2];
        newTime[0].tv_nsec = UTIME_NOW;
        newTime[1].tv_sec = mSendObjectModifiedTime;
        newTime[1].tv_nsec = 0;
        if (futimens(mfr.fd, newTime) < 0) {
            ALOGW("changing modified time failed, %s", strerror(errno));
        }
    }

    fstat(mfr.fd, &sstat);
    fstat(mfr.fd, &sstat);
    close(mfr.fd);
    close(mfr.fd);


@@ -1092,6 +1106,7 @@ done:
            result == MTP_RESPONSE_OK);
            result == MTP_RESPONSE_OK);
    mSendObjectHandle = kInvalidObjectHandle;
    mSendObjectHandle = kInvalidObjectHandle;
    mSendObjectFormat = 0;
    mSendObjectFormat = 0;
    mSendObjectModifiedTime = 0;


    auto end = std::chrono::steady_clock::now();
    auto end = std::chrono::steady_clock::now();
    std::chrono::duration<double> diff = end - start;
    std::chrono::duration<double> diff = end - start;
+1 −0
Original line number Original line Diff line number Diff line
@@ -78,6 +78,7 @@ private:
    MtpObjectFormat     mSendObjectFormat;
    MtpObjectFormat     mSendObjectFormat;
    MtpString           mSendObjectFilePath;
    MtpString           mSendObjectFilePath;
    size_t              mSendObjectFileSize;
    size_t              mSendObjectFileSize;
    time_t              mSendObjectModifiedTime;


    Mutex               mMutex;
    Mutex               mMutex;