Annotation of 42BSD/old/berknet/header.c, revision 1.1.1.1

1.1       root        1: static char sccsid[] = "@(#)header.c   4.1     (Berkeley)      9/12/82";
                      2: 
                      3: /* sccs id variable */
                      4: static char *header_sid = "@(#)header.c        1.3";
                      5: /*
                      6:        header.c
                      7: 
                      8:        these routines provide a way of transferring the information
                      9:        in the "header" structure between machines.
                     10:        Programs calling these routines either read or write
                     11:        their information into the header structure.
                     12:        These procedures format the info in a way that is acceptable.
                     13:        Called by net.c, netdaemon.c, and netq.c.
                     14: */
                     15: /*
                     16:        protocol that is sent (in ASCII):
                     17:        code, remote mach, local mach, version stamp (2), remote login name,
                     18:        password, -i, -o, -r files,
                     19:        local login name, terminal, flag, utmp tty login time,
                     20:        cc jobno(variable parameter list), current time,
                     21:        command '\n' real command '\n'
                     22:        any data
                     23:        
                     24:        changes:
                     25:        1) remove header
                     26:        3) use ascii length instead of 4 bytes
                     27:        4) encrypt the login name, command, and part of data as well
                     28: */
                     29: # include "defs.h"
                     30: 
                     31: 
                     32: writehdfd(phd,fd)
                     33: register struct header *phd;
                     34: FILE *fd;
                     35: {
                     36:        char *genparmlist();
                     37:        char cflag = 'a';
                     38: 
                     39:        /* cflag is initially 'a'. Add the flags as needed. */
                     40:        if(phd->hd_fnonotify)cflag += F_NONOTIFY;
                     41:        if(phd->hd_fquiet)cflag += F_QUIET;
                     42: 
                     43:        fprintf(fd,
                     44:        "%c :%c :%c :%c :%c :%s :%s :%s :%s :%s :%s :%s :%c :%lo :%s%s :%ld :",
                     45:                phd->hd_code,phd->hd_mchto,phd->hd_mchfrom,
                     46:                phd->hd_vmajor+'a',phd->hd_vminor+'a',phd->hd_snto,
                     47:                phd->hd_spasswd,phd->hd_sinfile,phd->hd_soutfile,
                     48:                phd->hd_srespfile,
                     49:                phd->hd_snfrom,phd->hd_sttyname,cflag,phd->hd_lttytime,
                     50:                phd->hd_ijobno,genparmlist(phd),phd->hd_ltimesent-TIMEBASE);
                     51:        fputs(phd->hd_scmdact,fd);
                     52:        putc('\n',fd);
                     53:        fputs(phd->hd_scmdvirt,fd);
                     54:        putc('\n',fd);
                     55:        /* not used, but a good idea */
                     56:        sprintf(phd->hd_addrfrom,"%c:%s",phd->hd_mchfrom,phd->hd_snfrom);
                     57:        sprintf(phd->hd_addrto,  "%c:%s",phd->hd_mchto,  phd->hd_snto);
                     58: }
                     59: /*
                     60:        print out debugging values of a header structure
                     61: */
                     62: printhd(phd)
                     63: register struct header *phd;
                     64: {
                     65:        if(debugflg){
                     66:                printf("To %s From %s quiet=%c nonotify=%c\n",
                     67:                        phd->hd_addrto, phd->hd_addrfrom, 
                     68:                        chfromf(phd->hd_fquiet), chfromf(phd->hd_fnonotify));
                     69:                /* don't print out for security reasons
                     70:                printf("Password %s\n",phd->hd_spasswd);
                     71:                */
                     72:                printf("Code '%c' Version (%d,%d) Infile '%s'\n",
                     73:                        phd->hd_code, phd->hd_vmajor,phd->hd_vminor,
                     74:                        phd->hd_sinfile);
                     75:                printf("Outfile '%s' Respfile '%s' TTYName '%s'\n",
                     76:                        phd->hd_soutfile,phd->hd_srespfile, phd->hd_sttyname);
                     77:                printf("Jobno %s TimeSent %s", phd->hd_ijobno,
                     78:                        ctime(&phd->hd_ltimesent));
                     79:                if(phd->hd_lttytime != 0)
                     80:                        printf("TTYTime %s", ctime(&phd->hd_lttytime));
                     81:                printf("Virtual Command \"%s\"\n", phd->hd_scmdvirt);
                     82:                printf("Actual Command \"%s\"\n", phd->hd_scmdact);
                     83:        }
                     84: }
                     85: /*
                     86:        generate a variable parameter list
                     87:        the format is:
                     88:                (name value, name value, ..., name value)
                     89:        where names are unquoted single words and values
                     90:        are unquoted if a single alphanumeric word, and are
                     91:        surrounded by {} otherwise. \ quotes { and }.
                     92:        the values are escape-processed, e.g. \n becomes 012.
                     93:        this function returns such a list.
                     94:        Returns the null parm list if nothing to give, i.e. "()" 
                     95: 
                     96:        Should also default so single keywords can have on/off
                     97:        states, and so do not require a value.
                     98: 
                     99:        Things this variable protocol should specify:
                    100:                EPASSWD         encrypted passwd
                    101:                FILEMODE        file mode
                    102:                FROMUID         from users' uid
                    103:                FROMGID         from users' gid
                    104:                COMPRESS        use colin's compression
                    105:                ACCTPAIR        handle acct pairs
                    106:                MESSAGEID       unique number identifying this request.
                    107:                FILENAME        when omitted by netcp, will use FILENAME ext.
                    108:                REPLYTO         the person the response should be sent to
                    109: 
                    110:                 --- possibly ---
                    111:                MACHINE2        a second machine (e.g. 3way netcp)
                    112:                LOGIN2          a second login name
                    113:                PASSWD2         a second passwd
                    114: 
                    115: */
                    116: static char *genparmlist(phd)
                    117: register struct header *phd;
                    118: {
                    119:        static char returnstr[PARMLIST];
                    120:        strcpy(returnstr,"()");
                    121:        return(returnstr);
                    122: }

unix.superglobalmegacorp.com

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