*BSD News Article 2283


Return to BSD News archive

Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!uunet!gatech!udel!louie!udel.edu!neal
From: neal@neal.ctd.comsat.com (Neal Becker)
Subject: Sources for cksum
Message-ID: <NEAL.92Jul22162831@neal.ctd.comsat.com>
Sender: usenet@udel.edu (USENET News Service)
Nntp-Posting-Host: neal.ctd.comsat.com
Organization: COMSAT Labs
Date: Wed, 22 Jul 1992 21:28:31 GMT
Lines: 688

Here are the extracted sources for cksum.  You will probably need to
modify this on most systems.  But for what its worth...
#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 1 (of 1)."
# Contents:  cksum cksum/cdefs.h cksum/cksum.c cksum/crc.c
#   cksum/extern.h cksum/print.c cksum/sum1.c cksum/sum2.c
# Wrapped by neal@neal on Wed Jul 22 16:25:53 1992
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test ! -d 'cksum' ; then
    echo shar: Creating directory \"'cksum'\"
    mkdir 'cksum'
fi
if test -f 'cksum/cdefs.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cksum/cdefs.h'\"
else
echo shar: Extracting \"'cksum/cdefs.h'\" \(3074 characters\)
sed "s/^X//" >'cksum/cdefs.h' <<'END_OF_FILE'
X/*
X * Copyright (c) 1991 The Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X * 1. Redistributions of source code must retain the above copyright
X *    notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X *    notice, this list of conditions and the following disclaimer in the
X *    documentation and/or other materials provided with the distribution.
X * 3. All advertising materials mentioning features or use of this software
X *    must display the following acknowledgement:
X *	This product includes software developed by the University of
X *	California, Berkeley and its contributors.
X * 4. Neither the name of the University nor the names of its contributors
X *    may be used to endorse or promote products derived from this software
X *    without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X *
X *	@(#)cdefs.h	7.6 (Berkeley) 5/4/91
X */
X
X#ifndef	_CDEFS_H_
X#define	_CDEFS_H_
X
X#if defined(__cplusplus)
X#define	__BEGIN_DECLS	extern "C" {
X#define	__END_DECLS	};
X#else
X#define	__BEGIN_DECLS
X#define	__END_DECLS
X#endif
X
X/*
X * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
X * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
X * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
X * in between its arguments.  __CONCAT can also concatenate double-quoted
X * strings produced by the __STRING macro, but this only works with ANSI C.
X */
X#if defined(__STDC__) || defined(__cplusplus)
X#define	__P(protos)	protos		/* full-blown ANSI C */
X#define	__CONCAT(x,y)	x ## y
X#define	__STRING(x)	#x
X
X#else	/* !(__STDC__ || __cplusplus) */
X#define	__P(protos)	()		/* traditional C preprocessor */
X#define	__CONCAT(x,y)	x/**/y
X#define	__STRING(x)	"x"
X
X#ifdef __GNUC__
X#define	const		__const		/* GCC: ANSI C with -traditional */
X#define	inline		__inline
X#define	signed		__signed
X#define	volatile	__volatile
X
X#else	/* !__GNUC__ */
X#define	const				/* delete ANSI C keywords */
X#define	inline
X#define	signed
X#define	volatile
X#endif	/* !__GNUC__ */
X#endif	/* !(__STDC__ || __cplusplus) */
X
X#endif /* !_CDEFS_H_ */
END_OF_FILE
if test 3074 -ne `wc -c <'cksum/cdefs.h'`; then
    echo shar: \"'cksum/cdefs.h'\" unpacked with wrong size!
