Annotation of researchv10dc/ipc/bin/OLDdkcc/dkxwrite.c, revision 1.1.1.1

1.1       root        1:        static char     SCCSID[] = "@(#)dkxwrite.c      2.1 DKHOST 84/08/28";
                      2: 
                      3: #include "remfio.h"
                      4: #include <stdio.h>
                      5: #include "sysexits.h"
                      6: 
                      7:        /* extern int   dkverbose; */
                      8: 
                      9: /*
                     10:  * Write a length-preceeded block over a dkxqt protocol channel
                     11:  *
                     12:  *     netfd   = file descriptor to use
                     13:  *     addr    = character pointer to beginning of block
                     14:  *     len     = number of bytes in block
                     15:  *     return  = >0 : write successful
                     16:  *             | <0 : write failed
                     17:  */
                     18: 
                     19: dkxlwrite(netfd, addr, len)
                     20:        char                    *addr;
                     21: {
                     22:        int                     n;
                     23:        short                   slen;
                     24:        char                    clen[3];
                     25: 
                     26:        slen = len;
                     27: 
                     28:        dktcanon("s", &slen, clen);
                     29: 
                     30:        if((n = dkxwrite(netfd, clen, 2)) < 0)
                     31:                return(n);
                     32: 
                     33:        if(len > 0)
                     34:                n = dkxwrite(netfd, addr, len);
                     35: 
                     36:        return(n);
                     37: }
                     38: 
                     39: /*
                     40:  * Write a block over a dkxqt protocol channel
                     41:  *
                     42:  *     netfd   = file descriptor to use
                     43:  *     addr    = character pointer to beginning of block
                     44:  *     len     = number of bytes in block
                     45:  *     return  = >0 : write successful
                     46:  *             | <0 : write failed
                     47:  */
                     48: 
                     49: dkxwrite(netfd, addr, len)
                     50:        char                    *addr;
                     51: {
                     52:        int                     n;
                     53: 
                     54:        if((n = dkxpwrite(netfd, len)) < 0)
                     55:                return(n);
                     56: 
                     57:        return(write(netfd, addr, len));
                     58: }
                     59: 
                     60: /*
                     61:  * Prepare to write a block over a dkxqt protocol channel
                     62:  *
                     63:  * Write the protocol envelope necessary before sending the block itself
                     64:  *
                     65:  *     netfd   = file descriptor to use
                     66:  *     len     = number of bytes in block
                     67:  *     return  = >0 : write successful
                     68:  *             | <0 : write failed
                     69:  */
                     70: 
                     71: dkxpwrite(netfd, len)
                     72: {
                     73:        int                     n;
                     74:        struct rem_req          r;
                     75:        struct rem_reply        s;
                     76:        char                    sb[REMSIZE], rb[REMSIZE];
                     77: 
                     78:        n = iread(netfd, rb, REMSIZE);
                     79:        dkfcanon(F_REMREQ, rb, &r);
                     80: 
                     81:        if(n != REMSIZE || r.r_type != RREAD || r.r_var.rread.r_count != len){
                     82:                /* if(dkverbose)
                     83:                        fprintf(stderr, "dkxpwrite: REMREQ wrong\n"); */
                     84:                return(-EX_PROTOCOL);
                     85:        }
                     86: 
                     87:        s.s_type = RREAD;
                     88:        s.s_length = len;
                     89:        s.s_error = 0;
                     90:        s.s_resid = 0;
                     91:        dktcanon(F_REMREPLY, &s, sb) ;
                     92: 
                     93:        return(write(netfd, sb, REMSIZE));
                     94: }

unix.superglobalmegacorp.com

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