⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rz_update.ep

📁 一个通讯程序源码
💻 EP
字号:
#  CHK=0x3514#--------------------------------------------------------------# rz_update.ep - update local directory## parameters:# %argv(1) = remote directory to copy from# %argv(2) = local directory to copy to# %argv(3) = file list to get# %argv(4) = remote username needed, if any, else null#            if %argv(4) not null, 'su_'+%argv(4)+".ep" must#            exist to su to remote# %argv(5)   name of superior procedure##--------------------------------------------------------------#+:EDITS:*/#:09-10-1992-13:59-wht@n4hgf-ECU release 3.20#:08-22-1992-15:39-wht@n4hgf-ECU release 3.20 BETA#:05-10-1992-09:22-wht@n4hgf-%conn can be -1 now#:07-11-1989-16:55-wht-get cmd became lgets#:06-28-1989-19:36-wht-use named variables#:06-25-1989-13:56-wht-new do command syntax#:06-25-1989-12:33-wht-new if/while syntax#:06-22-1989-13:30-wht-creation# variable usage	mkvar $i_csave			# color settings at entry to procedure	mkvar $i_rtnval			# return code	mkvar $i_suflag			# true if su occurred	mkvar $s_origdir(128)	# original working directory	mkvar $s_rdir(128)		# remote directory we started with	mkvar $s_ruser(16)		# remote username we started with before su	mkvar $s_xtitle(64)		# title for xfer	$i_csave=%colors # get colors at entry	$s_xtitle = 'Connected to '+%rname	ifs %argv(5) != ''		$s_xtitle = $s_xtitle+' - procedure '+%argv(5)# check to make sure we are connected	ifi %conn <= 0	{		color red; echo 'not connected to anyone!'		goto SORRY	}	color lt_blue;  echo 'Connected to '+%rname# save local current directory and change to target	$s_origdir=%dir	color brown	ifs $s_origdir == %argv(2)		echo -n 'local directory already '	else 	{		cd %argv(2)		echo -n 'local directory set to '	}	color yellow; echo %dir# make sure remote username ok	ifs %argv(4) == '' goto REMOTE_CD # if any remote username	do 'bsd_uname'			# get $s0=username	ifi $i0 == 0 goto SORRY	# test failure	$s_ruser = $s0			# save original remote username	ifs $s0 != %argv(4)	{						# need to su		color brown		echo -n 'remote username '		color yellow		echo -n $s0		color brown		echo ' ... su to '+%argv(4)+' now'		color gray		do 'su_'+%argv(4)	# call proc, which calls su.ep		lookfor '% ' 50		# su leaves prompt in buffer: swallow		do 'bsd_uname'		# make sure we su'd		ifi $i0 == 0 goto SORRY		ifs $s0 != %argv(4)	# failed to su?		{			color red;echo 'su to '+%argv(4)+' failed'			goto SORRY		}		$i_suflag = 1		# remember we su'd	}	# now we are proper username on remote# establish proper remote working directoryREMOTE_CD	color gray	$s0 = 'pwd';do 'oneline'	# save old remote ...	$s_rdir = $s0				# ... directory in $s_rdir	ifs $s_rdir != %argv(1)		# if cd needed, do it	{		send 'cd '+%argv(1)		# remote cd		lookfor -e '\n' 50		# echo command		lookfor '% ' 50			# swallow prompt		$s0 = 'pwd'		do 'oneline'			# make sure we got there		ifs $s0 != %argv(1)		# dir change failed		{			color red;echo 'remote cd failed'			goto SORRY;		}	}	color brown;  echo -n 'remote directory '	color yellow; echo -n %argv(1)	color brown;  echo    ' ... starting transfer now'# transfer files	color lt_blue	send 'sz -n -f '+%argv(3)	lookfor -e '\n' 50	# echo remote command	ifi $i0 == 0		# command failed?	{		color red; echo 'sz command failed or garbled echo'		goto SORRY	}	color brown	echo 'waiting for sz to start'	nap 10	color gray#	$s5 = '**'+%chr(0x18)+'B'	# ZMODEM header	lgets $s0 150 10 '\n'		# wait 15 secs for start	ifi %instr($s0,'rz') < 0	# check for 'rz' startup from remote	{		color white;		echo '\n'+$s0+'\n'		color red		echo 'sz protocol failure or trigger garbled'		goto SORRY	}	icolor $i_csave				# restore colors at entry	rz -l $s_xtitle	ifi $i0 != 0	# whoops	{		color red; echo -n '\nTRANSFER FAILED ... '		ifi $i0 == 0x100 echo 'interrupt'		ifi $i0 != 0x100 echo 'termination status '+%itos($i0,04d)		goto SORRY	}	lookfor '% ' 50				# swallow prompt	goto RETURNSORRY # whoops	color red;echo 'rz_update failed ... sorry'	$i_rtnval = 1				# return errorRETURN	echo ''	color brown;  echo -n 'remote user name '	color yellow	ifi $i_suflag != 0			# we su'd	{		send -n %chr(0x04)  	# will force a new prompt from remote		echo -n $s_ruser		color brown;  echo ' restored (sent ^D to '+%argv(4)+' shell)'		lookfor '% ' 50			# swallow prompt	}	else		color brown;  echo 'unchanged'	ifs $s_rdir != %argv(1)		# if we did a remote cd	{		send 'cd '+$s_rdir		# restore original		lookfor '\n'		color brown;  echo -n 'remote working directory '		color yellow; echo -n $s_rdir		color brown;  echo    ' restored'	}	else	{		send ''				# spark a prompt		color brown;  echo -n 'remote working directory '		color yellow; echo -n $s_rdir		color brown;  echo    ' unchanged'	}	ifs $s_origdir != %dir	# restore original directory	{		cd $s_origdir		color brown;  echo -n 'local working directory '		color yellow; echo -n $s_origdir		color brown;  echo    ' restored'	}	icolor $i_csave		# restore colors at entry	echo ''	return $i_rtnval	# return selected error code (bomb procedure if error)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -