Path: utzoo!attcan!uunet!husc6!mailrus!ames!pacbell!att!ucbvax!OKEEFFE.BERKELEY.EDU!bostic From: bostic@OKEEFFE.BERKELEY.EDU (Keith Bostic) Newsgroups: comp.sys.tahoe Subject: Re: Need utils: head,yes,& nroff (-man) for SysV2 (CCI 2.21or2.22) Message-ID: <8807011611.AA29135@okeeffe.Berkeley.EDU> Date: 1 Jul 88 16:11:20 GMT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 97 The BSD version of head(1), while not PD, is freely redistributable. And has just recently been cleaned up. Enjoy. Forget about sed. --keith # 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: # # head.c # echo x - head.c sed 's/^X//' >head.c << 'END-of-head.c' X/* X * Copyright (c) 1980, 1987 Regents of the University of California. X * All rights reserved. X * X * Redistribution and use in source and binary forms are permitted X * provided that the above copyright notice and this paragraph are X * duplicated in all such forms and that any documentation, X * advertising materials, and other materials related to such X * distribution and use acknowledge that the software was developed X * by the University of California, Berkeley. The name of the X * University may not be used to endorse or promote products derived X * from this software without specific prior written permission. X * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR X * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED X * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. X */ X X#ifndef lint Xchar copyright[] = X"@(#) Copyright (c) 1980, 1987 Regents of the University of California.\n\ X All rights reserved.\n"; X#endif /* not lint */ X X#ifndef lint Xstatic char sccsid[] = "@(#)head.c 5.4 (Berkeley) 6/29/88"; X#endif /* not lint */ X X#include X#include X/* X * head - give the first few lines of a stream or of each of a set of files X * X * Bill Joy UCB August 24, 1977 X */ X Xmain(argc, argv) X int argc; X char **argv; X{ X register int ch, cnt; X int firsttime, linecnt = 10; X X if (argc > 1 && argv[1][0] == '-') { X if (!isdigit(argv[1][1])) { X fprintf(stderr, "head: illegal option -- %c\n", argv[1][1]); X goto usage; X } X if ((linecnt = atoi(argv[1] + 1)) < 0) { Xusage: fputs("usage: head [-line_count] [file ...]\n", stderr); X exit(1); X } X --argc; ++argv; X } X /* setlinebuf(stdout); */ X for (firsttime = 1, --argc, ++argv;; firsttime = 0) { X if (!*argv) { X if (!firsttime) X exit(0); X } X else { X if (!freopen(*argv, "r", stdin)) { X fprintf(stderr, "head: can't read %s.\n", *argv); X exit(1); X } X if (argc > 1) { X if (!firsttime) X putchar('\n'); X printf("==> %s <==\n", *argv); X } X ++argv; X } X for (cnt = linecnt; cnt; --cnt) X while ((ch = getchar()) != EOF) X if (putchar(ch) == '\n') X break; X } X /*NOTREACHED*/ X} END-of-head.c exit