diff --git a/src/openscad.cc b/src/openscad.cc index e0ac9532..7434a3a4 100644 --- a/src/openscad.cc +++ b/src/openscad.cc @@ -800,6 +800,7 @@ int main(int argc, char **argv) ("projection", po::value(), "(o)rtho or (p)erspective when exporting png") ("colorscheme", po::value(), "colorscheme") ("debug", po::value(), "special debug info") + ("quiet,q", "quiet mode (don't print anything *except* errors)") ("o,o", po::value(), "out-file") ("s,s", po::value(), "stl-file") ("x,x", po::value(), "dxf-file") @@ -835,6 +836,9 @@ int main(int argc, char **argv) OpenSCAD::debug = vm["debug"].as(); PRINTB("Debug on. --debug=%s",OpenSCAD::debug); } + if (vm.count("quiet")) { + OpenSCAD::quiet = true; + } if (vm.count("help")) help(argv[0]); if (vm.count("version")) version(); if (vm.count("info")) arg_info = true; diff --git a/src/printutils.cc b/src/printutils.cc index 5ee32e80..6440308c 100644 --- a/src/printutils.cc +++ b/src/printutils.cc @@ -12,6 +12,7 @@ std::list print_messages_stack; OutputHandlerFunc *outputhandler = NULL; void *outputhandler_data = NULL; std::string OpenSCAD::debug(""); +bool OpenSCAD::quiet = false; boost::circular_buffer lastmessages(5); @@ -63,10 +64,12 @@ void PRINT_NOCACHE(const std::string &msg) else lastmessages.push_back(msg); } - if (!outputhandler) { - fprintf(stderr, "%s\n", msg.c_str()); - } else { - outputhandler(msg, outputhandler_data); + if (!OpenSCAD::quiet || boost::starts_with(msg, "ERROR")) { + if (!outputhandler) { + fprintf(stderr, "%s\n", msg.c_str()); + } else { + outputhandler(msg, outputhandler_data); + } } } diff --git a/src/printutils.h b/src/printutils.h index 971a6211..8fd0caee 100644 --- a/src/printutils.h +++ b/src/printutils.h @@ -12,7 +12,10 @@ inline char * _( const char * msgid ) { return gettext( msgid ); } typedef void (OutputHandlerFunc)(const std::string &msg, void *userdata); extern OutputHandlerFunc *outputhandler; extern void *outputhandler_data; -namespace OpenSCAD { extern std::string debug; } +namespace OpenSCAD { + extern std::string debug; + extern bool quiet; +} void set_output_handler(OutputHandlerFunc *newhandler, void *userdata);