Re: cal: bug on FreeBSD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Mar 08, 2016 at 11:59:43PM +0100, Rüdiger Meier wrote:
> On Tuesday 08 March 2016 23:35:01 Sami Kerola wrote:
> > Does this happen with putp() only? The following should enable you to
> > test the fputs() output.
> 
> It's only broken with putp, I tried it like this

It's BSD specific problem, putp (aka tputs) interprets the string.
That's fine as tputs is sensitive to sequences prefixed by $< and
everything else is printed to terminal. 

BUT probably because BSD has origins in 70' LSD era there is a
special exception (ncurses sources tinfo/lib_tputs.c):

    #if BSD_TPUTS
       /*
        * This ugly kluge deals with the fact that some ancient BSD
        * programs (like nethack) actually do the likes of tputs("50") to
        * get delays.
        */
        if (isdigit(UChar(*string))) {
        ...
        }
    #endif

and the number is interpreted as argument for delay_output() and never
printed to the output.

It seems we're little bit fragile with putp() as it's primarily
designed for terminfo string variables than for a generic output.
Unfortunately mix tputs() and fputs() is also no perfect due to
buffering issues (commit 07ac4aa9d4f36a6618fd3ab1423bc33e3903ddbd).

The easy fix is to disable ncurses support for BSD (words like fuck
and suck are allowed in the commit message for this case:-).

    Karel

-- 
 Karel Zak  <kzak@xxxxxxxxxx>
 http://karelzak.blogspot.com
--
To unsubscribe from this list: send the line "unsubscribe util-linux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux