X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-stream.cc;h=d2bbeb3f9ca676d2fc2bf2ab3f40af21c09d162e;hb=20091095d3ac112fa0d0c55c8e2b8092584be4b2;hp=b15e2628928f1673fbeb91134448897dfac6ba1a;hpb=d53a619ef343bc5a5e19699d011b873bc0cf86d8;p=lilypond.git diff --git a/lily/paper-stream.cc b/lily/paper-stream.cc index b15e262892..d2bbeb3f9c 100644 --- a/lily/paper-stream.cc +++ b/lily/paper-stream.cc @@ -3,14 +3,18 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2000 Han-Wen Nienhuys + (c) 1997--2001 Han-Wen Nienhuys */ #include -#include #include #include +#include "config.h" +#if HAVE_SYS_STAT_H +#include +#endif + #include "main.hh" #include "paper-stream.hh" #include "file-path.hh" @@ -18,20 +22,25 @@ const int MAXLINELEN = 200; +#if __GNUC__ > 2 ostream * -open_file_stream (String filename) +open_file_stream (String filename, std::ios_base::openmode mode) +#else +ostream * +open_file_stream (String filename, int mode) +#endif { ostream *os; - if (!filename.empty_b () && (filename != "-")) + if ((filename == "-")) + os = &cout; + else { Path p = split_path (filename); if (!p.dir.empty_b ()) if (mkdir (p.dir.ch_C (), 0777) == -1 && errno != EEXIST) error (_f ("can't create directory: `%s'", p.dir)); - os = new ofstream (filename.ch_C ()); + os = new ofstream (filename.ch_C (), mode); } - else - os = new ostream (cout._strbuf); if (!*os) error (_f ("can't open file: `%s'", filename)); return os; @@ -44,9 +53,11 @@ close_file_stream (ostream *os) if (!*os) { warning (_ ("Error syncing file (disk full?)")); - exit_status_i_ = 1; + exit_status_global = 1; } - delete os; + if (os != &cout) + delete os; + os = 0; } Paper_stream::Paper_stream (String filename) @@ -60,7 +71,8 @@ Paper_stream::Paper_stream (String filename) Paper_stream::~Paper_stream () { close_file_stream (os_); - assert (nest_level == 0); + if (nest_level != 0) + programming_error ("Brace nesting in paper output doesn't match"); } // print string. don't forget indent.