/* loop.c by Michael Thorpe 97-11-23 */ #include #include #include #include #include #include #include #include #include #include "tbwm.h" #include "handlekey.h" #include "revterm.h" #include "characters.h" #define DELAY 5000 #define MYBUF_SIZE 80 FILE *debug; struct termios termios_norm; void Error(char *s) { TBWM_End(); fprintf(stderr,"%s\n",s); exit(-1); } void sig_cld(int sig) { pid_t pid; int status; TW *tmpwin; while(0<(pid=wait3(&status,WNOHANG,0))) { for(tmpwin=TopWindow;tmpwin;tmpwin=tmpwin->next) if(tmpwin->pid==pid) { tmpwin->pid=0; if(tmpwin==gaze) CloseGaze(); else TBWM_Kill(tmpwin,0); break; } } signal(SIGCHLD,sig_cld); } int main() { int i,j,m=1; int k; TW *tmpwin; struct timeval t; fd_set r; char *proc[3]; char procname[]="delay"; char procval[]="1"; unsigned char s[MYBUF_SIZE]; proc[0]=procname; proc[1]=procval; proc[2]=0; if(tcgetattr(0,&termios_norm)) { fprintf(stderr,"stdin must be tty\n"); exit(-1); } debug=fopen("debug.log","w"); setbuf(debug,0); TBWM_init(); signal(SIGCHLD,sig_cld); #define PLAID 1 #ifdef PLAID tmpwin=TBWM_Create(0,0,Rows,Cols,"Background",0,0,TW_NOBORDER|TW_NOTITLE|TW_ONBOTT,0); for(i=0;inext) { if(tmpwin->fd==0) continue; FD_SET(tmpwin->fd,&r); if(m<=tmpwin->fd) m=tmpwin->fd+1; } select(m,&r,0,0,&t); if(FD_ISSET(0,&r)) { j=read(0,s,MYBUF_SIZE); for(i=0;inext) { if(tmpwin->fd==0) continue; if(FD_ISSET(tmpwin->fd,&r)) { j=read(tmpwin->fd,s,MYBUF_SIZE); fprintf(debug,"Window %p got",tmpwin); for(k=0;k