importing shar from NetBSD
This commit is contained in:
		
							parent
							
								
									597efc6c54
								
							
						
					
					
						commit
						e91d931d7d
					
				@ -22,7 +22,7 @@ SUBDIR=	add_route arp ash at backup btrace \
 | 
			
		||||
	profile progressbar pr_routes ps pwdauth \
 | 
			
		||||
	ramdisk rarpd rawspeed rcp readclock \
 | 
			
		||||
	remsync rget rlogin \
 | 
			
		||||
	rotate rsh rshd service setup shar \
 | 
			
		||||
	rotate rsh rshd service setup \
 | 
			
		||||
	slip spell sprofalyze sprofdiff srccrc \
 | 
			
		||||
	svclog svrctl swifi synctree sysenv \
 | 
			
		||||
	syslogd tcpd tcpdp tcpstat telnet \
 | 
			
		||||
 | 
			
		||||
@ -1,4 +0,0 @@
 | 
			
		||||
PROG=	shar
 | 
			
		||||
MAN=
 | 
			
		||||
 | 
			
		||||
.include <bsd.prog.mk>
 | 
			
		||||
@ -1,70 +0,0 @@
 | 
			
		||||
/* shar - make a shell archive		Author: Michiel Husijes */
 | 
			
		||||
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
 | 
			
		||||
static void error(char *progname, char *operation, char *filename);
 | 
			
		||||
int main(int argc, char **argv);
 | 
			
		||||
 | 
			
		||||
int main(argc, argv)
 | 
			
		||||
int argc;
 | 
			
		||||
