-/* $Id: man.c,v 1.62 2010/05/08 07:30:19 kristaps Exp $ */
+/* $Id: man.c,v 1.64 2010/05/08 10:25:27 kristaps Exp $ */
/*
* Copyright (c) 2008, 2009 Kristaps Dzonsons <kristaps@kth.se>
*
goto descope;
}
- /* Warn if the last un-escaped character is whitespace. */
+ /*
+ * Warn if the last un-escaped character is whitespace. Then
+ * strip away the remaining spaces (tabs stay!).
+ */
i = (int)strlen(buf);
assert(i);
- if (' ' == buf[i - 1] || '\t' == buf[i - 1])
- if (1 == i || ('\\' != buf[i - 2]))
+ if (' ' == buf[i - 1] || '\t' == buf[i - 1]) {
+ if (i > 1 && '\\' != buf[i - 2])
if ( ! man_pwarn(m, line, i - 1, WTSPACE))
return(0);
+ for (--i; i && ' ' == buf[i]; i--)
+ /* Spin back to non-space. */ ;
+
+ /* Jump ahead of escaped whitespace. */
+ i += '\\' == buf[i] ? 2 : 1;
+
+ buf[i] = '\0';
+ }
+
if ( ! man_word_alloc(m, line, 0, buf))
return(0);