importing shar from NetBSD
This commit is contained in:
parent
597efc6c54
commit
e91d931d7d
9 changed files with 184 additions and 122 deletions
|
@ -22,7 +22,7 @@ SUBDIR= add_route arp ash at backup btrace \
|
||||||
profile progressbar pr_routes ps pwdauth \
|
profile progressbar pr_routes ps pwdauth \
|
||||||
ramdisk rarpd rawspeed rcp readclock \
|
ramdisk rarpd rawspeed rcp readclock \
|
||||||
remsync rget rlogin \
|
remsync rget rlogin \
|
||||||
rotate rsh rshd service setup shar \
|
rotate rsh rshd service setup \
|
||||||
slip spell sprofalyze sprofdiff srccrc \
|
slip spell sprofalyze sprofdiff srccrc \
|
||||||
svclog svrctl swifi synctree sysenv \
|
svclog svrctl swifi synctree sysenv \
|
||||||
syslogd tcpd tcpdp tcpstat telnet \
|
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 \
|
ping.1 playwave.1 prep.1 \
|
||||||
profile.1 ps.1 rcp.1 recwave.1 \
|
profile.1 ps.1 rcp.1 recwave.1 \
|
||||||
remsync.1 rget.1 rlogin.1 rsh.1 rz.1 \
|
remsync.1 rget.1 rlogin.1 rsh.1 rz.1 \
|
||||||
shar.1 spell.1 \
|
spell.1 svc.1 svrctl.1 \
|
||||||
svc.1 svrctl.1 \
|
|
||||||
synctree.1 sysenv.1 sz.1 telnet.1 template.1 \
|
synctree.1 sysenv.1 sz.1 telnet.1 template.1 \
|
||||||
term.1 termcap.1 tget.1 time.1 \
|
term.1 termcap.1 tget.1 time.1 \
|
||||||
truncate.1 umount.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 \
|
printenv printf pwhash \
|
||||||
renice rev \
|
renice rev \
|
||||||
\
|
\
|
||||||
sdiff sed seq shlock \
|
sdiff sed seq shar shlock \
|
||||||
shuffle sort split stat su \
|
shuffle sort split stat su \
|
||||||
tail tee tic touch tput \
|
tail tee tic touch tput \
|
||||||
tr true tsort tty ul uname unexpand unifdef \
|
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…
Reference in a new issue