- if (ch == '>')
- {
- /* right justify to EOL */
- ch = *src++; /* pad char */
- /* calculate space left on line. if we've already written more data
- than will fit on the line, ignore the rest of the line */
- if ( DrawFullLine )
- count = (COLS < destlen ? COLS : destlen);
- else
- count = ((COLS-SidebarWidth) < destlen ? COLS - SidebarWidth : destlen);
- if (count > wlen)
- {
- count -= wlen; /* how many chars left on this line */
- mutt_FormatString (buf, sizeof (buf), src, callback, data, flags);
- len = mutt_strlen (buf);
- if (count > len)
- {
- count -= len; /* how many chars to pad */
- memset (wptr, ch, count);
- wptr += count;
- wlen += count;
- }
- if (len + wlen > destlen)
- len = destlen - wlen;
- memcpy (wptr, buf, len);
- wptr += len;
- wlen += len;
- }
- break; /* skip rest of input */
+ if (ch == '>') {
+ /* right justify to EOL */
+ ch = *src++; /* pad char */
+ /* calculate space left on line. if we've already written more data
+ than will fit on the line, ignore the rest of the line */
+ if (DrawFullLine || option (OPTSTATUSONTOP))
+ count = (COLS < destlen ? COLS : destlen);
+ else
+ count =
+ ((COLS - SidebarWidth) <
+ destlen ? (COLS - SidebarWidth) : destlen);
+ if (count > col) {
+ count -= col; /* how many columns left on this line */
+ mutt_FormatString (buf, sizeof (buf), src, callback, data, flags);
+ wid = mutt_strlen (buf);
+ if (count > wid) {
+ count -= wid; /* how many chars to pad */
+ memset (wptr, ch, count);
+ wptr += count;
+ col += count;
+ }
+ if (wid + wlen > destlen)
+ len = destlen - wlen;
+ else
+ len = wid;
+ memcpy (wptr, buf, len);
+ wptr += len;
+ wlen += len;
+ col += mutt_strwidth (buf);
+ }
+ break; /* skip rest of input */