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

Commit aef367d8 authored by Henry Daitx's avatar Henry Daitx Committed by android-build-merger
Browse files

Merge "Fix adb not correctly reading return code from DeployAgent"

am: 73d03dc8

Change-Id: Icab80491069a33f6377897675268d0b834d57a1c
parents 518bd123 73d03dc8
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -228,11 +228,12 @@ void extract_metadata(const char* apkPath, FILE* outputFp) {
            android::base::StringPrintf(kAgentExtractCommandPattern, packageName.c_str());

    std::vector<char> extractErrorBuffer;
    int statusCode;
    DeployAgentFileCallback cb(outputFp, &extractErrorBuffer, &statusCode);
    DeployAgentFileCallback cb(outputFp, &extractErrorBuffer);
    int returnCode = send_shell_command(extractCommand, false, &cb);
    if (returnCode != 0) {
        error_exit("Executing %s returned %d", extractCommand.c_str(), returnCode);
        fprintf(stderr, "Executing %s returned %d\n", extractCommand.c_str(), returnCode);
        fprintf(stderr, "%*s\n", int(extractErrorBuffer.size()), extractErrorBuffer.data());
        error_exit("Aborting");
    }
}

+7 −26
Original line number Diff line number Diff line
@@ -35,8 +35,7 @@ static void appendBuffer(std::vector<char>* buffer, const char* input, int lengt

class DeployAgentBufferCallback : public StandardStreamsCallbackInterface {
  public:
    DeployAgentBufferCallback(std::vector<char>* outBuffer, std::vector<char>* errBuffer,
                              int* statusCode);
    DeployAgentBufferCallback(std::vector<char>* outBuffer, std::vector<char>* errBuffer);

    virtual void OnStdout(const char* buffer, int length);
    virtual void OnStderr(const char* buffer, int length);
@@ -45,27 +44,17 @@ class DeployAgentBufferCallback : public StandardStreamsCallbackInterface {
  private:
    std::vector<char>* mpOutBuffer;
    std::vector<char>* mpErrBuffer;
    int* mpStatusCode;
};

int capture_shell_command(const char* command, std::vector<char>* outBuffer,
                          std::vector<char>* errBuffer) {
    int statusCode;
    DeployAgentBufferCallback cb(outBuffer, errBuffer, &statusCode);
    int ret = send_shell_command(command, false, &cb);

    if (ret == 0) {
        return statusCode;
    } else {
        return ret;
    }
    DeployAgentBufferCallback cb(outBuffer, errBuffer);
    return send_shell_command(command, false, &cb);
}

DeployAgentFileCallback::DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer,
                                                 int* statusCode) {
DeployAgentFileCallback::DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer) {
    mpOutFile = outputFile;
    mpErrBuffer = errBuffer;
    mpStatusCode = statusCode;
    mBytesWritten = 0;
}

@@ -84,10 +73,7 @@ void DeployAgentFileCallback::OnStderr(const char* buffer, int length) {
}

int DeployAgentFileCallback::Done(int status) {
    if (mpStatusCode != NULL) {
        *mpStatusCode = status;
    }
    return 0;
    return status;
}

int DeployAgentFileCallback::getBytesWritten() {
@@ -95,11 +81,9 @@ int DeployAgentFileCallback::getBytesWritten() {
}

DeployAgentBufferCallback::DeployAgentBufferCallback(std::vector<char>* outBuffer,
                                                     std::vector<char>* errBuffer,
                                                     int* statusCode) {
                                                     std::vector<char>* errBuffer) {
    mpOutBuffer = outBuffer;
    mpErrBuffer = errBuffer;
    mpStatusCode = statusCode;
}

void DeployAgentBufferCallback::OnStdout(const char* buffer, int length) {
@@ -111,8 +95,5 @@ void DeployAgentBufferCallback::OnStderr(const char* buffer, int length) {
}

int DeployAgentBufferCallback::Done(int status) {
    if (mpStatusCode != NULL) {
        *mpStatusCode = status;
    }
    return 0;
    return status;
}
+1 −2
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@

class DeployAgentFileCallback : public StandardStreamsCallbackInterface {
  public:
    DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer, int* statusCode);
    DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer);

    virtual void OnStdout(const char* buffer, int length);
    virtual void OnStderr(const char* buffer, int length);
@@ -33,7 +33,6 @@ class DeployAgentFileCallback : public StandardStreamsCallbackInterface {
    FILE* mpOutFile;
    std::vector<char>* mpErrBuffer;
    int mBytesWritten;
    int* mpStatusCode;
};

int capture_shell_command(const char* command, std::vector<char>* outBuffer,