fi
# end of 'cksum/cdefs.h'
fi
if test -f 'cksum/cksum.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cksum/cksum.c'\"
else
echo shar: Extracting \"'cksum/cksum.c'\" \(3578 characters\)
sed "s/^X//" >'cksum/cksum.c' <<'END_OF_FILE'
X/*-
X * Copyright (c) 1991 The Regents of the University of California.
X * All rights reserved.
X *
X * This code is derived from software contributed to Berkeley by
X * James W. Williams of the University of Maryland.
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X * 1. Redistributions of source code must retain the above copyright
X *    notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X *    notice, this list of conditions and the following disclaimer in the
X *    documentation and/or other materials provided with the distribution.
X * 3. All advertising materials mentioning features or use of this software
X *    must display the following acknowledgement:
X *	This product includes software developed by the University of
X *	California, Berkeley and its contributors.
X * 4. Neither the name of the University nor the names of its contributors
X *    may be used to endorse or promote products derived from this software
X *    without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X */
X
X#ifndef lint
Xchar copyright[] =
X"@(#) Copyright (c) 1991 The Regents of the University of California.\n\
X All rights reserved.\n";
X#endif /* not lint */
X
X#ifndef lint
Xstatic char sccsid[] = "@(#)cksum.c	5.3 (Berkeley) 4/4/91";
X#endif /* not lint */
X
X#include <sys/cdefs.h>
X#include <sys/types.h>
X#include <fcntl.h>
X#include <unistd.h>
X#include <stdio.h>
X#include <errno.h>
X#include <stdlib.h>
X#include <string.h>
X#include "extern.h"
X
Xmain(argc, argv)
X	int argc;
X	char **argv;
X{
X	extern int optind;
X	u_long len, val;
X	register int ch, fd, rval;
X	char *fn;
X	int (*cfncn) __P((int, unsigned long *, unsigned long *));
X	void (*pfncn) __P((char *, unsigned long, unsigned long));
X
X	cfncn = crc;
X	pfncn = pcrc;
X	while ((ch = getopt(argc, argv, "o:")) != EOF)
X		switch(ch) {
X		case 'o':
X			if (*optarg == '1') {
X				cfncn = csum1;
X				pfncn = psum1;
X			} else if (*optarg == '2') {
X				cfncn = csum2;
X				pfncn = psum2;
X			} else {
X				(void)fprintf(stderr,
X				    "cksum: illegal argument to -o option\n");
X				usage();
X			}
X			break;
X		case '?':
X		default:
X			usage();
X		}
X	argc -= optind;
X	argv += optind;
X
X	fd = STDIN_FILENO;
X	fn = "stdin";
X	rval = 0;
X	do {
X		if (*argv) {
X			fn = *argv++;
X			if ((fd = open(fn, O_RDONLY, 0)) < 0) {
X				(void)fprintf(stderr,
X				    "cksum: %s: %s\n", fn, strerror(errno));
X				rval = 1;
X				continue;
X			}
X		}
X		if (cfncn(fd, &val, &len)) {
X			(void)fprintf(stderr,
X			    "cksum: %s: %s\n", fn, strerror(errno));
X			rval = 1;
X		} else
X			pfncn(fn, val, len);
X		(void)close(fd);
X	} while (*argv);
X	exit(rval);
X}
X
Xusage()
X{
X	(void)fprintf(stderr, "usage: cksum [-o 1 | 2] [file ...]\n");
X	exit(1);
X}
END_OF_FILE
if test 3578 -ne `wc -c <'cksum/cksum.c'`; then
    echo shar: \"'cksum/cksum.c'\" unpacked with wrong size!
