- const char *nl) /* string to terminate lines with */
-{
- StrBuf *OutBuf;
- char *LineStart;
- char *LastBlank;
- size_t len;
- size_t NLLen;
- char *eptr;
- int NLFound, NLFoundLastTime;
- int Found;
-
- len = strlen (mptr);
- NLLen = strlen (nl);
- eptr = mptr + len;
-
- OutBuf = NewStrBufPlain(NULL, 200);
-
- NLFound = NLFoundLastTime = 0;
- do {
- size_t i;
-
- LineStart = LastBlank = mptr;
- Found = 'x';
- i = 0;
- while (Found == 'x')
- {
- if (LineStart[i] == '\n')
- Found = '\n';
- else if (LineStart[i] == '\r')
- Found = '\r';
- else if (LineStart[i] == ' ')
- {
- LastBlank = &LineStart[i];
- i++;
+ const char *nl /* string to terminate lines with */
+) {
+ int column = 0;
+ char ch = 0;
+ if (!mptr) return;
+
+ while (ch=*(mptr++), ch > 0) {
+
+ if (ch == '\n') {
+ cprintf("%s", nl);
+ column = 0;
+ }
+ else if (ch == '\r') {
+ /* Ignore carriage returns. Newlines are always LF or CRLF but never CR. */
+ }
+ else if (isspace(ch)) {
+ if (column > 72) { /* Beyond 72 columns, break on the next space */
+ cprintf("%s", nl);
+ column = 0;
+ }
+ else {
+ cprintf("%c", ch);