On Sun, Apr 7, 2013 at 4:19 PM, Tommaso Cucinotta <[email protected]> wrote: > On 07/04/13 20:41, Tommaso Cucinotta wrote: >> they are fed to SystemcallPrivate() which elegantly ignores the stderr file: >> >> if (err_file_ != os::nulldev()) { >> printf("Calling >> QProcess::setStandardErrorFile(\"%s\")\n", err_file_.c_str()); >> process_->setStandardErrorFile(QString::fromLocal8Bit( >> err_file_.c_str())); >> } > > I now realize why there's so much of creating these tmpf files then deleting > them wastefully in VCBackend.cpp, e.g., in SVN::findFile() [1], because > stdout redirection to /dev/null has exactly the same problem. I can't believe > we can't just redirect to /dev/null on Linux, but we have to go through all > of this! Can we at least hide all this stuff within doVCCommandCall(), and > perhaps ultimately within SystemcallPrivate() constructor ? As it's already > designed to intercept /dev/null on stdout and stderr, it's sufficient to add > the trick straight there -- create a tmp file, redirect to it, then remember > to remove it in the destructor? > > Are we sure we can't simply set the output/err files to os::nulldev() ("nul" > for Win and "/dev/null" everywhere else), to suppress them ? > > T. > > [1] > // Now we check the status of the file. > FileName tmpf = FileName::tempName("lyxvcout"); > if (tmpf.empty()) { > LYXERR(Debug::LYXVC, "Could not generate logfile " << tmpf); > return FileName(); > } > > string const fname = onlyFileName(file.absFileName()); > LYXERR(Debug::LYXVC, "LyXVC: Checking if file is under svn control > for `" << fname << '\''); > bool found = 0 == doVCCommandCall("svn info " + quoteName(fname) > + " > " + > quoteName(tmpf.toFilesystemEncoding()), > file.onlyPath()); > tmpf.removeFile(); >
Is this related to my confusion here: http://comments.gmane.org/gmane.editors.lyx.devel/144491 ? Scott
