1: # include "defs.h"
   2: 
   3: /*
   4: Usage:
   5: 	sendberkmail [-m mach ] [-f addrfrom] [-h hopcnt] -t addrto
   6: 
   7: Archaic Usage:
   8: 	sendberkmail mach:user
   9: 
  10: 	Send remote mail to user on mach.
  11: 	Only one addrto allowed.
  12: 
  13: 	Sendberkmail uses the network to send an mmail command
  14: 	to the remote machine.  It specifies the source, destination,
  15: 	and a hop count only.
  16: 
  17: 	Sendberkmail uses the -q option of net, so only error msgs
  18: 	and non-zero return codes will be sent back.
  19: 
  20: 	It is best to think of sendberkmail as a transport mechanism:
  21: 	It takes mail from one machine to another machine (specified
  22: 	using the -m option) and executes the local mail program
  23: 	there with a to-address of "addrto", and a from-address
  24: 	of "addrfrom".  If the -m option is not given, it parses the
  25: 	"addrto" field to get a berkeley network address.
  26: 	This extreme generality is necessary when destinations are on
  27: 	different networks, consider a command from the Ing70:
  28: 
  29: 		sendberkmail -m csvax -f schmidt@parc -t research!chuck
  30: 
  31: 	This is clearly a forwarding function- send mail from the Arpanet
  32: 	to the Bell Net, which calls our CSVAX.
  33: 	Alternatively, executed on the CSVAX,
  34: 		sendberkmail -m ing70 -f research!chuck -t schmidt@parc
  35: 	sends mail the other way.
  36: 
  37: 	There is duplication in the arguments because of
  38: 	a need to convert to labelled parameters.
  39: 	See the note in mmail.c to that effect.
  40: 
  41: 
  42: 	Options:
  43: 		-t addrto	mail command on remote machine will be
  44: 				fed "addrto" as address
  45: 		-f addrfrom	mail will be "From" addrfrom
  46: 		-m mach		send this mail to the "mach" machine
  47: 		-h hopcnt	if this hopcnt hits a threshold, there
  48: 				is presumed to be an infinite loop.
  49: 
  50: */
  51: main(argc,argv)
  52:   char **argv; {
  53:     char addrto[BUFSIZ], addrfrom[BUFSIZ], *sn;
  54:     char mchto = 0, snto[BUFSIZ], snfrom[BUFSIZ], smchto[20], mchfrom;
  55:     int cmdstr[BUFSIZ], hopcntstr[20];
  56:     char rcmd[BUFSIZ];
  57:     int hopcnt = 0;
  58: 
  59:     argc[argv] = 0;
  60:     debugflg = DBV;
  61:     addrfrom[0] = 0;
  62:     addrto[0] = 0;
  63: 
  64:     while(argc > 1 && argv[1][0] == '-'){
  65:         argc--; argv++;
  66:         switch(argv[0][1]){
  67:         case 'f':
  68:             harg(addrfrom,&argc,&argv);
  69:             break;
  70:         case 'h':
  71:             harg(hopcntstr,&argc,&argv);
  72:             hopcnt = atoi(hopcntstr);
  73:             break;
  74:         case 'm':
  75:             harg(smchto,&argc,&argv);
  76:             mchto = lookup(smchto);
  77:             break;
  78:         case 't':
  79:             harg(addrto,&argc,&argv);
  80:             break;
  81:         /* it is important to ignore unknown flags
  82: 		   for compatibility reasons */
  83:         }
  84:     }
  85: 
  86:     /* handle to address */
  87:     if(argc > 1)strcpy(addrto,argv[1]);
  88:     if(addrto[0] == 0){
  89:         fprintf(stderr,"Usage: sendberkmail mach:user\n");
  90:         exit(EX_USAGE);
  91:     }
  92:     if(mchto == 0)
  93:         mchto = MchSFromAddr(snto,addrto);
  94:     else
  95:         strcpy(snto,addrto);
  96:     if(mchto == 0){
  97:         fprintf(stderr,"Unknown host %s\n",addrto);
  98:         exit(EX_NOHOST);
  99:     };
 100:     if(mchto == local){
 101:         fprintf(stderr,
 102:         "Use mail to send to %s on this machine. Mail not delivered.\n",
 103:             addrto);
 104:         exit(EX_NOUSER);
 105:     }
 106:     sprintf(rcmd,"mail %s",addrto);
 107: 
 108:     /* handle from address */
 109:     if(addrfrom[0] == 0){
 110:         sn = SnFromUid(getuid());
 111:         if(sn == NULL){
 112:             fprintf(stderr,"Unknown userid\n");
 113:             exit(EX_OSFILE);
 114:         }
 115:         sprintf(addrfrom,"%s:%s",longname(local),sn);
 116:     }
 117:     mchfrom = MchSFromAddr(snfrom,addrfrom);
 118: 
 119:     /* uses new options of mmail */
 120:     /* X's are for compatibility with mmail */
 121:     sprintf(cmdstr,"%s XXX XXX XXX -f '%s' -t '%s' -h %d", MMAILCMD,
 122:         addrfrom,addrto,hopcnt);
 123:     /* old code:
 124: 	sprintf(cmdstr,"%s '%s' %s '%s'", MMAILCMD,snfrom,
 125: 		longname(mchfrom),snto);
 126: 	*/
 127: 
 128: 
 129:     mexecl(netcmd,"net","-m",longname(mchto),"-q","-l","network",
 130:         "-","-c",rcmd,cmdstr,0);
 131:     perror(netcmd);
 132:     fprintf(stderr,"Network is down\n");
 133:     exit(EX_UNAVAILABLE);
 134: }

Defined functions

main defined in line 51; never used
Last modified: 1980-07-16
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 716
Valid CSS Valid XHTML 1.0 Strict