|
|
1.1 ! root 1: #include "jerq.h" ! 2: #include <errno.h> ! 3: ! 4: sendchar(c) ! 5: char c; ! 6: { ! 7: sendnchars(1, &c); ! 8: } ! 9: ! 10: sendnchars (n, p) ! 11: char *p; ! 12: int n; ! 13: { ! 14: int i; ! 15: int maxfd, rmask, wmask; ! 16: ! 17: maxfd = displayfd + 1; ! 18: while(n){ ! 19: i = write(1, p, n); ! 20: if(i > 0){ ! 21: n -= i; ! 22: p += i; ! 23: continue; ! 24: } ! 25: #ifdef BSD ! 26: if(i < 0 && errno == EWOULDBLOCK){ ! 27: #else /* V9 */ ! 28: if(i < 0 && errno == EBUSY){ ! 29: #endif ! 30: do{ ! 31: #ifdef X11 ! 32: while (XPending(dpy)) ! 33: handleinput(); ! 34: #endif X11 ! 35: rmask = (1 << displayfd) | jerqrcvmask; ! 36: wmask = 2; ! 37: #ifdef BSD ! 38: select(maxfd, &rmask, &wmask, 0, 0); ! 39: #else ! 40: select(maxfd, &rmask, &wmask, 0x6fffffff); ! 41: #endif ! 42: if (rmask & jerqrcvmask) ! 43: rcvfill(); ! 44: if (rmask & (1 << displayfd)) ! 45: handleinput(); ! 46: } while(!wmask); ! 47: } ! 48: else ! 49: exit(1); ! 50: } ! 51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.