char *argv[];
 | 
			
		||||
{
 | 
			
		||||
  int argn;
 | 
			
		||||
  register int ch;
 | 
			
		||||
  register FILE *fp;
 | 
			
		||||
  int exitstatus;
 | 
			
		||||
  char *filename;
 | 
			
		||||
 | 
			
		||||
  exitstatus = 0;
 | 
			
		||||
  for (argn = 1; argn < argc; argn++) {
 | 
			
		||||
	filename = argv[argn];
 | 
			
		||||
	if ((fp = fopen(filename, "r")) == NULL) {
 | 
			
		||||
		error(argv[0], "opening ", filename);
 | 
			
		||||
		exitstatus = 1;
 | 
			
		||||
	} else {
 | 
			
		||||
		fputs("echo x - ", stdout);
 | 
			
		||||
		fputs(filename, stdout);
 | 
			
		||||
		fputs("\nsed '/^X/s///' > ", stdout);
 | 
			
		||||
		fputs(filename, stdout);
 | 
			
		||||
		fputs(" << '/'\n", stdout);
 | 
			
		||||
		while ((ch = getc(fp)) != EOF) {
 | 
			
		||||
			putchar('X');
 | 
			
		||||
			putchar(ch);
 | 
			
		||||
			while (ch != '\n') {
 | 
			
		||||
				ch = getc(fp);
 | 
			
		||||
				if (ch == EOF) break;
 | 
			
		||||
				putchar(ch);
 | 
			
		||||
			}
 | 
			
		||||
			if (ch == EOF) break;
 | 
			
		||||
		}
 | 
			
		||||
		fputs("/\n", stdout);
 | 
			
		||||
		if (ferror(fp)) {
 | 
			
		||||
			error(argv[0], "reading ", filename);
 | 
			
		||||
			exitstatus = 1;
 | 
			
		||||
		}
 | 
			
		||||
		if (fclose(fp) != 0) {
 | 
			
		||||
			error(argv[0], "closing ", filename);
 | 
			
		||||
			exitstatus = 1;
 | 
			
		||||
		}
 | 
			
		||||
		if (ferror(stdout)) break;	/* lost already */
 | 
			
		||||
	}
 | 
			
		||||
  }
 | 
			
		||||
  fflush(stdout);
 | 
			
		||||
  if (ferror(stdout)) {
 | 
			
		||||
	error(argv[0], "writing ", "stdout");
 | 
			
		||||
	exitstatus = 1;
 | 
			
		||||
  }
 | 
			
		||||
  return(exitstatus);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void error(progname, operation, filename)
 | 
			
		||||
char *progname;
 | 
			
		||||
char *operation;
 | 
			
		||||
char *filename;
 | 
			
		||||
{
 | 
			
		||||
  fputs(progname, stderr);
 | 
			
		||||
  fputs(": error ", stderr);
 | 
			
		||||
  fputs(operation, stderr);
 | 
			
		||||
  perror(filename);
 | 
			
		||||
}
 | 
			
		||||
@ -14,8 +14,7 @@ MAN=	ash.1 at.1 \
 | 
			
		||||
	ping.1 playwave.1 prep.1 \
 | 
			
		||||
	profile.1 ps.1 rcp.1 recwave.1 \
 | 
			
		||||
	remsync.1 rget.1 rlogin.1 rsh.1 rz.1 \
 | 
			
		||||
	shar.1 spell.1 \
 | 
			
		||||
	svc.1 svrctl.1 \
 | 
			
		||||
	spell.1 svc.1 svrctl.1 \
 | 
			
		||||
	synctree.1 sysenv.1 sz.1 telnet.1 template.1 \
 | 
			
		||||
	term.1 termcap.1 tget.1 time.1 \
 | 
			
		||||
	truncate.1 umount.1 \
 | 
			
		||||
 | 
			
		||||
@ -1,44 +0,0 @@
 | 
			
		||||
.TH SHAR 1
 | 
			
		||||
.SH NAME
 | 
			
		||||
shar \- shell archiver
 | 
			
		||||
.SH SYNOPSIS
 | 
			
		||||
\fBshar \fIfile ...\fR
 | 
			
		||||
.br
 | 
			
		||||
.de FL
 | 
			
		||||
.TP
 | 
			
		||||
\\fB\\$1\\fR
 | 
			
		||||
\\$2
 | 
			
		||||
..
 | 
			
		||||
.de EX
 | 
			
		||||
.TP 20
 | 
			
		||||
\\fB\\$1\\fR
 | 
			
		||||
# \\$2
 | 
			
		||||
..
 | 
			
		||||
.SH EXAMPLES
 | 
			
		||||
.TP 20
 | 
			
		||||
.B shar *.c >s
 | 
			
		||||
# Collect C programs in shell archive
 | 
			
		||||
.TP 20
 | 
			
		||||
.B sh <s
 | 
			
		||||
# Extract files from a shell archive
 | 
			
		||||
.SH DESCRIPTION
 | 
			
		||||
.PP
 | 
			
		||||
The named files are collected together into a shell archive written onto
 | 
			
		||||
standard output.
 | 
			
		||||
The individual files can be extracted by redirecting the shell archive into
 | 
			
		||||
the shell.
 | 
			
		||||
The advantage of
 | 
			
		||||
.I shar
 | 
			
		||||
over
 | 
			
		||||
.I ar
 | 
			
		||||
is that \fIshar\fP archives can be read on almost any 
 | 
			
		||||
\s-2UNIX\s+2
 | 
			
		||||
system, whereas numerous, incompatible versions of
 | 
			
		||||
.I ar
 | 
			
		||||
are in widespread use.
 | 
			
		||||
Extracting the files from a shell archive requires that 
 | 
			
		||||
.I sed
 | 
			
		||||
be accessible.
 | 
			
		||||
.SH "SEE ALSO"
 | 
			
		||||
.BR sh (1),
 | 
			
		||||
.BR unshar (1).
 | 
			
		||||
@ -23,7 +23,7 @@ SUBDIR= asa \
 | 
			
		||||
	printenv printf pwhash \
 | 
			
		||||
	renice rev \
 | 
			
		||||
	\
 | 
			
		||||
	sdiff sed seq shlock \
 | 
			
		||||
	sdiff sed seq shar shlock \
 | 
			
		||||
	shuffle  sort split stat su \
 | 
			
		||||
	tail tee tic touch tput \
 | 
			
		||||
	tr true tsort tty ul uname unexpand unifdef \
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								usr.bin/shar/Makefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								usr.bin/shar/Makefile
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
#	$NetBSD: Makefile,v 1.8 1997/03/24 21:59:48 christos Exp $
 | 
			
		||||
#	@(#)Makefile	8.1 (Berkeley) 6/6/93
 | 
			
		||||
 | 
			
		||||
MAN=	shar.1
 | 
			
		||||
SCRIPTS=shar.sh
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.include <bsd.prog.mk>
 | 
			
		||||
							
								
								
									
										101
									
								
								usr.bin/shar/shar.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								usr.bin/shar/shar.1
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,101 @@
 | 
			
		||||
.\"	$NetBSD: shar.1,v 1.12 2012/03/22 07:58:19 wiz Exp $
 | 
			
		||||
.\"
 | 
			
		||||
.\" Copyright (c) 1990, 1993
 | 
			
		||||
.\"	The Regents of the University of California.  All rights reserved.
 | 
			
		||||
.\"
 | 
			
		||||
.\" Redistribution and use in source and binary forms, with or without
 | 
			
		||||
.\" modification, are permitted provided that the following conditions
 | 
			
		||||
.\" are met:
 | 
			
		||||
.\" 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
.\"    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
.\" 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
.\"    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
.\"    documentation and/or other materials provided with the distribution.
 | 
			
		||||
.\" 3. Neither the name of the University nor the names of its contributors
 | 
			
		||||
.\"    may be used to endorse or promote products derived from this software
 | 
			
		||||
.\"    without specific prior written permission.
 | 
			
		||||
.\"
 | 
			
		||||
.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
.\" SUCH DAMAGE.
 | 
			
		||||
.\"
 | 
			
		||||
.\"     @(#)shar.1	8.1 (Berkeley) 6/6/93
 | 
			
		||||
.\"
 | 
			
		||||
.Dd June 6, 1993
 | 
			
		||||
.Dt SHAR 1
 | 
			
		||||
.Os
 | 
			
		||||
.Sh NAME
 | 
			
		||||
.Nm shar
 | 
			
		||||
.Nd create a shell archive of files
 | 
			
		||||
.Sh SYNOPSIS
 | 
			
		||||
.Nm
 | 
			
		||||
.Ar
 | 
			
		||||
.Sh DESCRIPTION
 | 
			
		||||
.Nm
 | 
			
		||||
writes an
 | 
			
		||||
.Xr sh 1
 | 
			
		||||
shell script to the standard output which will recreate the file
 | 
			
		||||
hierarchy specified by the command line operands.
 | 
			
		||||
Directories will be recreated and must be specified before the
 | 
			
		||||
files they contain (the
 | 
			
		||||
.Xr find 1
 | 
			
		||||
utility does this correctly).
 | 
			
		||||
.Pp
 | 
			
		||||
.Nm
 | 
			
		||||
is normally used for distributing files by
 | 
			
		||||
.Xr ftp 1
 | 
			
		||||
or
 | 
			
		||||
.Xr mail 1 .
 | 
			
		||||
.Sh EXAMPLES
 | 
			
		||||
To create a shell archive of the program
 | 
			
		||||
.Xr ls 1
 | 
			
		||||
and mail it to Rick:
 | 
			
		||||
.Bd -literal -offset indent
 | 
			
		||||
cd ls
 | 
			
		||||
shar `find . -print` \&|  mail -s "ls source" rick
 | 
			
		||||
.Ed
 | 
			
		||||
.Pp
 | 
			
		||||
To recreate the program directory:
 | 
			
		||||
.Bd -literal -offset indent
 | 
			
		||||
mkdir ls
 | 
			
		||||
cd ls
 | 
			
		||||
\&...
 | 
			
		||||
\*[Lt]delete header lines and examine mailed archive\*[Gt]
 | 
			
		||||
\&...
 | 
			
		||||
sh archive
 | 
			
		||||
.Ed
 | 
			
		||||
.Sh SEE ALSO
 | 
			
		||||
.Xr compress 1 ,
 | 
			
		||||
.Xr mail 1 ,
 | 
			
		||||
.Xr tar 1 ,
 | 
			
		||||
.Xr uuencode 1
 | 
			
		||||
.Sh HISTORY
 | 
			
		||||
The
 | 
			
		||||
.Nm
 | 
			
		||||
command appeared in
 | 
			
		||||
.Bx 4.4 .
 | 
			
		||||
.Sh BUGS
 | 
			
		||||
.Nm
 | 
			
		||||
makes no provisions for special types of files or files containing
 | 
			
		||||
magic characters.
 | 
			
		||||
.Sh SECURITY CONSIDERATIONS
 | 
			
		||||
It is easy to insert trojan horses into
 | 
			
		||||
.Nm
 | 
			
		||||
files.
 | 
			
		||||
It is strongly recommended that all shell archive files be examined
 | 
			
		||||
before running them through
 | 
			
		||||
.Xr sh 1 .
 | 
			
		||||
Archives produced using this implementation of
 | 
			
		||||
.Nm
 | 
			
		||||
may be easily examined with the command:
 | 
			
		||||
.Bd -literal -offset indent
 | 
			
		||||
egrep -v '^[X#]' shar.file
 | 
			
		||||
.Ed
 | 
			
		||||
							
								
								
									
										72
									
								
								usr.bin/shar/shar.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										72
									
								
								usr.bin/shar/shar.sh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,72 @@
 | 
			
		||||
#!/bin/sh -
 | 
			
		||||
#
 | 
			
		||||
#	$NetBSD: shar.sh,v 1.3 2005/06/30 02:36:35 perry Exp $
 | 
			
		||||
#
 | 
			
		||||
# Copyright (c) 1990, 1993
 | 
			
		||||
#	The Regents of the University of California.  All rights reserved.
 | 
			
		||||
#
 | 
			
		||||
# Redistribution and use in source and binary forms, with or without
 | 
			
		||||
# modification, are permitted provided that the following conditions
 | 
			
		||||
# are met:
 | 
			
		||||
# 1. Redistributions of source code must retain the above copyright
 | 
			
		||||
#    notice, this list of conditions and the following disclaimer.
 | 
			
		||||
# 2. Redistributions in binary form must reproduce the above copyright
 | 
			
		||||
#    notice, this list of conditions and the following disclaimer in the
 | 
			
		||||
#    documentation and/or other materials provided with the distribution.
 | 
			
		||||
# 3. Neither the name of the University nor the names of its contributors
 | 
			
		||||
#    may be used to endorse or promote products derived from this software
 | 
			
		||||
#    without specific prior written permission.
 | 
			
		||||
#
 | 
			
		||||
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | 
			
		||||
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | 
			
		||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | 
			
		||||
# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | 
			
		||||
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | 
			
		||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | 
			
		||||
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | 
			
		||||
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | 
			
		||||
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | 
			
		||||
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | 
			
		||||
# SUCH DAMAGE.
 | 
			
		||||
#
 | 
			
		||||
#	@(#)shar.sh	8.1 (Berkeley) 6/6/93
 | 
			
		||||
#
 | 
			
		||||
 | 
			
		||||
if [ $# -eq 0 ]; then
 | 
			
		||||
	echo 'usage: shar file ...'
 | 
			
		||||
	exit 1
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
cat << EOF
 | 
			
		||||
# This is a shell archive.  Save it in a file, remove anything before
 | 
			
		||||
# this line, and then unpack it by entering "sh file".  Note, it may
 | 
			
		||||
# create directories; files and directories will be owned by you and
 | 
			
		||||
# have default permissions.
 | 
			
		||||
#
 | 
			
		||||
# This archive contains:
 | 
			
		||||
#
 | 
			
		||||
EOF
 | 
			
		||||
 | 
			
		||||
for i
 | 
			
		||||
do
 | 
			
		||||
	echo "#	$i"
 | 
			
		||||
done
 | 
			
		||||
 | 
			
		||||
echo "#"
 | 
			
		||||
 | 
			
		||||
for i
 | 
			
		||||
do
 | 
			
		||||
	if [ -d $i ]; then
 | 
			
		||||
		echo "echo c - $i"
 | 
			
		||||
		echo "mkdir -p $i > /dev/null 2>&1"
 | 
			
		||||
	else
 | 
			
		||||
		echo "echo x - $i"
 | 
			
		||||
		echo "sed 's/^X//' >$i << 'END-of-$i'"
 | 
			
		||||
		sed 's/^/X/' $i
 | 
			
		||||
		echo "END-of-$i"
 | 
			
		||||
	fi
 | 
			
		||||
done
 | 
			
		||||
echo exit
 | 
			
		||||
echo ""
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user