tags 333138 patch
thanks

On Tue, Oct 11, 2005 at 02:22:51AM +0300, Alexander Gattin wrote:
> 
> chfn/chsh without cmdline parameters work interactively
> so you _should_ use ptys/expect-like program to script
> them (or use cmdline parameters). It's common issue
> with a lot of Unix utils.

The problem with this one is that when it's being called indirectly by adduser,
then your script has no control over it.

> you see The Classical Effect of Pipe Being
> Block-Buffered. I.e. without using smth. like
> fsync()/fflush() you won't see output until pipe is
> closed gracefully or buffer (4096 usually) gets full.

Ah, right, you just say it.  I've found this before, and fflush works wonders.

> must be contained just in the following code:
> >     printf ("\t%s [%s]: ", prompt, buf);
> >     if (fgets (newf, maxsize, stdin) != newf)

This patch solves the problem.  It affects the first lines of output (since
they're in the same buffer), and all subsequent prompt queries.

I've tested it with:

  # cat | chfn rmh 2>&1 | cat

And works perfectly.  Thanks for your help (even if you thought it was not a
bug, you actualy solved it..)

--- shadow-4.0.12.old/libmisc/fields.c  2005-06-14 22:27:35.000000000 +0200
+++ shadow-4.0.12/libmisc/fields.c      2005-10-11 07:58:57.000000000 +0200
@@ -71,6 +71,7 @@
                maxsize = sizeof (newf);

        printf ("\t%s [%s]: ", prompt, buf);
+       fflush (stdout);
        if (fgets (newf, maxsize, stdin) != newf)
                return;

-- 
Robert Millan


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to