fi
# end of 'cksum/cksum.c'
fi
if test -f 'cksum/crc.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cksum/crc.c'\"
else
echo shar: Extracting \"'cksum/crc.c'\" \(6293 characters\)
sed "s/^X//" >'cksum/crc.c' <<'END_OF_FILE'
X/*-
X * Copyright (c) 1991 The Regents of the University of California.
X * All rights reserved.
X *
X * This code is derived from software contributed to Berkeley by
X * James W. Williams of the University of Maryland.
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X * 1. Redistributions of source code must retain the above copyright
X *    notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X *    notice, this list of conditions and the following disclaimer in the
X *    documentation and/or other materials provided with the distribution.
X * 3. All advertising materials mentioning features or use of this software
X *    must display the following acknowledgement:
X *	This product includes software developed by the University of
X *	California, Berkeley and its contributors.
X * 4. Neither the name of the University nor the names of its contributors
X *    may be used to endorse or promote products derived from this software
X *    without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X */
X
X#ifndef lint
Xstatic char sccsid[] = "@(#)crc.c	5.2 (Berkeley) 4/4/91";
X#endif /* not lint */
X
X#include <sys/types.h>
X#include <unistd.h>
X
Xu_long crctab[] = {
X	0x7fffffff,
X	0x77073096,  0xee0e612c,  0x990951ba,  0x076dc419,  0x706af48f,
X	0xe963a535,  0x9e6495a3,  0x0edb8832,  0x79dcb8a4,  0xe0d5e91e,
X	0x97d2d988,  0x09b64c2b,  0x7eb17cbd,  0xe7b82d07,  0x90bf1d91,
X	0x1db71064,  0x6ab020f2,  0xf3b97148,  0x84be41de,  0x1adad47d,
X	0x6ddde4eb,  0xf4d4b551,  0x83d385c7,  0x136c9856,  0x646ba8c0,
X	0xfd62f97a,  0x8a65c9ec,  0x14015c4f,  0x63066cd9,  0xfa0f3d63,
X	0x8d080df5,  0x3b6e20c8,  0x4c69105e,  0xd56041e4,  0xa2677172,
X	0x3c03e4d1,  0x4b04d447,  0xd20d85fd,  0xa50ab56b,  0x35b5a8fa,
X	0x42b2986c,  0xdbbbc9d6,  0xacbcf940,  0x32d86ce3,  0x45df5c75,
X	0xdcd60dcf,  0xabd13d59,  0x26d930ac,  0x51de003a,  0xc8d75180,
X	0xbfd06116,  0x21b4f4b5,  0x56b3c423,  0xcfba9599,  0xb8bda50f,
X	0x2802b89e,  0x5f058808,  0xc60cd9b2,  0xb10be924,  0x2f6f7c87,
X	0x58684c11,  0xc1611dab,  0xb6662d3d,  0x76dc4190,  0x01db7106,
X	0x98d220bc,  0xefd5102a,  0x71b18589,  0x06b6b51f,  0x9fbfe4a5,
X	0xe8b8d433,  0x7807c9a2,  0x0f00f934,  0x9609a88e,  0xe10e9818,
X	0x7f6a0dbb,  0x086d3d2d,  0x91646c97,  0xe6635c01,  0x6b6b51f4,
X	0x1c6c6162,  0x856530d8,  0xf262004e,  0x6c0695ed,  0x1b01a57b,
X	0x8208f4c1,  0xf50fc457,  0x65b0d9c6,  0x12b7e950,  0x8bbeb8ea,
X	0xfcb9887c,  0x62dd1ddf,  0x15da2d49,  0x8cd37cf3,  0xfbd44c65,
X	0x4db26158,  0x3ab551ce,  0xa3bc0074,  0xd4bb30e2,  0x4adfa541,
X	0x3dd895d7,  0xa4d1c46d,  0xd3d6f4fb,  0x4369e96a,  0x346ed9fc,
X	0xad678846,  0xda60b8d0,  0x44042d73,  0x33031de5,  0xaa0a4c5f,
X	0xdd0d7cc9,  0x5005713c,  0x270241aa,  0xbe0b1010,  0xc90c2086,
X	0x5768b525,  0x206f85b3,  0xb966d409,  0xce61e49f,  0x5edef90e,
X	0x29d9c998,  0xb0d09822,  0xc7d7a8b4,  0x59b33d17,  0x2eb40d81,
X	0xb7bd5c3b,  0xc0ba6cad,  0xedb88320,  0x9abfb3b6,  0x03b6e20c,
X	0x74b1d29a,  0xead54739,  0x9dd277af,  0x04db2615,  0x73dc1683,
X	0xe3630b12,  0x94643b84,  0x0d6d6a3e,  0x7a6a5aa8,  0xe40ecf0b,
X	0x9309ff9d,  0x0a00ae27,  0x7d079eb1,  0xf00f9344,  0x8708a3d2,
X	0x1e01f268,  0x6906c2fe,  0xf762575d,  0x806567cb,  0x196c3671,
X	0x6e6b06e7,  0xfed41b76,  0x89d32be0,  0x10da7a5a,  0x67dd4acc,
X	0xf9b9df6f,  0x8ebeeff9,  0x17b7be43,  0x60b08ed5,  0xd6d6a3e8,
X	0xa1d1937e,  0x38d8c2c4,  0x4fdff252,  0xd1bb67f1,  0xa6bc5767,
X	0x3fb506dd,  0x48b2364b,  0xd80d2bda,  0xaf0a1b4c,  0x36034af6,
X	0x41047a60,  0xdf60efc3,  0xa867df55,  0x316e8eef,  0x4669be79,
X	0xcb61b38c,  0xbc66831a,  0x256fd2a0,  0x5268e236,  0xcc0c7795,
X	0xbb0b4703,  0x220216b9,  0x5505262f,  0xc5ba3bbe,  0xb2bd0b28,
X	0x2bb45a92,  0x5cb36a04,  0xc2d7ffa7,  0xb5d0cf31,  0x2cd99e8b,
X	0x5bdeae1d,  0x9b64c2b0,  0xec63f226,  0x756aa39c,  0x026d930a,
X	0x9c0906a9,  0xeb0e363f,  0x72076785,  0x05005713,  0x95bf4a82,
X	0xe2b87a14,  0x7bb12bae,  0x0cb61b38,  0x92d28e9b,  0xe5d5be0d,
X	0x7cdcefb7,  0x0bdbdf21,  0x86d3d2d4,  0xf1d4e242,  0x68ddb3f8,
X	0x1fda836e,  0x81be16cd,  0xf6b9265b,  0x6fb077e1,  0x18b74777,
X	0x88085ae6,  0xff0f6a70,  0x66063bca,  0x11010b5c,  0x8f659eff,
X	0xf862ae69,  0x616bffd3,  0x166ccf45,  0xa00ae278,  0xd70dd2ee,
X	0x4e048354,  0x3903b3c2,  0xa7672661,  0xd06016f7,  0x4969474d,
X	0x3e6e77db,  0xaed16a4a,  0xd9d65adc,  0x40df0b66,  0x37d83bf0,
X	0xa9bcae53,  0xdebb9ec5,  0x47b2cf7f,  0x30b5ffe9,  0xbdbdf21c,
X	0xcabac28a,  0x53b39330,  0x24b4a3a6,  0xbad03605,  0xcdd70693,
X	0x54de5729,  0x23d967bf,  0xb3667a2e,  0xc4614ab8,  0x5d681b02,
X	0x2a6f2b94,  0xb40bbe37,  0xc30c8ea1,  0x5a05df1b,  0x2d02ef8d
X};
X
X/*
X * crc --
X *	Compute a POSIX.2 checksum.  This routine has been broken out since
X *	it is anticipated that other programs will use it.  It takes a file
X *	descriptor to read from and locations to store the crc and the number
X *	of bytes read.  It returns 0 on success and 1 on failure.  Errno is
X *	set on failure.
X */
Xcrc(fd, cval, clen)
X	register int fd;
X	u_long *cval, *clen;
X{
X	register int i, nr, step;
X	register u_char *p;
X	register u_long crc, total;
X	u_char buf[8192];
X
X	crc = step = total = 0;
X	while ((nr = read(fd, buf, sizeof(buf))) > 0)
X		for (total += nr, p = buf; nr--; ++p) {
X			if (!(i = crc >> 24 ^ *p)) {
X				i = step++;
X				if (step >= sizeof(crctab)/sizeof(crctab[0]))
X					step = 0;
X			}
X			crc = (crc << 8) ^ crctab[i];
X		}
X	if (nr < 0)
X		return(1);
X
X	*cval = crc & 0xffffffff;		/* Mask to 32 bits. */
X	*clen = total;
X	return(0);
X}
END_OF_FILE
if test 6293 -ne `wc -c <'cksum/crc.c'`; then
    echo shar: \"'cksum/crc.c'\" unpacked with wrong size!
