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

Defined functions

genparmlist defined in line 111; used 2 times
printhd defined in line 57; used 2 times
writehdfd defined in line 27; used 1 times
Last modified: 1980-07-16
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 758
Valid CSS Valid XHTML 1.0 Strict