summaryrefslogtreecommitdiffstats
path: root/usr.bin/ul
diff options
context:
space:
mode:
authorcharnier <charnier@FreeBSD.org>1997-08-20 11:01:59 +0000
committercharnier <charnier@FreeBSD.org>1997-08-20 11:01:59 +0000
commitd2e7017adfac394b475c39572724f946b6a86df9 (patch)
treefc9865fbea532a20cf528b8876834fa9e2958d7e /usr.bin/ul
parentbd01eda0244b21e6c92d63a98bbcd82e256759d1 (diff)
downloadFreeBSD-src-d2e7017adfac394b475c39572724f946b6a86df9.zip
FreeBSD-src-d2e7017adfac394b475c39572724f946b6a86df9.tar.gz
Use err(3), add usage() and prototypes.
Move setmode() to setnewmode() because of a conflict with setmode(2 or 3).
Diffstat (limited to 'usr.bin/ul')
-rw-r--r--usr.bin/ul/ul.12
-rw-r--r--usr.bin/ul/ul.c78
2 files changed, 54 insertions, 26 deletions
diff --git a/usr.bin/ul/ul.1 b/usr.bin/ul/ul.1
index 953dd17..3d525b9 100644
--- a/usr.bin/ul/ul.1
+++ b/usr.bin/ul/ul.1
@@ -56,7 +56,7 @@ If the terminal is incapable of underlining, but is capable of
a standout mode then that is used instead.
If the terminal can overstrike,
or handles underlining automatically,
-.Nm ul
+.Nm
degenerates to
.Xr cat 1 .
If the terminal cannot underline, underlining is ignored.
diff --git a/usr.bin/ul/ul.c b/usr.bin/ul/ul.c
index cf9f9ef..19a74e6 100644
--- a/usr.bin/ul/ul.c
+++ b/usr.bin/ul/ul.c
@@ -32,16 +32,25 @@
*/
#ifndef lint
-static char copyright[] =
+static const char copyright[] =
"@(#) Copyright (c) 1980, 1993\n\
The Regents of the University of California. All rights reserved.\n";
#endif /* not lint */
#ifndef lint
+#if 0
static char sccsid[] = "@(#)ul.c 8.1 (Berkeley) 6/6/93";
+#endif
+static const char rcsid[] =
+ "$Id$";
#endif /* not lint */
+#include <err.h>
#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <termcap.h>
+#include <unistd.h>
#define IESC '\033'
#define SO '\016'
@@ -75,20 +84,30 @@ int halfpos;
int upln;
int iflag;
-int outchar();
+static void usage __P((void));
+void setnewmode __P((int));
+void initcap __P((void));
+void reverse __P((void));
+int outchar __P((int));
+void fwd __P((void));
+void initbuf __P((void));
+void iattr __P((void));
+void overstrike __P((void));
+void flushln __P((void));
+void filter __P((FILE *));
+void outc __P((int));
+
#define PRINT(s) if (s == NULL) /* void */; else tputs(s, 1, outchar)
+void
main(argc, argv)
int argc;
char **argv;
{
- extern int optind;
- extern char *optarg;
int c;
char *termtype;
FILE *f;
char termcap[1024];
- char *getenv(), *strcpy();
termtype = getenv("TERM");
if (termtype == NULL || (argv[0][0] == 'c' && !isatty(1)))
@@ -103,12 +122,8 @@ main(argc, argv)
case 'i':
iflag = 1;
break;
-
default:
- fprintf(stderr,
- "usage: %s [ -i ] [ -tTerm ] file...\n",
- argv[0]);
- exit(1);
+ usage();
}
switch(tgetent(termcap, termtype)) {
@@ -117,7 +132,7 @@ main(argc, argv)
break;
default:
- fprintf(stderr,"trouble reading termcap");
+ warnx("trouble reading termcap");
/* fall through to ... */
case 0:
@@ -134,15 +149,22 @@ main(argc, argv)
filter(stdin);
else for (; optind<argc; optind++) {
f = fopen(argv[optind],"r");
- if (f == NULL) {
- perror(argv[optind]);
- exit(1);
- } else
+ if (f == NULL)
+ err(1, "%s", argv[optind]);
+ else
filter(f);
}
exit(0);
}
+static void
+usage()
+{
+ fprintf(stderr, "usage: ul [-i] [-t terminal] file...\n");
+ exit(1);
+}
+
+void
filter(f)
FILE *f;
{
@@ -207,10 +229,7 @@ filter(f)
continue;
default:
- fprintf(stderr,
- "Unknown escape sequence in input: %o, %o\n",
- IESC, c);
- exit(1);
+ errx(1, "unknown escape sequence in input: %o, %o", IESC, c);
}
continue;
@@ -256,6 +275,7 @@ filter(f)
flushln();
}
+void
flushln()
{
register lastmode;
@@ -266,7 +286,7 @@ flushln()
for (i=0; i<maxcol; i++) {
if (obuf[i].c_mode != lastmode) {
hadmodes++;
- setmode(obuf[i].c_mode);
+ setnewmode(obuf[i].c_mode);
lastmode = obuf[i].c_mode;
}
if (obuf[i].c_char == '\0') {
@@ -278,7 +298,7 @@ flushln()
outc(obuf[i].c_char);
}
if (lastmode != NORMAL) {
- setmode(0);
+ setnewmode(0);
}
if (must_overstrike && hadmodes)
overstrike();
@@ -295,6 +315,7 @@ flushln()
* For terminals that can overstrike, overstrike underlines and bolds.
* We don't do anything with halfline ups and downs, or Greek.
*/
+void
overstrike()
{
register int i;
@@ -332,6 +353,7 @@ overstrike()
}
}
+void
iattr()
{
register int i;
@@ -355,6 +377,7 @@ iattr()
putchar('\n');
}
+void
initbuf()
{
@@ -364,6 +387,7 @@ initbuf()
mode &= ALTSET;
}
+void
fwd()
{
register oldcol, oldmax;
@@ -375,6 +399,7 @@ fwd()
maxcol = oldmax;
}
+void
reverse()
{
upln++;
@@ -384,11 +409,11 @@ reverse()
upln++;
}
+void
initcap()
{
static char tcapbuf[512];
char *bp = tcapbuf;
- char *getenv(), *tgetstr();
/* This nonsense attempts to work with both old and new termcap */
CURS_UP = tgetstr("up", &bp);
@@ -437,14 +462,16 @@ initcap()
must_use_uc = (UNDER_CHAR && !ENTER_UNDERLINE);
}
+int
outchar(c)
int c;
{
- putchar(c & 0177);
+ return(putchar(c & 0177));
}
static int curmode = 0;
+void
outc(c)
int c;
{
@@ -455,12 +482,13 @@ outc(c)
}
}
-setmode(newmode)
+void
+setnewmode(newmode)
int newmode;
{
if (!iflag) {
if (curmode != NORMAL && newmode != NORMAL)
- setmode(NORMAL);
+ setnewmode(NORMAL);
switch (newmode) {
case NORMAL:
switch(curmode) {
OpenPOWER on IntegriCloud