fi
# end of 'cksum/crc.c'
fi
if test -f 'cksum/extern.h' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cksum/extern.h'\"
else
echo shar: Extracting \"'cksum/extern.h'\" \(2250 characters\)
sed "s/^X//" >'cksum/extern.h' <<'END_OF_FILE'
X/*-
X * Copyright (c) 1991 The Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X * 1. Redistributions of source code must retain the above copyright
X *    notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X *    notice, this list of conditions and the following disclaimer in the
X *    documentation and/or other materials provided with the distribution.
X * 3. All advertising materials mentioning features or use of this software
X *    must display the following acknowledgement:
X *	This product includes software developed by the University of
X *	California, Berkeley and its contributors.
X * 4. Neither the name of the University nor the names of its contributors
X *    may be used to endorse or promote products derived from this software
X *    without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X *
X *	@(#)extern.h	5.1 (Berkeley) 4/4/91
X */
X
X#include <sys/cdefs.h>
X
X__BEGIN_DECLS
Xint	crc __P((int, unsigned long *, unsigned long *));
Xvoid	pcrc __P((char *, unsigned long, unsigned long));
Xvoid	psum1 __P((char *, unsigned long, unsigned long));
Xvoid	psum2 __P((char *, unsigned long, unsigned long));
Xint	csum1 __P((int, unsigned long *, unsigned long *));
Xint	csum2 __P((int, unsigned long *, unsigned long *));
X__END_DECLS
END_OF_FILE
if test 2250 -ne `wc -c <'cksum/extern.h'`; then
    echo shar: \"'cksum/extern.h'\" unpacked with wrong size!
