Mercurial > hg > xemacs-beta
view lib-src/wakeup.c @ 802:19dfb459d51a
[xemacs-hg @ 2002-04-03 10:47:37 by ben]
fix tty problem et al
internals/internals.texi: Add section on correctly merging a branch back into the trunk.
console-tty.c, eval.c, event-unixoid.c, file-coding.c, file-coding.h, lisp.h, print.c, sysdep.c: Fix data corruption error in print.c from print_depth becoming
negative. Borrow primitives internal_bind_int,
internal_bind_lisp_object from my stderr-proc ws, soon to be
integrated; use them to properly bind print_depth et al.
First fix for TTY problem. The basic problem is I switched things
so that the TTY I/O is filtered through a coding system, for the
support of kterm and such, that speak JIS or similar
encodings. (#### I ***swear*** I had this working way back in
19.12.) Anyway, this introduced buffering issues, in which instead
of one char being read, it tried to read 1024 chars. I tried
setting the stdin descriptor non-blocking, but it doesn't appear
to work on Cygwin. (#### Andy, do you know anything about this?)
So I fixed it elsewhere. If you get weirdness on the TTY, look in
console-tty.c and see how it gets the coding system; maybe there's
a way to change it (and if not, there should be!).
Also fix warning in sysdep.c.
| author | ben |
|---|---|
| date | Wed, 03 Apr 2002 10:47:52 +0000 |
| parents | abe6d1db359e |
| children |
line wrap: on
line source
/* Program to produce output at regular intervals. */ #include <config.h> #if __STDC__ || defined(STDC_HEADERS) #include <stdlib.h> #ifdef HAVE_UNISTD_H #include <unistd.h> #endif #endif #include <stdio.h> #include <sys/types.h> #ifdef WIN32_NATIVE #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 /* WIN32_NATIVE */ #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); } }
