Files
CydandClaude Fable 5 db7745fcd0 sda4: commit the Glaze developer hard-drive dump
Un-ignored: the dev drive is the ground truth the restoration and
emulator work constantly reference (DPL3/LIBDPL + VRENDER i860 renderer
source, BT/RP live+dev game trees, VGL_LABS pod boot, scene/audio
content). Kept in-repo for the pod-owner community.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 19:41:15 -05:00

122 lines
2.2 KiB
Plaintext

/*
** BRIEF -- Basic Reconfigurable Interactive Editing Facility
**
** Written by Dave Nanian and Michael Strickman.
*/
/*
** savehist.cb:
**
** This file saves the current history information to the state file
** on exit. To use it, put the string "-msavehist" (no quotes) after the
** "-mrestore" or "-mpwb" in your BFLAGS. For example:
**
** set bflags=-mrestore -msavehist
**
** - or -
**
** set bflags=-mpwb -mscrapper
*/
extern _save_state (),
_restore ();
extern int _history_buf;
replacement _save_state ()
{
if (_history_buf)
{
int curr_buf = set_buffer (_history_buf),
end_line,
end_col;
save_position ();
top_of_buffer ();
drop_anchor ();
if (end_of_buffer ())
inq_position (end_line, end_col);
raise_anchor ();
restore_position ();
set_buffer (curr_buf);
if (end_line)
{
string ext;
inq_names (NULL, ext);
if (ext == "sts")
{
save_position ();
top_of_buffer ();
if (search_fwd ("<[\t ]@\\[brief-history\\]", 1, 1))
{
drop_anchor ();
search_fwd ("<[\t ]@\\[end-brief-history\\]*\\c>", 1, 1);
delete_block ();
}
restore_position ();
set_buffer (_history_buf);
top_of_buffer ();
translate ("<", ";", 1, 1);
end_col++; // Compensate for extra character
set_buffer (curr_buf);
}
insert ("[brief-history]\n");
transfer (_history_buf, 1, 1, end_line, end_col);
insert ("[end-brief-history]\n");
}
}
returns (_save_state ());
}
replacement _restore ()
{
_restore ();
top_of_buffer ();
if (search_fwd ("<\\[brief-history\\]>"))
{
down ();
drop_anchor (4);
search_fwd ("<\\[end-brief-history\\]>");
if (inq_mark_size ())
{
int start_line,
start_col,
end_line,
end_col,
curr_buf;
string ext;
prev_char (2);
inq_position (end_line, end_col);
swap_anchor ();
inq_position (start_line, start_col);
inq_names (NULL, ext);
curr_buf = set_buffer (_history_buf);
transfer (curr_buf, start_line, start_col, end_line, end_col);
if (ext == "sts")
{
top_of_buffer ();
translate ("<;", "", 1, 1);
}
set_buffer (curr_buf);
}
raise_anchor ();
}
}