fi
# end of 'cksum/extern.h'
fi
if test -f 'cksum/print.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cksum/print.c'\"
else
echo shar: Extracting \"'cksum/print.c'\" \(2325 characters\)
sed "s/^X//" >'cksum/print.c' <<'END_OF_FILE'
X/*-
X * Copyright (c) 1991 The Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X * 1. Redistributions of source code must retain the above copyright
X *    notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X *    notice, this list of conditions and the following disclaimer in the
X *    documentation and/or other materials provided with the distribution.
X * 3. All advertising materials mentioning features or use of this software
X *    must display the following acknowledgement:
X *	This product includes software developed by the University of
X *	California, Berkeley and its contributors.
X * 4. Neither the name of the University nor the names of its contributors
X *    may be used to endorse or promote products derived from this software
X *    without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X */
X
X#ifndef lint
Xstatic char sccsid[] = "@(#)print.c	5.1 (Berkeley) 4/4/91";
X#endif /* not lint */
X
X#include <sys/types.h>
X#include <stdio.h>
X#include "extern.h"
X
Xvoid
Xpcrc(fn, val, len)
X	char *fn;
X	u_long val, len;
X{
X	(void)printf("%lu %lu %s\n", val, len, fn);
X}
X
Xvoid
Xpsum1(fn, val, len)
X	char *fn;
X	u_long val, len;
X{
X	(void)printf("%lu %lu %s\n", val, (len + 1023) / 1024, fn);
X}
X
Xvoid
Xpsum2(fn, val, len)
X	char *fn;
X	u_long val, len;
X{
X	(void)printf("%lu %lu %s\n", val, (len + 511) / 512, fn);
X}
END_OF_FILE
if test 2325 -ne `wc -c <'cksum/print.c'`; then
    echo shar: \"'cksum/print.c'\" unpacked with wrong size!
