						 -*- coding: utf-8 -*-
BRL-CAD Interface Change Policy
===============================

Included below are details of BRL-CAD public interface changes that
potentially impact external developers and users.  Public interfaces
include developer application programming interface (API) calls as
well as user application command-line interface (CLI) and graphical
user interface (GUI) behaviors.  Changes are characterized as:

    1) changing a new interface,
    2) being minimally impacting, or
    3) requiring adherence to deprecation policy.

This policy is intentionally designed to balance developer agility,
helping accelerate development, with interface stability, helping
preserve application developer and user investments.

All changes to BRL-CAD are expected to conform to this change policy.


NEW INTERFACE
-------------

Changes to interfaces that have been recently introduced are often
subject to change and should not yet be relied upon by application
developers or users.  They may be changed as needed from release to
release and are not subject to change policy restrictions until they
have been included in at least TWO releases without change.


MINIMALLY IMPACTING
-------------------

If a change to an interface has a suitable and completely equivalent
alternative, the change is deemed to be "minimally impacting" and can
be made during any release.  Examples of such changes include renaming
an interface, reordering parameters, adding additional parameters for
previously implicit behavior, and removing unused parameters.

Basically, the impact can usually be considered minimally impacting if
a static regular expression search-and-replace is all that is needed
to update calling code, and no change is imposed on the user.


DEPRECATION POLICY
------------------

If a change will intentionally change, replace, or remove
functionality that has been documented and published in at least TWO
releases should be first marked as DEPRECATED.  Otherwise, changes to
interfaces that have not been publicly announced or are not publicly
documented for at least two releases may be changed without notice.

The general practice is that public interface changes may go from
deprecated to obsolete, whereby previous behavior is removed or
changed, during one of the following events:

a) during a major release (e.g. going from 7.*.* to 8.*.*)

b) during a minor release provided the change was publicly announced
   as deprecated beforehand AND sufficient deprecation warning was
   given via i) TWO minor releases included the deprecation notice,
   and ii) at least THREE months (90 days) have passed since the
   deprecation was announced

c) during any release provided there still exists an EQUIVALENT
   alternative interface that does not impose an undue burden on users
   or developers (see "MINIMALLY IMPACTING")

Public interfaces scheduled for removal should be visibly marked as
deprecated during compilation with the DEPRECATED keyword on function
declarations, with #warning "DEPRECATED ..." pre-processor statements,
and with @DEPRECATED in source code comments.  Where users are not
adversely affected, a run-time DEPRECATION statement may be printed.

Whenever published functionality is finally removed, move its entry
from the DEPRECATED section below to the OBSOLETE section for the
version in which it was removed.  Make sure the entry retains a
reference to the version in which the item was marked as deprecated.


EXAMPLES
--------

Example #1: Say we decided during 7.50.3 development to remove
rt_shootray() from the API without a replacement. That does NOT
qualify as "minimally impacting" because there's no replacement and
rt_shootray() has been published and documented in more than two
releases.  We'd annotate the deprecation in the CHANGES file, mark the
function as DEPRECATED in the API header, and post the 7.50.4 release.
The soonest that function could be removed would be in the 7.54.0
release during 7.53 development.  It could NOT be removed in 7.54.2
since it's a patch version, prior to the 7.54 release line, nor even
during 7.54.0 if less than 90 days had passed since 7.50.6 was posted.

