/*
 * Copyright 2013 The Chromium Authors
 * 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 <time.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;
  }
  if (i > 0)
    return 0;

  /* child (daemon) continues */
  int j;
  for (j = 0; j < sysconf(_SC_OPEN_MAX); j++)
    close(j);

  setsid(); /* obtain a new process group */

  while (1) {
    sleep(120);

    stat("/sdcard/host_heartbeat", &ft);
    time(&ct);
    if (ct - ft.st_mtime  > 120) {
      /* File was not touched for some time. */
      system("su -c reboot");
    }
  }
}