fi
# end of 'cksum/print.c'
fi
if test -f 'cksum/sum1.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cksum/sum1.c'\"
else
echo shar: Extracting \"'cksum/sum1.c'\" \(2482 characters\)
sed "s/^X//" >'cksum/sum1.c' <<'END_OF_FILE'
X/*-
X * Copyright (c) 1991 The Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X * 1. Redistributions of source code must retain the above copyright
X *    notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X *    notice, this list of conditions and the following disclaimer in the
X *    documentation and/or other materials provided with the distribution.
X * 3. All advertising materials mentioning features or use of this software
X *    must display the following acknowledgement:
X *	This product includes software developed by the University of
X *	California, Berkeley and its contributors.
X * 4. Neither the name of the University nor the names of its contributors
X *    may be used to endorse or promote products derived from this software
X *    without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X */
X
X#ifndef lint
Xstatic char sccsid[] = "@(#)sum1.c	5.1 (Berkeley) 4/4/91";
X#endif /* not lint */
X
X#include <sys/types.h>
X#include <unistd.h>
X
Xcsum1(fd, cval, clen)
X	register int fd;
X	u_long *cval, *clen;
X{
X	register u_long total;
X	register int nr;
X	register u_int crc;
X	register u_char *p;
X	u_char buf[8192];
X
X	/*
X	 * 16-bit checksum, rotating right before each addition;
X	 * overflow is discarded.
X	 */
X	crc = total = 0;
X	while ((nr = read(fd, buf, sizeof(buf))) > 0)
X		for (total += nr, p = buf; nr--; ++p) {
X			if (crc & 1)
X				crc |= 0x10000;
X			crc = ((crc >> 1) + *p) & 0xffff;
X		}
X	if (nr < 0)
X		return(1);
X
X	*cval = crc;
X	*clen = total;
X	return(0);
X}
END_OF_FILE
if test 2482 -ne `wc -c <'cksum/sum1.c'`; then
    echo shar: \"'cksum/sum1.c'\" unpacked with wrong size!
fi
# end of 'cksum/sum1.c'
fi
if test -f 'cksum/sum2.c' -a "${1}" != "-c" ; then 
  echo shar: Will not clobber existing file \"'cksum/sum2.c'\"
else
echo shar: Extracting \"'cksum/sum2.c'\" \(2519 characters\)
sed "s/^X//" >'cksum/sum2.c' <<'END_OF_FILE'
X/*-
X * Copyright (c) 1991 The Regents of the University of California.
X * All rights reserved.
X *
X * Redistribution and use in source and binary forms, with or without
X * modification, are permitted provided that the following conditions
X * are met:
X * 1. Redistributions of source code must retain the above copyright
X *    notice, this list of conditions and the following disclaimer.
X * 2. Redistributions in binary form must reproduce the above copyright
X *    notice, this list of conditions and the following disclaimer in the
X *    documentation and/or other materials provided with the distribution.
X * 3. All advertising materials mentioning features or use of this software
X *    must display the following acknowledgement:
X *	This product includes software developed by the University of
X *	California, Berkeley and its contributors.
X * 4. Neither the name of the University nor the names of its contributors
X *    may be used to endorse or promote products derived from this software
X *    without specific prior written permission.
X *
X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
X * SUCH DAMAGE.
X */
X
X#ifndef lint
Xstatic char sccsid[] = "@(#)sum2.c	5.1 (Berkeley) 4/4/91";
X#endif /* not lint */
X
X#include <sys/types.h>
X#include <unistd.h>
X
Xcsum2(fd, cval, clen)
X	register int fd;
X	u_long *cval, *clen;
X{
X	register u_long crc, total;
X	register int nr;
X	register u_char *p;
X	u_char buf[8192];
X
X	/*
X	 * Draft 8 POSIX 1003.2:
X	 *
X	 *   s = sum of all bytes
X	 *   r = s % 2^16 + (s % 2^32) / 2^16
X	 * crc = (r % 2^16) + r / 2^16
X	 */
X	crc = total = 0;
X	while ((nr = read(fd, buf, sizeof(buf))) > 0)
X		for (total += nr, p = buf; nr--; ++p)
X			crc += *p;
X	if (nr < 0)
X		return(1);
X
X	crc = (crc & 0xffff) + (crc >> 16);
X	crc = (crc & 0xffff) + (crc >> 16);
X
X	*cval = crc;
X	*clen = total;
X	return(0);
X}
END_OF_FILE
if test 2519 -ne `wc -c <'cksum/sum2.c'`; then
    echo shar: \"'cksum/sum2.c'\" unpacked with wrong size!
fi
# end of 'cksum/sum2.c'
fi
echo shar: End of archive 1 \(of 1\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have the archive.
    rm -f ark[1-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0