- initial checkin as submitted by Dave Tribby

- renamed makefile.mk to Makefile
This commit is contained in:
gdr 1997-09-17 05:43:50 +00:00
parent c1fa42d03c
commit 0acddc1899
5 changed files with 392 additions and 0 deletions

9
bin/head/Makefile Normal file
View File

@ -0,0 +1,9 @@
#
# This makefile is intended for use with dmake(1) on Apple IIGS
#
# Created by Dave Tribby, July 1997
# Program name
PROG= head
.INCLUDE : <gno.prog.mk>

85
bin/head/head.1 Normal file
View File

@ -0,0 +1,85 @@
.\" Copyright (c) 1980, 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. All advertising materials mentioning features or use of this software
.\" must display the following acknowledgement:
.\" This product includes software developed by the University of
.\" California, Berkeley and its contributors.
.\" 4. 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.
.\"
.\" @(#)head.1 2.0 (GNO) 8/1/97
.\"
.TH HEAD 1 "August 1997" "GNO" "Commands and Applications"
.SH NAME
.BR head
\- display first lines of a file
.SH SYNOPSIS
.BR head
.RB [ -n
.IR count " |"
.BI "-c " bytes
.RI "] " file ...
.SS Obsolescent:
.BR head " ["
.BI - count
.RI "] [" file ...]
.SH DESCRIPTION
This filter displays the first
.I count
lines or
.I bytes
of each of the specified
.IR file s,
or of the standard input if no
.IR file s
are specified.
If
.I count
is omitted it defaults to 10.
.LP
If more than a single
.I file
is specified, each
.I file
is preceded by a header consisting of the string
.B "==> XXX <=="
where
.B XXX
is the name of the file.
.LP
The
.BR head
utility exits 0 on success, and >0 if an error occurs.
.SH OPTIONS
.RS
.IP \fB-n \fIlines\fR
Print the indicated number of lines.
.IP \fB-c \fIbytes\fR
Print the indicated number of characters.
.SH ATTRIBUTIONS
This command was ported from FreeBSD source code
for distribution with GNO/ME 2.0.6.
.SH SEE ALSO
.BR tail (1)

260
bin/head/head.c Normal file
View File

