diff options
Diffstat (limited to 'adb/adb.c')
-rw-r--r-- | adb/adb.c | 30 |
1 files changed, 20 insertions, 10 deletions
@@ -23,6 +23,7 @@ #include <errno.h> #include <string.h> #include <time.h> +#include <sys/time.h> #include "sysdeps.h" #include "adb.h" @@ -657,10 +658,25 @@ void start_logging(void) void start_device_log(void) { int fd; - char path[100]; + char path[PATH_MAX]; + struct tm now; + time_t t; + char value[PROPERTY_VALUE_MAX]; + + // read the trace mask from persistent property persist.adb.trace_mask + // give up if the property is not set or cannot be parsed + property_get("persist.adb.trace_mask", value, ""); + if (sscanf(value, "%x", &adb_trace_mask) != 1) + return; - snprintf(path, sizeof path, "/data/adb_%ld.txt", (long)time(NULL)); - fd = unix_open(path, O_WRONLY | O_CREAT | O_APPEND, 0640); + adb_mkdir("/data/adb", 0775); + tzset(); + time(&t); + localtime_r(&t, &now); + strftime(path, sizeof(path), + "/data/adb/adb-%Y-%m-%d-%H-%M-%S.txt", + &now); + fd = unix_open(path, O_WRONLY | O_CREAT | O_TRUNC, 0640); if (fd < 0) return; @@ -671,11 +687,6 @@ void start_device_log(void) fd = unix_open("/dev/null", O_RDONLY); dup2(fd, 0); - - // log everything - adb_trace_mask = ~0; - // except TRACE_RWX is a bit too verbose - adb_trace_mask &= ~TRACE_RWX; } #endif @@ -1079,9 +1090,8 @@ int main(int argc, char **argv) adb_device_banner = "recovery"; recovery_mode = 1; } -#if ADB_DEVICE_LOG + start_device_log(); -#endif return adb_main(0); #endif } |