Mercurial > hg > xemacs-beta
diff lib-src/wakeup.c @ 428:3ecd8885ac67 r21-2-22
Import from CVS: tag r21-2-22
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:28:15 +0200 |
parents | |
children | 84b14dcb0985 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lib-src/wakeup.c Mon Aug 13 11:28:15 2007 +0200 @@ -0,0 +1,63 @@ +/* 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 WINDOWSNT +#define WIN32_LEAN_AND_MEAN +#include <windows.h> +#undef sleep +#define sleep(t) Sleep ((t) * 1000) +#define getppid() (0) +#undef HAVE_SYS_TIME_H +#endif /* WINDOWSNT */ + +#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 + +int +main (int argc, char *argv[]) +{ + int period = 60; + + if (argc > 1) + period = atoi (argv[1]); + + while (1) + { + /* Make sure wakeup stops when Emacs goes away. */ + if (getppid () == 1) + return 0; + printf ("Wake up!\n"); + /* If fflush fails, then our stdout pipe is broken. */ + if (fflush (stdout) != 0) + return 0; + /* If using a period of 60, produce the output when the minute + changes. */ + if (period == 60) + { + time_t when; + struct tm *tp; + time (&when); + tp = localtime (&when); + sleep (60 - tp->tm_sec); + } + else + sleep (period); + } +}