Annotation of researchv9/jtools/src/sunlib/snd.c, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.