aboutsummaryrefslogtreecommitdiff
path: root/src/libmain/shared.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/libmain/shared.cc')
-rw-r--r--src/libmain/shared.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc
index 3bbb5cf93..0f2c189a6 100644
--- a/src/libmain/shared.cc
+++ b/src/libmain/shared.cc
@@ -76,7 +76,7 @@ string getArg(const string & opt,
Strings::iterator & i, const Strings::iterator & end)
{
++i;
- if (i == end) throw UsageError(format("'%1%' requires an argument") % opt);
+ if (i == end) throw UsageError("'%1%' requires an argument", opt);
return *i;
}
@@ -235,7 +235,7 @@ bool LegacyArgs::processArgs(const Strings & args, bool finish)
Strings ss(args);
auto pos = ss.begin();
if (!parseArg(pos, ss.end()))
- throw UsageError(format("unexpected argument '%1%'") % args.front());
+ throw UsageError("unexpected argument '%1%'", args.front());
return true;
}
@@ -282,7 +282,7 @@ void showManPage(const string & name)
restoreSignals();
setenv("MANPATH", settings.nixManDir.c_str(), 1);
execlp("man", "man", name.c_str(), nullptr);
- throw SysError(format("command 'man %1%' failed") % name.c_str());
+ throw SysError("command 'man %1%' failed", name.c_str());
}
@@ -290,6 +290,8 @@ int handleExceptions(const string & programName, std::function<void()> fun)
{
ReceiveInterrupts receiveInterrupts; // FIXME: need better place for this
+ ErrorInfo::programName = programName;
+
string error = ANSI_RED "error:" ANSI_NORMAL " ";
try {
try {
@@ -305,12 +307,13 @@ int handleExceptions(const string & programName, std::function<void()> fun)
} catch (Exit & e) {
return e.status;
} catch (UsageError & e) {
- printError(
- format(error + "%1%\nTry '%2% --help' for more information.")
- % e.what() % programName);
+ logError(e.info());
+ printError("Try '%1% --help' for more information.", programName);
return 1;
} catch (BaseError & e) {
- printError(format(error + "%1%%2%") % (settings.showTrace ? e.prefix() : "") % e.msg());
+ if (settings.showTrace && e.prefix() != "")
+ printError(e.prefix());
+ logError(e.info());
if (e.prefix() != "" && !settings.showTrace)
printError("(use '--show-trace' to show detailed location information)");
return e.status;
@@ -347,7 +350,7 @@ RunPager::RunPager()
execlp("pager", "pager", nullptr);
execlp("less", "less", nullptr);
execlp("more", "more", nullptr);
- throw SysError(format("executing '%1%'") % pager);
+ throw SysError("executing '%1%'", pager);
});
pid.setKillSignal(SIGINT);