home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #16 / NN_1992_16.iso / spool / comp / unix / bsd / 2633 < prev    next >
Encoding:
Text File  |  1992-07-22  |  26.7 KB  |  700 lines

  1. Newsgroups: comp.unix.bsd
  2. Path: sparky!uunet!gatech!udel!louie!udel.edu!neal
  3. From: neal@neal.ctd.comsat.com (Neal Becker)
  4. Subject: Sources for cksum
  5. Message-ID: <NEAL.92Jul22162831@neal.ctd.comsat.com>
  6. Sender: usenet@udel.edu (USENET News Service)
  7. Nntp-Posting-Host: neal.ctd.comsat.com
  8. Organization: COMSAT Labs
  9. Date: Wed, 22 Jul 1992 21:28:31 GMT
  10. Lines: 688
  11.  
  12. Here are the extracted sources for cksum.  You will probably need to
  13. modify this on most systems.  But for what its worth...
  14. #! /bin/sh
  15. # This is a shell archive.  Remove anything before this line, then unpack
  16. # it by saving it into a file and typing "sh file".  To overwrite existing
  17. # files, type "sh file -c".  You can also feed this as standard input via
  18. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  19. # will see the following message at the end:
  20. #        "End of archive 1 (of 1)."
  21. # Contents:  cksum cksum/cdefs.h cksum/cksum.c cksum/crc.c
  22. #   cksum/extern.h cksum/print.c cksum/sum1.c cksum/sum2.c
  23. # Wrapped by neal@neal on Wed Jul 22 16:25:53 1992
  24. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  25. if test ! -d 'cksum' ; then
  26.     echo shar: Creating directory \"'cksum'\"
  27.     mkdir 'cksum'
  28. fi
  29. if test -f 'cksum/cdefs.h' -a "${1}" != "-c" ; then 
  30.   echo shar: Will not clobber existing file \"'cksum/cdefs.h'\"
  31. else
  32. echo shar: Extracting \"'cksum/cdefs.h'\" \(3074 characters\)
  33. sed "s/^X//" >'cksum/cdefs.h' <<'END_OF_FILE'
  34. X/*
  35. X * Copyright (c) 1991 The Regents of the University of California.
  36. X * All rights reserved.
  37. X *
  38. X * Redistribution and use in source and binary forms, with or without
  39. X * modification, are permitted provided that the following conditions
  40. X * are met:
  41. X * 1. Redistributions of source code must retain the above copyright
  42. X *    notice, this list of conditions and the following disclaimer.
  43. X * 2. Redistributions in binary form must reproduce the above copyright
  44. X *    notice, this list of conditions and the following disclaimer in the
  45. X *    documentation and/or other materials provided with the distribution.
  46. X * 3. All advertising materials mentioning features or use of this software
  47. X *    must display the following acknowledgement:
  48. X *    This product includes software developed by the University of
  49. X *    California, Berkeley and its contributors.
  50. X * 4. Neither the name of the University nor the names of its contributors
  51. X *    may be used to endorse or promote products derived from this software
  52. X *    without specific prior written permission.
  53. X *
  54. X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  55. X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  56. X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  57. X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  58. X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  59. X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  60. X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  61. X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  62. X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  63. X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  64. X * SUCH DAMAGE.
  65. X *
  66. X *    @(#)cdefs.h    7.6 (Berkeley) 5/4/91
  67. X */
  68. X
  69. X#ifndef    _CDEFS_H_
  70. X#define    _CDEFS_H_
  71. X
  72. X#if defined(__cplusplus)
  73. X#define    __BEGIN_DECLS    extern "C" {
  74. X#define    __END_DECLS    };
  75. X#else
  76. X#define    __BEGIN_DECLS
  77. X#define    __END_DECLS
  78. X#endif
  79. X
  80. X/*
  81. X * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
  82. X * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
  83. X * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
  84. X * in between its arguments.  __CONCAT can also concatenate double-quoted
  85. X * strings produced by the __STRING macro, but this only works with ANSI C.
  86. X */
  87. X#if defined(__STDC__) || defined(__cplusplus)
  88. X#define    __P(protos)    protos        /* full-blown ANSI C */
  89. X#define    __CONCAT(x,y)    x ## y
  90. X#define    __STRING(x)    #x
  91. X
  92. X#else    /* !(__STDC__ || __cplusplus) */
  93. X#define    __P(protos)    ()        /* traditional C preprocessor */
  94. X#define    __CONCAT(x,y)    x/**/y
  95. X#define    __STRING(x)    "x"
  96. X
  97. X#ifdef __GNUC__
  98. X#define    const        __const        /* GCC: ANSI C with -traditional */
  99. X#define    inline        __inline
  100. X#define    signed        __signed
  101. X#define    volatile    __volatile
  102. X
  103. X#else    /* !__GNUC__ */
  104. X#define    const                /* delete ANSI C keywords */
  105. X#define    inline
  106. X#define    signed
  107. X#define    volatile
  108. X#endif    /* !__GNUC__ */
  109. X#endif    /* !(__STDC__ || __cplusplus) */
  110. X
  111. X#endif /* !_CDEFS_H_ */
  112. END_OF_FILE
  113. if test 3074 -ne `wc -c <'cksum/cdefs.h'`; then
  114.     echo shar: \"'cksum/cdefs.h'\" unpacked with wrong size!
  115. fi
  116. # end of 'cksum/cdefs.h'
  117. fi
  118. if test -f 'cksum/cksum.c' -a "${1}" != "-c" ; then 
  119.   echo shar: Will not clobber existing file \"'cksum/cksum.c'\"
  120. else
  121. echo shar: Extracting \"'cksum/cksum.c'\" \(3578 characters\)
  122. sed "s/^X//" >'cksum/cksum.c' <<'END_OF_FILE'
  123. X/*-
  124. X * Copyright (c) 1991 The Regents of the University of California.
  125. X * All rights reserved.
  126. X *
  127. X * This code is derived from software contributed to Berkeley by
  128. X * James W. Williams of the University of Maryland.
  129. X *
  130. X * Redistribution and use in source and binary forms, with or without
  131. X * modification, are permitted provided that the following conditions
  132. X * are met:
  133. X * 1. Redistributions of source code must retain the above copyright
  134. X *    notice, this list of conditions and the following disclaimer.
  135. X * 2. Redistributions in binary form must reproduce the above copyright
  136. X *    notice, this list of conditions and the following disclaimer in the
  137. X *    documentation and/or other materials provided with the distribution.
  138. X * 3. All advertising materials mentioning features or use of this software
  139. X *    must display the following acknowledgement:
  140. X *    This product includes software developed by the University of
  141. X *    California, Berkeley and its contributors.
  142. X * 4. Neither the name of the University nor the names of its contributors
  143. X *    may be used to endorse or promote products derived from this software
  144. X *    without specific prior written permission.
  145. X *
  146. X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  147. X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  148. X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  149. X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  150. X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  151. X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  152. X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  153. X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  154. X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  155. X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  156. X * SUCH DAMAGE.
  157. X */
  158. X
  159. X#ifndef lint
  160. Xchar copyright[] =
  161. X"@(#) Copyright (c) 1991 The Regents of the University of California.\n\
  162. X All rights reserved.\n";
  163. X#endif /* not lint */
  164. X
  165. X#ifndef lint
  166. Xstatic char sccsid[] = "@(#)cksum.c    5.3 (Berkeley) 4/4/91";
  167. X#endif /* not lint */
  168. X
  169. X#include <sys/cdefs.h>
  170. X#include <sys/types.h>
  171. X#include <fcntl.h>
  172. X#include <unistd.h>
  173. X#include <stdio.h>
  174. X#include <errno.h>
  175. X#include <stdlib.h>
  176. X#include <string.h>
  177. X#include "extern.h"
  178. X
  179. Xmain(argc, argv)
  180. X    int argc;
  181. X    char **argv;
  182. X{
  183. X    extern int optind;
  184. X    u_long len, val;
  185. X    register int ch, fd, rval;
  186. X    char *fn;
  187. X    int (*cfncn) __P((int, unsigned long *, unsigned long *));
  188. X    void (*pfncn) __P((char *, unsigned long, unsigned long));
  189. X
  190. X    cfncn = crc;
  191. X    pfncn = pcrc;
  192. X    while ((ch = getopt(argc, argv, "o:")) != EOF)
  193. X        switch(ch) {
  194. X        case 'o':
  195. X            if (*optarg == '1') {
  196. X                cfncn = csum1;
  197. X                pfncn = psum1;
  198. X            } else if (*optarg == '2') {
  199. X                cfncn = csum2;
  200. X                pfncn = psum2;
  201. X            } else {
  202. X                (void)fprintf(stderr,
  203. X                    "cksum: illegal argument to -o option\n");
  204. X                usage();
  205. X            }
  206. X            break;
  207. X        case '?':
  208. X        default:
  209. X            usage();
  210. X        }
  211. X    argc -= optind;
  212. X    argv += optind;
  213. X
  214. X    fd = STDIN_FILENO;
  215. X    fn = "stdin";
  216. X    rval = 0;
  217. X    do {
  218. X        if (*argv) {
  219. X            fn = *argv++;
  220. X            if ((fd = open(fn, O_RDONLY, 0)) < 0) {
  221. X                (void)fprintf(stderr,
  222. X                    "cksum: %s: %s\n", fn, strerror(errno));
  223. X                rval = 1;
  224. X                continue;
  225. X            }
  226. X        }
  227. X        if (cfncn(fd, &val, &len)) {
  228. X            (void)fprintf(stderr,
  229. X                "cksum: %s: %s\n", fn, strerror(errno));
  230. X            rval = 1;
  231. X        } else
  232. X            pfncn(fn, val, len);
  233. X        (void)close(fd);
  234. X    } while (*argv);
  235. X    exit(rval);
  236. X}
  237. X
  238. Xusage()
  239. X{
  240. X    (void)fprintf(stderr, "usage: cksum [-o 1 | 2] [file ...]\n");
  241. X    exit(1);
  242. X}
  243. END_OF_FILE
  244. if test 3578 -ne `wc -c <'cksum/cksum.c'`; then
  245.     echo shar: \"'cksum/cksum.c'\" unpacked with wrong size!
  246. fi
  247. # end of 'cksum/cksum.c'
  248. fi
  249. if test -f 'cksum/crc.c' -a "${1}" != "-c" ; then 
  250.   echo shar: Will not clobber existing file \"'cksum/crc.c'\"
  251. else
  252. echo shar: Extracting \"'cksum/crc.c'\" \(6293 characters\)
  253. sed "s/^X//" >'cksum/crc.c' <<'END_OF_FILE'
  254. X/*-
  255. X * Copyright (c) 1991 The Regents of the University of California.
  256. X * All rights reserved.
  257. X *
  258. X * This code is derived from software contributed to Berkeley by
  259. X * James W. Williams of the University of Maryland.
  260. X *
  261. X * Redistribution and use in source and binary forms, with or without
  262. X * modification, are permitted provided that the following conditions
  263. X * are met:
  264. X * 1. Redistributions of source code must retain the above copyright
  265. X *    notice, this list of conditions and the following disclaimer.
  266. X * 2. Redistributions in binary form must reproduce the above copyright
  267. X *    notice, this list of conditions and the following disclaimer in the
  268. X *    documentation and/or other materials provided with the distribution.
  269. X * 3. All advertising materials mentioning features or use of this software
  270. X *    must display the following acknowledgement:
  271. X *    This product includes software developed by the University of
  272. X *    California, Berkeley and its contributors.
  273. X * 4. Neither the name of the University nor the names of its contributors
  274. X *    may be used to endorse or promote products derived from this software
  275. X *    without specific prior written permission.
  276. X *
  277. X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  278. X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  279. X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  280. X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  281. X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  282. X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  283. X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  284. X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  285. X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  286. X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  287. X * SUCH DAMAGE.
  288. X */
  289. X
  290. X#ifndef lint
  291. Xstatic char sccsid[] = "@(#)crc.c    5.2 (Berkeley) 4/4/91";
  292. X#endif /* not lint */
  293. X
  294. X#include <sys/types.h>
  295. X#include <unistd.h>
  296. X
  297. Xu_long crctab[] = {
  298. X    0x7fffffff,
  299. X    0x77073096,  0xee0e612c,  0x990951ba,  0x076dc419,  0x706af48f,
  300. X    0xe963a535,  0x9e6495a3,  0x0edb8832,  0x79dcb8a4,  0xe0d5e91e,
  301. X    0x97d2d988,  0x09b64c2b,  0x7eb17cbd,  0xe7b82d07,  0x90bf1d91,
  302. X    0x1db71064,  0x6ab020f2,  0xf3b97148,  0x84be41de,  0x1adad47d,
  303. X    0x6ddde4eb,  0xf4d4b551,  0x83d385c7,  0x136c9856,  0x646ba8c0,
  304. X    0xfd62f97a,  0x8a65c9ec,  0x14015c4f,  0x63066cd9,  0xfa0f3d63,
  305. X    0x8d080df5,  0x3b6e20c8,  0x4c69105e,  0xd56041e4,  0xa2677172,
  306. X    0x3c03e4d1,  0x4b04d447,  0xd20d85fd,  0xa50ab56b,  0x35b5a8fa,
  307. X    0x42b2986c,  0xdbbbc9d6,  0xacbcf940,  0x32d86ce3,  0x45df5c75,
  308. X    0xdcd60dcf,  0xabd13d59,  0x26d930ac,  0x51de003a,  0xc8d75180,
  309. X    0xbfd06116,  0x21b4f4b5,  0x56b3c423,  0xcfba9599,  0xb8bda50f,
  310. X    0x2802b89e,  0x5f058808,  0xc60cd9b2,  0xb10be924,  0x2f6f7c87,
  311. X    0x58684c11,  0xc1611dab,  0xb6662d3d,  0x76dc4190,  0x01db7106,
  312. X    0x98d220bc,  0xefd5102a,  0x71b18589,  0x06b6b51f,  0x9fbfe4a5,
  313. X    0xe8b8d433,  0x7807c9a2,  0x0f00f934,  0x9609a88e,  0xe10e9818,
  314. X    0x7f6a0dbb,  0x086d3d2d,  0x91646c97,  0xe6635c01,  0x6b6b51f4,
  315. X    0x1c6c6162,  0x856530d8,  0xf262004e,  0x6c0695ed,  0x1b01a57b,
  316. X    0x8208f4c1,  0xf50fc457,  0x65b0d9c6,  0x12b7e950,  0x8bbeb8ea,
  317. X    0xfcb9887c,  0x62dd1ddf,  0x15da2d49,  0x8cd37cf3,  0xfbd44c65,
  318. X    0x4db26158,  0x3ab551ce,  0xa3bc0074,  0xd4bb30e2,  0x4adfa541,
  319. X    0x3dd895d7,  0xa4d1c46d,  0xd3d6f4fb,  0x4369e96a,  0x346ed9fc,
  320. X    0xad678846,  0xda60b8d0,  0x44042d73,  0x33031de5,  0xaa0a4c5f,
  321. X    0xdd0d7cc9,  0x5005713c,  0x270241aa,  0xbe0b1010,  0xc90c2086,
  322. X    0x5768b525,  0x206f85b3,  0xb966d409,  0xce61e49f,  0x5edef90e,
  323. X    0x29d9c998,  0xb0d09822,  0xc7d7a8b4,  0x59b33d17,  0x2eb40d81,
  324. X    0xb7bd5c3b,  0xc0ba6cad,  0xedb88320,  0x9abfb3b6,  0x03b6e20c,
  325. X    0x74b1d29a,  0xead54739,  0x9dd277af,  0x04db2615,  0x73dc1683,
  326. X    0xe3630b12,  0x94643b84,  0x0d6d6a3e,  0x7a6a5aa8,  0xe40ecf0b,
  327. X    0x9309ff9d,  0x0a00ae27,  0x7d079eb1,  0xf00f9344,  0x8708a3d2,
  328. X    0x1e01f268,  0x6906c2fe,  0xf762575d,  0x806567cb,  0x196c3671,
  329. X    0x6e6b06e7,  0xfed41b76,  0x89d32be0,  0x10da7a5a,  0x67dd4acc,
  330. X    0xf9b9df6f,  0x8ebeeff9,  0x17b7be43,  0x60b08ed5,  0xd6d6a3e8,
  331. X    0xa1d1937e,  0x38d8c2c4,  0x4fdff252,  0xd1bb67f1,  0xa6bc5767,
  332. X    0x3fb506dd,  0x48b2364b,  0xd80d2bda,  0xaf0a1b4c,  0x36034af6,
  333. X    0x41047a60,  0xdf60efc3,  0xa867df55,  0x316e8eef,  0x4669be79,
  334. X    0xcb61b38c,  0xbc66831a,  0x256fd2a0,  0x5268e236,  0xcc0c7795,
  335. X    0xbb0b4703,  0x220216b9,  0x5505262f,  0xc5ba3bbe,  0xb2bd0b28,
  336. X    0x2bb45a92,  0x5cb36a04,  0xc2d7ffa7,  0xb5d0cf31,  0x2cd99e8b,
  337. X    0x5bdeae1d,  0x9b64c2b0,  0xec63f226,  0x756aa39c,  0x026d930a,
  338. X    0x9c0906a9,  0xeb0e363f,  0x72076785,  0x05005713,  0x95bf4a82,
  339. X    0xe2b87a14,  0x7bb12bae,  0x0cb61b38,  0x92d28e9b,  0xe5d5be0d,
  340. X    0x7cdcefb7,  0x0bdbdf21,  0x86d3d2d4,  0xf1d4e242,  0x68ddb3f8,
  341. X    0x1fda836e,  0x81be16cd,  0xf6b9265b,  0x6fb077e1,  0x18b74777,
  342. X    0x88085ae6,  0xff0f6a70,  0x66063bca,  0x11010b5c,  0x8f659eff,
  343. X    0xf862ae69,  0x616bffd3,  0x166ccf45,  0xa00ae278,  0xd70dd2ee,
  344. X    0x4e048354,  0x3903b3c2,  0xa7672661,  0xd06016f7,  0x4969474d,
  345. X    0x3e6e77db,  0xaed16a4a,  0xd9d65adc,  0x40df0b66,  0x37d83bf0,
  346. X    0xa9bcae53,  0xdebb9ec5,  0x47b2cf7f,  0x30b5ffe9,  0xbdbdf21c,
  347. X    0xcabac28a,  0x53b39330,  0x24b4a3a6,  0xbad03605,  0xcdd70693,
  348. X    0x54de5729,  0x23d967bf,  0xb3667a2e,  0xc4614ab8,  0x5d681b02,
  349. X    0x2a6f2b94,  0xb40bbe37,  0xc30c8ea1,  0x5a05df1b,  0x2d02ef8d
  350. X};
  351. X
  352. X/*
  353. X * crc --
  354. X *    Compute a POSIX.2 checksum.  This routine has been broken out since
  355. X *    it is anticipated that other programs will use it.  It takes a file
  356. X *    descriptor to read from and locations to store the crc and the number
  357. X *    of bytes read.  It returns 0 on success and 1 on failure.  Errno is
  358. X *    set on failure.
  359. X */
  360. Xcrc(fd, cval, clen)
  361. X    register int fd;
  362. X    u_long *cval, *clen;
  363. X{
  364. X    register int i, nr, step;
  365. X    register u_char *p;
  366. X    register u_long crc, total;
  367. X    u_char buf[8192];
  368. X
  369. X    crc = step = total = 0;
  370. X    while ((nr = read(fd, buf, sizeof(buf))) > 0)
  371. X        for (total += nr, p = buf; nr--; ++p) {
  372. X            if (!(i = crc >> 24 ^ *p)) {
  373. X                i = step++;
  374. X                if (step >= sizeof(crctab)/sizeof(crctab[0]))
  375. X                    step = 0;
  376. X            }
  377. X            crc = (crc << 8) ^ crctab[i];
  378. X        }
  379. X    if (nr < 0)
  380. X        return(1);
  381. X
  382. X    *cval = crc & 0xffffffff;        /* Mask to 32 bits. */
  383. X    *clen = total;
  384. X    return(0);
  385. X}
  386. END_OF_FILE
  387. if test 6293 -ne `wc -c <'cksum/crc.c'`; then
  388.     echo shar: \"'cksum/crc.c'\" unpacked with wrong size!
  389. fi
  390. # end of 'cksum/crc.c'
  391. fi
  392. if test -f 'cksum/extern.h' -a "${1}" != "-c" ; then 
  393.   echo shar: Will not clobber existing file \"'cksum/extern.h'\"
  394. else
  395. echo shar: Extracting \"'cksum/extern.h'\" \(2250 characters\)
  396. sed "s/^X//" >'cksum/extern.h' <<'END_OF_FILE'
  397. X/*-
  398. X * Copyright (c) 1991 The Regents of the University of California.
  399. X * All rights reserved.
  400. X *
  401. X * Redistribution and use in source and binary forms, with or without
  402. X * modification, are permitted provided that the following conditions
  403. X * are met:
  404. X * 1. Redistributions of source code must retain the above copyright
  405. X *    notice, this list of conditions and the following disclaimer.
  406. X * 2. Redistributions in binary form must reproduce the above copyright
  407. X *    notice, this list of conditions and the following disclaimer in the
  408. X *    documentation and/or other materials provided with the distribution.
  409. X * 3. All advertising materials mentioning features or use of this software
  410. X *    must display the following acknowledgement:
  411. X *    This product includes software developed by the University of
  412. X *    California, Berkeley and its contributors.
  413. X * 4. Neither the name of the University nor the names of its contributors
  414. X *    may be used to endorse or promote products derived from this software
  415. X *    without specific prior written permission.
  416. X *
  417. X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  418. X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  419. X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  420. X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  421. X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  422. X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  423. X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  424. X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  425. X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  426. X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  427. X * SUCH DAMAGE.
  428. X *
  429. X *    @(#)extern.h    5.1 (Berkeley) 4/4/91
  430. X */
  431. X
  432. X#include <sys/cdefs.h>
  433. X
  434. X__BEGIN_DECLS
  435. Xint    crc __P((int, unsigned long *, unsigned long *));
  436. Xvoid    pcrc __P((char *, unsigned long, unsigned long));
  437. Xvoid    psum1 __P((char *, unsigned long, unsigned long));
  438. Xvoid    psum2 __P((char *, unsigned long, unsigned long));
  439. Xint    csum1 __P((int, unsigned long *, unsigned long *));
  440. Xint    csum2 __P((int, unsigned long *, unsigned long *));
  441. X__END_DECLS
  442. END_OF_FILE
  443. if test 2250 -ne `wc -c <'cksum/extern.h'`; then
  444.     echo shar: \"'cksum/extern.h'\" unpacked with wrong size!
  445. fi
  446. # end of 'cksum/extern.h'
  447. fi
  448. if test -f 'cksum/print.c' -a "${1}" != "-c" ; then 
  449.   echo shar: Will not clobber existing file \"'cksum/print.c'\"
  450. else
  451. echo shar: Extracting \"'cksum/print.c'\" \(2325 characters\)
  452. sed "s/^X//" >'cksum/print.c' <<'END_OF_FILE'
  453. X/*-
  454. X * Copyright (c) 1991 The Regents of the University of California.
  455. X * All rights reserved.
  456. X *
  457. X * Redistribution and use in source and binary forms, with or without
  458. X * modification, are permitted provided that the following conditions
  459. X * are met:
  460. X * 1. Redistributions of source code must retain the above copyright
  461. X *    notice, this list of conditions and the following disclaimer.
  462. X * 2. Redistributions in binary form must reproduce the above copyright
  463. X *    notice, this list of conditions and the following disclaimer in the
  464. X *    documentation and/or other materials provided with the distribution.
  465. X * 3. All advertising materials mentioning features or use of this software
  466. X *    must display the following acknowledgement:
  467. X *    This product includes software developed by the University of
  468. X *    California, Berkeley and its contributors.
  469. X * 4. Neither the name of the University nor the names of its contributors
  470. X *    may be used to endorse or promote products derived from this software
  471. X *    without specific prior written permission.
  472. X *
  473. X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  474. X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  475. X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  476. X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  477. X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  478. X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  479. X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  480. X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  481. X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  482. X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  483. X * SUCH DAMAGE.
  484. X */
  485. X
  486. X#ifndef lint
  487. Xstatic char sccsid[] = "@(#)print.c    5.1 (Berkeley) 4/4/91";
  488. X#endif /* not lint */
  489. X
  490. X#include <sys/types.h>
  491. X#include <stdio.h>
  492. X#include "extern.h"
  493. X
  494. Xvoid
  495. Xpcrc(fn, val, len)
  496. X    char *fn;
  497. X    u_long val, len;
  498. X{
  499. X    (void)printf("%lu %lu %s\n", val, len, fn);
  500. X}
  501. X
  502. Xvoid
  503. Xpsum1(fn, val, len)
  504. X    char *fn;
  505. X    u_long val, len;
  506. X{
  507. X    (void)printf("%lu %lu %s\n", val, (len + 1023) / 1024, fn);
  508. X}
  509. X
  510. Xvoid
  511. Xpsum2(fn, val, len)
  512. X    char *fn;
  513. X    u_long val, len;
  514. X{
  515. X    (void)printf("%lu %lu %s\n", val, (len + 511) / 512, fn);
  516. X}
  517. END_OF_FILE
  518. if test 2325 -ne `wc -c <'cksum/print.c'`; then
  519.     echo shar: \"'cksum/print.c'\" unpacked with wrong size!
  520. fi
  521. # end of 'cksum/print.c'
  522. fi
  523. if test -f 'cksum/sum1.c' -a "${1}" != "-c" ; then 
  524.   echo shar: Will not clobber existing file \"'cksum/sum1.c'\"
  525. else
  526. echo shar: Extracting \"'cksum/sum1.c'\" \(2482 characters\)
  527. sed "s/^X//" >'cksum/sum1.c' <<'END_OF_FILE'
  528. X/*-
  529. X * Copyright (c) 1991 The Regents of the University of California.
  530. X * All rights reserved.
  531. X *
  532. X * Redistribution and use in source and binary forms, with or without
  533. X * modification, are permitted provided that the following conditions
  534. X * are met:
  535. X * 1. Redistributions of source code must retain the above copyright
  536. X *    notice, this list of conditions and the following disclaimer.
  537. X * 2. Redistributions in binary form must reproduce the above copyright
  538. X *    notice, this list of conditions and the following disclaimer in the
  539. X *    documentation and/or other materials provided with the distribution.
  540. X * 3. All advertising materials mentioning features or use of this software
  541. X *    must display the following acknowledgement:
  542. X *    This product includes software developed by the University of
  543. X *    California, Berkeley and its contributors.
  544. X * 4. Neither the name of the University nor the names of its contributors
  545. X *    may be used to endorse or promote products derived from this software
  546. X *    without specific prior written permission.
  547. X *
  548. X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  549. X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  550. X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  551. X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  552. X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  553. X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  554. X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  555. X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  556. X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  557. X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  558. X * SUCH DAMAGE.
  559. X */
  560. X
  561. X#ifndef lint
  562. Xstatic char sccsid[] = "@(#)sum1.c    5.1 (Berkeley) 4/4/91";
  563. X#endif /* not lint */
  564. X
  565. X#include <sys/types.h>
  566. X#include <unistd.h>
  567. X
  568. Xcsum1(fd, cval, clen)
  569. X    register int fd;
  570. X    u_long *cval, *clen;
  571. X{
  572. X    register u_long total;
  573. X    register int nr;
  574. X    register u_int crc;
  575. X    register u_char *p;
  576. X    u_char buf[8192];
  577. X
  578. X    /*
  579. X     * 16-bit checksum, rotating right before each addition;
  580. X     * overflow is discarded.
  581. X     */
  582. X    crc = total = 0;
  583. X    while ((nr = read(fd, buf, sizeof(buf))) > 0)
  584. X        for (total += nr, p = buf; nr--; ++p) {
  585. X            if (crc & 1)
  586. X                crc |= 0x10000;
  587. X            crc = ((crc >> 1) + *p) & 0xffff;
  588. X        }
  589. X    if (nr < 0)
  590. X        return(1);
  591. X
  592. X    *cval = crc;
  593. X    *clen = total;
  594. X    return(0);
  595. X}
  596. END_OF_FILE
  597. if test 2482 -ne `wc -c <'cksum/sum1.c'`; then
  598.     echo shar: \"'cksum/sum1.c'\" unpacked with wrong size!
  599. fi
  600. # end of 'cksum/sum1.c'
  601. fi
  602. if test -f 'cksum/sum2.c' -a "${1}" != "-c" ; then 
  603.   echo shar: Will not clobber existing file \"'cksum/sum2.c'\"
  604. else
  605. echo shar: Extracting \"'cksum/sum2.c'\" \(2519 characters\)
  606. sed "s/^X//" >'cksum/sum2.c' <<'END_OF_FILE'
  607. X/*-
  608. X * Copyright (c) 1991 The Regents of the University of California.
  609. X * All rights reserved.
  610. X *
  611. X * Redistribution and use in source and binary forms, with or without
  612. X * modification, are permitted provided that the following conditions
  613. X * are met:
  614. X * 1. Redistributions of source code must retain the above copyright
  615. X *    notice, this list of conditions and the following disclaimer.
  616. X * 2. Redistributions in binary form must reproduce the above copyright
  617. X *    notice, this list of conditions and the following disclaimer in the
  618. X *    documentation and/or other materials provided with the distribution.
  619. X * 3. All advertising materials mentioning features or use of this software
  620. X *    must display the following acknowledgement:
  621. X *    This product includes software developed by the University of
  622. X *    California, Berkeley and its contributors.
  623. X * 4. Neither the name of the University nor the names of its contributors
  624. X *    may be used to endorse or promote products derived from this software
  625. X *    without specific prior written permission.
  626. X *
  627. X * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  628. X * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  629. X * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  630. X * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  631. X * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  632. X * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  633. X * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  634. X * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  635. X * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  636. X * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  637. X * SUCH DAMAGE.
  638. X */
  639. X
  640. X#ifndef lint
  641. Xstatic char sccsid[] = "@(#)sum2.c    5.1 (Berkeley) 4/4/91";
  642. X#endif /* not lint */
  643. X
  644. X#include <sys/types.h>
  645. X#include <unistd.h>
  646. X
  647. Xcsum2(fd, cval, clen)
  648. X    register int fd;
  649. X    u_long *cval, *clen;
  650. X{
  651. X    register u_long crc, total;
  652. X    register int nr;
  653. X    register u_char *p;
  654. X    u_char buf[8192];
  655. X
  656. X    /*
  657. X     * Draft 8 POSIX 1003.2:
  658. X     *
  659. X     *   s = sum of all bytes
  660. X     *   r = s % 2^16 + (s % 2^32) / 2^16
  661. X     * crc = (r % 2^16) + r / 2^16
  662. X     */
  663. X    crc = total = 0;
  664. X    while ((nr = read(fd, buf, sizeof(buf))) > 0)
  665. X        for (total += nr, p = buf; nr--; ++p)
  666. X            crc += *p;
  667. X    if (nr < 0)
  668. X        return(1);
  669. X
  670. X    crc = (crc & 0xffff) + (crc >> 16);
  671. X    crc = (crc & 0xffff) + (crc >> 16);
  672. X
  673. X    *cval = crc;
  674. X    *clen = total;
  675. X    return(0);
  676. X}
  677. END_OF_FILE
  678. if test 2519 -ne `wc -c <'cksum/sum2.c'`; then
  679.     echo shar: \"'cksum/sum2.c'\" unpacked with wrong size!
  680. fi
  681. # end of 'cksum/sum2.c'
  682. fi
  683. echo shar: End of archive 1 \(of 1\).
  684. cp /dev/null ark1isdone
  685. MISSING=""
  686. for I in 1 ; do
  687.     if test ! -f ark${I}isdone ; then
  688.     MISSING="${MISSING} ${I}"
  689.     fi
  690. done
  691. if test "${MISSING}" = "" ; then
  692.     echo You have the archive.
  693.     rm -f ark[1-9]isdone
  694. else
  695.     echo You still need to unpack the following archives:
  696.     echo "        " ${MISSING}
  697. fi
  698. ##  End of shell archive.
  699. exit 0
  700.