DataMuseum.dk

Presents historical artifacts from the history of:

Regnecentalen RC-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Regnecentalen RC-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T u

⟦6630caa17⟧ TextFile

    Length: 5031 (0x13a7)
    Types: TextFile
    Names: »usr/admin/menu/filemgmt/restore «

Derivation

└─⟦3d8f416b2⟧ Bits:30004042/core2.imd SW95705I 386/ix Multi-user Release 1.2
    └─⟦this⟧ »usr/admin/menu/filemgmt/restore « 

TextFile

#ident	"@(#)sadmin:admin/menu/filemgmt/restore	2.9"
#menu# restore files from "backup" & "store" media to built-in disk
#help# 
#help#	Restore copies files from media made by "backup" and "store"
#help#	back onto the file systems.  You can restore individual files,
#help#	directories of files, or the entire contents of the media.
#help#	You can restore from both "incremental" and "complete" media.
#help#	You can also list the names of files stored on the media.

flags="-qq -k$$"
trap 'exit 0' 1 2 15
trap '	trap "" 1 2
	rm -f /tmp/$$restoreall' 0

rnamewarn='WARNING:
	Be very careful when you rename a file.  Files incorrectly named
	by typing errors are difficult to find and repair.
	Remember that only the first 14 characters of each part of the
	file name (i.e. the characters between the "/"s) are significant.
You will be asked to rename each file in turn.  An empty response skips that
file.  An answer of "." (period) restores the file with its original name.'

dir=${0}.d
if [ -d ${dir} ]
then
	patterns=`ls ${dir} 2>/dev/null`
else
	patterns=
fi
ncpiocmd=ncpio
ncpioargs=

ddrive=`selectdevice -c $$ /dev/rSA ${patterns}`
ndrive=`drivename ${ddrive}`

if [ -n "${patterns}" ]
then
	. ${dir}/`selpattern ${ddrive}`
fi

cd /

while true
do
	type=`checklist ${flags} -fe -H'
	Option 1 restores only the individual files selected.
	Option 2 restores all files AND directories below the directory
	that you specify.
	Option 3 restores every file from the media.
	Option 4 list the file names from the media without restoring them.
	REMEMBER- If you do not rename a file, "restore" will write over any
	copies of files that are presently on the file systems.  Also, you MUST
	use a full path name when renaming files.' \
	'Select:
	1. restore single files
	2. restore directories of files
	3. restore all files
	4. list all the files
Enter a number [?, q]:' 1 2 3 4`
	rflag=
	l=`disklabel -n "${ndrive}" $$ ${ddrive}`
	if  dd if=${ddrive} of=/tmp/$$restoreall count=2 2>/dev/null
	then
		if  file /tmp/$$restoreall  |
			grep 'ASCII cpio archive' >/dev/null
		then
			case "${type}" in
			1 )	# single file
				sfile=`checkre ${flags} -fe -l ' ' -H '
	You may also specify the file names as cpio(1) patterns and you
	may specify more than one file name.
	If you do not find files that you expect to find, use Option 4 to
	list out all the file names on the media.  Entering file names
	exactly as they exist on the list will always work.' \
	'Enter full path name of file(s) to be restored [?, q]:
	' \
	'.' ' ' \
	'^[^ ;	][^ ;	]*$' 'Blanks or tabs not permitted in the file name.' \
	'^/' 'A full path name must begin with "/".' \
	'[^/]$' 'No trailing "/" in the file name.' \
	'/[^/]\{1,14\}$' 'No more than 14 characters in a file name.'  |
				sed "/./s;.*;'&';"  |
				tr '\012' ' '`
				if  checkyn ${flags} -f 'Do you want to rename each file as it is copied in?'
				then
					echo "${rnamewarn}"
					rflag=-r
				else
					rflag=-v
				fi

				#  Magic here!  We must keep the shell from
				#  interpreting meta-characters that may be in
				#  ${sfile}.
				eval ${ncpiocmd} ${ncpioargs} \
					-icdu ${rflag} -I${ddrive} "${sfile}"
				;;
			2 )	# a directory
				sfile=`checkre ${flags} -fe -l ' ' \
	'Enter full path name of directory(s) to be restored [q]:
	' \
	'.' ' ' \
	'^[^ ;	][^ ;	]*$' 'Blanks or tabs not permitted in the file name.' \
	'^/' 'A full path name must begin with "/".' \
	'[^/]$' 'No trailing "/" in the file name.' \
	'/[^/]\{1,14\}$' 'No more than 14 characters in a file name.'  |
				sed "/./s;.*;'&/*';"  |
				tr '\012' ' '`
				if  checkyn ${flags} -f 'Do you want to rename each file as it is copied in?'
				then
					echo "${rnamewarn}"
					rflag=-r
				else
					rflag=-v
				fi

				#  Magic here!  We must keep the shell from
				#  interpreting meta-characters that may be in
				#  ${sfile}.
				eval ${ncpiocmd} ${ncpioargs} \
					-icdu ${rflag} -I${ddrive} "${sfile}"
				;;
			3 )	# entire contents
				if  checkyn ${flags} -f 'Do you want to rename the files as they are copied in?'
				then
					echo "${rnamewarn}"
					rflag=-r
				else
					rflag=-V
				fi
				${ncpiocmd} ${ncpioargs} \
					-icdu ${rflag} -I${ddrive}
				;;
			4 )	# list contents
				if  checkyn -f 'Do you want to see the file status information, too?'
				then
					rflag=-v
					echo '
 mode  owner   size   date of last access	  filename
------ ------  -----  --------------------  --------------------'
				fi
				${ncpiocmd} ${ncpioargs} \
					-ict ${rflag} -I${ddrive}
				echo "You may now remove the medium from the ${ndrive}.▶07◀"
				continue
			esac
			if [ $? = 0 ]
			then
				echo 'Restoration complete.'
			else
				echo '	Restoration did not work.
	See the Owner/Operator manual for help.'
				exit
			fi
			echo "You may now remove the medium from the ${ndrive}.▶07◀"
			continue
		fi
		echo 'This medium is not a "backup" medium or it is 
not the first part in a series.  Try again.▶07◀'
	else
		echo "Unable to read medium in the ${ndrive}.  Reinsert and try again.▶07◀"
	fi
done