Merge "Fix adb not correctly reading return code from DeployAgent"
am: 73d03dc804
Change-Id: Icab80491069a33f6377897675268d0b834d57a1c
This commit is contained in:
commit
aef367d8cd
3 changed files with 12 additions and 31 deletions
|
|
@ -228,11 +228,12 @@ void extract_metadata(const char* apkPath, FILE* outputFp) {
|
||||||
android::base::StringPrintf(kAgentExtractCommandPattern, packageName.c_str());
|
android::base::StringPrintf(kAgentExtractCommandPattern, packageName.c_str());
|
||||||
|
|
||||||
std::vector<char> extractErrorBuffer;
|
std::vector<char> extractErrorBuffer;
|
||||||
int statusCode;
|
DeployAgentFileCallback cb(outputFp, &extractErrorBuffer);
|
||||||
DeployAgentFileCallback cb(outputFp, &extractErrorBuffer, &statusCode);
|
|
||||||
int returnCode = send_shell_command(extractCommand, false, &cb);
|
int returnCode = send_shell_command(extractCommand, false, &cb);
|
||||||
if (returnCode != 0) {
|
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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,8 +35,7 @@ static void appendBuffer(std::vector<char>* buffer, const char* input, int lengt
|
||||||
|
|
||||||
class DeployAgentBufferCallback : public StandardStreamsCallbackInterface {
|
class DeployAgentBufferCallback : public StandardStreamsCallbackInterface {
|
||||||
public:
|
public:
|
||||||
DeployAgentBufferCallback(std::vector<char>* outBuffer, std::vector<char>* errBuffer,
|
DeployAgentBufferCallback(std::vector<char>* outBuffer, std::vector<char>* errBuffer);
|
||||||
int* statusCode);
|
|
||||||
|
|
||||||
virtual void OnStdout(const char* buffer, int length);
|
virtual void OnStdout(const char* buffer, int length);
|
||||||
virtual void OnStderr(const char* buffer, int length);
|
virtual void OnStderr(const char* buffer, int length);
|
||||||
|
|
@ -45,27 +44,17 @@ class DeployAgentBufferCallback : public StandardStreamsCallbackInterface {
|
||||||
private:
|
private:
|
||||||
std::vector<char>* mpOutBuffer;
|
std::vector<char>* mpOutBuffer;
|
||||||
std::vector<char>* mpErrBuffer;
|
std::vector<char>* mpErrBuffer;
|
||||||
int* mpStatusCode;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int capture_shell_command(const char* command, std::vector<char>* outBuffer,
|
int capture_shell_command(const char* command, std::vector<char>* outBuffer,
|
||||||
std::vector<char>* errBuffer) {
|
std::vector<char>* errBuffer) {
|
||||||
int statusCode;
|
DeployAgentBufferCallback cb(outBuffer, errBuffer);
|
||||||
DeployAgentBufferCallback cb(outBuffer, errBuffer, &statusCode);
|
return send_shell_command(command, false, &cb);
|
||||||
int ret = send_shell_command(command, false, &cb);
|
|
||||||
|
|
||||||
if (ret == 0) {
|
|
||||||
return statusCode;
|
|
||||||
} else {
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DeployAgentFileCallback::DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer,
|
DeployAgentFileCallback::DeployAgentFileCallback(FILE* outputFile, std::vector<char>* errBuffer) {
|
||||||
int* statusCode) {
|
|
||||||
mpOutFile = outputFile;
|
mpOutFile = outputFile;
|
||||||
mpErrBuffer = errBuffer;
|
mpErrBuffer = errBuffer;
|
||||||
mpStatusCode = statusCode;
|
|
||||||
mBytesWritten = 0;
|
mBytesWritten = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -84,10 +73,7 @@ void DeployAgentFileCallback::OnStderr(const char* buffer, int length) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int DeployAgentFileCallback::Done(int status) {
|
int DeployAgentFileCallback::Done(int status) {
|
||||||
if (mpStatusCode != NULL) {
|
return status;
|
||||||
*mpStatusCode = status;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int DeployAgentFileCallback::getBytesWritten() {
|
int DeployAgentFileCallback::getBytesWritten() {
|
||||||
|
|
@ -95,11 +81,9 @@ int DeployAgentFileCallback::getBytesWritten() {
|
||||||
}
|
}
|
||||||
|
|
||||||
DeployAgentBufferCallback::DeployAgentBufferCallback(std::vector<char>* outBuffer,
|
DeployAgentBufferCallback::DeployAgentBufferCallback(std::vector<char>* outBuffer,
|
||||||
std::vector<char>* errBuffer,
|
std::vector<char>* errBuffer) {
|
||||||
int* statusCode) {
|
|
||||||
mpOutBuffer = outBuffer;
|
mpOutBuffer = outBuffer;
|
||||||
mpErrBuffer = errBuffer;
|
mpErrBuffer = errBuffer;
|
||||||
mpStatusCode = statusCode;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeployAgentBufferCallback::OnStdout(const char* buffer, int length) {
|
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) {
|
int DeployAgentBufferCallback::Done(int status) {
|
||||||
if (mpStatusCode != NULL) {
|
return status;
|
||||||
*mpStatusCode = status;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
|
|
||||||
class DeployAgentFileCallback : public StandardStreamsCallbackInterface {
|
class DeployAgentFileCallback : public StandardStreamsCallbackInterface {
|
||||||
public:
|
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 OnStdout(const char* buffer, int length);
|
||||||
virtual void OnStderr(const char* buffer, int length);
|
virtual void OnStderr(const char* buffer, int length);
|
||||||
|
|
@ -33,7 +33,6 @@ class DeployAgentFileCallback : public StandardStreamsCallbackInterface {
|
||||||
FILE* mpOutFile;
|
FILE* mpOutFile;
|
||||||
std::vector<char>* mpErrBuffer;
|
std::vector<char>* mpErrBuffer;
|
||||||
int mBytesWritten;
|
int mBytesWritten;
|
||||||
int* mpStatusCode;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
int capture_shell_command(const char* command, std::vector<char>* outBuffer,
|
int capture_shell_command(const char* command, std::vector<char>* outBuffer,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue