[hackers] [sbase] Add mandoc-manpage for head(1) and clean up code || FRIGN

From: <git_AT_suckless.org>
Date: Sun, 25 Jan 2015 22:08:59 +0100 (CET)

commit 03b58716cfe9028f18b2731f8b90abeb7b3858b7
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 Sun Jan 25 2015 - 22:08:59 CET

This archive was generated by hypermail 2.3.0 : Sun Jan 25 2015 - 22:12:11 CET