Stefan Sperling wrote on Mon, Dec 17, 2012 at 21:39:49 +0100: > On Mon, Dec 17, 2012 at 01:44:43PM -0600, Peter Samuelson wrote: > > [Stefan Sperling] > > > We could use iatty() to enable --non-interactive if output is not > > > going to a terminal, for instance. > > > > I floated this idea some time ago and I'm still in favor of it. But I > > think a simple isatty(STDERR_FILENO) would be wrong. > > Why? Not all ttys are interactive of course. But I don't really care if > people piping their line printers or modems into svn's stdin get interactive > mode by default. Is there any other downside to using isatty()? > > And, actually, don't we want to check stdin, not stderr or stdout? > > > What you want is > > to detect that there is a controlling terminal at all - something like: > > > > #if WINDOWS > > #define CON "CON:" > > #else > > #define CON "/dev/tty" > > #endif > > fd = open(CON, O_RDWR); > > if (fd >= 0) { > > close(fd); > > ... > > } > > > > (Of course I have no idea if "CON:" behaves that way. But there must > > be _some_ way to determine, on Windows, whether you have a terminal > > window available.) > > The simple patch below implements it with the isatty() on *nix and > _isatty() on Windows (untested -- thanks for the hint Bert!). > > We can still change this implementation to use your open() /dev/tty idea > later. > > However, this is enough to suppress prompts if stdin is piped into 'svn' > and if 'svn' is run from cron. I believe that's an improvement. > > > Someone - was it Mark, perhaps? - objected to this idea on the basis > > that some wrapper programs out there may try to "scrape" the prompts, > > in interactive mode, and supply the correct input from, e.g., GUI > > dialog boxes. > > Well, I would guess there are more people who are bitten by forgetting > to pass --non-interactive in normal scripts than there are people writing > scrapers that type answers into the prompts. I've met one person who > made this mistake just last week, who couldn't figure out why 'svn' was > hanging up their automated build jobs (it was asking for credentials).
Was the automated build job not running svn with an empty (or closed) stdin?