|
|
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.