bin: diagnose more write errors

* tests/core/full.test: New file.
* tests/Makefile.am: Add it.
* bin/autfilt.cc, bin/common_aoutput.cc, bin/common_aoutput.hh,
bin/common_file.cc, bin/common_file.hh, bin/genltl.cc, bin/ltlcross.cc,
bin/ltlfilt.cc, bin/ltlgrind.cc, bin/randltl.cc: Add diagnostics.
* NEWS: Mention the fix.
This commit is contained in:
Alexandre Duret-Lutz 2016-08-14 18:18:20 +02:00
parent 53e6640034
commit e97ea5fa74
13 changed files with 96 additions and 3 deletions

View file

@ -1,5 +1,5 @@
// -*- coding: utf-8 -*-
// Copyright (C) 2015 Laboratoire de Recherche et Développement de
// Copyright (C) 2015, 2016 Laboratoire de Recherche et Développement de
// l'Epita (LRDE).
//
// This file is part of Spot, a model checking library.
@ -41,3 +41,16 @@ output_file::output_file(const char* name)
error(2, errno, "cannot open '%s'", name);
os_ = of_;
}
void output_file::close(const std::string& name)
{
// We close of_, not os_, so that we never close std::cout.
if (os_)
os_->flush();
if (of_)
of_->close();
if (os_ && !*os_)
error(2, 0, "error writing to %s",
(name == "-") ? "standard output" : name.c_str());
}