Index: tools/android/adb_reboot/adb_reboot.c |
diff --git a/tools/android/adb_reboot/adb_reboot.c b/tools/android/adb_reboot/adb_reboot.c |
index 1cc75339ceb58ede73ff542ad7e75ce6420419ea..420e3d036a42134dd41460e61307f495b9b9cfb9 100644 |
--- a/tools/android/adb_reboot/adb_reboot.c |
+++ b/tools/android/adb_reboot/adb_reboot.c |
@@ -2,12 +2,17 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+#include <sys/types.h> |
+#include <sys/stat.h> |
#include <stdio.h> |
#include <stdlib.h> |
#include <unistd.h> |
int main(int argc, char ** argv) { |
int i = fork(); |
+ struct stat ft; |
+ time_t ct; |
+ |
if (i < 0) { |
printf("fork error"); |
return 1; |
@@ -23,10 +28,12 @@ int main(int argc, char ** argv) { |
setsid(); /* obtain a new process group */ |
while (1) { |
- system("touch /sdcard/host_heartbeat"); |
sleep(120); |
- if (fopen("/sdcard/host_heartbeat", "r") != NULL) { |
- // File exists, was not removed from host. |
+ |
+ stat("/sdcard/host_heartbeat", &ft); |
+ time(&ct); |
+ if (ct - ft.st_mtime > 120) { |
+ /* File was not touched for some time. */ |
system("stop adbd"); |
system("sleep 2"); |
system("start adbd"); |