From decwrl!elroy.jpl.nasa.gov!sdd.hp.com!cs.utexas.edu!uunet!allbery Wed May 16 10:14:14 PDT 1990 Article 1562 of comp.sources.misc: Path: decwrl!elroy.jpl.nasa.gov!sdd.hp.com!cs.utexas.edu!uunet!allbery From: wht%n4hgf@gatech.edu (Warren Tucker) Newsgroups: comp.sources.misc Subject: v12i082: ECU 2.80 part 29/29 Message-ID: <88385@uunet.UU.NET> Date: 12 May 90 02:06:05 GMT Sender: allbery@uunet.UU.NET Lines: 618 Approved: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc) Posting-number: Volume 12, Issue 82 Submitted-by: wht%n4hgf@gatech.edu (Warren Tucker) Archive-name: ecu2.80/part29 ---- Cut Here and unpack ---- #!/bin/sh # This is part 29 of ecu280 if touch 2>&1 | fgrep '[-amc]' > /dev/null then TOUCH=touch else TOUCH=true fi # ============= models/sz_update.ep ============== echo "x - extracting models/sz_update.ep (Text)" sed 's/^X//' << 'SHAR_EOF' > models/sz_update.ep && X# CHK=0x4068 X#-------------------------------------------------------------- X# sz_update.ep - update local directory X# X# parameters: X# %argv(1) = remote directory to copy to X# %argv(2) = local directory to copy from X# %argv(3) = file list to send X# %argv(4) = remote username needed, if any, else null X# if %argv(4) not null, 'su_'+%argv(4)+".ep" must X# exist to su to remote X# %argv(5) name of superior procedure X# X#-------------------------------------------------------------- X#+:EDITS:*/ X#:07-11-1989-16:55-wht-get cmd became lgets X#:06-28-1989-19:36-wht-use named variables X#:06-25-1989-13:56-wht-new do command syntax X#:06-25-1989-12:33-wht-new if/while syntax X#:06-22-1989-13:30-wht-creation X X# variable usage X mkvar $i_csave # color settings at entry to procedure X mkvar $i_suflag # true if su occurred X mkvar $i_rtnflag # return code X mkvar $s_origdir(128) # original working directory X mkvar $s_ruser(16) # remote username we started with before su X mkvar $s_rdir(128) # remote directory we started with X mkvar $s_xtitle(64) # title for xfer X X $i_csave=%colors # get colors at entry X X $s_xtitle = 'Connected to '+%rname X ifs %argv(5) != '' X $s_xtitle = $s_xtitle+' - procedure '+%argv(5) X X# check to make sure we are connected X ifi %conn == 0 X { X color red; echo 'not connected to anyone!' X goto SORRY X } X color lt_blue; echo 'Connected to '+%rname X X# save local current directory and change to target X $s_origdir=%dir X color brown X ifs $s_origdir == %argv(2) X echo -n 'local directory already ' X else X { X cd %argv(2) X echo -n 'local directory set to ' X } X color yellow; echo %dir X X# make sure remote username ok X ifs %argv(4) == '' goto REMOTE_CD # if any remote username X do 'bsd_uname' # get $s0=username X ifi $i0 == 0 goto SORRY # test failure X $s_ruser = $s0 # save original remote username X ifs $s0 != %argv(4) X { # need to su X color brown X echo -n 'remote username ' X color yellow X echo -n $s0 X color brown X echo ' ... su to '+%argv(4)+' now' X color gray X do 'su_'+%argv(4) # call proc, which calls su.ep X lookfor '% ' 50 # su leaves prompt in buffer: swallow X do 'bsd_uname' # make sure we su'd X ifi $i0 == 0 goto SORRY X ifs $s0 != %argv(4) # failed to su? X { X color red;echo 'su to '+%argv(4)+' failed' X goto SORRY X } X $i_suflag = 1 #remember we su'd X } # now we are proper username on remote X X# establish proper remote working directory XREMOTE_CD X color gray X $s0 = 'pwd';do 'oneline' # save old remote ... X $s_rdir = $s0 # ... directory in $s_rdir X ifs $s_rdir != %argv(1) # if cd needed, do it X { X send 'cd '+%argv(1) # remote cd X lookfor -e '\n' 50 # echo command X lookfor '% ' 50 # swallow prompt X $s0 = 'pwd' X do 'oneline' # make sure we got there X ifs $s0 != %argv(1) # dir change failed X { X color red;echo 'remote cd failed' X goto SORRY; X } X } X color brown; echo -n 'remote directory ' X color yellow; echo %argv(1) X X# transfer files X color lt_blue X echo 'sz -n -f '+%argv(3) X icolor $i_csave # restore colors at entry X sz -nfl $s_xtitle %argv(3) X ifi $i0 != 0 # whoops X { X color red; echo -n '\nTRANSFER FAILED ... ' X ifi $i0 == 0x100 echo 'interrupt' X ifi $i0 != 0x100 echo 'termination status '+%itos($i0,04d) X goto SORRY X } X lookfor '% ' 50 # swallow prompt X goto RETURN X XSORRY # whoops X color red;echo 'sz_update failed ... sorry' X $i_rtnflag = 1 # return error X XRETURN X echo '' X color brown; echo -n 'remote user name ' X color yellow X ifi $i_suflag != 0 # we su'd X { X send -n %chr(0x04) # will force a new prompt from remote X echo -n $s_ruser X color brown; echo ' restored (sent ^D to '+%argv(4)+' shell)' X lookfor '% ' 50 # swallow prompt X } X else X color brown; echo 'unchanged' X X ifs $s_rdir != %argv(1) # if we did a remote cd X { X send 'cd '+$s_rdir # restore original X lookfor '\n' X color brown; echo -n 'remote working directory ' X color yellow; echo -n $s_rdir X color brown; echo ' restored' X } X else X { X send '' # spark a prompt X color brown; echo -n 'remote working directory ' X color yellow; echo -n $s_rdir X color brown; echo ' unchanged' X } X X color brown; echo -n 'local working directory ' X color yellow; echo -n $s_origdir X color brown X ifs $s_origdir != %dir # restore original directory X { X cd $s_origdir X echo ' restored' X } X else X echo ' unchanged' X X icolor $i_csave # restore colors at entry X echo '' X return $i_rtnflag # return selected error code (bomb procedure if error) SHAR_EOF $TOUCH -am 0507232990 models/sz_update.ep && chmod 0644 models/sz_update.ep || echo "restore of models/sz_update.ep failed" set `wc -c models/sz_update.ep`;Wc_c=$1 if test "$Wc_c" != "4479"; then echo original size 4479, current size $Wc_c fi # ============= models/szall.ep ============== echo "x - extracting models/szall.ep (Text)" sed 's/^X//' << 'SHAR_EOF' > models/szall.ep && X# CHK=0xE67C X X do 'put_mpad1' X lookfor '% ' 40 X do 'put_kdir12' X lookfor '% ' 40 X do 'put_sim' X lookfor '% ' 40 X do 'put_ecu' SHAR_EOF $TOUCH -am 0507232990 models/szall.ep && chmod 0644 models/szall.ep || echo "restore of models/szall.ep failed" set `wc -c models/szall.ep`;Wc_c=$1 if test "$Wc_c" != "127"; then echo original size 127, current size $Wc_c fi # ============= models/tty1a.mi ============== echo "x - extracting models/tty1a.mi (Text)" sed 's/^X//' << 'SHAR_EOF' > models/tty1a.mi && X# CHK=0x10FF X#+----------------------------------------------------------------- X# tty1a.mi - Microcom AX/9624c X# Copyright 1989 Warren H. Tucker, III. All Rights Reserved X#------------------------------------------------------------------ X#+:EDITS:*/ X#:11-03-1989-16:21-wht------ unet2 ----- X#:07-02-1989-20:51-wht-beef up init X#:06-17-1989-22:02-wht-creation X Xinit_>2400:atq0e1v1x4s0=0s2=43s7=30\q1\x1\n3 Xinit_default:atq0e1v1x4s0=0s2=43s7=30\q0\x0\n0 Xdial_default:atdt Xautoanswer:atq1s0=1 SHAR_EOF $TOUCH -am 1103162189 models/tty1a.mi && chmod 0644 models/tty1a.mi || echo "restore of models/tty1a.mi failed" set `wc -c models/tty1a.mi`;Wc_c=$1 if test "$Wc_c" != "495"; then echo original size 495, current size $Wc_c fi # ============= models/tty2d.mi ============== echo "x - extracting models/tty2d.mi (Text)" sed 's/^X//' << 'SHAR_EOF' > models/tty2d.mi && X# CHK=0xFA63 X#+----------------------------------------------------------------- X# tty2d.mi - USR Courier 2400 X# Copyright 1989 Warren H. Tucker, III. All Rights Reserved X#------------------------------------------------------------------ X#+:EDITS:*/ X#:11-03-1989-16:21-wht------ unet2 ----- X#:07-02-1989-20:51-wht-beef up init X#:06-17-1989-22:02-wht-creation X Xinit_default:atq0e1v1x4s0=0s2=43s7=30s11=47 Xdial_default:atdt Xautoanswer:atq1s0=1 SHAR_EOF $TOUCH -am 1103162189 models/tty2d.mi && chmod 0644 models/tty2d.mi || echo "restore of models/tty2d.mi failed" set `wc -c models/tty2d.mi`;Wc_c=$1 if test "$Wc_c" != "446"; then echo original size 446, current size $Wc_c fi # ============= models/unixlogin.ep ============== echo "x - extracting models/unixlogin.ep (Text)" sed 's/^X//' << 'SHAR_EOF' > models/unixlogin.ep && X# CHK=0x5E90 X#+----------------------------------------------------------------- X# unixlogin.ep - ecu UNIX login procedure X# wht%n4hgf@gatech.edu X# X# %argv(1) = remote name X# %argv(2) = user name X# %argv(3) = password X# %argv(4) = term type X# %argv(5) = optional number of breaks needed X#+----------------------------------------------------------------- X#+:EDITS:*/ X#:07-11-1989-16:55-wht-get cmd became lgets X#:07-09-1989-23:50-wht-add breaks X#:06-28-1989-19:36-wht-use named variables X#:06-25-1989-13:56-wht-new do command syntax X#:06-25-1989-12:33-wht-new if/while syntax X#:06-23-1989-19:46-wht-improved hayes dialer reduces need to report dial fail X#:06-19-1989-22:50-wht-use while and if statements X#:06-14-1989-15:58-wht-add login capability when already connected X#:06-11-1989-23:37-wht-creation X X mkvar $i_csave,$i_ltimeout,$i_retries X X $i_csave = %colors X $i_ltimeout = 30 # 3 seconds wait for first login prompt X $i_retries=3 X X color red; echo -n '\nauto-logon to ' X color yellow; echo -n %argv(1) X color red; echo ' on '+%date+' at '+%time+'\n' X X ifi %argc < 5 # not enough args X { X color red X echo %argv(0)+' needs 5 arguments (got '+%itos(%argc)+')' X goto SORRY X } X mkvar $i_breaks X ifi %argc > 5 $i_breaks = %stoi(%argv(5)) X X ifi %conn == 0 goto DIAL X X ifs %rname == %argv(1) X { X color brown; echo -n 'already connected to ' X color yellow; echo %rname X send '' X goto SEND_BREAKS X } X XHANGUP X ifi %conn <> 0 echo 'hanging up on '+%rname; hangup X XDIAL X color green X dial %argv(1); set $i1=$i0 #save dial result in $i1 X ifi $i1 == 2 color red; echo 'interrupted'; goto SORRY X ifi $i1 != 0 goto SORRY X X# send breaks? XSEND_BREAKS X ifi $i_breaks > 0 X { X whilei $i_breaks > 0 X { X color blue; echo 'sending break to remote' X nap 20 X lbreak X $i_breaks = $i_breaks - 1 X } X flush X lookfor '\n' 50 X } X X# get login prompt from remote UNIX system: "login: " XGET_LOGIN_PROMPT X set $i_retries = 6 # retry count X XGET_LOGIN_PROMPT_RETRY # retry get login prompt X whilei $i_retries > 0 X { X color cyan X lookfor -e 'login: ' $i_ltimeout X ifi $i0 == 1 break # go send username X $i_ltimeout = 50 # later login waits 5 secs X set $i_retries = $i_retries - 1 # read and decrement retry X ifi $i_retries == 0 goto SORRY # but not if retry exhausted X color yellow X echo 'sending prompt stimulus' X color green X send '' # kick off another login prompt X } X X# give username to remote XSEND_USERNAME X nap 3 # system not always ready when it says X send %argv(2) X X# get password prompt: "Password:" XGET_PASSWORD_PROMPT X lookfor -e 'Password:' 50 X ifi $i0 != 1 # did not find 'Password: ' X { X send '' X gotob GET_LOGIN_PROMPT_RETRY X } X X# send the password X nap 3 # system not always ready when it says X send %argv(3) X X# get term type prompt "TERM = (ansi) " X# also handle incorect login retry and 'Sorry' hangup indication XGET_TERMTYPE_PROMPT X ifs %argv(4) == '' # if no term type, don't wait for prompt X { X $i0 = 0 # return good status X goto SETCOLOR_AND_RETURN_STATUS X } X lgets -re $s0 100 50 ') ' X ifi %instr($s0,'Sorry') > 0 hangup;goto SORRY X ifi %instr($s0,'incorrect') > 0 # exhausted retry? X { X set $i_retries=$i_retries-1 X ifi $i_retries > 0 goto SEND_USERNAME X goto SORRY X } X# send terminal type X ifi %instr($s0,'TERM') < 0 X lookfor -e ') ' 30 X send %argv(4) X lookfor -e '\n' 50 X set $i0=0 X goto SETCOLOR_AND_RETURN_STATUS X X# procedure failed XSORRY X set $i0=1 X XSETCOLOR_AND_RETURN_STATUS X icolor $i_csave X ifi $i0 == 0 ifi %conn !=0 prompt %rname+' >' X return $i0 X X# vi:set tabstop=4 shiftwidth=4: SHAR_EOF $TOUCH -am 0507233390 models/unixlogin.ep && chmod 0644 models/unixlogin.ep || echo "restore of models/unixlogin.ep failed" set `wc -c models/unixlogin.ep`;Wc_c=$1 if test "$Wc_c" != "3550"; then echo original size 3550, current size $Wc_c fi # ============= zgcc ============== echo "x - extracting zgcc (Text)" sed 's/^X//' << 'SHAR_EOF' > zgcc && X#!/bin/csh X#zgcc -- build prototyping "LINT_ARGS" Xecho C sources in $1';' result file $2 Xunset noclobber Xrm -f zg.t Xif (-e /unix) X echo 'building old-style prototypes for XENIX compiler compatibility' X echo 'unnamed struct/union as parameter warning probably about FILE :-(' Xendif Xforeach i(`cat $1`) Xif (-e /unix) X cc -DBUILDING_LINT_ARGS -Zg $argv[3-] $i | mkoldproto > zg1.t Xelse X cc -DBUILDING_LINT_ARGS -Zg $argv[3-] $i > zg1.t Xendif Xsort zg1.t > zg2.t Xecho '/*' $i '*/' >> zg.t Xcat zg2.t >> zg.t Xend Xafterlint zg.t $2 Xrm -f zg.t zg?.t Xfcrc -u $2 Xecho Output in $2 SHAR_EOF $TOUCH -am 0402132790 zgcc && chmod 0755 zgcc || echo "restore of zgcc failed" set `wc -c zgcc`;Wc_c=$1 if test "$Wc_c" != "570"; then echo original size 570, current size $Wc_c fi # ============= mkoldproto.l ============== echo "x - extracting mkoldproto.l (Text)" sed 's/^X//' << 'SHAR_EOF' > mkoldproto.l && X/* CHK=0x5793 */ X%{ Xchar *rev = "1.00"; X/*+------------------------------------------------------------------------- X mkoldproto.c.{l,c} - make "old" style prototypes from "new" kind X Xcc -Zg source.c | mkproto > lint_args.h X Xtakes prototypes of the style Xvoid change_report(char *original); Xand emits Xvoid change_report(char *); XThe UNIX V compiler makes the new kind, accepts the old and new kind, Xbut there are a lot of compilers which don't like the new kind. X XWarning, this program will make mush out of "old" style prototypes Xfed to it. X--------------------------------------------------------------------------*/ X/*+:EDITS:*/ X/*:11-27-1989-18:31-wht-creation */ X Xint verbose = 0; X X/*+------------------------------------------------------------------------- X change_report(original) X--------------------------------------------------------------------------*/ Xvoid Xchange_report(original) Xchar *original; X{ X fputs("fixing: ",stderr); X while(*original) X { X if((*original >= ' ') && (*original <= '~')) X fputc(*original,stderr); X else X fprintf(stderr,"<%02x>",*original); X original++; X } X fputs("\n",stderr); X} /* end of change_report */ X X X/*+------------------------------------------------------------------------- X main(argc,argv,envp) X--------------------------------------------------------------------------*/ Xmain(argc,argv,envp) Xint argc; Xchar **argv; Xchar **envp; X{ Xregister int itmp; Xregister int iargv; Xint fileiargv = 0; X X if(argc > 1) X { X for(iargv = 1; iargv < argc; iargv++) X { X if(argv[iargv][0] == '-') X { X switch(itmp = (argv[iargv][1])) X { X case 'v': X verbose = 1; X break; X default: X break; X } X } X else X { X if(yyin != stdin) X { X fprintf(stderr,"only 1 filename, please\n"); X exit(1); X } X if( (yyin = fopen(argv[iargv],"r")) == NULL) X { X perror(argv[iargv]); X exit(1); X } X fileiargv = iargv; X } X } X } X X if(verbose && fileiargv) X fprintf(stderr,"%s:\n",argv[fileiargv]); X X yylex(); X X exit(0); X} /* end of main */ X X/* vi: set tabstop=4 shiftwidth=4: */ X%} XW [ \t] XSTRING \"([^"\n]|\\\")*\" XOPCHARS ["'+-*/=|!&%^?><:\]] XIDENT [a-zA-Z0-9_]+ XU "unsigned" XI "int" XL "long" XS "short" XC "char" XR "register" XST "static" XI8 "INT8" XI16 "INT16" XI32 "INT32" XUN_ST ("union "|"struct "){IDENT} XDECLTAB1 ({I}|{C}|{S}|{L}|{U}|{R}|{ST}|{I8}|{I16}|{I32}|{UN_ST})[\t]{IDENT} XDECLTAB2 ({I}|{C}|{S}|{L}|{U}|{R}|{ST}|{I8}|{I16}|{I32}|{UN_ST})[\t ][\t ]+{IDENT} X%START COMMENT PREPROC X%% X.*\n {ECHO; X BEGIN 0; X } X^"#" { X ECHO; X BEGIN PREPROC; X } X([^*\n]|"*"+[^*/\n])* ECHO; X([^*\n]|"*"+[^*/\n])*"*"*"*/" {ECHO; X BEGIN 0; X } X.|\n ECHO; X"/*" { X ECHO; X BEGIN COMMENT; X } X"extern " { X ; X } X"* " { X fprintf(yyout,"*"); X } X{IDENT}"," { X register char *cptr = yytext + yyleng - 1; X if(verbose) X change_report(yytext); X while((*cptr != '\t') && (*cptr != ' ') && (*cptr != '*')) X *cptr-- = 0; X fprintf(yyout,",",yytext); X } X{IDENT}")" { X register char *cptr = yytext + yyleng - 1; X if(verbose) X change_report(yytext); X while((*cptr != '\t') && (*cptr != ' ') && (*cptr != '*')) X *cptr-- = 0; X fprintf(yyout,")",yytext); X } X{STRING} ECHO; X"'"."'" ECHO; X.|\n ECHO; X SHAR_EOF $TOUCH -am 1127134189 mkoldproto.l && chmod 0644 mkoldproto.l || echo "restore of mkoldproto.l failed" set `wc -c mkoldproto.l`;Wc_c=$1 if test "$Wc_c" != "3418"; then echo original size 3418, current size $Wc_c fi exit 0