428
+ − 1 /* Program to produce output at regular intervals. */
+ − 2
438
+ − 3 #include <config.h>
428
+ − 4
+ − 5 #if __STDC__ || defined(STDC_HEADERS)
+ − 6 #include <stdlib.h>
442
+ − 7 #ifdef HAVE_UNISTD_H
428
+ − 8 #include <unistd.h>
+ − 9 #endif
442
+ − 10 #endif
428
+ − 11
+ − 12 #include <stdio.h>
+ − 13 #include <sys/types.h>
+ − 14
442
+ − 15 #ifdef WIN32_NATIVE
428
+ − 16 #define WIN32_LEAN_AND_MEAN
+ − 17 #include <windows.h>
+ − 18 #undef sleep
+ − 19 #define sleep(t) Sleep ((t) * 1000)
+ − 20 #define getppid() (0)
+ − 21 #undef HAVE_SYS_TIME_H
442
+ − 22 #endif /* WIN32_NATIVE */
428
+ − 23
+ − 24 #ifdef TIME_WITH_SYS_TIME
+ − 25 #include <sys/time.h>
+ − 26 #include <time.h>
+ − 27 #else
+ − 28 #ifdef HAVE_SYS_TIME_H
+ − 29 #include <sys/time.h>
+ − 30 #else
+ − 31 #include <time.h>
+ − 32 #endif
+ − 33 #endif
+ − 34
+ − 35 int
+ − 36 main (int argc, char *argv[])
+ − 37 {
+ − 38 int period = 60;
+ − 39
+ − 40 if (argc > 1)
+ − 41 period = atoi (argv[1]);
+ − 42
+ − 43 while (1)
+ − 44 {
+ − 45 /* Make sure wakeup stops when Emacs goes away. */
+ − 46 if (getppid () == 1)
+ − 47 return 0;
+ − 48 printf ("Wake up!\n");
+ − 49 /* If fflush fails, then our stdout pipe is broken. */
+ − 50 if (fflush (stdout) != 0)
+ − 51 return 0;
+ − 52 /* If using a period of 60, produce the output when the minute
+ − 53 changes. */
+ − 54 if (period == 60)
+ − 55 {
+ − 56 time_t when;
+ − 57 struct tm *tp;
+ − 58 time (&when);
+ − 59 tp = localtime (&when);
+ − 60 sleep (60 - tp->tm_sec);
+ − 61 }
+ − 62 else
+ − 63 sleep (period);
+ − 64 }
+ − 65 }