summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--adb/adb.cpp13
-rw-r--r--adb/adb_main.cpp14
2 files changed, 19 insertions, 8 deletions
diff --git a/adb/adb.cpp b/adb/adb.cpp
index d37ca36..ad85184 100644
--- a/adb/adb.cpp
+++ b/adb/adb.cpp
@@ -79,18 +79,19 @@ void fatal_errno(const char *fmt, ...)
#if !ADB_HOST
void start_device_log(void) {
- adb_mkdir("/data/adb", 0775);
-
struct tm now;
time_t t;
tzset();
time(&t);
localtime_r(&t, &now);
+ char timestamp[PATH_MAX];
+ strftime(timestamp, sizeof(timestamp), "%Y-%m-%d-%H-%M-%S", &now);
+
char path[PATH_MAX];
- strftime(path, sizeof(path), "/data/adb/adb-%Y-%m-%d-%H-%M-%S.txt", &now);
+ snprintf(path, sizeof(path), "/data/adb/adb-%s-%d", timestamp, getpid());
- int fd = unix_open(path, O_WRONLY | O_CREAT | O_TRUNC, 0640);
+ int fd = unix_open(path, O_WRONLY | O_CREAT | O_TRUNC | O_CLOEXEC, 0640);
if (fd == -1) {
return;
}
@@ -100,10 +101,6 @@ void start_device_log(void) {
dup2(fd, STDERR_FILENO);
fprintf(stderr, "--- adb starting (pid %d) ---\n", getpid());
adb_close(fd);
-
- fd = unix_open("/dev/null", O_RDONLY);
- dup2(fd, 0);
- adb_close(fd);
}
#endif
diff --git a/adb/adb_main.cpp b/adb/adb_main.cpp
index c1e4b13..a03fcf1 100644
--- a/adb/adb_main.cpp
+++ b/adb/adb_main.cpp
@@ -349,9 +349,23 @@ int adb_main(int is_daemon, int server_port)
return 0;
}
+#if !ADB_HOST
+void close_stdin() {
+ int fd = unix_open("/dev/null", O_RDONLY);
+ if (fd == -1) {
+ perror("failed to open /dev/null, stdin will remain open");
+ return;
+ }
+ dup2(fd, 0);
+ adb_close(fd);
+}
+#endif
+
int main(int argc, char **argv) {
#if ADB_HOST
adb_sysdeps_init();
+#else
+ close_stdin();
#endif
adb_trace_init();