Example #2: Say we decide during 7.48.0 development to modify bu_log()
by adding a new additional enum parameter denoting a message type.
This change is considered minimally impacting because it can be
characterized by a simple regular expression (e.g.,
s/bu_log(/bu_log(PRINT, /g).  Updates to calling codes are considered
trivial.  The change would get documented in the CHANGES file and all
calls that can be updated must be updated at that time.


**************
* DEPRECATED *
**************

The items listed below are interfaces that are deprecated.  They are
categorized by the release in which the change was made.  If the
change involved a removal of a command or function, both the original
and new names should be listed for reference.


7.26
----
pixcut, pixpaste
        copyright cleanup [deprecated 7.26]
librt, fast4-g
	removal of CLINE entity support [deprecated 7.26]

7.24
----
include/bu
        hist.h bu_hist bu_hist_t BU_HIST_NULL BU_HIST_INIT_ZERO [deprecated 7.24]
        BU_HIST_IS_INITIALIZED BU_HIST_TALLY BU_HIST_TALLY_MULTIPLE [deprecated 7.24]
        bu_hist_free bu_hist_init bu_hist_range bu_hist_pr [deprecated 7.24]
        functions, macros, and header will be renamed for clarity [deprecated 7.24]
fbed, pp-fb
        removes termcap use, no known users [deprecated 7.24]
include/raytrace librt
        db_full_path_list_add(), db_free_full_path_list() [deprecated 7.24]
        db_search_formplan(), db_search_freeplan(), db_search_full_paths() [deprecated 7.24]
        db_search_unique_objects(), struct db_full_path_list [deprecated 7.24]
src/irprep
        all_sf, firpass, ir-X, irdisp, pictx, secpass, shapefact, showterm [deprecated 7.24]
include/raytrace.h librt
        RT_DBHASH and RT_DBNHASH [deprecated 7.24]

7.22
----
include/raytrace.h librt
	nmg_model_break_e_on_v -> nmg_break_e_on_v [deprecation 7.22]
	RT_GET_TREE -> BU_GET [deprecation 7.22]
	RT_FREE_TREE -> BU_PUT [deprecation 7.22]
include/bu.h
        bu_parse_mm() [deprecated 7.22]
librtserver
        becoming stand-alone project, removes optional java dependency [deprecated 7.22]
mged
	em, e_muves, l_muves, lm, read_muves, and t_muves MUVES-specific commands [deprecated 7.22]

7.20
----
liborle
	remove liborle and the tools using it, fb-orle, orle-fb, orle-pix and
	pix-orle [deprecated 7.20]
tclscripts/lib
	Mged, Database, Db, Dm, Drawable, Display, QuadDisplay, View -> Ged [deprecated 7.20]
librt
	bspline primitive [deprecated 7.20]
	poly primitive [deprecated 7.20]
	hf primitive [deprecated 7.20]
include/bu.h
	bu_vls_init_if_uninit() -> bu_vls_init() [deprecated 7.20]
autogen.sh && configure
	GNU Autotools build system -> CMake build system [deprecated 7.20]
	./configure -> cmake . [deprecated 7.20]
include/raytrace.h
	rt_load_attrs() -> rt_gettrees_and_attrs() or db5_import_attributs() [deprecated 7.20]
	db_regexp_match() -> !bu_fnmatch() [deprecated 7.20]

7.18
----
include/raytrace.h rt_comb_internal members
	region_id -> region_id attribute [deprecated 7.18]
	aircode -> air attribute [deprecated 7.18]
	GIFTmater -> material_id attribute [deprecated 7.18]
	los -> los attribute [deprecated 7.18]
bu.h xdr API
	BU_GLONGLONG() -> ntohll() [deprecated 7.18]
	BU_GLONG() -> ntohl() [deprecated 7.18]
	BU_GSHORT() -> ntohs() [deprecated 7.18]
	bu_gshort() -> ntohs() [deprecated 7.18]
	bu_glong() -> ntohl() [deprecated 7.18]
	bu_pshort() -> htons() [deprecated 7.18]
	bu_plong() -> htonl() [deprecated 7.18]
	bu_plonglong() -> htonll() [deprecated 7.18]
db.h
	rt_fastf_float() -> ntohf() [deprecated 7.18]
	rt_mat_dbmat() -> htonf() [deprecated 7.18]
	rt_dbmat_mat() -> ntohf() [deprecated 7.18]
dbcp
	dbcp -> dd [deprecated 7.18]
mged
	?(*) -> ? -(*) [deprecated 7.18]
	apropos(*) -> apropos -(*) [deprecated 7.18]
	dbconcat -> db concat [deprecated 7.18]
	dbupgrade -> db upgrade [deprecated 7.18]
	dbversion -> db version [deprecated 7.18]
	dbfind -> search [deprecated 7.18]
	debug* -> debug [deprecated 7.18]
	comb_std -> comb [deprecated 7.18]
	comb_color -> comb [deprecated 7.18]
	combmem -> comb [deprecated 7.18]
	kill(*) -> kill [deprecated 7.18]
	rotobj -> rot [deprecated 7.18]
	qvrot -> rot -q -v [deprecated 7.18]
	qorot -> rot -q [deprecated 7.18]
	([amov])rot -> rot -([amv]) [deprecated 7.18]
	([op])scale -> sca -(p) [deprecated 7.18]
	([op])translate -> tra -(p) [deprecated 7.18]
	nmg_(*) -> nmg (*) [deprecated 7.18]
	bot_(*) -> bot (*) [deprecated 7.18]
	[so]ed -> edit [deprecated 7.18]
	[tr]ed -> edit -t [deprecated 7.18]
	ls -oA -> ls -O [deprecated 7.18]
	draw -oA -> draw -O [deprecated 7.18]
	erase -oA -> erase -O [deprecated 7.18]
	erase_all -> erase -r [deprecated 7.18]
	move_all -> move -r [deprecated 7.18]
	query_ray -> nirt [deprecated 7.18]
	vdraw -> draw -v [deprecated 7.18]
	vnirt -> nirt -v [deprecated 7.18]
	vquery_ray -> nirt -v [deprecated 7.18]
	xpush -> push -x [deprecated 7.18]

7.16
----
struct bu_structparse 'i' format
       'i' -> '%p' [deprecated 7.16]
SGI-specific tools
	pl-sgi -> pl-fb [ deprecated 7.16 ]
Dunn camera and Canon printer tools
	dunncolor [ deprecated 7.16 ]
	dunnsnap [ deprecated 7.16 ]
	canonize [ deprecated 7.16 ]
reserved attributes and case-sensitivity
	id -> region_id [deprecated 7.16]
	GIFTmater -> material_id [deprecated 7.16]
	GIFT_MATERIAL -> material_id [deprecated 7.16]
	mat -> material_id [deprecated 7.16]
	AIRCODE -> air [deprecated 7.16]
	rgb -> color [deprecated 7.16]
	oshader -> shader [deprecated 7.16]
genptr_t/GENPTR_NULL
	genptr_t -> void* [deprecated 7.16]
any-png.sh
	use pix tools [deprecated 7.16]
cadbug.sh
	use sf.net tracker [deprecated 7.16]
cray.sh
	obsolete hardware [deprecated 7.16]
pixwrite.sh
	obsolete hardware [deprecated 7.16]
pixread.sh
	obsolete hardware [deprecated 7.16]
sgisnap.sh
	obsolete hardware [deprecated 7.16]
include/bu.h
	bu_argv0() -> bu_basename(bu_argv0_full_path()); [deprecated 7.16]
include/raytrace.h
	rt_prep_timer() -> bu_timer() [deprecated 7.16]
	rt_get_timer() -> bu_elapsed() [deprecated 7.16]
mged
	make_bb -> bb [deprecated 7.16]

7.14
----
include/dm_color.h
	dm_color.h -> dm.h [deprecated 7.14]
include/fb.h
	FB_WPIXEL -> fb_wpixel [deprecated 7.14]
src/gtools
	g_[toolname] -> g[toolname] [deprecated 7.14]
include/raytrace.h
	rt_fdiff -> NEAR_ZERO [deprecated 7.14]
	rt_reldiff -> NEAR_ZERO [deprecated 7.14]
	DIR_* -> RT_DIR_* [deprecated 7.14]
mged
	tops -g -u -> now default behavior [deprecated 7.14]
	-n option -> -c option [deprecated 7.14]
	bots, per_line [deprecated 7.14]
include/vmath.h
	VADD2_2D -> V2ADD2 [deprecated 7.14]
	VSUB2_2D -> V2SUB2 [deprecated 7.14]
	MAGSQ_2D -> MAG2SQ [deprecated 7.14]
	VDOT_2D -> V2DOT [deprecated 7.14]
	VMOVE_2D -> V2MOVE [deprecated 7.14]
	VSCALE_2D -> V2SCALE [deprecated 7.14]
	VJOIN1_2D -> V2JOIN1 [deprecated 7.14]

7.12
----
include/raytrace.h
	rt_functab size -> growing ft_label and new callbacks [deprecated 7.12]
srt/librt/cmd.c
	rt_split_cmd() -> bu_argv_from_string() [deprecated 7.12]
src/rt/viewarea.c
	terminology and output format [deprecated 7.12]
include/raytrace.h
	RT_HIT_NORM -> RT_HIT_NORMAL [deprecated 7.12]

pre 7.0
-------
include/raytrace.h
	struct hit.hit_point -> RT_HIT_POINT [deprecated pre-7.0]
	struct hit.hit_normal -> RT_HIT_NORMAL [deprecated pre-7.0]


************
* OBSOLETE *
************

Below are the interfaces that have followed deprecation policy and are
now no longer a part of BRL-CAD.


7.24.2
------
.pl file suffix
	.pl -> .plot3 [deprecated 7.16]
*-pl
	*-pl -> *-plot3 [deprecated 7.16]
pl*
	pl* -> plot3* [deprecated 7.16]

7.24.0
------
include/bu.h
	bu_get_public_cpus() [deprecated 7.16]
	bu_get_load_average() [deprecated 7.12]
	bu_fopen_uniq() -> fopen() [deprecated 7.14]
src/other/jove
	jove -> emacs [deprecated 7.14]

7.22.0
------
include/bu.h
	%S format specifier -> %V format specifier for bu_vls [deprecated 7.14]

7.20.2
------
cat-fb
	obsolete hardware
include/vmath.h
	ELEMENTS_PER_PT -> ELEMENTS_PER_POINT [deprecated 7.12]
	HVECT_LEN -> ELEMENTS_PER_HVECT [deprecated 7.12]
	HPT_LEN -> ELEMENTS_PER_HPOINT [deprecated 7.12]

7.20.0
------
include/bu.h
	bu_mro and related macros -> bu_attribute_value_set

7.18.2
------
include/raytrace.h
	RT_HIT_NORM -> RT_HIT_NORMAL [deprecated pre-7.0]
g-shell.rect
	g-shell.rect renamed to g-shell-rect [minor tool rename]

7.18.0
------
include/raytrace.h
	db_free_external -> bu_free_external [deprecated pre-7.0]
include/wdb.h
	mk_fastgen_region() -> mk_comb() [deprecated 7.12]
src/librt/bomb.c
	rt_bomb() -> bu_bomb() [deprecated 7.10]
include/machine.h
	machine.h -> common.h && bu.h [deprecated 7.10]
src/vas4
	vas4 [deprecated 7.12]

7.16.4
------
include/raytrace.h
	get_solidbitv() -> rt_get_solidbitv() [deprecated 7.16]

7.14.4
------
include/pkg.h
	uses size_t for lengths in API calls
include/bu.h
	bu_association() [unused]

7.14.0
------
include/raytrace.h
	GET_HITMISS -> NMG_GET_HITMISS
mged
	edcolor -> color -e
include/vmath.h
	PI -> M_PI
	M_SQRT2_DIV2 -> M_SQRT1_2

7.12.6
------
mged
	binary -> bo [rename]

7.12.4
------
include/mater.h
	rt_material_head -> rt_material_head()  [deprecated 7.12]
include/raytrace.h
	removed iterator from NMG_CK_HITMISS_LIST
include/bu.h
	BU_QFLSTR -> BU_FLSTR

7.12.2
------
include/wdb.h
	mk_trc() -> mk_trc_h() and mk_trc_top() [deprecated pre-7.0]
	mk_bsolid() [deprecated pre-7.0]
	mk_bsurf() [deprecated pre-7.0]
	mk_strsol() -> mk_dsp(), mk_ebm(), mk_vol(), mk_submodel() [deprecated pre-7.0]
	mk_rcomb(), mk_fcomb(), mk_memb() -> mk_lcomb() and mk_addmember() [deprecated pre-7.0]
	mk_fwrite_internal() [deprecated pre-7.0]

7.12.0
------
include/common.h
	NATURAL_IEEE -> bu_byteorder() == BU_BIG_ENDIAN || defined(WORDS_BIGENDIAN)
	REVERSE_IEEE -> bu_byteorder() == BU_LITTLE_ENDIAN
include/bu.h
	bu_log(char *, ...) -> bu_log(const char *, ...) [const]
	bu_flog(FILE *, char *, ...) -> bu_flog(FILE *, const char *, ...) [const]
	bu_vls_printf(struct bu_vls *, char *) -> bu_vls_printf(struct bu_vls *, const char *) [const]
	bu_vls_sprintf(struct bu_vls *, char *) -> bu_vls_sprintf(struct bu_vls *, const char *) [const]
include/wdb.h
	removed mk_poly() [deprecated pre-7.0]
	removed mk_polysolid() [deprecated pre-7.0]
	removed mk_fpoly() [deprecated pre-7.0]
	removed write_shell_as_polysolid() [deprecated 6.0]
include/bu.h
	char *bu_brlcad_path() -> const char *bu_brlcad_path() [const]
include/bn.h
	bn_mat_zero() -> MAT_ZERO() [deprecated pre-7.0]
	bn_mat_idn() -> MAT_IDN() [deprecated pre-7.0]
	bn_mat_copy() -> MAT_COPY() [deprecated pre-7.0]
include/compat4.h
	compat4.h -> bu.h && bn.h [deprecated 5.0]
include/raytrace.h
	rt_overlap_quietly() -> struct application.a_logoverlap = rt_silent_logoverlap [deprecated pre 7.0]
include/bu.h
	bu_brlcad_path() -> bu_brlcad_root() || bu_brlcad_data() [deprecated 7.4]
	bu_tcl_brlcad_path() -> bu_tcl_brlcad_root() || bu_tcl_brlcad_data() [deprecated 7.4]
include/fb.h
	fb_log(char *fmt) -> fb_log(const char *fmt) [const]
include/noalias-prag.h
	removed [non-stdc]
include/noalias.h
	removed [non-stdc]
src/librt/wdb_obj.c -> src/librt/db_obj.c
	removed wdb_tree_cmd(), added dgo_tree_cmd() [rename]
mged
	dbbinary -> binary [rename]

7.10.4
------
include/msr.h [pre 7.0]
	msr.h -> bu.h
include/rtlist.h [pre 7.0]
	rtlist.h -> bu.h
include/rtstring.h [pre 7.0]
	rtstring.h -> bu.h
include/shortvect.h [pre 7.0]
include/shortvect-pr.h [pre 7.0]

7.10.2
------
include/raytrace.h
	rt_version -> rt_version() [private]
include/[library].h (several)
	[library]_version -> [library]_version() [private]


***********************************
* MINIMALLY IMPACTING API CHANGES *
***********************************

Included in following are various minimally impacting API changes that
have been identified in chronological order.  As expressions are not
extensively tested, use with caution.

Unless noted otherwise, expressions are shown using Perl syntax and
may need adjustment (particularly quoting of '(', ')', and '|'
characters) for other environments.  Most expressions will apply with:
	perl -0777 -pi -e 'EXPRESSION' FILE


6.0 (sed lines)
---
g/struct structparse/s//struct bu_structparse/g
g/struct rt_mapped_file/s//struct bu_mapped_file/g
g/struct rt_list/s//struct bu_list/g
g/struct histogram/s//struct bu_hist/g
g/complex	/s//bn_complex_t	/g
g/GETSTRUCT/s//BU_GETSTRUCT/g
g/GETUNION/s//BU_GETUNION/g
g/nmg_tbl.*(\(.*\), TBL_INIT[ ]*, \(.*\))/s//bu_ptbl_init(\1, 64, "\1")/
g/nmg_tbl.*(\(.*\), TBL_RST[ ]*, \(.*\))/s//bu_ptbl_reset(\1)/
g/nmg_tbl.*(\(.*\), TBL_INS[ ]*, \(.*\))/s//bu_ptbl_ins(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_LOC[ ]*, \(.*\))/s//bu_ptbl_locate(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_ZERO[ ]*, \(.*\))/s//bu_ptbl_zero(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_INS_UNIQUE[ ]*, \(.*\))/s//bu_ptbl_ins_unique(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_RM[ ]*, \(.*\))/s//bu_ptbl_rm(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_CAT[ ]*, \(.*\))/s//bu_ptbl_cat(\1, \2)/
g/nmg_tbl.*(\(.*\), TBL_FREE[ ]*, \(.*\))/s//bu_ptbl_free(\1)/
g/nmg_tbl/s//bu_ptbl/g
g/nmg_ptbl/s//bu_ptbl/g
g/MSR_UNIF/s//BN_UNIF/g
g/MSR_GAUSS/s//BN_GAUSS/g
g/MSR_CK/s//BU_CK/g
g/msr_unif/s//bn_unif/g
g/msr_gauss/s//bn_gauss/g
g/RT_CKMAG/s//BU_CKMAG/g
g/RT_TOL_MAGIC/s//BN_TOL_MAGIC/g
g/RT_CK_TOL/s//BN_CK_TOL/g
g/RT_VECT_ARE_PARALLEL/s//BN_VECT_ARE_PARALLEL/g
g/RT_VECT_ARE_PERP/s//BN_VECT_ARE_PERP/g
g/rt_badmagic/s//bu_badmagic/g
g/RT_SETJUMP/s//BU_SETJUMP/g
g/RT_UNSETJUMP/s//BU_UNSETJUMP/g
g/rt_twopi/s//bn_twopi/g
g/rt_halfpi/s//bn_halfpi/g
g/rt_quarterpi/s//bn_quarterpi/g
g/rt_invpi/s//bn_invpi/g
g/rt_inv2pi/s//bn_inv2pi/g
g/rt_inv4pi/s//bn_inv4pi/g
g/rt_inv255/s//bn_inv255/g
g/rt_degtorad/s//bn_degtorad/g
g/rt_radtodeg/s//bn_radtodeg/g
g/RT_HISTOGRAM_MAGIC/s//BU_HIST_MAGIC/g
g/RT_CK_HISTOGRAM/s//BU_CK_HIST/g
g/RT_HISTOGRAM_TALLY/s//BU_HIST_TALLY/g
g/rt_hist_free/s//bu_hist_free/g
g/rt_hist_init/s//bu_hist_init/g
g/rt_hist_range/s//bu_hist_range/g
g/rt_hist_pr/s//bu_hist_pr/g
g/RT_LIST_HEAD_MAGIC/s//BU_LIST_HEAD_MAGIC/g
g/RT_LIST_NULL/s//BU_LIST_NULL/g
g/RT_LIST_INSERT/s//BU_LIST_INSERT/g
g/RT_LIST_APPEND/s//BU_LIST_APPEND/g
g/RT_LIST_DEQUEUE/s//BU_LIST_DEQUEUE/g
g/RT_LIST_PUSH/s//BU_LIST_PUSH/g
g/RT_LIST_POP/s//BU_LIST_POP/g
g/RT_LIST_INSERT_LIST/s//BU_LIST_INSERT_LIST/g
g/RT_LIST_APPEND_LIST/s//BU_LIST_APPEND_LIST/g
g/RT_LIST_IS_EMPTY/s//BU_LIST_IS_EMPTY/g
g/RT_LIST_NON_EMPTY/s//BU_LIST_NON_EMPTY/g
g/RT_LIST_NON_EMPTY_P/s//BU_LIST_NON_EMPTY_P/g
g/RT_LIST_IS_CLEAR/s//BU_LIST_IS_CLEAR/g
g/RT_LIST_UNINITIALIZED/s//BU_LIST_UNINITIALIZED/g
g/RT_LIST_INIT/s//BU_LIST_INIT/g
g/RT_LIST_MAGIC_SET/s//BU_LIST_MAGIC_SET/g
g/RT_LIST_MAGIC_OK/s//BU_LIST_MAGIC_OK/g
g/RT_LIST_MAGIC_WRONG/s//BU_LIST_MAGIC_WRONG/g
g/RT_LIST_IS_HEAD/s//BU_LIST_IS_HEAD/g
g/RT_LIST_NOT_HEAD/s//BU_LIST_NOT_HEAD/g
g/RT_CK_LIST_HEAD/s//BU_CK_LIST_HEAD/g
g/RT_LIST_NEXT_IS_HEAD/s//BU_LIST_NEXT_IS_HEAD/g
g/RT_LIST_NEXT_NOT_HEAD/s//BU_LIST_NEXT_NOT_HEAD/g
g/RT_LIST_FOR2/s//BU_LIST_FOR2/g
g/RT_LIST_FOR/s//BU_LIST_FOR/g
g/RT_LIST_WHILE/s//BU_LIST_WHILE/g
g/RT_LIST_FIRST_MAGIC/s//BU_LIST_FIRST_MAGIC/g
g/RT_LIST_LAST_MAGIC/s//BU_LIST_LAST_MAGIC/g
g/RT_LIST_PNEXT_PNEXT/s//BU_LIST_PNEXT_PNEXT/g
g/RT_LIST_PNEXT_PLAST/s//BU_LIST_PNEXT_PLAST/g
g/RT_LIST_PLAST_PNEXT/s//BU_LIST_PLAST_PNEXT/g
g/RT_LIST_PLAST_PLAST/s//BU_LIST_PLAST_PLAST/g
g/RT_LIST_PNEXT_CIRC/s//BU_LIST_PNEXT_CIRC/g
g/RT_LIST_PPREV_CIRC/s//BU_LIST_PPREV_CIRC/g
g/RT_LIST_PLAST_CIRC/s//BU_LIST_PPREV_CIRC/g
g/RT_LIST_MAIN_PTR/s//BU_LIST_MAIN_PTR/g
g/RT_LIST_PNEXT/s//BU_LIST_PNEXT/g
g/RT_LIST_PLAST/s//BU_LIST_PLAST/g
g/RT_LIST_LAST/s//BU_LIST_LAST/g
g/RT_LIST_PREV/s//BU_LIST_PREV/g
g/RT_LIST_FIRST/s//BU_LIST_FIRST/g
g/RT_LIST_NEXT/s//BU_LIST_NEXT/g
g/rt_log/s//bu_log/g
g/rt_add_hook/s//bu_add_hook/g
g/rt_delete_hook/s//bu_delete_hook/g
g/rt_putchar/s//bu_putchar/g
g/rt_flog/s//bu_flog/g
g/rt_identify_magic/s//bu_identify_magic/g
g/rt_identity/s//bn_mat_identity/g
g/rt_prmem/s//bu_prmem/g
g/rt_strdup/s//bu_strdup/g
g/rt_malloc/s//bu_malloc/g
g/rt_calloc/s//bu_calloc/g
g/rt_free/s//bu_free/g
g/rt_byte_roundup/s//bu_malloc_len_roundup/g
g/rt_mem_barriercheck/s//bu_mem_barriercheck/g
g/rt_open_mapped_file/s//bu_open_mapped_file/g
g/rt_close_mapped_file/s//bu_close_mapped_file/g
g/RT_CK_MAPPED_FILE/s//BU_CK_MAPPED_FILE/g
g/noise_init/s//bn_noise_init/g
g/noise_perlin/s//bn_noise_perlin/g
g/noise_vec/s//bn_noise_vec/g
g/noise_fbm/s//bn_noise_fbm/g
g/noise_turb/s//bn_noise_turb/g
g/rt_pri_set/s//bu_nice_set/g
g/rt_cpuget/s//bu_cpulimit_get/g
g/rt_cpuset/s//bu_cpulimit_set/g
g/rt_avail_cpus/s//bu_avail_cpus/g
g/rt_parallel/s//bu_parallel/g
g/rt_struct_export/s//bu_struct_export/g
g/rt_struct_import/s//bu_struct_import/g
g/rt_struct_put/s//bu_struct_put/g
g/rt_struct_get/s//bu_struct_get/g
g/rt_gshort/s//bu_gshort/g
g/rt_glong/s//bu_glong/g
g/rt_pshort/s//bu_pshort/g
g/rt_plong/s//bu_plong/g
g/rt_struct_buf/s//bu_struct_wrap_buf/g
g/rt_structparse/s//bu_struct_parse/g
g/rt_structprint/s//bu_struct_print/g
g/rt_vls_structprint/s//bu_vls_struct_print/g
g/offsetofarray/s//bu_offsetofarray/g
g/ FUNC_NULL/s// BU_STRUCTPARSE_FUNC_NULL/g
g/rt_external/s//bu_external/g
g/RT_EXTERNAL_MAGIC/s//BU_EXTERNAL_MAGIC/g
g/RT_EXTERN/s//BU_EXTERN/g
g/RT_INIT_EXTERNAL/s//BU_INIT_EXTERNAL/g
g/RT_CK_EXTERNAL/s//BU_CK_EXTERNAL/g
g/rt_dist_pt3_lseg3/s//bn_dist_pt3_lseg3/g
g/rt_3pts_collinear/s//bn_3pts_collinear/g
g/rt_pt3_pt3_equal/s//bn_pt3_pt3_equal/g
g/rt_dist_pt2_lseg2/s//bn_dist_pt2_lseg2/g
g/rt_isect_lseg3_lseg3/s//bn_isect_lseg3_lseg3/g
g/rt_isect_line3_line3/s//bn_isect_line3_line3/g
g/rt_2line3_colinear/s//bn_2line3_colinear/g
g/rt_isect_pt2_lseg2/s//bn_isect_pt2_lseg2/g
g/rt_isect_line2_lseg2/s//bn_isect_line2_lseg2/g
g/rt_isect_lseg2_lseg2/s//bn_isect_lseg2_lseg2/g
g/rt_isect_line2_line2/s//bn_isect_line2_line2/g
g/rt_dist_line_point/s//bn_dist_line3_pt3/g
g/rt_dist_pt3_pt3/s//bn_dist_pt3_pt3/g
g/rt_3pts_distinct/s//bn_3pts_distinct/g
g/rt_mk_plane_3pts/s//bn_mk_plane_3pts/g
g/rt_mkpoint_3planes/s//bn_mkpoint_3planes/g
g/rt_isect_line3_plane/s//bn_isect_line3_plane/g
g/rt_isect_2planes/s//bn_isect_2planes/g
g/rt_isect_2lines/s//bn_isect_2lines/g
g/rt_isect_line_lseg/s//bn_isect_line_lseg/g
g/rt_dist_line3_pt3/s//bn_dist_line3_pt3/g
g/rt_distsq_line3_pt3/s//bn_distsq_line3_pt3/g
g/rt_dist_line_origin/s//bn_dist_line_origin/g
g/rt_dist_line2_point2/s//bn_dist_line2_point2/g
g/rt_distsq_line2_point2/s//bn_distsq_line2_point2/g
g/rt_area_of_triangle/s//bn_area_of_triangle/g
g/rt_isect_pt_lseg/s//bn_isect_pt_lseg/g
g/rt_dist_pt_lseg/s//bn_dist_pt_lseg/g
g/rt_rotate_bbox/s//bn_rotate_bbox/g
g/rt_rotate_plane/s//bn_rotate_plane/g
g/rt_coplanar/s//bn_coplanar/g
g/rt_angle_measure/s//bn_angle_measure/g
g/rt_dist_pt3_along_line3/s//bn_dist_pt3_along_line3/g
g/rt_dist_pt2_along_line2/s//bn_dist_pt2_along_line2/g
g/rt_between/s//bn_between/g
g/rt_printb/s//bu_printb/g
g/NMG_CK_PTBL/s//BU_CK_PTBL/g
g/NMG_TBL_BASEADDR/s//BU_PTBL_BASEADDR/g
g/NMG_TBL_LASTADDR/s//BU_PTBL_LASTADDR/g
g/NMG_TBL_END/s//BU_PTBL_END/g
g/NMG_TBL_GET/s//BU_PTBL_GET/g
g/RT_RAND_TABSIZE/s//BN_RAND_TABSIZE/g
g/RT_RANDSEED/s//BN_RANDSEED/g
g/RT_RANDOM/s//BN_RANDOM/g
g/rt_rand_table/s//bn_rand_table/g
g/rt_tol/s//bn_tol/g
g/RES_ACQUIRE(/s//bu_semaphore_acquire(/
g/RES_RELEASE(/s//bu_semaphore_release(/
g/&rt_g.res_syscall/s//BU_SEM_SYSCALL/
g/&rt_g.res_worker/s//RT_SEM_WORKER/
g/&rt_g.res_stats/s//RT_SEM_STATS/
g/&rt_g.res_results/s//RT_SEM_RESULTS/
g/&rt_g.res_model/s//RT_SEM_MODEL/
g/RES_INIT(/s/RES_INIT.*;/bu_semaphore_init( RT_SEM_LAST );/p
g/RT_VLS_CHECK/s//BU_CK_VLS/g
g/RT_VLS_ADDR/s//bu_vls_addr/g
g/RT_VLS_INIT/s//bu_vls_init/g
g/rt_vls_init/s//bu_vls_init/g
g/rt_vls_vlsinit/s//bu_vls_vlsinit/g
g/rt_vls_addr/s//bu_vls_addr/g
g/rt_vls_strdup/s//bu_vls_strdup/g
g/rt_vls_strgrab/s//bu_vls_strgrab/g
g/rt_vls_extend/s//bu_vls_extend/g
g/rt_vls_setlen/s//bu_vls_setlen/g
g/rt_vls_strlen/s//bu_vls_strlen/g
g/rt_vls_trunc/s//bu_vls_trunc/g
g/rt_vls_trunc2/s//bu_vls_trunc2/g
g/rt_vls_nibble/s//bu_vls_nibble/g
g/rt_vls_free/s//bu_vls_free/g
g/rt_vls_vlsfree/s//bu_vls_vlsfree/g
g/rt_vls_strcpy/s//bu_vls_strcpy/g
g/rt_vls_strncpy/s//bu_vls_strncpy/g
g/rt_vls_strcat/s//bu_vls_strcat/g
g/rt_vls_strncat/s//bu_vls_strncat/g
g/rt_vls_vlscat/s//bu_vls_vlscat/g
g/rt_vls_vlscatzap/s//bu_vls_vlscatzap/g
g/rt_vls_from_argv/s//bu_vls_from_argv/g
g/rt_vls_fwrite/s//bu_vls_fwrite/g
g/rt_vls_gets/s//bu_vls_gets/g
g/rt_vls_putc/s//bu_vls_putc/g
g/rt_vls_printf/s//bu_vls_printf/g
g/CxCopy/s//bn_cx_copy/g
g/CxNeg/s//bn_cx_neg/g
g/CxReal/s//bn_cx_real/g
g/CxImag/s//bn_cx_imag/g
g/CxAdd/s//bn_cx_add/g
g/CxAmplSq/s//bn_cx_amplsq/g
g/CxAmpl/s//bn_cx_ampl/g
g/CxConj/s//bn_cx_conj/g
g/CxCons/s//bn_cx_cons/g
g/CxPhas/s//bn_cx_phas/g
g/CxScal/s//bn_cx_scal/g
g/CxSub/s//bn_cx_sub/g
g/CxMul/s//bn_cx_mul/g
g/CxMul2/s//bn_cx_mul2/g
g/CxDiv/s//bn_cx_div/g
g/rt_poly_scale/s//bn_poly_scale/g
g/rt_pr_poly/s//bn_pr_poly/g
g/rt_pr_roots/s//bn_pr_roots/g
g/TBL_INIT/s//BU_PTBL_INIT/g
g/TBL_INS/s//BU_PTBL_INS/g
g/TBL_LOC/s//BU_PTBL_LOC/g
g/TBL_FREE/s//BU_PTBL_FREE/g
g/TBL_RST/s//BU_PTBL_RST/g
g/TBL_CAT/s//BU_PTBL_CAT/g
g/TBL_RM/s//BU_PTBL_RM/g
g/TBL_INS_UNIQUE/s//BU_PTBL_INS_UNIQUE/g
g/TBL_ZERO/s//BU_PTBL_ZERO/g
g/rt_pi/s//bn_pi/g
g/matXvec/s//bn_matXvec/g
g/mat_ae/s//bn_mat_ae/g
g/mat_ae_vec/s//bn_ae_vec/g
g/mat_aet_vec/s//bn_aet_vec/g
g/mat_angles/s//bn_mat_angles/g
g/mat_arb_rot/s//bn_mat_arb_rot/g
g/mat_atan2/s//bn_atan2/g
g/mat_copy/s//bn_mat_copy/g
g/mat_degtorad/s//bn_degtorad/g
g/mat_dup/s//bn_mat_dup/g
g/mat_eigen2x2/s//bn_eigen2x2/g
g/mat_fromto/s//bn_mat_fromto/g
g/mat_htov_move/s//bn_htov_move/g
g/mat_identity/s//bn_mat_identity/g
g/mat_idn/s//MAT_IDN/g
g/mat_inv/s//bn_mat_inv/g
g/rt_mat_is_equal/s//bn_mat_is_equal/g
g/mat_is_identity/s//bn_mat_is_identity/g
g/mat_lookat/s//bn_mat_lookat/g
g/mat_mul/s//bn_mat_mul/g
g/mat_mul2/s//bn_mat_mul2/g
g/mat_print/s//bn_mat_print/g
g/mat_radtodeg/s//bn_radtodeg/g
g/mat_scale_about_pt/s//bn_mat_scale_about_pt/g
g/mat_trn/s//bn_mat_trn/g
g/mat_vec_ortho/s//bn_vec_ortho/g
g/mat_vec_perp/s//bn_vec_perp/g
g/mat_vtoh_move/s//bn_vtoh_move/g
g/mat_xform_about_pt/s//bn_mat_xform_about_pt/g
g/mat_xrot/s//bn_mat_xrot/g
g/mat_yrot/s//bn_mat_yrot/g
g/mat_zrot/s//bn_mat_zrot/g
g/mat_zero/s//bn_mat_zero/g
g/rb_tree/s//bu_rb_tree/g
g/RB_TREE_NULL/s//BU_RB_TREE_NULL/g
g/rb_min/s//bu_rb_min/g
g/rb_max/s//bu_rb_max/g
g/rb_pred/s//bu_rb_pred/g
g/rb_succ/s//bu_rb_succ/g
g/rb_create/s//bu_rb_create/g
g/rb_create1/s//bu_rb_create1/g
g/rb_delete/s//bu_rb_delete/g
g/rb_diagnose_tree/s//bu_rb_diagnose_tree/g
g/rb_extreme/s//bu_rb_extreme/g
g/rb_insert/s//bu_rb_insert/g
g/rb_neighbor/s//bu_rb_neighbor/g
g/rb_search/s//bu_rb_search/g
g/rb_search1/s//bu_rb_search1/g
g/rb_summarize_tree/s//bu_rb_summarize_tree/g
g/rb_walk/s//bu_rb_walk/g
g/rb_walk1/s//bu_rb_walk1/g
g/RT_VLIST_CHUNK/s//BN_VLIST_CHUNK/g
g/rt_vlist/s//bn_vlist/g
g/RT_VLIST_NULL/s//BN_VLIST_NULL/g
g/RT_VLIST_MAGIC/s//BN_VLIST_MAGIC/g
g/RT_CK_VLIST/s//BN_CK_VLIST/g
g/RT_VLIST_LINE_MOVE/s//BN_VLIST_LINE_MOVE/g
g/RT_VLIST_LINE_DRAW/s//BN_VLIST_LINE_DRAW/g
g/RT_VLIST_POLY_START/s//BN_VLIST_POLY_START/g
g/RT_VLIST_POLY_MOVE/s//BN_VLIST_POLY_MOVE/g
g/RT_VLIST_POLY_DRAW/s//BN_VLIST_POLY_DRAW/g
g/RT_VLIST_POLY_END/s//BN_VLIST_POLY_END/g
g/RT_VLIST_POLY_VERTNORM/s//BN_VLIST_POLY_VERTNORM/g
g/rt_vlblock/s//bn_vlblock/g
g/RT_VLBLOCK_MAGIC/s//BN_VLBLOCK_MAGIC/g
g/RT_CK_VLBLOCK/s//BN_CK_VLBLOCK/g
g/BU_BU_/s//BU_/g
g/bu_bu_/s//bu_/g
g/bn_bn_/s//bn_/g
g/bn_pipe/s//rt_pipe/g
	major API overhaul [6.0]
7.14
----
s/rt_db_free_internal\(([^,]+),[^\)]*\)/rt_db_free_internal(\1)/g
	struct resource pointer parameter removed [7.14]

7.16
----
s/rt_ptalloc\(\);/(struct rt_pt_node *)bu_malloc(sizeof(struct rt_pt_node), "rt_pt_node");/g
	rt_ptalloc() removed [7.16]

7.18
----
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_INIT([^\)]*)\)/bu_ptbl_init(\1, 64, "init")/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_RST([^\)]*)\)/bu_ptbl_reset(\1)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_INS([^\)]*)\)/bu_ptbl_ins(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_LOC([^\)]*)\)/bu_ptbl_locate(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_ZERO([^\)]*)\)/bu_ptbl_zero(\1\2/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_INS_UNIQUE([^\)]*)\)/bu_ptbl_ins_unique(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_RM([^\)]*)\)/bu_ptbl_rm(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_CAT([^\)]*)\)/bu_ptbl_cat(\1\2)/g
s/bu_ptbl\(([^,]*),[[:space:]]*BU_PTBL_FREE([^\)]*)\)/bu_ptbl_free(\1)/g
	bu_ptbl() removed [7.18]

