TIOCSTI possibly broken under 8.0 ?

Pete French petefrench at ticketswitch.com
Mon Jan 4 16:50:28 UTC 2010


TIOCSTI appears to be broken - the code attached at the bottom
works fine in 7.x but fails in 8.0. What the code is attempting to
do is to print a prompt for text input, along with an initial
value for that text which can be edited by the user. I am assuming
this is a bug, and not incorrect usage of TIOCSTI, but evven if not
it is still a regression compared to 7.x.

The reason I am intested in this is that this is the code which
is used by /usr/bin/mail to allow the headers to be edited in an
email, so this does break a very basic piece of the base system.

cheers,

-pete.





#include <stdio.h>
#include <sys/ttycom.h>

char *src = "hello world";

int
main(int argc, char *argv[])
{
        char ch;
        int c;
        char *cp;
        char x[512];

        puts("Enter text: ");
        fflush(stdout);

        cp = src == NULL ? "" : src;
        while ((c = *cp++) != '\0') {
                ch = c;
                ioctl(0, TIOCSTI, &ch);
        }

        fgets(x, 511, stdin);
        printf("We got: %s\n", x);
        fflush(stdout);
        return 0;
}





More information about the freebsd-stable mailing list