diff lib-src/wakeup.c @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children ac2d302a0011
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib-src/wakeup.c	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,56 @@
+/* Program to produce output at regular intervals.  */
+
+#include <../src/config.h>
+
+#if __STDC__ || defined(STDC_HEADERS)
+#include <stdlib.h>
+#include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <sys/types.h>
+
+#ifdef TIME_WITH_SYS_TIME
+#include <sys/time.h>
+#include <time.h>
+#else
+#ifdef HAVE_SYS_TIME_H
+#include <sys/time.h>
+#else
+#include <time.h>
+#endif
+#endif
+
+struct tm *localtime ();
+
+void
+main (argc, argv)
+     int argc;
+     char **argv;
+{
+  int period = 60;
+  time_t when;
+  struct tm *tp;
+
+  if (argc > 1)
+    period = atoi (argv[1]);
+
+  while (1)
+    {
+      /* Make sure wakeup stops when Emacs goes away.  */
+      if (getppid () == 1)
+	exit (0);
+      printf ("Wake up!\n");
+      fflush (stdout);
+      /* If using a period of 60, produce the output when the minute
+	 changes. */
+      if (period == 60)
+	{
+	  time (&when);
+	  tp = localtime (&when);
+	  sleep (60 - tp->tm_sec);
+	}
+      else
+	sleep (period);
+    }
+}