Mercurial > hg > octave-avbm
changeset 3756:41404c6f4e69
[project @ 2000-12-15 03:14:44 by jwe]
author | jwe |
---|---|
date | Fri, 15 Dec 2000 03:14:45 +0000 |
parents | 4c230f72b1d2 |
children | 574711ce9070 |
files | src/ChangeLog src/pager.cc src/pager.h |
diffstat | 3 files changed, 45 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,15 @@ +2000-12-14 John W. Eaton <jwe@bevo.che.wisc.edu> + + * pager.h (octave_pager_buf::diary_skip): New data member. + (octave_pager_buf::octave_pager_buf): Initialize it. + * pager.cc (octave_pager_buf::set_diary_skip): New function. + (octave_pager_stream::set_diary_skip): New function. + (octave_pager_buf::sync): Call flush_current_contents_to_diary + instead of octave_diary.write. + (octave_pager_buf::flush_current_contents_to_diary): Use + diary_skip, reset when done. + (open_diary_file): Call octave_stdout.set_diary_skip here. + 2000-12-06 John W. Eaton <jwe@bevo.che.wisc.edu> * DLD-FUNCTIONS/minmax.cc (EMPTY_RETURN_CHECK): New macro.
--- a/src/pager.cc +++ b/src/pager.cc @@ -241,7 +241,7 @@ seekoff (0, std::ios::beg); - octave_diary.write (buf, len); + flush_current_contents_to_diary (); } } @@ -251,11 +251,19 @@ void octave_pager_buf::flush_current_contents_to_diary (void) { - char *buf = eback (); + char *buf = eback () + diary_skip; - int len = pptr () - buf; + size_t len = pptr () - buf; octave_diary.write (buf, len); + + diary_skip = 0; +} + +void +octave_pager_buf::set_diary_skip (void) +{ + diary_skip = pptr () - eback (); } int @@ -305,6 +313,13 @@ pb->flush_current_contents_to_diary (); } +void +octave_pager_stream::set_diary_skip (void) +{ + if (pb) + pb->set_diary_skip (); +} + octave_diary_stream *octave_diary_stream::instance = 0; octave_diary_stream::octave_diary_stream (void) : std::ostream (), db (0) @@ -379,6 +394,11 @@ { close_diary_file (); + // If there is pending output in the pager buf, it should not go + // into the diary file. + + octave_stdout.set_diary_skip (); + external_diary_file.open (diary_file.c_str (), std::ios::app); if (! external_diary_file)
--- a/src/pager.h +++ b/src/pager.h @@ -36,13 +36,20 @@ { public: - octave_pager_buf (int size = 0) : std::strstreambuf (size) { } + octave_pager_buf (int size = 0) + : std::strstreambuf (size), diary_skip (0) { } void flush_current_contents_to_diary (void); + void set_diary_skip (void); + protected: int sync (void); + +private: + + size_t diary_skip; }; class @@ -58,6 +65,8 @@ void flush_current_contents_to_diary (void); + void set_diary_skip (void); + static octave_pager_stream& stream (void); private: