* Sync with the trunk.

This commit is contained in:
Eelco Dolstra 2010-10-04 11:44:47 +00:00
commit 71dfe4b90b
4 changed files with 12 additions and 4 deletions

View File

@ -39,7 +39,7 @@ std::ostream & operator << (std::ostream & str, const Value & v)
str << v.path; // !!! escaping?
break;
case tNull:
str << "true";
str << "null";
break;
case tAttrs: {
str << "{ ";

View File

@ -5,6 +5,7 @@
#include "nixexpr.hh"
#include "symbol-table.hh"
#include "hash.hh"
typedef union _ATermList * ATermList;
@ -12,7 +13,6 @@ typedef union _ATermList * ATermList;
namespace nix {
class Hash;
class EvalState;
struct Env;
struct Value;

View File

@ -481,7 +481,16 @@ void printMsg_(Verbosity level, const format & f)
else if (logType == ltEscapes && level != lvlInfo)
prefix = "\033[" + escVerbosity(level) + "s";
string s = (format("%1%%2%\n") % prefix % f.str()).str();
writeToStderr((const unsigned char *) s.c_str(), s.size());
try {
writeToStderr((const unsigned char *) s.c_str(), s.size());
} catch (SysError & e) {
/* Ignore failing writes to stderr if we're in an exception
handler, otherwise throw an exception. We need to ignore
write errors in exception handlers to ensure that cleanup
code runs to completion if the other side of stderr has
been closed unexpectedly. */
if (!std::uncaught_exception()) throw;
}
}

View File

@ -270,7 +270,6 @@ static DrvInfos filterBySelector(EvalState & state, const DrvInfos & allElems,
d = j->first.system == k->second.first.system ? 0 :
j->first.system == thisSystem ? 1 :
k->second.first.system == thisSystem ? -1 : 0;
printMsg(lvlError, format("%1% %2% %3% %4%") % j->first.system % k->second.first.system % thisSystem % d);
if (d == 0)
d = comparePriorities(state, j->first, k->second.first);
if (d == 0)