1 #include "sys.h" 2 #include <errno.h> 3 #include <libcwd/debug.h> 4 #ifdef LIBCWD_USE_STRSTREAM 5 #include <strstream> 6 #else 7 #include <sstream> 8 #endif 9 10 libcwd::debug_ct local_debug_object; 11 #define MyDout(cntrl, data) LibcwDout(LIBCWD_DEBUGCHANNELS, local_debug_object, cntrl, data) 12 13 #ifdef THREADTEST 14 pthread_mutex_t buf_mutex = PTHREAD_MUTEX_INITIALIZER; 15 #endif 16 17 MAIN_FUNCTION 18 { PREFIX_CODE 19 #ifdef LIBCWD_USE_STRSTREAM 20 std::ostrstream buf; 21 #elif !CWDEBUG_ALLOC 22 std::ostringstream buf; 23 #else 24 #if __GNUC__ < 3 25 ::std::basic_stringstream<char, string_char_traits<char>, ::libcwd::_private_::userspace_allocator> buf; 26 #else 27 ::std::basic_stringstream<char, ::std::char_traits<char>, ::libcwd::_private_::userspace_allocator> buf; 28 #endif 29 #endif 30 31 Debug( check_configuration() ); 32 Debug( local_debug_object.on() ); 33 Debug( libcw_do.on() ); 34 Debug( dc::notice.on() ); 35 36 Debug( libcw_do.margin().assign("MARGIN", 6) ); 37 Debug( libcw_do.marker().assign("MARKER", 6) ); 38 Debug( libcw_do.set_indent(3) ); 39 Debug( local_debug_object.margin().assign("MARGIN", 6) ); 40 Debug( local_debug_object.marker().assign("MARKER", 6) ); 41 Debug( local_debug_object.set_indent(3) ); 42 43 Dout(dc::notice|nonewline_cf, "x"); 44 Dout(dc::notice|nonewline_cf, "y"); 45 Dout(dc::notice, "z<newline>"); 46 47 Dout(dc::notice, "<no flags>"); 48 Dout(dc::notice|noprefix_cf, "noprefix_cf"); 49 Dout(dc::notice|nolabel_cf, "nolabel_cf"); 50 Dout(dc::notice|blank_margin_cf, "blank_margin_cf"); 51 Dout(dc::notice|blank_label_cf, "blank_label_cf"); 52 Dout(dc::notice|blank_marker_cf, "blank_marker_cf"); 53 54 Dout(dc::notice|noprefix_cf|nonewline_cf, "a"); 55 Dout(dc::notice|nolabel_cf|nonewline_cf, "b"); 56 Dout(dc::notice|blank_margin_cf|nonewline_cf, "c"); 57 Dout(dc::notice|blank_label_cf|nonewline_cf, "d"); 58 Dout(dc::notice|blank_marker_cf|nonewline_cf, "e"); 59 Dout(dc::notice, "f"); 60 61 Dout(dc::notice|nolabel_cf|noprefix_cf, "nolabel_cf|noprefix_cf"); 62 Dout(dc::notice|blank_margin_cf|noprefix_cf, "blank_margin_cf|noprefix_cf"); 63 Dout(dc::notice|blank_label_cf|noprefix_cf, "blank_label_cf|noprefix_cf"); 64 Dout(dc::notice|blank_marker_cf|noprefix_cf, "blank_marker_cf|noprefix_cf"); 65 66 Dout(dc::notice|blank_margin_cf|nolabel_cf, "blank_margin_cf|nolabel_cf"); 67 Dout(dc::notice|blank_label_cf|nolabel_cf, "blank_label_cf|nolabel_cf"); 68 Dout(dc::notice|blank_marker_cf|nolabel_cf, "blank_marker_cf|nolabel_cf"); 69 70 Dout(dc::notice|blank_label_cf|blank_margin_cf, "blank_label_cf|blank_margin_cf"); 71 Dout(dc::notice|blank_marker_cf|blank_margin_cf, "blank_marker_cf|blank_margin_cf"); 72 73 Dout(dc::notice|blank_marker_cf|blank_label_cf, "blank_marker_cf|blank_label_cf"); 74 75 errno = EAGAIN; 76 Dout(dc::notice|error_cf, "error_cf"); 77 78 Debug( local_debug_object.set_ostream(&buf COMMA_THREADED(&buf_mutex)) ); 79 MyDout(dc::notice, "This is written to buf"); 80 MyDout(dc::notice|cerr_cf, "cerr_cf"); 81 #if __GNUC__ == 2 && __GNUC_MINOR__ < 97 82 buf.rdbuf()->pubseekoff(0, std::ios::end); 83 #else 84 buf.rdbuf()->pubseekoff(0, std::ios_base::end); 85 #endif 86 87 EXIT(0); 88 } 89