Annotation of 43BSDReno/old/berknet/header.c, revision 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.