@ -0,0 +1,260 @@
/*
* Copyright (c) 1980, 1987, 1992, 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. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. 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.
*/
/*
* Modified for GNO (Apple IIGS) by Dave Tribby, July 1997
*
* Constructs unacceptable to compiler are replaced using #ifndef __ORCAC__
*
* Changes not related to compiler are replaced using #ifndef __GNO__
*
* Added prototyped headers, surrounded by #ifndef __STDC__
*/
#ifndef __GNO__
#ifndef lint
static const char copyright[] =
"@(#) Copyright (c) 1980, 1987, 1992, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
#if 0
static char sccsid[] = "@(#)head.c 8.2 (Berkeley) 5/4/95";
#endif
static const char rcsid[] =
"$Id: head.c,v 1.1 1997/09/17 05:43:50 gdr Exp $";
#endif /* not lint */
#endif
#include <sys/types.h>
#include <ctype.h>
#include <err.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
/*
* head - give the first few lines of a stream or of each of a set of files
*
* Bill Joy UCB August 24, 1977
*/
void head __P((FILE *, int));
void head_bytes __P((FILE *, int));
void obsolete __P((char *[]));
void usage __P((void));
int eval;
/* Interface to check on how much stack space a C program uses. */
#if defined(__GNO__) && defined(__STACK_CHECK__)
#ifndef _STDLIB_H_
#include <stdlib.h>
#endif
extern void begin_stack_check(void);
extern int end_stack_check(void);
static void report_stack(void)
{
fprintf(stderr,"\n ==> %d stack bytes used <== \n", end_stack_check());
}
#endif
int
#ifndef __STDC__
main(argc, argv)
int argc;
char *argv[];
#else
main(int argc, char *argv[])
#endif
{
register int ch;
FILE *fp;
int first, linecnt = -1, bytecnt = -1;
char *ep;
#if defined(__GNO__) && defined(__STACK_CHECK__)
begin_stack_check();
atexit(report_stack);
#endif
obsolete(argv);
while ((ch = getopt(argc, argv, "n:c:")) != -1)
switch(ch) {
case 'c':
bytecnt = strtol(optarg, &ep, 10);
if (*ep || bytecnt <= 0)
errx(1, "illegal byte count -- %s", optarg);
break;
case 'n':
linecnt = strtol(optarg, &ep, 10);
if (*ep || linecnt <= 0)
errx(1, "illegal line count -- %s", optarg);
break;
case '?':
default:
usage();
}
argc -= optind;
#ifndef __ORCAC__
argv += optind;
#else
/* ORCA/C 2.1 compiler cannot handle += on pointer */
argv = argv + optind;
#endif
if (linecnt != -1 && bytecnt != -1)
errx(1, "can't combine line and byte counts");
if (linecnt == -1 )
linecnt = 10;
if (*argv) {
for (first = 1; *argv; ++argv) {
if ((fp = fopen(*argv, "r")) == NULL) {
warn("%s", *argv);
eval = 1;
continue;
}
if (argc > 1) {
(void)printf("%s==> %s <==\n",
first ? "" : "\n", *argv);
first = 0;
}
if (bytecnt == -1)
head(fp, linecnt);
else
head_bytes(fp, bytecnt);
(void)fclose(fp);
}
}
else if (bytecnt == -1)
head(stdin, linecnt);
else
head_bytes(stdin, bytecnt);
exit(eval);
}
void
#ifndef __STDC__
head(fp, cnt)
FILE *fp;
register int cnt;
#else
head(FILE *fp, register int cnt)
#endif
{
register int ch;
while (cnt && (ch = getc(fp)) != EOF) {
if (putchar(ch) == EOF)
err(1, "stdout");
if (ch == '\n')
cnt--;
}
}
void
#ifndef __STDC__
head_bytes(fp, cnt)
FILE *fp;
register int cnt;
#else
head_bytes(FILE *fp, register int cnt)
#endif
{
#ifndef __GNO__
char buf[4096];
#else
/* Cannot handle 4096 bytes on stack. Since head_bytes is */
/* non-recursive, make it a static array. DMT */
static char buf[4096];
#endif
register int readlen;
while (cnt) {
if (cnt < sizeof(buf))
readlen = cnt;
else
readlen = sizeof(buf);
readlen = fread(buf, sizeof(char), readlen, fp);
if (readlen == EOF)
break;
if (fwrite(buf, sizeof(char), readlen, stdout) != readlen)
err(1, "stdout");
cnt -= readlen;
}
}
void
#ifndef __STDC__
obsolete(argv)
char *argv[];
#else
obsolete(char *argv[])
#endif
{
char *ap;
while ((ap = *++argv)) {
/* Return if "--" or not "-[0-9]*". */
if (ap[0] != '-' || ap[1] == '-' || !isdigit(ap[1]))
return;
if ((ap = malloc(strlen(*argv) + 2)) == NULL)
err(1, NULL);
ap[0] = '-';
ap[1] = 'n';
(void)strcpy(ap + 2, *argv + 1);
*argv = ap;
}
}
void
#ifndef __STDC__
usage()
#else
usage(void)
#endif
{
#ifndef __GNO__
(void)fprintf(stderr, "usage: head [-n lines] [-c bytes] [file ...]\n");
#else
/* Show -n and -c as exclusive, and add obsolescent format (DMT) */
(void)fprintf(stderr, "usage: head [-n lines | -c bytes] [file ...]\n");
(void)fprintf(stderr, " head [-count] [file ...]\n");
#endif
exit(1);
}

9
bin/head/head.desc Normal file
View File

@ -0,0 +1,9 @@
Name: head
Version: 2.0 (August 1997)
Shell: GNO
Author: Dave Tribby (from FreeBSD code)
Contact: tribby@cup.hp.com
Where: /bin/head
FTP: ground.isca.uiowa.edu apple2.caltech.edu trenco.myrias.com
Print the first part of a file.

29
bin/head/head.rez Normal file
View File

@ -0,0 +1,29 @@
/*
* Resources for version and comment
*/
#define PROG "head"
#define DESC "Print the first part of a file."
#include "Types.rez"
/*
* Version
*/
resource rVersion (1, purgeable3) {
{ 2, 0, 0, /* Version 2.0.0 */
release, /* development|alpha|beta|final|release */
0 }, /* non-final release number */
verUS, /* Country */
PROG, /* Program name */
DESC " Released with GNO/ME."
};
/*
* Comment
*/
resource rComment (1, purgeable3) {
PROG " v2.0 (August 1997)\n"
"GNO utility: " DESC "\n"
"Ported from FreeBSD code by Dave Tribby."
};