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

Reply via email to