[hackers] [sbase] Add mandoc-manpage for head(1) and clean up code || FRIGN
commit 741d8c9a76d103da86395c1c6a0e817d780ad4a7
Author: FRIGN <dev_AT_frign.de>
Date: Sun Jan 25 22:01:26 2015 +0100
Add mandoc-manpage for head(1) and clean up code
and mark it as finished in the README.
diff --git a/README b/README
index 7f923d1..1a6c9bd 100644
--- a/README
+++ b/README
_AT_@ -33,7 +33,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support,
=* false yes none
#* fold yes none
=* grep yes none
- head yes none
+=* head yes none
= hostname non-posix none
=* kill yes none
= link yes none
diff --git a/head.1 b/head.1
index 6b26fc6..fb29278 100644
--- a/head.1
+++ b/head.1
_AT_@ -1,18 +1,43 @@
-.TH HEAD 1 sbase\-VERSION
-.SH NAME
-head \- output first part of files
-.SH SYNOPSIS
-.B head
-.RB [ \-n
-.IR lines ]
-.RI [ file ...]
-.SH DESCRIPTION
-.B head
-writes the first 10 lines of each file to stdout. If no file is given, head
+.Dd January 25, 2015
+.Dt HEAD 1 sbase\-VERSION
+.Sh NAME
+.Nm head
+.Nd display initial lines of files
+.Sh SYNOPSIS
+.Nm head
+.Op Fl n Ar num
+.Op Fl N
+.Op Ar file ...
+.Sh DESCRIPTION
+.Nm
+writes
+.Ar num
+|
+.Sy N
+lines of each
+.Ar file
+to stdout.
+If no file is given
+.Nm
reads from stdin.
-.SH OPTIONS
-.TP
-.BI \-n " lines"
-outputs the given number of lines.
-.SH SEE ALSO
-.IR tail (1)
+.Sh OPTIONS
+.Bl -tag -width Ds
+.It Fl n Ar num | Fl N
+Display
+.Ar num
+|
+.Sy N
+lines. Default is 10.
+.El
+.Sh SEE ALSO
+.Xr tail 1
+.Sh STANDARDS
+The
+.Nm
+utility is compliant with the
+.St -p1003.1-2008
+specification.
+.Pp
+The
+.Op Fl N
+flag is an extension to that specification.
diff --git a/head.c b/head.c
index f4f6d67..c47fb41 100644
--- a/head.c
+++ b/head.c
_AT_@ -4,15 +4,30 @@
#include <string.h>
#include <unistd.h>
-#include "text.h"
#include "util.h"
-static void head(FILE *, const char *, long);
+static void
+head(FILE *fp, const char *str, long n)
+{
+ char *buf = NULL;
+ size_t size = 0;
+ ssize_t len;
+ unsigned long i = 0;
+
+ while (i < n && ((len = getline(&buf, &size, fp)) != -1)) {
+ fputs(buf, stdout);
+ if (buf[len - 1] == '\n')
+ i++;
+ }
+ free(buf);
+ if (ferror(fp))
+ eprintf("%s: read error:", str);
+}
static void
usage(void)
{
- eprintf("usage: %s [-n lines] [file...]\n", argv0);
+ eprintf("usage: %s [-n lines] [-N] [file...]\n", argv0);
}
int
_AT_@ -54,21 +69,3 @@ main(int argc, char *argv[])
}
return ret;
}
-
-static void
-head(FILE *fp, const char *str, long n)
-{
- char *buf = NULL;
- size_t size = 0;
- ssize_t len;
- unsigned long i = 0;
-
- while (i < n && ((len = getline(&buf, &size, fp)) != -1)) {
- fputs(buf, stdout);
- if (buf[len - 1] == '\n')
- i++;
- }
- free(buf);
- if (ferror(fp))
- eprintf("%s: read error:", str);
-}
Received on Tue Mar 24 2015 - 23:53:17 CET
This archive was generated by hypermail 2.3.0
: Wed Mar 25 2015 - 00:03:49 CET