s/nmg_struct_counts\(/nmg_pr_m_struct_counts(/g
	nmg_struct_counts() renamed to nmg_pr_m_struct_counts() [7.18]

s/bu_vlb_getBuffer\(/bu_vlb_addr(/g
	bu_vlb_getBuffer() renamed to bu_vlb_addr() [7.18]

s/bu_vlb_getBufferLength\(/bu_vlb_buflen(/g
	bu_vlb_getBufferLength() renamed to bu_vlb_buflen() [7.18]

s/V2APPROXEQUAL\(/V2NEAR_EQUAL(/g
	V2APPROXEQUAL() renamed to V2NEAR_EQUAL() [7.18]

s/VAPPROXEQUAL\(/VNEAR_EQUAL(/g
	VAPPROXEQUAL() renamed to VNEAR_EQUAL() [7.18]

s/db_get_version\(/db_version(/g
	db_get_version() renamed to db_version() [7.18]

s/db_get_directory_size\(/db_directory_size(/g
	db_get_directory_size() renamed to db_directory_size() [7.18]

s/db_get_directory\(/db_alloc_directory_block(/g
	db_get_directory() renamed to db_alloc_directory_block() [7.18]

s/rt_get_seg\(/rt_alloc_sed_block(/g
	rt_get_seg() renamed to rt_alloc_seg_block() [7.18]

s/db_shader_mat\(/rt_shader_mat(/g
	db_shader_mat() renamed to rt_shader_mat() [7.18]

s/SMALL([^_])/SMALL_FAST\1/g
	SMALL renamed to SMALL_FASTF [7.18]

7.20
----
s/spm_([^\)]*)/bn_spm_\1/g
	spm functions and types renamed to bn_spm [7.20]

s/RT_CK_SPM/BN_CK_SPM_MAP/g
	RT_CK_SPM macro renamed to BN_CK_SPM MAP [7.20]

s/SPM_MAGIC/BN_SPM_MAGIC/g
	SPM_MAGIC renamed to BN_SPM_MAGIC [7.20]

s/SPM_NULL/BN_SPM_MAP_NULL/g
	SPM_NULL renamed to BN_SPM_MAP_NULL [7.20]

s/BU_EXTERN[[:space:]]*\([[:space:]]*([^,]*?)[[:space:]]*,[[:space:]]*\([[:space:]]*([^)]*)[[:space:]]*\)[[:space:]]*\)/extern \1(\2)/g
	BU_EXTERN() no longer necessary due to C89 minimum, use extern [7.20]

s/[[:space:]]*BU_ARGS[[:space:]]*\([[:space:]]*([^)]*[[:space:]]*)[[:space:]]*\)/\1/g
	BU_ARGS() no longer necessary due to C89 minimum, list args [7.20]

s/BU_LIST_UNINITIALIZED/!BU_LIST_IS_INITIALIZED/g
	BU_LIST_IS_INITIALIZED() removed for consistency [7.20]

s/BU_INIT_EXTERNAL/BU_EXTERNAL_INIT/g
	renamed for API consistency [7.20]

s/RT_CK_DBTR/RT_CK_DB_TRAVERSE/g
s/RT_DBTR_MAGIC/RT_DB_TRAVERSE_MAGIC/g
	renamed for API consistency [7.20]

s/RT_INIT_([A-Z_]*)/RT_\1_INIT/g
	renamed all RT_INIT_[type] macros to RT_[type]_INIT for API consistency [7.20]

s/BU_LIST_MAGIC_OK/BU_LIST_MAGIC_EQUAL/g
s/BU_LIST_MAGIC_WRONG/!BU_LIST_MAGIC_EQUAL/g
	renamed and consolidated to be consistent with libbn [7.20]

s/nmg_moveeu/nmg_je/g
	function has been renamed

7.22
----

s/rt_dist_pt3_line3/bn_dist_pt3_line3/g
s/rt_dist_line3_line3/bn_dist_line3_line3/g
s/rt_dist_line3_lseg3/bn_dist_line3_lseg3/g
	functions moved from librt to libbn [7.21]
s/bu_tcl_setup/Bu_Init/g
	removed bu_tcl_setup() in favor of Bu_Init() [7.21]
s/bu_tcl_([^(]*)\([^,]*?[[:space:]]*,[^,]*?[[:space:]]*,(.*)/bu_\1(\2/g
	removed all bu_tcl_*() functions, leaving off interp and using native bu function [7.21]
s/bu_badmagic_tcl\([^,]*?[[:space:]]*,(.*)/bu_badmagic(\1/g
	removed bu_badmagic_tcl() in favor of bu_badmagic() [7.21]
s/(.*)_CK(.*)_TCL\([^,]*?[[:space:]]*,(.*)/\1_CK\2(\3/g
	removed all *_CK*_TCL() macros (e.g., BU_CKMAG_TCL, RT_CK_DBI_TCL, etc.) in favor of non-TCL macros [7.21]
s/bu_image/icv_image/g
	moved bu_image* functions to libicv as icv_image* [7.21]
s/BU_IMAGE/ICV_IMAGE/g
	moved BU_IMAGE* macros to icv.h as ICV_IMAGE* [7.21]
s/bu_cmd\(([^,]*?),[[:space:]]*([^,]*?),[[:space:]]*([^,]*?),[[:space:]]*([^,)]*?),[[:space:]]*([^)]*?)\)/bu_cmd(\4, \2, \3, \5, \1, NULL)/g
	inputs then outputs.  swapped bu_cmd's 4th parameter to 1st, 1st to 5th, and added a new return value hook last. [7.21]
s/V3(.*)_TOL\(([^,]*,)([^,]*,)([^,]*,)([^)]*)\)/V3\1_TOL(\1\2\3(\4)->dist)/g
	V3RPP_OVERLAP_TOL(), V3PT_IN_RPP_TOL(), and V3PT_OUT_RPP_TOL() tol parameter changed to value [7.21]
s/BU_GETSTRUCT\([[:space:]]*([^,)]+,)[[:space:]]*([^)]+)[[:space:]]*\)/BU_GET(\1 struct \2)/g
	BU_GETSTRUCT(ptr, struct_type) changed to BU_GET(ptr, struct struct_t) [7.21]
s/BU_GETUNION\([[:space:]]*([^,)]+,)[[:space:]]*([^)]+)[[:space:]]*\)/BU_GET(\1 union \2)/g
s/BU_GETTYPE\([[:space:]]*([^,)]+,)[[:space:]]*([^)]+)[[:space:]]*\)/BU_GET(\1 \2)/g
	BU_GETUNION() and BU_GETTYPE() macros changed to BU_GET() [7.21]
s/CMD_NULL/BU_CMD_NULL/g
s/CMDHIST/BU_CMDHIST/g
	prefix the cmd.h defines with BU_ since they are part of libbu [7.21]
s/bu_shader_to_tcl_list/bu_shader_to_list/g
	renamed as it applies to any list in {} form, tcl or otherwise [7.21]
s/bu_(add|delete|call)_hook/bu_hook_\1/g
	renamed hook functions to be consistent with other libbu API [7.21]
s/bu_file_exists\(([^)]*)\)/bu_file_exists(\1, NULL)/g
	new file descriptor parameter added [7.21]
s/bu_list_path\(([^,]*),([^,]*),[[:space:]]([^)]*)\)/bu_dir_list(\1,\2, &(\3))/g
s/bu_count_path(.*)\);/bu_dir_list\1, NULL);/g
	made bu_dir_list() return the number of entries [7.21]
s/bu_strcmpm\((.*),([^,]*)\)/bu_strcmp(\1)/g
	no use for label parameter, convert to bu_strcmp() [7.21]
        bu_set_realtime() [deprecated 7.22]

7.24
----
s/bu_set_realtime\([[:space:]]\);//g
        didn't do anything [7.23]
s/.*bu_cpulimit_[sg]et\([[:space:]]\);//g
        didn't do anything [7.23]
s/rt_g\./RTG\./g
        renamed rt_g global to RTG so it doesn't match the struct name [7.24]
s/rt_functab\[/OBJ\[/g
        renamed rt_functab global to OBJ so it doesn't match the struct name [7.24]
s/redraw_vlist/draw/g
        removed redraw_vlist mged command, just call draw or refresh [7.24]
s/RT_BADNUM/INVALID/g
s/RT_BADVAL/VINVALID/g
        moved RT_BADNUM and RT_BADVEC to vmath.h as INVALID and VINVALID [7.24]
s/bu_create_hash_tbl/bu_hash_tbl_create/g
s/bu_find_hash_entry/bu_hash_tbl_find/g
s/bu_hash_add_entry/bu_hash_tbl_add/g
s/bu_hash_tbl_pr/bu_hash_tbl_print/g
	renamed for better consistency in hash table API and with other libbu API [7.24]
s/dm_applicationfocus\([[:space:]]\);//g
	only useful in older os x versions, users can now do the same thing via XQuartz preferences
s/bu_vls_trunc2/bu_vls_trunc/g
        removed duplicitous function in favor of more general version
s/bn_pi/M_PI/g
s/bn_twopi/M_2PI/g
s/bn_halfpi/M_PI_2/g
s/bn_quarterpi/M_PI_4/g
s/bn_invpi/M_1_PI/g
s/bn_inv2pi/M_1_2PI/g
s/bn_inv4pi/M_1_4PI)/g
s/bn_inv255/(1.0 \/ 255.0)/g
s/bn_degtorad/DEG2RAD/g
s/bn_radtodeg/RAD2DEG/g
s/bn_sin_scale/(BN_SINTABSIZE \/ M_2PI)/g
        eliminated a number of libbn globals in favor of existing constants
s/(#[[:space:]]*include[[:space:]]+["<])vfont-if\.h/\1bu\/vfont-if.h/g
s/(#[[:space:]]*include[[:space:]]+["<])cmd\.h/\1bu\/cmd.h/g
s/(#[[:space:]]*include[[:space:]]+["<])magic\.h/\1bu\/magic.h/g
        library-specific public headers moved into a subdir [7.24]
s/([^_])([nh]to[hn][fd])/\1bu_cv_\2/g
        ntohf, ntohd, htonf, htond renamed with bu_cv_ prefix [7.24]
