From c262889aa1fcf72dac3ee6697de52ce6efe8f894 Mon Sep 17 00:00:00 2001 From: pixel Date: Sat, 18 Dec 2004 13:14:52 +0000 Subject: Adding log system into cd-tool. --- cd-tool.cpp | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'cd-tool.cpp') diff --git a/cd-tool.cpp b/cd-tool.cpp index 6242402..2affbf4 100644 --- a/cd-tool.cpp +++ b/cd-tool.cpp @@ -17,7 +17,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: cd-tool.cpp,v 1.36 2004-12-13 20:06:36 pixel Exp $ */ +/* $Id: cd-tool.cpp,v 1.37 2004-12-18 13:14:52 pixel Exp $ */ #define WIP @@ -344,6 +344,7 @@ struct option long_options[] = { {"exec", 1, NULL, 'e'}, {"built-in", 0, NULL, 'b'}, {"probe", 0, NULL, 'p'}, + {"log", 1, NULL, 'g'}, {0, 0, NULL, 0 } }; @@ -413,6 +414,7 @@ void showhelp(bool longhelp = false) { " -e to execute this single command in LUA.\n" " -b to force the use of the built-in cd-tool.lua\n" " -p to run a CD device probe.\n" +" -g to log into a file.\n" " -h for a help page.\n" , argv[0]); @@ -448,6 +450,22 @@ void probe(void) { } } +class cd_tool_printer_t : public printer_t { + public: + cd_tool_printer_t(Handle * h) : log(h) { } + virtual bool printm(int level, const char * format, va_list ap) { + char tmp[10241]; + + vsprintf(tmp, format, ap); + + (*log) << tmp; + + return true; + } + private: + Handle * log; +}; + virtual int startup() throw (GeneralException) { char c; @@ -467,7 +485,7 @@ virtual int startup() throw (GeneralException) { /* Let's start parsing options */ - while ((c = getopt_long(argc, argv, "Hhvf:wo:a:c:dile:pb", long_options, NULL)) != EOF) { + while ((c = getopt_long(argc, argv, "Hhvf:wo:a:c:dile:pbg:", long_options, NULL)) != EOF) { switch (c) { case 'h': case 'H': @@ -512,6 +530,9 @@ virtual int startup() throw (GeneralException) { case 'b': builtin = true; break; + case 'g': + printer = new cd_tool_printer_t(new Output(optarg)); + break; default: showhelp(); throw Exit(-1); -- cgit v1.2.3