summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--man.c11
-rw-r--r--mdoc.c20
2 files changed, 23 insertions, 8 deletions
diff --git a/man.c b/man.c
index 1bcf7d5b..71ae2c42 100644
--- a/man.c
+++ b/man.c
@@ -378,6 +378,7 @@ man_ptext(struct man *m, int line, char *buf)
for (i = 0; ' ' == buf[i]; i++)
/* Skip leading whitespace. */ ;
+
if (0 == buf[i]) {
if ( ! pstring(m, line, 0, &buf[i], 0))
return(0);
@@ -463,7 +464,7 @@ man_pmacro(struct man *m, int ln, char *buf)
i++;
while (buf[i] && ' ' == buf[i])
i++;
- if (0 == buf[i])
+ if ('\0' == buf[i])
goto out;
}
@@ -472,7 +473,7 @@ man_pmacro(struct man *m, int ln, char *buf)
/* Copy the first word into a nil-terminated buffer. */
for (j = 0; j < 4; j++, i++) {
- if (0 == (mac[j] = buf[i]))
+ if ('\0' == (mac[j] = buf[i]))
break;
else if (' ' == buf[i])
break;
@@ -507,6 +508,12 @@ man_pmacro(struct man *m, int ln, char *buf)
while (buf[i] && ' ' == buf[i])
i++;
+ /* Trailing whitespace? */
+
+ if ('\0' == buf[i] && ' ' == buf[i - 1])
+ if ( ! man_pwarn(m, ln, i - 1, WTSPACE))
+ goto err;
+
/* Remove prior ELINE macro, if applicable. */
if (m->flags & MAN_ELINE) {
diff --git a/mdoc.c b/mdoc.c
index f8024332..9c24880e 100644
--- a/mdoc.c
+++ b/mdoc.c
@@ -597,7 +597,8 @@ parsetext(struct mdoc *m, int line, char *buf)
for (i = 0; ' ' == buf[i]; i++)
/* Skip leading whitespace. */ ;
- if (0 == buf[i])
+
+ if ('\0' == buf[i])
return(mdoc_perr(m, line, 0, ENOBLANK));
/*
@@ -613,7 +614,8 @@ parsetext(struct mdoc *m, int line, char *buf)
if (i && ' ' == buf[i] && '\\' == buf[i - 1])
continue;
- buf[i++] = 0;
+ buf[i++] = '\0';
+
if ( ! pstring(m, line, j, &buf[j], (size_t)(i - j)))
return(0);
@@ -621,7 +623,7 @@ parsetext(struct mdoc *m, int line, char *buf)
/* Skip trailing whitespace. */ ;
j = i;
- if (0 == buf[i])
+ if ('\0' == buf[i])
break;
}
@@ -658,7 +660,7 @@ parsemacro(struct mdoc *m, int ln, char *buf)
/* Empty lines are ignored. */
- if (0 == buf[1])
+ if ('\0' == buf[1])
return(1);
i = 1;
@@ -669,14 +671,14 @@ parsemacro(struct mdoc *m, int ln, char *buf)
i++;
while (buf[i] && ' ' == buf[i])
i++;
- if (0 == buf[i])
+ if ('\0' == buf[i])
return(1);
}
/* Copy the first word into a nil-terminated buffer. */
for (j = 0; j < 4; j++, i++) {
- if (0 == (mac[j] = buf[i]))
+ if ('\0' == (mac[j] = buf[i]))
break;
else if (' ' == buf[i])
break;
@@ -707,6 +709,12 @@ parsemacro(struct mdoc *m, int ln, char *buf)
while (buf[i] && ' ' == buf[i])
i++;
+ /* Trailing whitespace? */
+
+ if ('\0' == buf[i] && ' ' == buf[i - 1])
+ if ( ! mdoc_pwarn(m, ln, i - 1, ETAILWS))
+ goto err;
+
/*
* Begin recursive parse sequence. Since we're at the start of
* the line, we don't need to do callable/parseable checks.