|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.