Index: include/nurb.h
===================================================================
--- include/nurb.h	(revision 54124)
+++ include/nurb.h	(working copy)
@@ -252,7 +252,7 @@
 RT_EXPORT extern void rt_nurb_free_snurb(struct face_g_snurb *srf, struct resource *res);
 RT_EXPORT extern void rt_nurb_free_cnurb(struct edge_g_cnurb * crv);
 RT_EXPORT extern void rt_nurb_c_print(const struct edge_g_cnurb *crv);
-RT_EXPORT extern void rt_nurb_s_print(char *c, const struct face_g_snurb *srf);
+RT_EXPORT extern void rt_nurb_s_print(const char *c, const struct face_g_snurb *srf);
 RT_EXPORT extern void rt_nurb_pr_kv(const struct knot_vector *kv);
 RT_EXPORT extern void rt_nurb_pr_mesh(const struct face_g_snurb *m);
 RT_EXPORT extern void rt_nurb_print_pt_type(int c);
Index: include/shadefuncs.h
===================================================================
--- include/shadefuncs.h	(revision 54124)
+++ include/shadefuncs.h	(working copy)
@@ -47,7 +47,7 @@
  */
 struct mfuncs {
     uint32_t mf_magic;		/**< @brief To validate structure */
-    char *mf_name;		/**< @brief Keyword for material */
+    const char *mf_name;		/**< @brief Keyword for material */
     struct mfuncs *mf_forw;	/**< @brief Forward link */
     int mf_inputs;		/**< @brief shadework inputs needed */
     int mf_flags;		/**< @brief Flags describing shader */
Index: include/bu.h
===================================================================
--- include/bu.h	(revision 54124)
+++ include/bu.h	(working copy)
@@ -1709,7 +1709,7 @@
     genptr_t buf;	/**< In-memory copy of file (may be mmapped)  */
     size_t buflen;	/**< # bytes in 'buf'  */
     int is_mapped;	/**< 1=mmap() used, 0=bu_malloc/fread */
-    char *appl;		/**< bu_strdup() of tag for application using 'apbuf'  */
+    const char *appl;	/**< bu_strdup() of tag for application using 'apbuf'  */
     genptr_t apbuf;	/**< opt: application-specific buffer */
     size_t apbuflen;	/**< opt: application-specific buflen */
     long modtime;	/**< date stamp, in case file is modified */
@@ -2564,7 +2564,7 @@
  * checking)
  */
 struct bu_cmdtab {
-    char *ct_name;
+    const char *ct_name;
     int (*ct_func)(void *data, int argc, const char *argv[]);
 };
 
@@ -3331,7 +3331,7 @@
 /**
  * for bu_getopt().  current argument associated with current option.
  */
-BU_EXPORT extern char *bu_optarg;
+BU_EXPORT extern const char *bu_optarg;
 
 /**
  * Get option letter from argument vector.
@@ -5735,7 +5735,7 @@
 };
 struct bu_lex_key {
     int tok_val;
-    char *string;
+    const char *string;
 };
 #define BU_LEX_NEED_MORE 0
 
Index: include/vfont-if.h
===================================================================
--- include/vfont-if.h	(revision 54124)
+++ include/vfont-if.h	(working copy)
@@ -111,7 +111,7 @@
  * VFONT_NULL is returned on error.  On ordinary errors, the function
  * is silent.  On extraordinary errors, a remark is placed on stderr.
  */
-BU_EXPORT extern struct vfont *vfont_get(char *font);
+BU_EXPORT extern struct vfont *vfont_get(const char *font);
 
 /**
  * V F O N T _ F R E E
Index: include/analyze.h
===================================================================
--- include/analyze.h	(revision 54124)
+++ include/analyze.h	(working copy)
@@ -66,7 +66,7 @@
 struct region_pair {
     struct bu_list l;
     union {
-	char *name;
+	const char *name;
 	struct region *r1;
     } r;
     struct region *r2;
Index: include/raytrace.h
===================================================================
--- include/raytrace.h	(revision 54124)
+++ include/raytrace.h	(working copy)
@@ -1185,7 +1185,7 @@
     struct tree_nmgregion {
 	uint32_t magic;
 	int td_op;			/**< @brief  leaf, OP_NMG_TESS */
-	const char *td_name;		/**< @brief  If non-null, dynamic string describing heritage of this region */
+	char *td_name;			/**< @brief  If non-null, dynamic string describing heritage of this region */
 	struct nmgregion *td_r;		/**< @brief  ptr to NMG region */
     } tr_d;
     struct tree_db_leaf {
@@ -6441,7 +6441,7 @@
 RT_EXPORT extern struct shell *nmg_extrude_shell(struct shell *s, const fastf_t dist, const int normal_ward, const int approximate, const struct bn_tol *tol);
 
 /* From nmg_pr.c */
-RT_EXPORT extern char *nmg_orientation(int orientation);
+RT_EXPORT extern const char *nmg_orientation(int orientation);
 RT_EXPORT extern void nmg_pr_orient(int orientation,
 				    const char *h);
 RT_EXPORT extern void nmg_pr_m(const struct model *m);
Index: src/other/libtermlib/termcap.h
===================================================================
--- src/other/libtermlib/termcap.h	(revision 54124)
+++ src/other/libtermlib/termcap.h	(working copy)
@@ -45,9 +45,9 @@
 #define	TCBUFSIZE	2048
 
 int tgetent(char *, const char *);
-int tgetnum(char *);
+int tgetnum(const char *);
 int tgetflag(char *);
-char *tgetstr(char *, char **);
+char *tgetstr(const char *, char **);
 char *tgoto(char *, int, int);
 int tputs(const char *, int, int (*)(int));
 
Index: src/other/libtermlib/termcap.c
===================================================================
--- src/other/libtermlib/termcap.c	(revision 54124)
+++ src/other/libtermlib/termcap.c	(working copy)
@@ -287,7 +287,7 @@
  * Note that we handle octal numbers beginning with 0.
  */
 int
-tgetnum(char *id)
+tgetnum(const char *id)
 {
 	register int i, base;
 	register char *bp = tbuf;
@@ -350,7 +350,7 @@
  * No checking on area overflow.
  */
 char *
-tgetstr(char *id, char **area)
+tgetstr(const char *id, char **area)
 {
 	register char *bp = tbuf;
 
Index: src/other/tk/generic/tk.h
===================================================================
--- src/other/tk/generic/tk.h	(revision 54124)
+++ src/other/tk/generic/tk.h	(working copy)
@@ -1346,7 +1346,7 @@
  */
 
 struct Tk_PhotoImageFormat {
-    char *name;			/* Name of image file format */
+    const char *name;			/* Name of image file format */
     Tk_ImageFileMatchProc *fileMatchProc;
 				/* Procedure to call to determine whether an
 				 * image file matches this format. */
Index: src/other/tcl/generic/tclResult.c
===================================================================
--- src/other/tcl/generic/tclResult.c	(revision 54124)
+++ src/other/tcl/generic/tclResult.c	(working copy)
@@ -394,7 +394,7 @@
 Tcl_SetResult(
     Tcl_Interp *interp,		/* Interpreter with which to associate the
 				 * return value. */
-    register char *result,	/* Value to be returned. If NULL, the result
+    register const char *result,	/* Value to be returned. If NULL, the result
 				 * is set to an empty string. */
     Tcl_FreeProc *freeProc)	/* Gives information about the string:
 				 * TCL_STATIC, TCL_VOLATILE, or the address of
Index: src/other/tcl/generic/tclDecls.h
===================================================================
--- src/other/tcl/generic/tclDecls.h	(revision 54124)
+++ src/other/tcl/generic/tclDecls.h	(working copy)
@@ -1391,7 +1391,7 @@
 #ifndef Tcl_SetResult_TCL_DECLARED
 #define Tcl_SetResult_TCL_DECLARED
 /* 232 */
-EXTERN void		Tcl_SetResult(Tcl_Interp *interp, char *result,
+EXTERN void		Tcl_SetResult(Tcl_Interp *interp, const char *result,
 				Tcl_FreeProc *freeProc);
 #endif
 #ifndef Tcl_SetServiceMode_TCL_DECLARED
Index: src/rttherm/ssampview.c
===================================================================
--- src/rttherm/ssampview.c	(revision 54124)
+++ src/rttherm/ssampview.c	(working copy)
@@ -98,7 +98,7 @@
 void rescale(int wav);
 void show_color(int off);
 
-char *first_command = "no_command?";
+const char *first_command = "no_command?";
 
 /*
  * A S S I G N _ T A B D A T A _ T O _ T C L _ V A R
@@ -536,7 +536,7 @@
 	    case 't':
 		fprintf(stderr, "ssampview: conducting library tests\n");
 		conduct_tests();
-		first_command = "do_testing";
+		first_command = (char *)"do_testing";
 		Tk_Main(1, argv, tcl_appinit);
 		/* NOTREACHED */
 		bu_exit(0, NULL);
@@ -584,7 +584,7 @@
     if (BU_STR_EQUAL(datafile_basename, ""))
 	datafile_basename = bu_strdup("ssampview");
 
-    first_command = "doit1 42";
+    first_command = (char *)"doit1 42";
 
     if ((fbp = fb_open(NULL, width, height)) == FBIO_NULL) {
 	bu_free(datafile_basename, "datafile_basename realpath");
Index: src/libged/joint.c
===================================================================
--- src/libged/joint.c	(revision 54124)
+++ src/libged/joint.c	(working copy)
@@ -548,7 +548,7 @@
 static double mm2base, base2mm;
 
 static void
-parse_error(struct ged *gedp, struct bu_vls *str, char *error)
+parse_error(struct ged *gedp, struct bu_vls *str, const char *error)
 {
     char *text;
     size_t i;
@@ -623,7 +623,7 @@
 static int
 gobble_token(struct ged *gedp, int type_wanted, int value_wanted, FILE *fip, struct bu_vls *str)
 {
-    static char *types[] = {
+    static const char *types[] = {
 	"any",
 	"integer",
 	"double",
@@ -873,7 +873,7 @@
 {
     union bu_lex_token token;
     int max;
-    char *error;
+    const char *error;
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
Index: src/libged/brep.c
===================================================================
--- src/libged/brep.c	(revision 54124)
+++ src/libged/brep.c	(working copy)
@@ -202,7 +202,7 @@
 	    bname = (char*)bu_malloc(strlen(solid_name)+6, "char");
 	    bu_strlcpy(bname, solid_name, strlen(solid_name)+1);
 	    bu_strlcat(bname, "_brep", strlen(bname)+6);
-	    suffix = "_brep";
+	    suffix = (char *)"_brep";
 	}
 	if (BU_STR_EQUAL(intern.idb_meth->ft_name, "ID_COMBINATION")) {
 	    char *bname_suffix;
Index: src/libged/joint.h
===================================================================
--- src/libged/joint.h	(revision 54124)
+++ src/libged/joint.h	(working copy)
@@ -182,9 +182,9 @@
 #define FUNTAB_UNLIMITED -1
 
 struct funtab {
-    char *ft_name;
-    char *ft_parms;
-    char *ft_comment;
+    const char *ft_name;
+    const char *ft_parms;
+    const char *ft_comment;
     int (*ft_func)();
     int ft_min;
     int ft_max;
Index: src/libged/pix2fb.c
===================================================================
--- src/libged/pix2fb.c	(revision 54124)
+++ src/libged/pix2fb.c	(working copy)
@@ -152,7 +152,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infd = 0;
     } else {
 	file_name = argv[bu_optind];
Index: src/libged/clone.c
===================================================================
--- src/libged/clone.c	(revision 54124)
+++ src/libged/clone.c	(working copy)
@@ -413,7 +413,7 @@
 	bu_vls_strcpy(&obj_list.names[idx].dest[i], bu_vls_addr(name));
 
 	/* actually copy the primitive to the new name */
-	argv[0] = "clone_copy";
+	argv[0] = (char *)"clone_copy";
 	argv[1] = proto->d_namep;
 	argv[2] = bu_vls_addr(name);
 	argv[3] = (char *)0;
Index: src/libged/list.c
===================================================================
--- src/libged/list.c	(revision 54124)
+++ src/libged/list.c	(working copy)
@@ -109,8 +109,8 @@
     int c;
     int recurse = 0;
     int verbose = 99;
-    char *terse_parm = "-t";
-    char *listeval = "listeval";
+    const char *terse_parm = "-t";
+    const char *listeval = "listeval";
     struct rt_db_internal intern;
     static const char *usage = "[-r] [-t] <objects>";
 
@@ -149,12 +149,12 @@
 	if (recurse) {
 	    char *tmp_argv[3] = {NULL, NULL, NULL};
 
-	    tmp_argv[0] = listeval;
+	    tmp_argv[0] = (char *)listeval;
 	    if (verbose) {
 		tmp_argv[1] = (char *)argv[arg];
 		ged_pathsum(gedp, 2, (const char **)tmp_argv);
 	    } else {
-		tmp_argv[1] = terse_parm;
+		tmp_argv[1] = (char *)terse_parm;
 		tmp_argv[2] = (char *)argv[arg];
 		ged_pathsum(gedp, 3, (const char **)tmp_argv);
 	    }
Index: src/libged/color.c
===================================================================
--- src/libged/color.c	(revision 54124)
+++ src/libged/color.c	(working copy)
@@ -130,7 +130,7 @@
     while ((c = bu_getopt(argc, (char * const *)argv, "E:")) != -1) {
 	switch (c) {
 	    case 'E' :
-		editstring = bu_optarg;
+		editstring = (char *)bu_optarg;
 		break;
 	    default :
 		break;
Index: src/libged/analyze.c
===================================================================
--- src/libged/analyze.c	(revision 54124)
+++ src/libged/analyze.c	(working copy)
@@ -139,7 +139,7 @@
     /* this table has 1 column (plus a name column) */
     int maxwidth[2] = {0, 0};
     field_t dashes;
-    char* fnames[3] = {"Volume",
+    const char* fnames[3] = {"Volume",
 		       "Surface Area",
 		       "Gallons"};
     int indent = 4; /* number spaces to indent the table */
Index: src/libged/inside.c
===================================================================
--- src/libged/inside.c	(revision 54124)
+++ src/libged/inside.c	(working copy)
@@ -42,7 +42,7 @@
 #include "./ged_private.h"
 
 
-static char *p_arb4[] = {
+static const char *p_arb4[] = {
     "Enter thickness for face 123: ",
     "Enter thickness for face 124: ",
     "Enter thickness for face 234: ",
@@ -50,7 +50,7 @@
 };
 
 
-static char *p_arb5[] = {
+static const char *p_arb5[] = {
     "Enter thickness for face 1234: ",
     "Enter thickness for face 125: ",
     "Enter thickness for face 235: ",
@@ -59,7 +59,7 @@
 };
 
 
-static char *p_arb6[] = {
+static const char *p_arb6[] = {
     "Enter thickness for face 1234: ",
     "Enter thickness for face 2356: ",
     "Enter thickness for face 1564: ",
@@ -68,7 +68,7 @@
 };
 
 
-static char *p_arb7[] = {
+static const char *p_arb7[] = {
     "Enter thickness for face 1234: ",
     "Enter thickness for face 567: ",
     "Enter thickness for face 145: ",
@@ -78,7 +78,7 @@
 };
 
 
-static char *p_arb8[] = {
+static const char *p_arb8[] = {
     "Enter thickness for face 1234: ",
     "Enter thickness for face 5678: ",
     "Enter thickness for face 1485: ",
@@ -88,19 +88,19 @@
 };
 
 
-static char *p_tgcin[] = {
+static const char *p_tgcin[] = {
     "Enter thickness for base (AxB): ",
     "Enter thickness for top (CxD): ",
     "Enter thickness for side: ",
 };
 
 
-static char *p_partin[] = {
+static const char *p_partin[] = {
     "Enter thickness for body: ",
 };
 
 
-static char *p_rpcin[] = {
+static const char *p_rpcin[] = {
     "Enter thickness for front plate (contains V): ",
     "Enter thickness for back plate: ",
     "Enter thickness for top plate: ",
@@ -108,7 +108,7 @@
 };
 
 
-static char *p_rhcin[] = {
+static const char *p_rhcin[] = {
     "Enter thickness for front plate (contains V): ",
     "Enter thickness for back plate: ",
     "Enter thickness for top plate: ",
@@ -116,24 +116,24 @@
 };
 
 
-static char *p_epain[] = {
+static const char *p_epain[] = {
     "Enter thickness for top plate: ",
     "Enter thickness for body: ",
 };
 
 
-static char *p_ehyin[] = {
+static const char *p_ehyin[] = {
     "Enter thickness for top plate: ",
     "Enter thickness for body: ",
 };
 
 
-static char *p_etoin[] = {
+static const char *p_etoin[] = {
     "Enter thickness for body: ",
 };
 
 
-static char *p_nmgin[] = {
+static const char *p_nmgin[] = {
     "Enter thickness for shell: ",
 };
 
@@ -970,33 +970,33 @@
     switch (ip->idb_type) {
 
 	case ID_ARB8: {
-	    char **prompt = p_arb6;
+	    char **prompt = (char **)p_arb6;
 	    struct rt_arb_internal *arb = (struct rt_arb_internal *)ip->idb_ptr;
 
 	    nface = 6;
 
 	    switch (cgtype) {
 		case 8:
-		    prompt = p_arb8;
+		    prompt = (char **)p_arb8;
 		    break;
 
 		case 7:
-		    prompt = p_arb7;
+		    prompt = (char **)p_arb7;
 		    break;
 
 		case 6:
-		    prompt = p_arb6;
+		    prompt = (char **)p_arb6;
 		    nface = 5;
 		    VMOVE(arb->pt[5], arb->pt[6]);
 		    break;
 
 		case 5:
-		    prompt = p_arb5;
+		    prompt = (char **)p_arb5;
 		    nface = 5;
 		    break;
 
 		case 4:
-		    prompt = p_arb4;
+		    prompt = (char **)p_arb4;
 		    nface = 4;
 		    VMOVE(arb->pt[3], arb->pt[4]);
 		    break;
Index: src/libged/qray.h
===================================================================
--- src/libged/qray.h	(revision 54124)
+++ src/libged/qray.h	(working copy)
@@ -46,7 +46,7 @@
 
 struct qray_fmt_data {
     char type;
-    char *fmt;
+    const char *fmt;
 };
 
 
Index: src/libged/rtcheck.c
===================================================================
--- src/libged/rtcheck.c	(revision 54124)
+++ src/libged/rtcheck.c	(working copy)
@@ -131,7 +131,7 @@
 	}
 
 	/* Add overlay */
-	_ged_cvt_vlblock_to_solids(rtcp->gedp, rtcp->vbp, "OVERLAPS", 0);
+	_ged_cvt_vlblock_to_solids(rtcp->gedp, rtcp->vbp, (char *)"OVERLAPS", 0);
 	rt_vlblock_free(rtcp->vbp);
 
 	/* wait for the forked process */
@@ -327,7 +327,7 @@
 
     vp = &gedp->ged_gdp->gd_rt_cmd[0];
     *vp++ = rtcheck;
-    *vp++ = "-M";
+    *vp++ = (char *)"-M";
     for (i = 1; i < argc; i++)
 	*vp++ = (char *)argv[i];
 
Index: src/libged/decompose.c
===================================================================
--- src/libged/decompose.c	(revision 54124)
+++ src/libged/decompose.c	(working copy)
@@ -39,7 +39,7 @@
     struct bu_vls solid_name = BU_VLS_INIT_ZERO;
     char *nmg_solid_name;
     char *prefix;
-    char *def_prefix="sh";
+    char *def_prefix= (char *)"sh";
     struct model *m;
     struct nmgregion *r;
     struct model *new_m;
Index: src/libged/typein.c
===================================================================
--- src/libged/typein.c	(revision 54124)
+++ src/libged/typein.c	(working copy)
@@ -37,7 +37,7 @@
 #include "./ged_private.h"
 
 
-static char *p_half[] = {
+static const char *p_half[] = {
     "Enter X, Y, Z of outward pointing normal vector: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -45,7 +45,7 @@
 };
 
 
-static char *p_dsp_v4[] = {
+static const char *p_dsp_v4[] = {
     "Enter name of displacement-map file: ",
     "Enter width of displacement-map (number of values): ",
     "Enter length of displacement-map (number of values): ",
@@ -55,7 +55,7 @@
 };
 
 
-static char *p_dsp_v5[] = {
+static const char *p_dsp_v5[] = {
     "Take data from file or database binary object [f|o]:",
     "Enter name of file/object: ",
     "Enter width of displacement-map (number of values): ",
@@ -67,7 +67,7 @@
 };
 
 
-static char *p_hf[] = {
+static const char *p_hf[] = {
     "Enter name of control file (or \"\" for none): ",
     "Enter name of data file (containing heights): ",
     "Enter 'cv' style format of data [h|n][s|u]c|s|i|l|d|8|16|32|64: ",
@@ -90,7 +90,7 @@
 };
 
 
-static char *p_ebm[] = {
+static const char *p_ebm[] = {
     "Enter name of bit-map file: ",
     "Enter width of bit-map (number of cells): ",
     "Enter height of bit-map (number of cells): ",
@@ -98,14 +98,14 @@
 };
 
 
-static char *p_submodel[] = {
+static const char *p_submodel[] = {
     "Enter name of treetop: ",
     "Enter space partitioning method: ",
     "Enter name of .g file (or \"\" for none): "
 };
 
 
-static char *p_vol[] = {
+static const char *p_vol[] = {
     "Enter name of file containing voxel data: ",
     "Enter X, Y, Z dimensions of file (number of cells): ",
     "Enter Y dimension of file (number of cells): ",
@@ -118,7 +118,7 @@
 };
 
 
-static char *p_bot[] = {
+static const char *p_bot[] = {
     "Enter number of vertices: ",
     "Enter number of triangles: ",
     "Enter mode (1->surface, 2->solid, 3->plate): ",
@@ -134,7 +134,7 @@
 };
 
 
-static char *p_arbn[] = {
+static const char *p_arbn[] = {
     "Enter number of planes: ",
     "Enter coefficients",
     "Enter Y-coordinate of normal",
@@ -143,7 +143,7 @@
 };
 
 
-static char *p_pipe[] = {
+static const char *p_pipe[] = {
     "Enter number of points: ",
     "Enter X, Y, Z, inner diameter, outer diameter, and bend radius for first point: ",
     "Enter Y: ",
@@ -160,7 +160,7 @@
 };
 
 
-static char *p_ars[] = {
+static const char *p_ars[] = {
     "Enter number of points per waterline, and number of waterlines: ",
     "Enter number of waterlines: ",
     "Enter X, Y, Z for First row point: ",
@@ -172,7 +172,7 @@
 };
 
 
-static char *p_arb[] = {
+static const char *p_arb[] = {
     "Enter X, Y, Z for point 1: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -200,7 +200,7 @@
 };
 
 
-static char *p_sph[] = {
+static const char *p_sph[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -208,7 +208,7 @@
 };
 
 
-static char *p_ellg[] = {
+static const char *p_ellg[] = {
     "Enter X, Y, Z of focus point 1: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -219,7 +219,7 @@
 };
 
 
-static char *p_ell1[] = {
+static const char *p_ell1[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -230,7 +230,7 @@
 };
 
 
-static char *p_ell[] = {
+static const char *p_ell[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -246,7 +246,7 @@
 };
 
 
-static char *p_tor[] = {
+static const char *p_tor[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -258,7 +258,7 @@
 };
 
 
-static char *p_rcc[] = {
+static const char *p_rcc[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -269,7 +269,7 @@
 };
 
 
-static char *p_tec[] = {
+static const char *p_tec[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -286,7 +286,7 @@
 };
 
 
-static char *p_rec[] = {
+static const char *p_rec[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -302,7 +302,7 @@
 };
 
 
-static char *p_trc[] = {
+static const char *p_trc[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -314,7 +314,7 @@
 };
 
 
-static char *p_tgc[] = {
+static const char *p_tgc[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -332,7 +332,7 @@
 };
 
 
-static char *p_box[] = {
+static const char *p_box[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -348,7 +348,7 @@
 };
 
 
-static char *p_rpp[] = {
+static const char *p_rpp[] = {
     "Enter XMIN, XMAX, YMIN, YMAX, ZMIN, ZMAX: ",
     "Enter XMAX: ",
     "Enter YMIN, YMAX, ZMIN, ZMAX: ",
@@ -358,14 +358,14 @@
 };
 
 
-static char *p_orpp[] = {
+static const char *p_orpp[] = {
     "Enter XMAX, YMAX, ZMAX: ",
     "Enter YMAX, ZMAX: ",
     "Enter ZMAX: "
 };
 
 
-static char *p_rpc[] = {
+static const char *p_rpc[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -379,7 +379,7 @@
 };
 
 
-static char *p_part[] = {
+static const char *p_part[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -391,7 +391,7 @@
 };
 
 
-static char *p_rhc[] = {
+static const char *p_rhc[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -406,7 +406,7 @@
 };
 
 
-static char *p_epa[] = {
+static const char *p_epa[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -420,7 +420,7 @@
 };
 
 
-static char *p_ehy[] = {
+static const char *p_ehy[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -435,7 +435,7 @@
 };
 
 
-static char *p_hyp[] = {
+static const char *p_hyp[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -450,7 +450,7 @@
 };
 
 
-static char *p_eto[] = {
+static const char *p_eto[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -465,14 +465,14 @@
 };
 
 
-static char *p_binunif[] = {
+static const char *p_binunif[] = {
     "Enter minor type (f, d, c, s, i, L, C, S, I, or L): ",
     "Enter name of file containing the data: ",
     "Enter number of values to read (-1 for entire file): "
 };
 
 
-static char *p_extrude[] = {
+static const char *p_extrude[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -490,7 +490,7 @@
 };
 
 
-static char *p_grip[] = {
+static const char *p_grip[] = {
     "Enter X, Y, Z of center: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -502,7 +502,7 @@
 };
 
 
-static char *p_superell[] = {
+static const char *p_superell[] = {
     "Enter X, Y, Z of superellipse vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -520,7 +520,7 @@
 };
 
 
-static char *p_metaball[] = {
+static const char *p_metaball[] = {
     "Enter render method: ",
     "Enter threshold: ",
     "Enter number of points: ",
@@ -535,7 +535,7 @@
 };
 
 
-static char *p_revolve[] = {
+static const char *p_revolve[] = {
     "Enter X, Y, Z of vertex: ",
     "Enter Y: ",
     "Enter Z: ",
@@ -550,7 +550,7 @@
 };
 
 
-static char *p_pnts[] = {
+static const char *p_pnts[] = {
     "Are points in a file (yes/no)? ",
     "Enter number of points (-1 for auto): ",
     "Are the points orientated (yes/no)? ",
@@ -2840,10 +2840,10 @@
     */
     if (BU_STR_EQUAL(argv[2], "ebm")) {
 	nvals = 4;
-	menu = p_ebm;
+	menu = (char **)p_ebm;
 	fn_in = ebm_in;
     } else if (BU_STR_EQUAL(argv[2], "arbn")) {
-	switch (arbn_in(gedp, argc, argv, &internal, &p_arbn[0])) {
+	switch (arbn_in(gedp, argc, argv, &internal, (char **)&p_arbn[0])) {
 	    case GED_ERROR:
 		bu_vls_printf(gedp->ged_result_str, "%s: ERROR, ARBN not made!\n", argv[0]);
 		rt_db_free_internal(&internal);
@@ -2853,7 +2853,7 @@
 	}
 	goto do_new_update;
     } else if (BU_STR_EQUAL(argv[2], "bot")) {
-	switch (bot_in(gedp, argc, argv, &internal, &p_bot[0])) {
+	switch (bot_in(gedp, argc, argv, &internal, (char **)&p_bot[0])) {
 	    case GED_ERROR:
 		bu_vls_printf(gedp->ged_result_str, "%s: ERROR, BOT not made!\n", argv[0]);
 		rt_db_free_internal(&internal);
@@ -2864,16 +2864,16 @@
 	goto do_new_update;
     } else if (BU_STR_EQUAL(argv[2], "submodel")) {
 	nvals = 3;
-	menu = p_submodel;
+	menu = (char **)p_submodel;
 	fn_in = submodel_in;
     } else if (BU_STR_EQUAL(argv[2], "vol")) {
 	nvals = 9;
-	menu = p_vol;
+	menu = (char **)p_vol;
 	fn_in = vol_in;
     } else if (BU_STR_EQUAL(argv[2], "hf")) {
 	if (db_version(gedp->ged_wdbp->dbip) < 5) {
 	    nvals = 19;
-	    menu = p_hf;
+	    menu = (char **)p_hf;
 	    fn_in = hf_in;
 	    bu_vls_printf(gedp->ged_result_str, "%s: the height field is deprecated. Use the dsp primitive.\n", argv[0]);
 	} else {
@@ -2887,16 +2887,16 @@
     } else if (BU_STR_EQUAL(argv[2], "dsp")) {
 	if (db_version(gedp->ged_wdbp->dbip) < 5) {
 	    nvals = 6;
-	    menu = p_dsp_v4;
+	    menu = (char **)p_dsp_v4;
 	    fn_in = dsp_in_v4;
 	} else {
 	    nvals = 8;
-	    menu = p_dsp_v5;
+	    menu = (char **)p_dsp_v5;
 	    fn_in = dsp_in_v5;
 	}
 
     } else if (BU_STR_EQUAL(argv[2], "pipe")) {
-	switch (pipe_in(gedp, argc, argv, &internal, &p_pipe[0])) {
+	switch (pipe_in(gedp, argc, argv, &internal, (char **)&p_pipe[0])) {
 	    case GED_ERROR:
 		bu_vls_printf(gedp->ged_result_str, "%s: ERROR, pipe not made!\n", argv[0]);
 		rt_db_free_internal(&internal);
@@ -2906,7 +2906,7 @@
 	}
 	goto do_new_update;
     } else if (BU_STR_EQUAL(argv[2], "metaball")) {
-	switch (metaball_in(gedp, argc, argv, &internal, &p_metaball[0])) {
+	switch (metaball_in(gedp, argc, argv, &internal, (char **)&p_metaball[0])) {
 	    case GED_ERROR:
 		bu_vls_printf(gedp->ged_result_str, "%s: ERROR, metaball not made!\n", argv[0]);
 		rt_db_free_internal(&internal);
@@ -2916,7 +2916,7 @@
 	}
 	goto do_new_update;
     } else if (BU_STR_EQUAL(argv[2], "ars")) {
-	switch (ars_in(gedp, argc, argv, &internal, &p_ars[0])) {
+	switch (ars_in(gedp, argc, argv, &internal, (char **)&p_ars[0])) {
 	    case GED_ERROR:
 		bu_vls_printf(gedp->ged_result_str, "%s: ERROR, ars not made!\n", argv[0]);
 		rt_db_free_internal(&internal);
@@ -2927,7 +2927,7 @@
 	goto do_new_update;
     } else if (BU_STR_EQUAL(argv[2], "half")) {
 	nvals = 3*1 + 1;
-	menu = p_half;
+	menu = (char **)p_half;
 	fn_in = half_in;
     } else if (bu_strncmp(argv[2], "arb", 3) == 0) {
 	int n = atoi(&argv[2][3]);
@@ -2940,88 +2940,88 @@
 	}
 
 	nvals = 3*n;
-	menu = p_arb;
+	menu = (char **)p_arb;
 	fn_in = arb_in;
     } else if (BU_STR_EQUAL(argv[2], "sph")) {
 	nvals = 3*1 + 1;
-	menu = p_sph;
+	menu = (char **)p_sph;
 	fn_in = sph_in;
     } else if (BU_STR_EQUAL(argv[2], "ellg")) {
 	nvals = 3*2 + 1;
-	menu = p_ellg;
+	menu = (char **)p_ellg;
 	fn_in = ell_in;
     } else if (BU_STR_EQUAL(argv[2], "ell")) {
 	nvals = 3*4;
-	menu = p_ell;
+	menu = (char **)p_ell;
 	fn_in = ell_in;
     } else if (BU_STR_EQUAL(argv[2], "ell1")) {
 	nvals = 3*2 + 1;
-	menu = p_ell1;
+	menu = (char **)p_ell1;
 	fn_in = ell_in;
     } else if (BU_STR_EQUAL(argv[2], "tor")) {
 	nvals = 3*2 + 2;
-	menu = p_tor;
+	menu = (char **)p_tor;
 	fn_in = tor_in;
     } else if (BU_STR_EQUAL(argv[2], "tgc")) {
 	nvals = 3*4 + 2;
-	menu = p_tgc;
+	menu = (char **)p_tgc;
 	fn_in = tgc_in;
     } else if (BU_STR_EQUAL(argv[2], "tec")) {
 	nvals = 3*4 + 1;
-	menu = p_tec;
+	menu = (char **)p_tec;
 	fn_in = tec_in;
     } else if (BU_STR_EQUAL(argv[2], "rec")) {
 	nvals = 3*4;
-	menu = p_rec;
+	menu = (char **)p_rec;
 	fn_in = rec_in;
     } else if (BU_STR_EQUAL(argv[2], "trc")) {
 	nvals = 3*2 + 2;
-	menu = p_trc;
+	menu = (char **)p_trc;
 	fn_in = trc_in;
     } else if (BU_STR_EQUAL(argv[2], "rcc")) {
 	nvals = 3*2 + 1;
-	menu = p_rcc;
+	menu = (char **)p_rcc;
 	fn_in = rcc_in;
     } else if (BU_STR_EQUAL(argv[2], "box")
 	       || BU_STR_EQUAL(argv[2], "raw")) {
 	nvals = 3*4;
-	menu = p_box;
+	menu = (char **)p_box;
 	fn_in = box_in;
     } else if (BU_STR_EQUAL(argv[2], "rpp")) {
 	nvals = 3*2;
-	menu = p_rpp;
+	menu = (char **)p_rpp;
 	fn_in = rpp_in;
     } else if (BU_STR_EQUAL(argv[2], "orpp")) {
 	nvals = 3*1;
-	menu = p_orpp;
+	menu = (char **)p_orpp;
 	fn_in = orpp_in;
     } else if (BU_STR_EQUAL(argv[2], "rpc")) {
 	nvals = 3*3 + 1;
-	menu = p_rpc;
+	menu = (char **)p_rpc;
 	fn_in = rpc_in;
     } else if (BU_STR_EQUAL(argv[2], "rhc")) {
 	nvals = 3*3 + 2;
-	menu = p_rhc;
+	menu = (char **)p_rhc;
 	fn_in = rhc_in;
     } else if (BU_STR_EQUAL(argv[2], "epa")) {
 	nvals = 3*3 + 1;
-	menu = p_epa;
+	menu = (char **)p_epa;
 	fn_in = epa_in;
     } else if (BU_STR_EQUAL(argv[2], "ehy")) {
 	nvals = 3*3 + 2;
-	menu = p_ehy;
+	menu = (char **)p_ehy;
 	fn_in = ehy_in;
     } else if (BU_STR_EQUAL(argv[2], "hyp")) {
 	nvals = 3*3 + 2;
-	menu = p_hyp;
+	menu = (char **)p_hyp;
 	fn_in = hyp_in;
     } else if (BU_STR_EQUAL(argv[2], "eto")) {
 	nvals = 3*3 + 2;
-	menu = p_eto;
+	menu = (char **)p_eto;
 	fn_in = eto_in;
     } else if (BU_STR_EQUAL(argv[2], "part")) {
 	nvals = 2*3 + 2;
-	menu = p_part;
+	menu = (char **)p_part;
 	fn_in = part_in;
     } else if (BU_STR_EQUAL(argv[2], "binunif")) {
 	if (db_version(gedp->ged_wdbp->dbip) < 5) {
@@ -3031,27 +3031,27 @@
 	    return GED_ERROR;
 	} else {
 	    nvals = 3;
-	    menu = p_binunif;
+	    menu = (char **)p_binunif;
 	    fn_in = binunif_in;
 	}
     } else if (BU_STR_EQUAL(argv[2], "extrude")) {
 	nvals = 4*3 + 1;
-	menu = p_extrude;
+	menu = (char **)p_extrude;
 	fn_in = extrude_in;
     } else if (BU_STR_EQUAL(argv[2], "revolve")) {
 	nvals = 3*3 + 2;
-	menu = p_revolve;
+	menu = (char **)p_revolve;
 	fn_in = revolve_in;
     } else if (BU_STR_EQUAL(argv[2], "grip")) {
 	nvals = 2*3 + 1;
-	menu = p_grip;
+	menu = (char **)p_grip;
 	fn_in = grip_in;
     } else if (BU_STR_EQUAL(argv[2], "superell")) {
 	nvals = 3*4 + 2;
-	menu = p_superell;
+	menu = (char **)p_superell;
 	fn_in = superell_in;
     } else if (BU_STR_EQUAL(argv[2], "pnts")) {
-	switch (pnts_in(gedp, argc, argv, &internal, p_pnts)) {
+	switch (pnts_in(gedp, argc, argv, &internal, (char **)p_pnts)) {
 	    case GED_ERROR:
 		bu_vls_printf(gedp->ged_result_str, "%s: ERROR, pnts not made!\n", argv[0]);
 		rt_db_free_internal(&internal);
Index: src/libged/tree.c
===================================================================
--- src/libged/tree.c	(revision 54124)
+++ src/libged/tree.c	(working copy)
@@ -110,7 +110,7 @@
 
     /* tree of all displayed objects */
     if (argc == 1) {
-	char *whocmd[2] = {"who", NULL};
+	const char *whocmd[2] = {"who", NULL};
 	if (ged_who(gedp, 1, (const char **)whocmd) == GED_OK) {
 	    buffer = bu_strdup(bu_vls_addr(gedp->ged_result_str));
 	    bu_vls_trunc(gedp->ged_result_str, 0);
Index: src/libged/simulate/simrt.c
===================================================================
--- src/libged/simulate/simrt.c	(revision 54124)
+++ src/libged/simulate/simrt.c	(working copy)
@@ -1316,7 +1316,7 @@
 	struct sim_manifold *rt_mf;
 
     vect_t overlap_min, overlap_max;
-    char *prefix_overlap = "overlap_";
+    char *prefix_overlap = (char *)"overlap_";
     struct bu_vls overlap_name = BU_VLS_INIT_ZERO;
     rt_mf = &(rbB->rt_manifold);
 
@@ -1340,7 +1340,7 @@
 	add_to_comb(sim_params->gedp, sim_params->sim_comb_name, bu_vls_addr(&overlap_name));
 
     /* Clear ray visualization primitives */
-    sim_kill(sim_params->gedp, "ray_*");
+    sim_kill(sim_params->gedp, (char *)"ray_*");
 
 	/* Initialize the rayshot results structure, has to be done for each manifold  */
 	init_rayshot_results();
Index: src/libged/simulate/simutils.h
===================================================================
--- src/libged/simulate/simutils.h	(revision 54124)
+++ src/libged/simulate/simutils.h	(working copy)
@@ -172,7 +172,7 @@
 int
 apply_material(struct ged *gedp,
 	       char* comb,
-	       char* material,
+	       const char* material,
 	       unsigned char r,
 	       unsigned char g,
 	       unsigned char b);
Index: src/libged/simulate/simulate.c
===================================================================
--- src/libged/simulate/simulate.c	(revision 54124)
+++ src/libged/simulate/simulate.c	(working copy)
@@ -78,7 +78,7 @@
 add_regions(struct ged *gedp, struct simulation_params *sim_params)
 {
     struct directory *dp, *ndp;
-    char *prefix = "sim_";
+    char *prefix = (char *)"sim_";
     int i;
     struct rigid_body *prev_node = NULL, *current_node;
     struct bu_vls dp_name_vls = BU_VLS_INIT_ZERO;
Index: src/libged/simulate/simutils.c
===================================================================
--- src/libged/simulate/simutils.c	(revision 54124)
+++ src/libged/simulate/simutils.c	(working copy)
@@ -264,7 +264,7 @@
     char *cmd_args[20];
     int rv, argc = 19;
     char buffer_str[MAX_FLOATING_POINT_STRLEN];
-    char *suffix_reg = "_reg";
+    char *suffix_reg = (char *)"_reg";
     struct bu_vls reg_vls = BU_VLS_INIT_ZERO;
 
     /* Arrow line primitive name */
@@ -331,8 +331,8 @@
     char *cmd_args[20];
     int rv, argc = 19;
     char buffer_str[MAX_FLOATING_POINT_STRLEN];
-    char *prefix_arrow_line = "arrow_line_";
-    char *prefix_arrow_head = "arrow_head_";
+    char *prefix_arrow_line = (char *)"arrow_line_";
+    char *prefix_arrow_head = (char *)"arrow_head_";
     struct bu_vls arrow_line_vls = BU_VLS_INIT_ZERO, arrow_head_vls = BU_VLS_INIT_ZERO;
     char *prefixed_arrow_line, *prefixed_arrow_head;
     vect_t v;
@@ -438,7 +438,7 @@
 int
 apply_material(struct ged *gedp,
 	       char* comb,
-	       char* material,
+	       const char* material,
 	       unsigned char r,
 	       unsigned char g,
 	       unsigned char b)
@@ -573,8 +573,8 @@
     char* cmd_args[28];
     char buffer[MAX_FLOATING_POINT_STRLEN];
     int rv, argc = 27;
-    char *prefix = "bb_";
-    char *prefix_reg = "bb_reg_";
+    char *prefix = (char *)"bb_";
+    char *prefix_reg = (char *)"bb_reg_";
     char *prefixed_name, *prefixed_reg_name;
     struct bu_vls buffer1 = BU_VLS_INIT_ZERO, buffer2 = BU_VLS_INIT_ZERO;
     point_t v;
@@ -714,9 +714,9 @@
     char* cmd_args[28];
     char buffer[20];
     int i, j, rv, argc;
-    char *prefix = "mf_";
-    char *prefix_reg = "mf_reg_";
-    char *prefix_normal = "normal_";
+    char *prefix = (char *)"mf_";
+    char *prefix_reg = (char *)"mf_reg_";
+    char *prefix_normal = (char *)"normal_";
     struct bu_vls name = BU_VLS_INIT_ZERO,
 	prefixed_name = BU_VLS_INIT_ZERO,
 	prefixed_reg_name = BU_VLS_INIT_ZERO,
Index: src/libged/preview.c
===================================================================
--- src/libged/preview.c	(revision 54124)
+++ src/libged/preview.c	(working copy)
@@ -338,7 +338,7 @@
 		preview_finalframe = atof(bu_optarg);
 		break;
 	    case 'o':
-		image_name = bu_optarg;
+		image_name = (char *)bu_optarg;
 		break;
 	    case 'v':
 		preview_mode = 3;	/* Like "ev" */
@@ -430,7 +430,7 @@
     fp = NULL;
 
     if (draw_eye_path)
-	_ged_cvt_vlblock_to_solids(gedp, preview_vbp, "EYE_PATH", 0);
+	_ged_cvt_vlblock_to_solids(gedp, preview_vbp, (char *)"EYE_PATH", 0);
 
     if (preview_vbp) {
 	rt_vlblock_free(preview_vbp);
Index: src/libged/open.c
===================================================================
--- src/libged/open.c	(revision 54124)
+++ src/libged/open.c	(working copy)
@@ -60,7 +60,7 @@
 	    return GED_ERROR;
 	}
 
-	av[0] = "zap";
+	av[0] = (char *)"zap";
 	av[1] = (char *)0;
 	ged_zap(gedp, 1, (const char **)av);
 
Index: src/libged/wdb_qray.h
===================================================================
--- src/libged/wdb_qray.h	(revision 54124)
+++ src/libged/wdb_qray.h	(working copy)
@@ -44,7 +44,7 @@
 
 struct dg_qray_fmt_data {
     char type;
-    char *fmt;
+    const char *fmt;
 };
 
 
Index: src/libged/log.c
===================================================================
--- src/libged/log.c	(revision 54124)
+++ src/libged/log.c	(working copy)
@@ -52,7 +52,7 @@
 int
 ged_log(struct ged *gedp, int argc, const char *argv[])
 {
-    static char *usage = "get|start|stop";
+    static const char *usage = "get|start|stop";
 
     GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
     GED_CHECK_READ_ONLY(gedp, GED_ERROR);
Index: src/libged/rt.c
===================================================================
--- src/libged/rt.c	(revision 54124)
+++ src/libged/rt.c	(working copy)
@@ -550,7 +550,7 @@
 
     vp = &gedp->ged_gdp->gd_rt_cmd[0];
     *vp++ = rt;
-    *vp++ = "-M";
+    *vp++ = (char *)"-M";
 
     if (gedp->ged_gvp->gv_perspective > 0) {
 	(void)sprintf(pstring, "-p%g", gedp->ged_gvp->gv_perspective);
@@ -571,8 +571,8 @@
 
     /* default to local units when not specified on command line */
     if (!units_supplied) {
-	*vp++ = "-u";
-	*vp++ = "model";
+	*vp++ = (char *)"-u";
+	*vp++ = (char *)"model";
     }
 
     /* XXX why is this different for win32 only? */
Index: src/libged/tire.c
===================================================================
--- src/libged/tire.c	(revision 54124)
+++ src/libged/tire.c	(working copy)
@@ -43,7 +43,7 @@
 #define ROWS 5
 #define COLS 5
 
-static char *options="an:c:d:W:R:D:g:j:p:s:t:u:w:h";
+static const char *options="an:c:d:W:R:D:g:j:p:s:t:u:w:h";
 
 /**
  * Help message printed when -h option is supplied
Index: src/libged/putmat.c
===================================================================
--- src/libged/putmat.c	(revision 54124)
+++ src/libged/putmat.c	(working copy)
@@ -229,10 +229,10 @@
 	    bu_vls_printf(gedp->ged_result_str, "%s: error in matrix specification (wrong number of args)\n", argv[0]);
 	    return GED_ERROR;
     }
-    newargv[0] = "arced";
+    newargv[0] = (char *)"arced";
     newargv[1] = (char *)argv[1];
-    newargv[2] = "matrix";
-    newargv[3] = "rarc";
+    newargv[2] = (char *)"matrix";
+    newargv[3] = (char *)"rarc";
 
     got = bu_argv_from_string(&newargv[4], 16, bu_vls_addr(avp));
     if (got != 16) {
Index: src/libged/nirt.c
===================================================================
--- src/libged/nirt.c	(revision 54124)
+++ src/libged/nirt.c	(working copy)
@@ -173,23 +173,23 @@
     i = 0;
     if (DG_QRAY_GRAPHICS(gedp->ged_gdp)) {
 
-	*vp++ = "-e";
-	*vp++ = DG_QRAY_FORMAT_NULL;
+	*vp++ = (char *)"-e";
+	*vp++ = (char *)DG_QRAY_FORMAT_NULL;
 
 	/* first ray ---- returns partitions */
-	*vp++ = "-e";
-	*vp++ = DG_QRAY_FORMAT_P;
+	*vp++ = (char *)"-e";
+	*vp++ = (char *)DG_QRAY_FORMAT_P;
 
 	/* ray start, direction, and 's' command */
-	*vp++ = "-e";
+	*vp++ = (char *)"-e";
 	*vp++ = bu_vls_addr(&p_vls);
 
 	/* second ray ---- returns overlaps */
-	*vp++ = "-e";
-	*vp++ = DG_QRAY_FORMAT_O;
+	*vp++ = (char *)"-e";
+	*vp++ = (char *)DG_QRAY_FORMAT_O;
 
 	/* ray start, direction, and 's' command */
-	*vp++ = "-e";
+	*vp++ = (char *)"-e";
 	*vp++ = bu_vls_addr(&p_vls);
 
 	if (DG_QRAY_TEXT(gedp->ged_gdp)) {
@@ -230,7 +230,7 @@
 
 	    i = 1;
 
-	    *vp++ = "-e";
+	    *vp++ = (char *)"-e";
 	    *vp++ = bu_vls_addr(&o_vls);
 	}
     }
@@ -243,7 +243,7 @@
 			  gedp->ged_gdp->gd_qray_fmts[i].type,
 			  bu_vls_addr(&gedp->ged_gdp->gd_qray_fmts[i].fmt));
 
-	*vp++ = "-e";
+	*vp++ = (char *)"-e";
 	*vp++ = bu_vls_addr(&t_vls);
 
 	/* nirt does not like the trailing ';' */
@@ -252,11 +252,11 @@
 
     /* include nirt script string */
     if (bu_vls_strlen(&gedp->ged_gdp->gd_qray_script)) {
-	*vp++ = "-e";
+	*vp++ = (char *)"-e";
 	*vp++ = bu_vls_addr(&gedp->ged_gdp->gd_qray_script);
     }
 
-    *vp++ = "-e";
+    *vp++ = (char *)"-e";
     *vp++ = bu_vls_addr(&p_vls);
 
     for (i = 1; i < argc; i++)
@@ -633,7 +633,7 @@
     bu_vls_printf(&z_vls, "%lf", center_model[Z]);
 
     /* pass remaining arguments to ged nirt command */
-    av[0] = "nirt";
+    av[0] = (char *)"nirt";
     for (i = 1; i < argc; ++i)
 	av[i] = (char *)argv[i];
 
Index: src/libged/killtree.c
===================================================================
--- src/libged/killtree.c	(revision 54124)
+++ src/libged/killtree.c	(working copy)
@@ -129,7 +129,7 @@
     gktd.av = bu_calloc(1, sizeof(char *) * AV_STEP, "alloc av");
     gktd.av_capacity = AV_STEP;
     BU_ASSERT(gktd.ac + argc + 2 < AV_STEP); /* potential -n opts */
-    gktd.av[0] = "killrefs";
+    gktd.av[0] = (char *)"killrefs";
     gktd.av[1] = (char *)0;
 
     bu_optind = 1;
Index: src/libged/overlay.c
===================================================================
--- src/libged/overlay.c	(revision 54124)
+++ src/libged/overlay.c	(working copy)
@@ -64,7 +64,7 @@
     }
 
     if (argc == 3)
-	name = "_PLOT_OVERLAY_";
+	name = (char *)"_PLOT_OVERLAY_";
     else
 	name = (char *)argv[3];
 
Index: src/libged/wdb_obj.c
===================================================================
--- src/libged/wdb_obj.c	(revision 54124)
+++ src/libged/wdb_obj.c	(working copy)
@@ -3231,7 +3231,7 @@
     struct bu_vls str;
     int id;
     int recurse = 0;
-    char *listeval = "listeval";
+    char *listeval = (char *)"listeval";
     struct rt_db_internal intern;
 
     if (argc < 2) {
Index: src/libged/make_name.c
===================================================================
--- src/libged/make_name.c	(revision 54124)
+++ src/libged/make_name.c	(working copy)
@@ -82,7 +82,7 @@
 	bu_vls_putc(&obj_name, *cp);
     }
     bu_vls_putc(&obj_name, '\0');
-    tp = (*cp == '\0') ? "" : cp + 1;
+    tp = (*cp == '\0') ? (char *)"" : cp + 1;
 
     do {
 	bu_vls_trunc(&obj_name, len);
Index: src/libged/make_pnts.c
===================================================================
--- src/libged/make_pnts.c	(revision 54124)
+++ src/libged/make_pnts.c	(working copy)
@@ -82,7 +82,7 @@
 	    break;							\
     }
 
-static char *p_make_pnts[] = {
+static const char *p_make_pnts[] = {
     "Enter point-cloud name: ",
     "Enter point file path and name: ",
     "Enter file data format (xyzrgbsijk?): ",
@@ -277,7 +277,7 @@
 
     static const char *usage = "point_cloud_name filename_with_path file_format file_data_units default_point_size";
 
-    prompt = &p_make_pnts[0];
+    prompt = (char **)&p_make_pnts[0];
 
     GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
     GED_CHECK_READ_ONLY(gedp, GED_ERROR);
Index: src/libged/bigE.c
===================================================================
--- src/libged/bigE.c	(revision 54124)
+++ src/libged/bigE.c	(working copy)
@@ -2068,7 +2068,7 @@
 	    case 'C':
 		{
 		    int r, g, b;
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 
 		    r = atoi(cp);
 		    while ((*cp >= '0' && *cp <= '9')) cp++;
Index: src/libged/rtwizard.c
===================================================================
--- src/libged/rtwizard.c	(revision 54124)
+++ src/libged/rtwizard.c	(working copy)
@@ -268,21 +268,21 @@
 
     vp = &gedp->ged_gdp->gd_rt_cmd[0];
     *vp++ = rt;
-    *vp++ = "--no-gui";
-    *vp++ = "--viewsize";
+    *vp++ = (char *)"--no-gui";
+    *vp++ = (char *)"--viewsize";
     *vp++ = bu_vls_addr(&size_vls);
-    *vp++ = "--orientation";
+    *vp++ = (char *)"--orientation";
     *vp++ = bu_vls_addr(&orient_vls);
-    *vp++ = "--eye_pt";
+    *vp++ = (char *)"--eye_pt";
     *vp++ = bu_vls_addr(&eye_vls);
 
     if (gedp->ged_gvp->gv_perspective > 0) {
-	*vp++ = "--perspective";
+	*vp++ = (char *)"--perspective";
 	(void)sprintf(pstring, "%g", gedp->ged_gvp->gv_perspective);
 	*vp++ = pstring;
     }
 
-    *vp++ = "-i";
+    *vp++ = (char *)"-i";
     /* XXX why is this different for win32 only? */
 #ifdef _WIN32
     {
Index: src/libged/edit.c
===================================================================
--- src/libged/edit.c	(revision 54124)
+++ src/libged/edit.c	(working copy)
@@ -561,10 +561,10 @@
     const union edit_cmd *const cmd, int idx);
 
 struct edit_cmd_tab {
-    char *name;
-    char *opt_global;
-    char *usage;
-    char *help;
+    const char *name;
+    const char *opt_global;
+    const char *usage;
+    const char *help;
     int enabled;
 #define EDIT_CMD_DISABLE 0x0
 #define EDIT_CMD_ENABLE 0x1
@@ -1608,7 +1608,7 @@
  * Table of edit command data/functions
  */
 static const struct edit_cmd_tab edit_cmds[] = {
-    {"help", (char *)NULL, "[subcommand]", "[subcommand]",
+    {"help", (const char *)NULL, "[subcommand]", "[subcommand]",
      EDIT_CMD_ENABLE, NULL, NULL, NULL
 #define EDIT_CMD_HELP 0 /* idx of "help" in edit_cmds */
     },
Index: src/libged/vrot.c
===================================================================
--- src/libged/vrot.c	(revision 54124)
+++ src/libged/vrot.c	(working copy)
@@ -60,7 +60,7 @@
     }
 
     av[0] = (char *)argv[0];
-    av[1] = "-v";
+    av[1] = (char *)"-v";
     ac = argc+1;
     for (i = 1; i < argc; ++i)
 	av[i+1] = (char *)argv[i];
Index: src/libged/3ptarb.c
===================================================================
--- src/libged/3ptarb.c	(revision 54124)
+++ src/libged/3ptarb.c	(working copy)
@@ -35,7 +35,7 @@
 #include "./ged_private.h"
 
 
-static char *p_arb3pt[] = {
+static const char *p_arb3pt[] = {
     "Enter X, Y, Z for point 1: ",
     "Enter Y, Z: ",
     "Enter Z: ",
@@ -83,7 +83,7 @@
     GED_CHECK_EXISTS(gedp, argv[1], LOOKUP_QUIET, GED_ERROR);
 
     /* read the three points */
-    prompts = &p_arb3pt[0];
+    prompts = (char **)&p_arb3pt[0];
     if (argc < 11) {
 	bu_vls_printf(gedp->ged_result_str, "%s", prompts[argc-2]);
 	return GED_MORE;
Index: src/libged/bot_dump.c
===================================================================
--- src/libged/bot_dump.c	(revision 54124)
+++ src/libged/bot_dump.c	(working copy)
@@ -790,10 +790,10 @@
 		normals=1;
 		break;
 	    case 'm':
-		output_directory = bu_optarg;
+		output_directory = (char *)bu_optarg;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 't':
 		if (BU_STR_EQUAL("dxf", bu_optarg))
@@ -876,7 +876,7 @@
 	fp = stdout;
 
 	/* Set this to something non-null in order to possibly write eof */
-	output_file = "stdout";
+	output_file = (char *)"stdout";
     }
 
     if (output_file) {
@@ -945,17 +945,17 @@
     if (output_directory) {
 	switch (output_type) {
 	    case OTYPE_DXF:
-		file_ext = ".dxf";
+		file_ext = (char *)".dxf";
 		break;
 	    case OTYPE_OBJ:
-		file_ext = ".obj";
+		file_ext = (char *)".obj";
 		break;
 	    case OTYPE_SAT:
-		file_ext = ".sat";
+		file_ext = (char *)".sat";
 		break;
 	    case OTYPE_STL:
 	    default:
-		file_ext = ".stl";
+		file_ext = (char *)".stl";
 		break;
 	}
     }
@@ -1358,7 +1358,7 @@
 	fp = stdout;
 
 	/* Set this to something non-null in order to possibly write eof */
-	output_file = "stdout";
+	output_file = (char *)"stdout";
     }
 
     if (output_file) {
@@ -1423,10 +1423,10 @@
     if (output_directory) {
 	switch (output_type) {
 	    case OTYPE_DXF:
-		file_ext = ".dxf";
+		file_ext = (char *)".dxf";
 		break;
 	    case OTYPE_OBJ:
-		file_ext = ".obj";
+		file_ext = (char *)".obj";
 
 		BU_LIST_INIT(&HeadObjMaterials);
 
@@ -1464,11 +1464,11 @@
 
 		break;
 	    case OTYPE_SAT:
-		file_ext = ".sat";
+		file_ext = (char *)".sat";
 		break;
 	    case OTYPE_STL:
 	    default:
-		file_ext = ".stl";
+		file_ext = (char *)".stl";
 		break;
 	}
     } else if (output_type == OTYPE_OBJ) {
Index: src/libged/dg_obj.c
===================================================================
--- src/libged/dg_obj.c	(revision 54124)
+++ src/libged/dg_obj.c	(working copy)
@@ -4051,7 +4051,7 @@
 		    break;
 		case 'C': {
 		    int r, g, b;
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 
 		    r = atoi(cp);
 		    while ((*cp >= '0' && *cp <= '9')) cp++;
Index: src/libged/draw.c
===================================================================
--- src/libged/draw.c	(revision 54124)
+++ src/libged/draw.c	(working copy)
@@ -1023,7 +1023,7 @@
 		case 'C':
 		    {
 			int r, g, b;
-			char *cp = bu_optarg;
+			char *cp = (char *)bu_optarg;
 
 			r = atoi(cp);
 			while ((*cp >= '0' && *cp <= '9')) cp++;
@@ -1208,7 +1208,7 @@
 		}
 
 		if (dgcdp->draw_edge_uses) {
-		    _ged_cvt_vlblock_to_solids(gedp, dgcdp->draw_edge_uses_vbp, "_EDGEUSES_", 0);
+		    _ged_cvt_vlblock_to_solids(gedp, dgcdp->draw_edge_uses_vbp, (char *)"_EDGEUSES_", 0);
 		    rt_vlblock_free(dgcdp->draw_edge_uses_vbp);
 		    dgcdp->draw_edge_uses_vbp = (struct bn_vlblock *)NULL;
 		}
Index: src/libged/gqa.c
===================================================================
--- src/libged/gqa.c	(revision 54124)
+++ src/libged/gqa.c	(working copy)
@@ -53,8 +53,8 @@
 
 
 /* bu_getopt() options */
-char *options = "A:a:de:f:g:Gn:N:pP:rS:s:t:U:u:vV:W:";
-char *options_str = "[-A A|a|b|c|e|g|m|o|p|v|w] [-a az] [-d] [-e el] [-f densityFile] [-g spacing|upper, lower|upper-lower] [-G] [-n nhits] [-N nviews] [-p] [-P ncpus] [-r] [-S nsamples] [-t overlap_tol] [-U useair] [-u len_units vol_units wt_units] [-v] [-V volume_tol] [-W weight_tol]";
+const const char *options = "A:a:de:f:g:Gn:N:pP:rS:s:t:U:u:vV:W:";
+const const char *options_str = "[-A A|a|b|c|e|g|m|o|p|v|w] [-a az] [-d] [-e el] [-f densityFile] [-g spacing|upper, lower|upper-lower] [-G] [-n nhits] [-N nviews] [-p] [-P ncpus] [-r] [-S nsamples] [-t overlap_tol] [-U useair] [-u len_units vol_units wt_units] [-v] [-V volume_tol] [-W weight_tol]";
 
 #define ANALYSIS_VOLUME 1
 #define ANALYSIS_WEIGHT 2
@@ -417,7 +417,7 @@
  * 0 Success
  */
 int
-read_units_double(double *val, char *buf, const struct cvt_tab *cvt)
+read_units_double(double *val, const char *buf, const struct cvt_tab *cvt)
 {
     double a;
     char units_string[256] = {0};
@@ -481,7 +481,7 @@
 		{
 		    analysis_flags = 0;
 		    multiple_analyses = 0;
-		    for (p = bu_optarg; *p; p++) {
+		    for (p = (char *)bu_optarg; *p; p++) {
 			switch (*p) {
 			    case 'A' :
 				analysis_flags = ANALYSIS_VOLUME | ANALYSIS_WEIGHT | \
@@ -580,7 +580,7 @@
 		break;
 	    case 'd': debug = 1; break;
 
-	    case 'f': densityFileName = bu_optarg; break;
+	    case 'f': densityFileName = (char *)bu_optarg; break;
 
 	    case 'g':
 		{
@@ -692,7 +692,7 @@
 		break;
 	    case 'u':
 		{
-		    char *ptr = bu_optarg;
+		    char *ptr = (char *)bu_optarg;
 		    const struct cvt_tab *cv;
 		    static const char *dim[3] = {"length", "volume", "weight"};
 		    char *units_name[3] = {NULL, NULL, NULL};
@@ -1640,7 +1640,7 @@
 
     /* if the vol/weight tolerances are not set, pick something */
     if (analysis_flags & ANALYSIS_VOLUME) {
-	char *name = "volume.pl";
+	const char *name = "volume.pl";
 	if (ZERO(volume_tolerance - 1.0)) {
 	    volume_tolerance = span[X] * span[Y] * span[Z] * 0.001;
 	    bu_vls_printf(_ged_current_gedp->ged_result_str, "setting volume tolerance to %g %s\n",
@@ -1669,7 +1669,7 @@
 	}
     }
     if (analysis_flags & ANALYSIS_GAP) {
-	char *name = "gaps.pl";
+	const char *name = "gaps.pl";
 	if (plot_files)
 	    if ((plot_gaps=fopen(name, "wb")) == (FILE *)NULL) {
 		bu_vls_printf(_ged_current_gedp->ged_result_str, "cannot open plot file %s\n", name);
@@ -1680,7 +1680,7 @@
 	if (!ZERO(overlap_tolerance))
 	    bu_vls_printf(_ged_current_gedp->ged_result_str, "overlap tolerance to %g\n", overlap_tolerance);
 	if (plot_files) {
-	    char *name = "overlaps.pl";
+	    const char *name = "overlaps.pl";
 	    if ((plot_overlaps=fopen(name, "wb")) == (FILE *)NULL) {
 		bu_vls_printf(_ged_current_gedp->ged_result_str, "cannot open plot file %s\n", name);
 		return GED_ERROR;
@@ -1694,7 +1694,7 @@
 
     if (analysis_flags & ANALYSIS_ADJ_AIR)
 	if (plot_files) {
-	    char *name = "adj_air.pl";
+	    const char *name = "adj_air.pl";
 	    if ((plot_adjair=fopen(name, "wb")) == (FILE *)NULL) {
 		bu_vls_printf(_ged_current_gedp->ged_result_str, "cannot open plot file %s\n", name);
 		return GED_ERROR;
@@ -1703,7 +1703,7 @@
 
     if (analysis_flags & ANALYSIS_EXP_AIR)
 	if (plot_files) {
-	    char *name = "exp_air.pl";
+	    const char *name = "exp_air.pl";
 	    if ((plot_expair=fopen(name, "wb")) == (FILE *)NULL) {
 		bu_vls_printf(_ged_current_gedp->ged_result_str, "cannot open plot file %s\n", name);
 		return GED_ERROR;
@@ -2551,7 +2551,7 @@
 	summary_reports(&state);
 
 	if (analysis_flags & ANALYSIS_PLOT_OVERLAPS)
-	    _ged_cvt_vlblock_to_solids(gedp, ged_gqa_plot.vbp, "OVERLAPS", 0);
+	    _ged_cvt_vlblock_to_solids(gedp, ged_gqa_plot.vbp, (char *)"OVERLAPS", 0);
     } else
 	aborted = 0; /* reset flag */
 
Index: src/libged/mrot.c
===================================================================
--- src/libged/mrot.c	(revision 54124)
+++ src/libged/mrot.c	(working copy)
@@ -60,7 +60,7 @@
     }
 
     av[0] = (char *)argv[0];
-    av[1] = "-m";
+    av[1] = (char *)"-m";
     ac = argc+1;
     for (i = 1; i < argc; ++i)
 	av[i+1] = (char *)argv[i];
Index: src/libged/rect.c
===================================================================
--- src/libged/rect.c	(revision 54124)
+++ src/libged/rect.c	(working copy)
@@ -184,18 +184,18 @@
 		      gedp->ged_gvp->gv_rect.grs_bg[1],
 		      gedp->ged_gvp->gv_rect.grs_bg[2]);
 
-	av[0] = "rt";
-	av[1] = "-w";
+	av[0] = (char *)"rt";
+	av[1] = (char *)"-w";
 	av[2] = bu_vls_addr(&wvls);
-	av[3] = "-n";
+	av[3] = (char *)"-n";
 	av[4] = bu_vls_addr(&nvls);
-	av[5] = "-V";
+	av[5] = (char *)"-V";
 	av[6] = bu_vls_addr(&vvls);
-	av[7] = "-F";
+	av[7] = (char *)"-F";
 	av[8] = bu_vls_addr(&fvls);
-	av[9] = "-j";
+	av[9] = (char *)"-j";
 	av[10] = bu_vls_addr(&jvls);
-	av[11] = "-C";
+	av[11] = (char *)"-C";
 	av[12] = bu_vls_addr(&cvls);
 	av[13] = (char *)0;
 
Index: src/libged/wdb_bigE.c
===================================================================
--- src/libged/wdb_bigE.c	(revision 54124)
+++ src/libged/wdb_bigE.c	(working copy)
@@ -2053,7 +2053,7 @@
 	switch (c) {
 	    case 'C': {
 		int r, g, b;
-		char *cp = bu_optarg;
+		char *cp = (char *)bu_optarg;
 
 		r = atoi(cp);
 		while ((*cp >= '0' && *cp <= '9')) cp++;
Index: src/libged/edcodes.c
===================================================================
--- src/libged/edcodes.c	(revision 54124)
+++ src/libged/edcodes.c	(working copy)
@@ -214,7 +214,7 @@
 	return GED_ERROR;
 
     av = (char **)bu_malloc(sizeof(char *)*(argc + 2), "ged_edcodes av");
-    av[0] = "wcodes";
+    av[0] = (char *)"wcodes";
     av[1] = tmpfil;
     for (i = 2; i < argc + 1; ++i)
 	av[i] = (char *)argv[i-1];
@@ -276,7 +276,7 @@
     }
 
     if (_ged_editit(editstring, tmpfil)) {
-	av[0] = "rcodes";
+	av[0] = (char *)"rcodes";
 	av[2] = NULL;
 	status = ged_rcodes(gedp, 2, (const char **)av);
     } else
Index: src/libged/human.c
===================================================================
--- src/libged/human.c	(revision 54124)
+++ src/libged/human.c	(working copy)
@@ -100,7 +100,7 @@
 #define IN2MM	25.4	/*Convert an inch measurement to millimeters */
 #define CM2MM	10.0	/*Convert centimeters to millimeters */
 
-char *progname = "Human Model";
+const char *progname = "Human Model";
 char filename[MAXLENGTH]=DEFAULT_FILENAME;
 char humanName[MAXLENGTH]=DEFAULT_HUMANNAME;
 
@@ -1643,7 +1643,7 @@
 read_args(int argc, const char **argv, char *topLevel, struct human_data_t *dude, fastf_t *percentile, fastf_t *location, int *stance, int *troops, int *showBoxes)
 {
     int c = 'A';
-    char *options="AbH:hLlmn:N:O:o:p:s:tTvVw1:2:3:4:5:6:7:8:9:0:=:+:_:*:^:%:$:#:@:!:Q:~:Z:Y:X:";
+    const char *options="AbH:hLlmn:N:O:o:p:s:tTvVw1:2:3:4:5:6:7:8:9:0:=:+:_:*:^:%:$:#:@:!:Q:~:Z:Y:X:";
     float height=0;
     int soldiers=0;
     int pose=0;
Index: src/libged/loadview.c
===================================================================
--- src/libged/loadview.c	(revision 54124)
+++ src/libged/loadview.c	(working copy)
@@ -208,7 +208,7 @@
 		    sscanf(objects, "%10000s", objects);
 		}
 
-		editArgv[0] = "draw";
+		editArgv[0] = (char *)"draw";
 		editArgv[1] = objects;
 		editArgv[2] = (char *)NULL;
 		if (ged_draw(gedp, 2, (const char **)editArgv) != GED_OK) {
Index: src/libged/make.c
===================================================================
--- src/libged/make.c	(revision 54124)
+++ src/libged/make.c	(working copy)
@@ -659,21 +659,21 @@
 	VSET(extrude_ip->u_vec, 1.0, 0.0, 0.0);
 	VSET(extrude_ip->v_vec, 0.0, 1.0, 0.0);
 	extrude_ip->keypoint = 0;
-	av[0] = "make_name";
-	av[1] = "skt_";
+	av[0] = (char *)"make_name";
+	av[1] = (char *)"skt_";
 	ged_make_name(gedp, 2, (const char **)av);
 	extrude_ip->sketch_name = bu_strdup(bu_vls_addr(gedp->ged_result_str));
 	extrude_ip->skt = (struct rt_sketch_internal *)NULL;
 
 	sprintf(center_str, "%f %f %f", V3ARGS(origin));
 	sprintf(scale_str, "%f", scale);
-	av[0] = "make";
-	av[1] = "-o";
+	av[0] = (char *)"make";
+	av[1] = (char *)"-o";
 	av[2] = center_str;
-	av[3] = "-s";
+	av[3] = (char *)"-s";
 	av[4] = scale_str;
 	av[5] = extrude_ip->sketch_name;
-	av[6] = "sketch";
+	av[6] = (char *)"sketch";
 	av[7] = (char *)0;
 	ged_make(gedp, 7, (const char **)av);
     } else if (BU_STR_EQUAL(argv[bu_optind+1], "sketch")) {
Index: src/libged/fb2pix.c
===================================================================
--- src/libged/fb2pix.c	(revision 54124)
+++ src/libged/fb2pix.c	(working copy)
@@ -91,7 +91,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdout)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	outfp = stdout;
     } else {
 	file_name = argv[bu_optind];
Index: src/proc-db/spltest.c
===================================================================
--- src/proc-db/spltest.c	(revision 54124)
+++ src/proc-db/spltest.c	(working copy)
@@ -106,7 +106,7 @@
     if (argc == 2) {
 	filename = argv[1];
     } else {
-	filename = "spltest.g";
+	filename = (char *)"spltest.g";
     }
 
     if ((fp = wdb_fopen(filename)) == NULL) {
Index: src/proc-db/lens.c
===================================================================
--- src/proc-db/lens.c	(revision 54124)
+++ src/proc-db/lens.c	(working copy)
@@ -215,7 +215,7 @@
 int ReadArgs(int argc, char **argv, int *lens_1side_2side, fastf_t *ref_ind, fastf_t *diameter, fastf_t *thickness, fastf_t *focal_length)
 {
     int c = 0;
-    char *options="T:r:d:t:f:";
+    const char *options="T:r:d:t:f:";
     int ltype;
     float refractive, diam, thick, focal;
 
Index: src/proc-db/nmgmodel.c
===================================================================
--- src/proc-db/nmgmodel.c	(revision 54124)
+++ src/proc-db/nmgmodel.c	(working copy)
@@ -50,9 +50,9 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "h3210";
+const char *options = "h3210";
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 char plotfilename[1024] = {0};
 char mfilename[1024] = {0};
 
@@ -535,7 +535,7 @@
 
     if (parse_args(ac, av) < ac) usage((char *)NULL);
     if (!manifold[0] && !manifold[1] && !manifold[2] && !manifold[3])
-	usage("No manifolds selected\n");
+	usage((char *)"No manifolds selected\n");
 
 
     m = nmg_mm();
Index: src/proc-db/brickwall.c
===================================================================
--- src/proc-db/brickwall.c	(revision 54124)
+++ src/proc-db/brickwall.c	(working copy)
@@ -36,15 +36,15 @@
 #include "vmath.h"
 
 /* declarations to support use of bu_getopt() */
-char *options = "w:h:d:W:H:sn:t:Du:mc:C:";
+const char *options = "w:h:d:W:H:sn:t:Du:mc:C:";
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 double brick_width=8.0;
 double brick_height=2.25;
 double brick_depth=3.325;
 double wall_width=0.0;
 double wall_height=0.0;
-char *brick_name="brick";
+const char *brick_name="brick";
 int standalone=0;
 int make_mortar=0;	/* put mortar between bricks */
 double tol=0.125;	/* minimum mortar thickness in in */
@@ -56,7 +56,7 @@
 /*
  * U S A G E --- tell user how to invoke this program, then exit
  */
-void usage(char *s)
+void usage(const char *s)
 {
     if (s) (void)fputs(s, stderr);
 
@@ -144,7 +144,7 @@
 		    wall_height = d;
 		break;
 	    case 'n':
-		brick_name = bu_optarg;
+		brick_name = (char *)bu_optarg;
 		break;
 	    case 's':
 		standalone = !standalone;
Index: src/proc-db/tea_nmg.c
===================================================================
--- src/proc-db/tea_nmg.c	(revision 54124)
+++ src/proc-db/tea_nmg.c	(working copy)
@@ -160,9 +160,9 @@
 main(int argc, char **argv)
 {
     struct nmgregion *r;
-    char *id_name = "BRL-CAD t-NURBS NMG Example";
-    char *tea_name = "UtahTeapot";
-    char *uplot_name = "teapot.pl";
+    const char *id_name = "BRL-CAD t-NURBS NMG Example";
+    const char *tea_name = "UtahTeapot";
+    const char *uplot_name = "teapot.pl";
     struct bu_list vhead;
     FILE *fp;
     int i;
Index: src/proc-db/wdb_example.c
===================================================================
--- src/proc-db/wdb_example.c	(revision 54124)
+++ src/proc-db/wdb_example.c	(working copy)
@@ -42,7 +42,7 @@
 #include "wdb.h"
 
 
-char *progname ="(noname)";
+const char *progname ="(noname)";
 
 void usage(void)
 {
Index: src/proc-db/globe.c
===================================================================
--- src/proc-db/globe.c	(revision 54124)
+++ src/proc-db/globe.c	(working copy)
@@ -36,7 +36,7 @@
 #include "rtgeom.h"
 #include "wdb.h"
 
-char *progname ="globe";
+const char *progname ="globe";
 
 void usage(void)
 {
Index: src/proc-db/masonry.c
===================================================================
--- src/proc-db/masonry.c	(revision 54124)
+++ src/proc-db/masonry.c	(working copy)
@@ -39,15 +39,15 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "w:o:n:t:b:u:c:rlhdm:T:R:";
+const char *options = "w:o:n:t:b:u:c:rlhdm:T:R:";
 
 int debug = 0;
-char *progname = "masonry";
-char *obj_name = "wall";
+const char *progname = "masonry";
+const char *obj_name = "wall";
 char sol_name[64];
 int sol_num = 0;
-char *type = "frame";
-char *units = "mm";
+const char *type = "frame";
+const char *units = "mm";
 double unit_conv = 1.0;
 matp_t trans_matrix = (matp_t)NULL;
 const double degtorad =  0.01745329251994329573;
@@ -79,7 +79,7 @@
 unsigned char sheetrock_color[3] = { 200, 200, 200 };
 unsigned char stud_color[3] = { 250, 178, 108 };
 
-char *stud_properties[] = { "plastic", "sh=10 di=0.7 sp=0.3" };
+const char *stud_properties[] = { "plastic", "sh=10 di=0.7 sp=0.3" };
 
 struct opening {
     struct bu_list l;
@@ -104,7 +104,7 @@
  *
  * tell user how to invoke this program, then exit
  */
-void usage(char *s)
+void usage(const char *s)
 {
     if (s)
 	bu_log("%s\n", s);
@@ -239,11 +239,11 @@
     while ((c=bu_getopt(ac, av, options)) != -1) {
 	switch (c) {
 	    case 'T':
-		set_translate(bu_optarg);
+		set_translate((char *)bu_optarg);
 		units_lock = 1;
 		break;
 	    case 'R':
-		set_rotate(bu_optarg);
+		set_rotate((char *)bu_optarg);
 		break;
 	    case 'b':
 		if (sscanf(bu_optarg, "%lf, %lf, %lf", &width, &height, &dy) == 3) {
Index: src/proc-db/pix2g.c
===================================================================
--- src/proc-db/pix2g.c	(revision 54124)
+++ src/proc-db/pix2g.c	(working copy)
@@ -43,7 +43,7 @@
 int done=0;
 int ncpu=1;
 
-char *progname ="pix2g";
+const char *progname ="pix2g";
 
 /* procedure variable start */
 struct rt_wdb *db_fp;
Index: src/proc-db/pipetest.c
===================================================================
--- src/proc-db/pipetest.c	(revision 54124)
+++ src/proc-db/pipetest.c	(working copy)
@@ -114,7 +114,7 @@
 	bu_log("Usage: %s\n", argv[0]);
 
     outfp = wdb_fopen("pipetest.g");
-    mk_conversion("meters");
+    mk_conversion((char *)"meters");
     mk_id(outfp, "Pipe & Particle Test");
 
     /* Spherical part */
@@ -141,7 +141,7 @@
     if ((i = mk_pipe(outfp, "pipe1", &head)) < 0)
 	fprintf(stderr, "mk_pipe(%s) returns %d\n", "pipe1", i);
 
-    do_bending(outfp, "pipe2", pipeB, pipeB_npts, 0.1, 0.05);
+    do_bending(outfp, (char *)"pipe2", pipeB, pipeB_npts, 0.1, 0.05);
     return 0;
 }
 
Index: src/proc-db/molecule.c
===================================================================
--- src/proc-db/molecule.c	(revision 54124)
+++ src/proc-db/molecule.c	(working copy)
@@ -55,8 +55,8 @@
 
 struct atoms atom_list[50];
 
-char * matname = "plastic";
-char * matparm = "shine=100.0 diffuse=.8 specular=.2";
+const char * matname = "plastic";
+const char * matparm = "shine=100.0 diffuse=.8 specular=.2";
 
 void read_data(void), process_sphere(int id, fastf_t *center, double rad, int sph_type);
 int make_bond(int sp1, int sp2);
Index: src/proc-db/pyramid.c
===================================================================
--- src/proc-db/pyramid.c	(revision 54124)
+++ src/proc-db/pyramid.c	(working copy)
@@ -59,8 +59,8 @@
 
     mk_id(outfp, "3-D Pyramids");
 
-    do_leaf("leaf");
-    do_tree("tree", "leaf", depth);
+    do_leaf((char *)"leaf");
+    do_tree((char *)"tree", (char *)"leaf", depth);
 
     return 0;
 }
Index: src/proc-db/room.c
===================================================================
--- src/proc-db/room.c	(revision 54124)
+++ src/proc-db/room.c	(working copy)
@@ -101,15 +101,15 @@
     VSET(bmin, 0, 0, 0);
     VSET(bmax, 80000, 60000, HEIGHT);
     VSET(bthick, 100, 100, 100);
-    make_room("bldg", bmin, bmax, bthick, &head);
+    make_room((char *)"bldg", bmin, bmax, bthick, &head);
 
     /* Create the first room */
     VSET(r1thick, 100, 100, 0);
     VMOVE(r1min, bmin);
     VSET(r1max, 40000, 10000, HEIGHT);
     VADD2(r1max, r1min, r1max);
-    make_walls("rm1", r1min, r1max, r1thick, NORTH|EAST, &head);
-    make_carpet("rm1carpet", r1min, r1max, "carpet.pix", &head);
+    make_walls((char *)"rm1", r1min, r1max, r1thick, NORTH|EAST, &head);
+    make_carpet((char *)"rm1carpet", r1min, r1max, (char *)"carpet.pix", &head);
 
     /* Create the golden earth */
     VSET(norm, 0, 0, 1);
@@ -127,9 +127,9 @@
     for (ix=quant-1; ix>=0; ix--) {
 	x = 10000 + ix*size;
 	VSET(pbase, x, 10000*.25, r1min[Z]);
-	make_pillar("Pil", ix, 0, pbase, lwh, &head);
+	make_pillar((char *)"Pil", ix, 0, pbase, lwh, &head);
 	VSET(pbase, x, 10000*.75, r1min[Z]);
-	make_pillar("Pil", ix, 1, pbase, lwh, &head);
+	make_pillar((char *)"Pil", ix, 1, pbase, lwh, &head);
     }
 
 #ifdef never
Index: src/proc-db/clutter.c
===================================================================
--- src/proc-db/clutter.c	(revision 54124)
+++ src/proc-db/clutter.c	(working copy)
@@ -65,10 +65,10 @@
 double crystal_layer(char *crname, fastf_t *center, double radius, fastf_t *maj, fastf_t *min, double var, double ratio, int nsolids);
 
 void do_plate(char *name, double xc, double yc, double size);
-void do_rings(char *ringname, fastf_t *center, double r1, double r2, double incr, int n);
+void do_rings(const char *ringname, fastf_t *center, double r1, double r2, double incr, int n);
 
 void get_rgb(unsigned char *rgb);
-void do_light(char *name, point_t pos, vect_t dir_at, int da_flag, double r, unsigned char *rgb, struct wmember *headp);
+void do_light(const char *name, point_t pos, vect_t dir_at, int da_flag, double r, unsigned char *rgb, struct wmember *headp);
 
 struct bn_unif *rbuf;
 
@@ -466,7 +466,7 @@
 }
 
 void
-do_rings(char *ringname, fastf_t *center, double r1, double r2, double incr, int n)
+do_rings(const char *ringname, fastf_t *center, double r1, double r2, double incr, int n)
 {
     int i;
     vect_t normal;
Index: src/proc-db/mkbuilding.c
===================================================================
--- src/proc-db/mkbuilding.c	(revision 54124)
+++ src/proc-db/mkbuilding.c	(working copy)
@@ -52,7 +52,7 @@
     VSET(p1, 0.0, 0.0, 0.0);
     VSET(p2, (25.4*6), (25.4*12*10), (25.4*12*8));
 
-    mkbldg_makeWallSegment("TestWall", db_filepointer, p1, p2);
+    mkbldg_makeWallSegment((char *)"TestWall", db_filepointer, p1, p2);
 
     wdb_close(db_filepointer);
     return 0;
Index: src/proc-db/torii.c
===================================================================
--- src/proc-db/torii.c	(revision 54124)
+++ src/proc-db/torii.c	(working copy)
@@ -57,7 +57,7 @@
     unsigned short int levels;
 } torusLevels_t;
 
-void usage(char *progname)
+void usage(const char *progname)
 {
     fprintf(stderr, "Usage: %s db_file.g\n", progname);
     bu_exit(-1, NULL);
@@ -149,7 +149,7 @@
 int
 main(int ac, char *av[])
 {
-    char *progname ="torii";
+    const char *progname ="torii";
 
     torusLevels_t torii;
     const char *prototypeName="torus";
Index: src/proc-db/wavy.c
===================================================================
--- src/proc-db/wavy.c	(revision 54124)
+++ src/proc-db/wavy.c	(working copy)
@@ -61,8 +61,8 @@
 int
 main(int argc, char **argv)
 {
-    char *id_name = "wavy database";
-    char *nurb_name = "wavy";
+    const char *id_name = "wavy database";
+    const char *nurb_name = "wavy";
     int i, j;
     fastf_t hscale;
     struct rt_wdb *outfp;
Index: src/proc-db/common.c
===================================================================
--- src/proc-db/common.c	(revision 54124)
+++ src/proc-db/common.c	(working copy)
@@ -34,7 +34,7 @@
 extern struct rt_wdb *outfp;
 
 struct colors {
-    char *name;
+    const char *name;
     unsigned char c_pixel[3];
 }colortab[] = {
     {"black",	{20, 20, 20}},
Index: src/proc-db/pipe.c
===================================================================
--- src/proc-db/pipe.c	(revision 54124)
+++ src/proc-db/pipe.c	(working copy)
@@ -82,13 +82,13 @@
 int torus=0, sphere=0, mitre=0, nothing=0, cable=0;
 
 /* formats for solid and region names */
-char *tor_out="%02d-out.tor", *tor_in="%02d-in.tor";
-char *haf="%02d.haf";
-char *sph_out="%02d-out.sph", *sph_in="%02d-in.sph";
-char *rcc_out="%02d-out.rcc", *rcc_in="%02d-in.rcc";
-char *tub_reg="%02d.tube", *tub_flu="%02d.tubflu";
-char *elb_reg="%02d.elbow", *elb_flu="%02d.elbflu";
-char *arb="%02d.arb";
+const char *tor_out="%02d-out.tor", *tor_in="%02d-in.tor";
+const char *haf="%02d.haf";
+const char *sph_out="%02d-out.sph", *sph_in="%02d-in.sph";
+const char *rcc_out="%02d-out.rcc", *rcc_in="%02d-in.rcc";
+const char *tub_reg="%02d.tube", *tub_flu="%02d.tubflu";
+const char *elb_reg="%02d.elbow", *elb_flu="%02d.elbflu";
+const char *arb="%02d.arb";
 
 void Usage(void);
 
@@ -152,14 +152,14 @@
 
 
     if (torus) {
-	outform = tor_out;
-	inform = tor_in;
-	cutform = arb;
+	outform = (char *)tor_out;
+	inform = (char *)tor_in;
+	cutform = (char *)arb;
     } else if (sphere) {
-	outform = sph_out;
-	inform = sph_in;
+	outform = (char *)sph_out;
+	inform = (char *)sph_in;
     } else if (mitre)
-	cutform = haf;
+	cutform = (char *)haf;
 
     ptr = root;
     while (ptr->next != NULL) {
@@ -547,8 +547,8 @@
 {
     struct points *ptr;
     char tag[NAMESIZE];
-    char *pipe_group=".pipe";
-    char *fluid_group=".fluid";
+    const char *pipe_group=".pipe";
+    const char *fluid_group=".fluid";
     int comblen=0;
     struct wmember head;
 
Index: src/fb/fbclear.c
===================================================================
--- src/fb/fbclear.c	(revision 54124)
+++ src/fb/fbclear.c	(working copy)
@@ -67,7 +67,7 @@
 		clear_and_reset++;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 	    case 'S':
Index: src/fb/fbline.c
===================================================================
--- src/fb/fbline.c	(revision 54124)
+++ src/fb/fbline.c	(working copy)
@@ -205,7 +205,7 @@
 		clear = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'r':
 		pixcolor[RED] = atoi(bu_optarg);
Index: src/fb/fbhelp.c
===================================================================
--- src/fb/fbhelp.c	(revision 54124)
+++ src/fb/fbhelp.c	(working copy)
@@ -48,7 +48,7 @@
     while ( (c = bu_getopt( argc, argv, "F:" )) != -1 ) {
 	switch ( c ) {
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    default:		/* '?' */
 		(void)fputs(usage, stderr);
Index: src/fb/fbframe.c
===================================================================
--- src/fb/fbframe.c	(revision 54124)
+++ src/fb/fbframe.c	(working copy)
@@ -33,7 +33,7 @@
 #include "bu.h"
 #include "fb.h"
 
-char *Usage="[-h] [-F framebuffer]\n\
+const char *Usage="[-h] [-F framebuffer]\n\
 	[-s squareframesize] [-w frame_width] [-n frame_height]\n";
 
 #define USAGE_EXIT(p) { fprintf(stderr, "Usage: %s %s\n", (p), Usage); \
@@ -62,7 +62,7 @@
 		xsize = ysize = 1024;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 	    case 'S':
Index: src/fb/cell-fb.c
===================================================================
--- src/fb/cell-fb.c	(revision 54124)
+++ src/fb/cell-fb.c	(working copy)
@@ -124,7 +124,7 @@
 
 
 /* Global variables */
-static char *usage[] = {
+static const char *usage[] = {
     "",
     "cell-fb",
     "",
@@ -853,7 +853,7 @@
 static void
 prnt_Usage(void)
 {
-    char **p = usage;
+    char **p = (char **)usage;
 
     while (*p)
 	bu_log("%s\n", *p++);
Index: src/fb/fb-fb.c
===================================================================
--- src/fb/fb-fb.c	(revision 54124)
+++ src/fb/fb-fb.c	(working copy)
@@ -54,7 +54,7 @@
     while ((c = bu_getopt(argc, argv, "vF:")) != -1) {
 	switch (c) {
 	    case 'F':
-		out_fb_name = bu_optarg;
+		out_fb_name = (char *)bu_optarg;
 		break;
 	    case 'v':
 		verbose++;
Index: src/fb/fbstretch.c
===================================================================
--- src/fb/fbstretch.c	(revision 54124)
+++ src/fb/fbstretch.c	(working copy)
@@ -189,11 +189,11 @@
 		    break;
 
 		case 'f':	/* -f in_fb */
-		    src_file = bu_optarg;
+		    src_file = (char *)bu_optarg;
 		    break;
 
 		case 'F':	/* -F out_fb */
-		    dst_file = bu_optarg;
+		    dst_file = (char *)bu_optarg;
 		    break;
 
 		case 'h':	/* -h */
Index: src/fb/spm-fb.c
===================================================================
--- src/fb/spm-fb.c	(revision 54124)
+++ src/fb/spm-fb.c	(working copy)
@@ -61,7 +61,7 @@
 		scr_height = scr_width = 1024;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 		square = 1;
@@ -88,7 +88,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
     } else {
 	file_name = argv[bu_optind];
     }
Index: src/fb/fb-pix.c
===================================================================
--- src/fb/fb-pix.c	(revision 54124)
+++ src/fb/fb-pix.c	(working copy)
@@ -74,7 +74,7 @@
 		inverse = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 		/* square size */
@@ -95,7 +95,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdout)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	outfp = stdout;
     } else {
 	file_name = argv[bu_optind];
Index: src/fb/pix-fb.c
===================================================================
--- src/fb/pix-fb.c	(revision 54124)
+++ src/fb/pix-fb.c	(working copy)
@@ -109,7 +109,7 @@
 		zoom = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 		/* square file size */
@@ -157,7 +157,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infd = 0;
     } else {
 	char *ifname;
Index: src/fb/fb-orle.c
===================================================================
--- src/fb/fb-orle.c	(revision 54124)
+++ src/fb/fb-orle.c	(working copy)
@@ -38,7 +38,7 @@
 #include "fb.h"
 #include "orle.h"
 
-static char *usage[] = {
+static const char *usage[] = {
     "Usage: fb-rle [-CScdhvw] [-l X Y] [-F Frame_buffer] [-p X Y] [file.rle]",
     "",
     "If no RLE file is specified, fb-rle will write to its standard output.",
@@ -212,7 +212,7 @@
 	    case 'w' : /* Monochrome (black & white) mode.		*/
 		ncolors = 1;
 		break;
-	    case 'F' : fb_file = bu_optarg;
+	    case 'F' : fb_file = (char *)bu_optarg;
 		break;
 	    case '?' :
 		return 0;
@@ -251,7 +251,7 @@
 static void
 prntUsage(void)
 {
-    char **p = usage;
+    char **p = (char **)usage;
 
     while (*p) {
 	(void) fprintf(stderr, "%s\n", *p++);
Index: src/fb/orle-fb.c
===================================================================
--- src/fb/orle-fb.c	(revision 54124)
+++ src/fb/orle-fb.c	(working copy)
@@ -34,7 +34,7 @@
 #include "fb.h"
 #include "orle.h"
 
-static char	*usage[] =
+static const char	*usage[] =
 {
     "Usage: orle-fb [-Otdv] [-b (rgbwBG)] [-F Frame_buffer] [-p X Y] [file.rle]",
     "",
@@ -331,7 +331,7 @@
 	    case 'v' :
 		rle_verbose = 1;
 		break;
-	    case 'F' : fb_file = bu_optarg;
+	    case 'F' : fb_file = (char *)bu_optarg;
 		break;
 	    case '?' :
 		return	0;
@@ -361,7 +361,7 @@
 static void
 prnt_Usage(void)
 {
-    char	**p = usage;
+    char	**p = (char **)usage;
     while ( *p )
 	(void) fprintf( stderr, "%s\n", *p++ );
     return;
Index: src/fb/fblabel.c
===================================================================
--- src/fb/fblabel.c	(revision 54124)
+++ src/fb/fblabel.c	(working copy)
@@ -319,13 +319,13 @@
 		clear = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'f':
-		font1 = bu_optarg;
+		font1 = (char *)bu_optarg;
 		break;
 	    case 'C': {
-		char *cp = bu_optarg;
+		char *cp = (char *)bu_optarg;
 		unsigned char *conp
 		    = (unsigned char *)pixcolor;
 
Index: src/fb/fbfree.c
===================================================================
--- src/fb/fbfree.c	(revision 54124)
+++ src/fb/fbfree.c	(working copy)
@@ -48,7 +48,7 @@
     while ( (c = bu_getopt( argc, argv, "F:" )) != -1 ) {
 	switch ( c ) {
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    default:		/* '?' */
 		(void)fputs(usage, stderr);
Index: src/fb/gif-fb.c
===================================================================
--- src/fb/gif-fb.c	(revision 54124)
+++ src/fb/gif-fb.c	(working copy)
@@ -465,7 +465,7 @@
 		    break;
 
 		case 'F':	/* -F fb_file */
-		    fb_file = bu_optarg;
+		    fb_file = (char *)bu_optarg;
 		    break;
 
 		case 'c':	/* -c */
Index: src/fb/fbgamma.c
===================================================================
--- src/fb/fbgamma.c	(revision 54124)
+++ src/fb/fbgamma.c	(working copy)
@@ -35,7 +35,7 @@
 #include "fb.h"
 #include "pkg.h"
 
-char *options = "ihoF:";
+const char *options = "ihoF:";
 
 void	checkgamma(double g);
 
@@ -125,7 +125,7 @@
 	    case 'h'	: fbsize = 1024; break;
 	    case 'o'	: overlay++; break;
 	    case 'i'	: image = !image; break;
-	    case 'F'	: framebuffer = bu_optarg; break;
+	    case 'F'	: framebuffer = (char *)bu_optarg; break;
 	    default		: break;
 	}
     }
Index: src/fb/fbgammamod.c
===================================================================
--- src/fb/fbgammamod.c	(revision 54124)
+++ src/fb/fbgammamod.c	(working copy)
@@ -36,7 +36,7 @@
 #include "fb.h"
 #include "pkg.h"
 
-char *options = "vf:F:";
+const char *options = "vf:F:";
 
 static char usage[] = "\
 Usage: fbgammamod [-v] [-f in_file] [-F framebuffer] \
@@ -135,10 +135,10 @@
 		verbose++;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'f':
-		input_file = bu_optarg;
+		input_file = (char *)bu_optarg;
 		break;
 	    default:
 		bu_exit(2, "fbgammamod: Unrecognized option '%c'\n%s",
Index: src/fb/fbscanplot.c
===================================================================
--- src/fb/fbscanplot.c	(revision 54124)
+++ src/fb/fbscanplot.c	(working copy)
@@ -78,7 +78,7 @@
 		scr_width = atoi(bu_optarg);
 		break;
 	    case 'F':
-		outframebuffer = bu_optarg;
+		outframebuffer = (char *)bu_optarg;
 		break;
 	    default:		/* '?' */
 		return 0;
Index: src/fb/fb-bw.c
===================================================================
--- src/fb/fb-bw.c	(revision 54124)
+++ src/fb/fb-bw.c	(working copy)
@@ -68,7 +68,7 @@
 		inverse = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'X':
 		scr_xoff = atoi(bu_optarg);
@@ -95,7 +95,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdout)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	outfp = stdout;
     } else {
 	file_name = argv[bu_optind];
Index: src/fb/gif2fb.c
===================================================================
--- src/fb/gif2fb.c	(revision 54124)
+++ src/fb/gif2fb.c	(working copy)
@@ -127,7 +127,7 @@
 		verbose=1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    default:	/* '?' */
 		usage(argv);
@@ -141,7 +141,7 @@
 	    usage(argv);
 	    return 1;
 	}
-	file_name = "-";
+	file_name = (char *)"-";
 	fp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/fb/pl-fb.c
===================================================================
--- src/fb/pl-fb.c	(revision 54124)
+++ src/fb/pl-fb.c	(working copy)
@@ -554,7 +554,7 @@
 		over = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'h':
 		Nscanlines = Npixels = 1024;
@@ -580,7 +580,7 @@
 	/* no file name given, use stdin */
 	if (isatty(fileno(stdin)))
 	    return 0;
-	filename = "-";
+	filename = (char *)"-";
 	pfin = stdin;
     } else {
 	/* open file */
Index: src/fb/fbpoint.c
===================================================================
--- src/fb/fbpoint.c	(revision 54124)
+++ src/fb/fbpoint.c	(working copy)
@@ -58,7 +58,7 @@
 char usage[] = "\
 Usage: fbpoint [-h] [-x[prefix]] [-y[prefix]] [initx inity]\n";
 
-static char *help = "\
+static const char *help = "\
 Char:   Command:                                                \r\n\
 h B	Left (1)\r\n\
 j N	Down (1)\r\n\
Index: src/fb/polar-fb.c
===================================================================
--- src/fb/polar-fb.c	(revision 54124)
+++ src/fb/polar-fb.c	(working copy)
@@ -70,7 +70,7 @@
 
 /* Global variables */
 char *ProgName;	/* To save argv[0] */
-char *ExplainOpts[] = {
+const char *ExplainOpts[] = {
     " -F fbfile specifies frame-buffer file\n",
     " -N h      specifies FB height (pixels)\n",
     " -S s      specifies FB height and width (pixels)\n",
@@ -353,7 +353,7 @@
     (void) fprintf(stderr, "Usage: '%s [options] [file]'\n", ProgName);
     if (ShoOpts) {
 	(void) fputs("Options:\n", stderr);
-	for (oPtr = ExplainOpts; **oPtr != '\0'; oPtr++)
+	for (oPtr = (char **)ExplainOpts; **oPtr != '\0'; oPtr++)
 	    (void) fputs(*oPtr, stderr);
     } else
 	(void) fputs(" -? option for help\n", stderr);
@@ -402,7 +402,7 @@
 /* Initialize things */
     ProgName = *argv;
     angle_cvt = Deg2Rad = M_PI / 180.0;
-    FB_Name = "";
+    FB_Name = (char *)"";
     Interior = BI_RINGS;
     Color[C_BKGRND][RED] = Color[C_BKGRND][GRN] = Color[C_BKGRND][BLU] = 255;
 
@@ -717,7 +717,7 @@
     /* Determine source of input */
     switch (argc) {
 	case 0:			/* Read stdin */
-	    FileName="";
+	    FileName=(char *)"";
 	    break;
 	case 1:			/* File name was given */
 	    FileName=argv[0];
Index: src/fb/fbcbars.c
===================================================================
--- src/fb/fbcbars.c	(revision 54124)
+++ src/fb/fbcbars.c	(working copy)
@@ -182,7 +182,7 @@
 		scr_height = scr_width = 1024;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'S':
 		scr_height = scr_width = atoi(bu_optarg);
Index: src/fb/pp-fb.c
===================================================================
--- src/fb/pp-fb.c	(revision 54124)
+++ src/fb/pp-fb.c	(working copy)
@@ -87,7 +87,7 @@
 char strg[51];
 char g(void), gc(void);
 struct colors {
-    char *name;
+    const char *name;
     RGBpixel c_pixel;
 }colortab[] = {
     {"black",	{0, 0, 0}},
@@ -348,7 +348,7 @@
 			loci+=6;
 			lseek(ifd, (off_t)loci, 0);
 			ic=0;
-			for (j=0, cp=colortab[itmc[i]].name;j<3;
+			for (j=0, cp=(char *)colortab[itmc[i]].name;j<3;
 			     cp++, j++) {
 			    loci++;
 			    writeret = write(ifd, cp, 1);
@@ -639,7 +639,7 @@
     char *cp;
     int i;
     for (i=0;i<20;i++) {
-	cp=colortab[i].name;
+	cp=(char *)colortab[i].name;
 	if (*cp== *pc&&*(cp+1)== *(pc+1)&&*(cp+2)==*(pc+2)) return i;
 	else if (*cp> *pc) return -1;
     }
Index: src/fb/fbfade.c
===================================================================
--- src/fb/fbfade.c	(revision 54124)
+++ src/fb/fbfade.c	(working copy)
@@ -142,11 +142,11 @@
 		    break;
 
 		case 'f':	/* -f in_fb_file */
-		    in_fb_file = bu_optarg;
+		    in_fb_file = (char *)bu_optarg;
 		    break;
 
 		case 'F':	/* -F out_fb_file */
-		    out_fb_file = bu_optarg;
+		    out_fb_file = (char *)bu_optarg;
 		    break;
 
 		case 'h':	/* -h */
Index: src/fb/fb-rle.c
===================================================================
--- src/fb/fb-rle.c	(revision 54124)
+++ src/fb/fb-rle.c	(working copy)
@@ -95,7 +95,7 @@
 		crunch = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'h':
 		/* high-res */
@@ -127,7 +127,7 @@
 		screen_yoff = atoi(bu_optarg);
 		break;
 	    case 'C': {
-		char *cp = bu_optarg;
+		char *cp = (char *)bu_optarg;
 		int *conp = background;
 
 		/* premature null => atoi gives zeros */
Index: src/fb/rle-fb.c
===================================================================
--- src/fb/rle-fb.c	(revision 54124)
+++ src/fb/rle-fb.c	(working copy)
@@ -80,7 +80,7 @@
 		r_debug = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'c':
 		crunch = 1;
@@ -109,7 +109,7 @@
 		scr_yoff = atoi(bu_optarg);
 		break;
 	    case 'C': {
-		char *cp = bu_optarg;
+		char *cp = (char *)bu_optarg;
 		int *conp = background;
 
 		/* premature null => atoi gives zeros */
@@ -133,7 +133,7 @@
 	}
 	bu_optind++;
     } else {
-	infile = "-";
+	infile = (char *)"-";
     }
     if (argc > ++bu_optind)
 	(void) fprintf(stderr, "rle-fb:  excess arguments ignored\n");
Index: src/fb/fb-png.c
===================================================================
--- src/fb/fb-png.c	(revision 54124)
+++ src/fb/fb-png.c	(working copy)
@@ -74,7 +74,7 @@
 		inverse = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 		/* square size */
@@ -103,7 +103,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdout)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	outfp = stdout;
     } else {
 	file_name = argv[bu_optind];
Index: src/fb/png-fb.c
===================================================================
--- src/fb/png-fb.c	(revision 54124)
+++ src/fb/png-fb.c	(working copy)
@@ -109,7 +109,7 @@
 		zoom = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'x':
 		file_xoff = atoi(bu_optarg);
@@ -141,7 +141,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	fp_in = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/fb/pixautosize.c
===================================================================
--- src/fb/pixautosize.c	(revision 54124)
+++ src/fb/pixautosize.c	(working copy)
@@ -60,7 +60,7 @@
 		bytes_per_sample = atoi(bu_optarg);
 		break;
 	    case 'f':
-		file_name = bu_optarg;
+		file_name = (char *)bu_optarg;
 		break;
 	    case 'l':
 		file_length = atoi(bu_optarg);
Index: src/fb/fbcolor.c
===================================================================
--- src/fb/fbcolor.c	(revision 54124)
+++ src/fb/fbcolor.c	(working copy)
@@ -270,7 +270,7 @@
     while ( (c = bu_getopt( argc, argv, "F:s:S:w:W:n:N:h" )) != -1 )  {
 	switch ( c )  {
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'h' : /* High resolution frame buffer.	*/
 		scr_height = scr_width = 1024;
Index: src/fb/fbcmap.c
===================================================================
--- src/fb/fbcmap.c	(revision 54124)
+++ src/fb/fbcmap.c	(working copy)
@@ -597,7 +597,7 @@
 		scr_width = scr_height = 1024;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'S':
 	    case 's':
Index: src/fb/fbzoom.c
===================================================================
--- src/fb/fbzoom.c	(revision 54124)
+++ src/fb/fbzoom.c	(working copy)
@@ -306,7 +306,7 @@
 		toggle_pan = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 	    case 'S':
Index: src/fb/fbgrid.c
===================================================================
--- src/fb/fbgrid.c	(revision 54124)
+++ src/fb/fbgrid.c	(working copy)
@@ -73,7 +73,7 @@
 		flavor = OLD;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'S':
 	    case 's':
Index: src/fb/bw-fb.c
===================================================================
--- src/fb/bw-fb.c	(revision 54124)
+++ src/fb/bw-fb.c	(working copy)
@@ -111,7 +111,7 @@
 		blueflag = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 		/* square file size */
@@ -156,7 +156,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infd = 0;
     } else {
 	char *ifname;
Index: src/remrt/rtsrv.c
===================================================================
--- src/remrt/rtsrv.c	(revision 54124)
+++ src/remrt/rtsrv.c	(working copy)
@@ -830,7 +830,7 @@
 void
 bu_bomb(const char *str)
 {
-    char	*bomb = "RTSRV terminated by bu_bomb()\n";
+    const char	*bomb = "RTSRV terminated by bu_bomb()\n";
 
     if ( pkg_send( MSG_PRINT, (char *)str, strlen(str)+1, pcsrv ) < 0 )  {
 	fprintf(stderr, "bu_bomb MSG_PRINT failed\n");
Index: src/remrt/ihost.c
===================================================================
--- src/remrt/ihost.c	(revision 54124)
+++ src/remrt/ihost.c	(working copy)
@@ -150,7 +150,7 @@
     ihp->ht_flags = 0x0;
     ihp->ht_when = HT_PASSIVE;
     ihp->ht_where = HT_CONVERT;
-    ihp->ht_path = "/tmp";
+    ihp->ht_path = (char *)"/tmp";
 
     /* Add to linked list of known hosts */
     BU_LIST_INSERT( &HostHead, &ihp->l );
Index: src/remrt/remrt.c
===================================================================
--- src/remrt/remrt.c	(revision 54124)
+++ src/remrt/remrt.c	(working copy)
@@ -214,7 +214,7 @@
 void		host_helper(FILE *fp);
 void		start_helper(void);
 void		build_start_cmd(int argc, char **argv, int startc);
-void		drop_server(struct servers *sp, char *why);
+void		drop_server(struct servers *sp, const char *why);
 void		send_do_lines(struct servers *sp, int start, int stop, int framenum);
 void		do_work(int auto_start);
 void		source(FILE *fp);
@@ -387,7 +387,7 @@
 #define OPT_LOAD	1	/* 10% per server per frame */
 #define OPT_MOVIE	2	/* one server per frame */
 int	work_allocate_method = OPT_MOVIE;
-char *allocate_method[] = {
+const char *allocate_method[] = {
     "Frame",
     "Load Averaging",
     "One per Frame"};
@@ -464,23 +464,23 @@
 
     switch ( state )  {
 	case SRST_UNUSED:
-	    return "[unused]";
+	    return (char *)"[unused]";
 	case SRST_NEW:
-	    return "..New..";
+	    return (char *)"..New..";
 	case SRST_VERSOK:
-	    return "Vers_OK";
+	    return (char *)"Vers_OK";
 	case SRST_DOING_DIRBUILD:
-	    return "DoDirbld";
+	    return (char *)"DoDirbld";
 	case SRST_NEED_TREE:
-	    return "NeedTree";
+	    return (char *)"NeedTree";
 	case SRST_READY:
-	    return " Ready";
+	    return (char *)" Ready";
 	case SRST_RESTART:
-	    return "Restart";
+	    return (char *)"Restart";
 	case SRST_CLOSING:
-	    return "Closing";
+	    return (char *)"Closing";
 	case SRST_DOING_GETTREES:
-	    return "GetTrees";
+	    return (char *)"GetTrees";
     }
     sprintf(buf, "UNKNOWN_x%x", state);
     return buf;
@@ -850,7 +850,7 @@
  *  to prevent recursion problems.
  */
 void
-drop_server(struct servers *sp, char *why)
+drop_server(struct servers *sp, const char *why)
 {
     struct list	*lp;
     struct pkg_conn *pc;
Index: src/canon/canon.h
===================================================================
--- src/canon/canon.h	(revision 54124)
+++ src/canon/canon.h	(working copy)
@@ -98,10 +98,10 @@
 #endif
 
 FUNC_EXTERN(int parse_args, (int ac, char *av[]));
-FUNC_EXTERN(void usage, (char *s));
+FUNC_EXTERN(void usage, (const char *s));
 
-extern char *progname;
-extern char scsi_device[];
+extern const char *progname;
+extern const char scsi_device[];
 extern char ipu_gamma;
 extern int  ipu_filetype;
 extern int  ipu_bytes_per_pixel;
@@ -123,7 +123,7 @@
 extern union ipu_prsc_param param;
 extern char *arg_v[];
 extern int arg_c;
-extern char *print_queue;
+extern const char *print_queue;
 
 #endif  /* __CANON_H__ */
 
Index: src/canon/canonlib.c
===================================================================
--- src/canon/canonlib.c	(revision 54124)
+++ src/canon/canonlib.c	(working copy)
@@ -47,10 +47,10 @@
  */
 int dsdebug = 0;
 
-char *options = "P:p:Q:q:acd:g:hmn:s:t:vw:zAC:M:R:D:N:S:W:X:Y:U:V#:";
+const char *options = "P:p:Q:q:acd:g:hmn:s:t:vw:zAC:M:R:D:N:S:W:X:Y:U:V#:";
 
-char *progname = "(noname)";
-char scsi_device[1024] = "/dev/scsi/sc0d6l3";
+const char *progname = "(noname)";
+const char scsi_device[1024] = "/dev/scsi/sc0d6l3";
 char ipu_gamma = IPU_GAMMA_CG;
 int  ipu_filetype = IPU_RGB_FILE;
 int  ipu_bytes_per_pixel = 3;
@@ -77,13 +77,13 @@
 static int  len;
 char	*arg_v[MAX_ARGS];
 int	arg_c;
-char *print_queue = "canon";
+const char *print_queue = "canon";
 
 /*
  *	U S A G E --- tell user how to invoke this program, then exit
  */
 void usage(s)
-    char *s;
+    const char *s;
 {
     if (s) (void)fputs(s, stderr);
 
@@ -128,7 +128,7 @@
     while ((c=bu_getopt(ac, av, options)) != -1) {
 	/* slup off a printer queue name */
 	if (c == 'q' ||  c == 'p') {
-	    print_queue = bu_optarg;
+	    print_queue = (char *)bu_optarg;
 	    continue;
 	}
 
@@ -150,8 +150,8 @@
 	    case 'a'	: autosize = !autosize; break;
 	    case 'c'	: clear = !clear; break;
 	    case 'd'	: if (isprint((int)*bu_optarg)) {
-		memset(scsi_device, 0, sizeof(scsi_device));
-		bu_strlcpy(scsi_device, bu_optarg, sizeof(scsi_device));
+		memset((char *)scsi_device, 0, sizeof(scsi_device));
+		bu_strlcpy((char *)scsi_device, bu_optarg, sizeof(scsi_device));
 	    } else
 		usage("-d scsi_device_name\n");
 		break;
Index: src/irprep/ir-X.c
===================================================================
--- src/irprep/ir-X.c	(revision 54124)
+++ src/irprep/ir-X.c	(working copy)
@@ -96,8 +96,8 @@
     XRectangle rect[MAXARR];	/*  Array for drawing rectangles.  */
     char **a=(char **)NULL;	/*  Place holder for XSetStandard  */
 				/*  Properties.  */
-    char *winttl = "SEE";	/*  Window title.  */
-    char *quit = "QUIT";		/*  Exit label.  */
+    const char *winttl = "SEE";	/*  Window title.  */
+    const char *quit = "QUIT";		/*  Exit label.  */
     Font font;			/*  Structure for setting font.  */
 
     /*  Other variables.  */
Index: src/irprep/pictx.c
===================================================================
--- src/irprep/pictx.c	(revision 54124)
+++ src/irprep/pictx.c	(working copy)
@@ -41,7 +41,7 @@
 main(void)
 {
     int ichoice;			/*  Choice.  */
-    char *irX = "ir-X";		/*  Calls ir-X program.  */
+    const char *irX = "ir-X";		/*  Calls ir-X program.  */
     char showtherm[125];		/*  Calls showtherm program.  */
     char gfile[16];		/*  .g file.  */
     char group[26];		/*  Group names.  */
Index: src/irprep/irdisp.c
===================================================================
--- src/irprep/irdisp.c	(revision 54124)
+++ src/irprep/irdisp.c	(working copy)
@@ -42,7 +42,7 @@
 main(void)
 {
     int ichoice;		/*  Choice.  */
-    char *irX = "ir-X";		/*  Calls ir-X program.  */
+    const char *irX = "ir-X";		/*  Calls ir-X program.  */
     char showtherm[125];	/*  Calls showtherm program.  */
     char gfile[16];		/*  .g file.  */
     char group[26];		/*  Group names.  */
Index: src/conv/obj-g.c
===================================================================
--- src/conv/obj-g.c	(revision 54124)
+++ src/conv/obj-g.c	(working copy)
@@ -2942,7 +2942,7 @@
 			   gfi->obj_file_face_idx_arr[face_idx] + 1,
 			   bu_vls_addr(gfi->raw_grouping_name),
 			   gfi->grouping_index + 1);
-		    nmg_pr_fu_briefly(fu, "");
+		    nmg_pr_fu_briefly(fu, (char *)"");
 		}
 		(void)nmg_kfu(fu);
 		fu = (struct faceuse *)NULL;
Index: src/conv/g-obj.c
===================================================================
--- src/conv/g-obj.c	(revision 54124)
+++ src/conv/g-obj.c	(working copy)
@@ -131,7 +131,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
@@ -156,7 +156,7 @@
 		NMG_debug = rt_g.NMG_debug;
 		break;
 	    case 'e':		/* Error file name. */
-		error_file = bu_optarg;
+		error_file = (char *)bu_optarg;
 		break;
 	    case 'i':
 		inches = 1;
Index: src/conv/dxf/bot-bldxf.c
===================================================================
--- src/conv/dxf/bot-bldxf.c	(revision 54124)
+++ src/conv/dxf/bot-bldxf.c	(working copy)
@@ -38,9 +38,9 @@
 
 
 /* declarations to support use of bu_getopt() */
-char *options = "d";
+const char *options = "d";
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 #define DEBUG_NAMES 1
 #define DEBUG_STATS 2
 #define DEBUG_ONLY_TRI 4
@@ -52,7 +52,7 @@
 /*
  *	U S A G E --- tell user how to invoke this program, then exit
  */
-void usage(char *s)
+void usage(const char *s)
 {
     if (s) (void)fputs(s, stderr);
 
Index: src/conv/dxf/dxf-g.c
===================================================================
--- src/conv/dxf/dxf-g.c	(revision 54124)
+++ src/conv/dxf/dxf-g.c	(working copy)
@@ -205,7 +205,7 @@
 #define MAX_LINE_SIZE	2050
 char line[MAX_LINE_SIZE];
 
-static char *usage="dxf-g [-c] [-d] [-v] [-t tolerance] [-s scale_factor] input_file.dxf output_file.g\n";
+static const char *usage="dxf-g [-c] [-d] [-v] [-t tolerance] [-s scale_factor] input_file.dxf output_file.g\n";
 
 static FILE *dxf;
 static struct rt_wdb *out_fp;
@@ -2285,7 +2285,7 @@
 	    MAT4X3PNT( tmp_pt, curr_state->xform, insertionPoint );
 	    VMOVE( insertionPoint, tmp_pt );
 
-	    drawMtext( (vls) ? bu_vls_addr(vls) : "NO_NAME", attachPoint, drawingDirection, textHeight, entityHeight,
+	    drawMtext( (vls) ? bu_vls_addr(vls) : (char *)"NO_NAME", attachPoint, drawingDirection, textHeight, entityHeight,
 		       charWidth, rectWidth, rotationAngle, insertionPoint );
 
 	    bu_vls_free(vls);
Index: src/conv/dxf/g-dxf.c
===================================================================
--- src/conv/dxf/g-dxf.c	(revision 54124)
+++ src/conv/dxf/g-dxf.c	(working copy)
@@ -429,7 +429,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'p':
 		polyface_mesh = 1;
Index: src/conv/3dm/3dm-g.cpp
===================================================================
--- src/conv/3dm/3dm-g.cpp	(revision 54124)
+++ src/conv/3dm/3dm-g.cpp	(working copy)
@@ -236,7 +236,7 @@
 	    case 's':	/* scale factor */
 		break;
 	    case 'o':	/* specify output file name */
-		outFileName = bu_optarg;
+		outFileName = (char *)bu_optarg;
 		break;
 	    case 'd':	/* debug */
 		break;
Index: src/conv/fast4-g.c
===================================================================
--- src/conv/fast4-g.c	(revision 54124)
+++ src/conv/fast4-g.c	(working copy)
@@ -2848,10 +2848,10 @@
 		break;
 	    case 'o':	/* output a plotfile of original FASTGEN4 elements */
 		f4_do_plot = 1;
-		plot_file = bu_optarg;
+		plot_file = (char *)bu_optarg;
 		break;
 	    case 'c':	/* convert only the specified components */
-		make_region_list(bu_optarg);
+		make_region_list((char *)bu_optarg);
 		break;
 	    case 'd':	/* debug option */
 		debug = 1;
@@ -2867,7 +2867,7 @@
 		sscanf(bu_optarg, "%x", (unsigned int *)&bu_debug);
 		break;
 	    case 'C':
-		color_file = bu_optarg;
+		color_file = (char *)bu_optarg;
 		break;
 	    default:
 		bu_log("Unrecognized option (%c)\n", c);
Index: src/conv/comgeom/region.c
===================================================================
--- src/conv/comgeom/region.c	(revision 54124)
+++ src/conv/comgeom/region.c	(working copy)
@@ -35,7 +35,7 @@
 #include "wdb.h"
 
 /* defined in read.c */
-extern int get_line(char *cp, int buflen, char *title);
+extern int get_line(char *cp, int buflen, const char *title);
 extern int getint(char *cp, int start, int len);
 extern void namecvt(int n, char **cp, int c);
 
@@ -57,7 +57,7 @@
 
 void	region_register(int reg_num, int id, int air, int mat, int los);
 void	group_init(void);
-void	group_register(char *name, int lo, int hi);
+void	group_register(const char *name, int lo, int hi);
 void	group_add(int val, char *name);
 void	group_write(void);
 
@@ -318,7 +318,7 @@
 }
 
 void
-group_register(char *name, int lo, int hi)
+group_register(const char *name, int lo, int hi)
 {
     char	nbuf[32];
     struct wmember	*wp;
Index: src/conv/comgeom/solid.c
===================================================================
--- src/conv/comgeom/solid.c	(revision 54124)
+++ src/conv/comgeom/solid.c	(working copy)
@@ -48,7 +48,7 @@
 
 
 /* defined in read.c */
-extern int get_line(char *cp, int buflen, char *title);
+extern int get_line(char *cp, int buflen, const char *title);
 extern int getint(char *cp, int start, int len);
 extern void namecvt(int n, char **cp, int c);
 
Index: src/conv/comgeom/read.c
===================================================================
--- src/conv/comgeom/read.c	(revision 54124)
+++ src/conv/comgeom/read.c	(working copy)
@@ -49,7 +49,7 @@
  *			G E T L I N E
  */
 int
-get_line(char *cp, int buflen, char *title)
+get_line(char *cp, int buflen, const char *title)
 {
     int	c;
     int	count = buflen;
Index: src/conv/comgeom/cvt.c
===================================================================
--- src/conv/comgeom/cvt.c	(revision 54124)
+++ src/conv/comgeom/cvt.c	(working copy)
@@ -47,7 +47,7 @@
 extern void group_write(void);
 
 /* defined in read.c */
-extern int get_line(char *cp, int buflen, char *title);
+extern int get_line(char *cp, int buflen, const char *title);
 
 /* defined in solid.c */
 extern void trim_trail_spaces(char *cp);
Index: src/conv/viewpoint-g.c
===================================================================
--- src/conv/viewpoint-g.c	(revision 54124)
+++ src/conv/viewpoint-g.c	(working copy)
@@ -60,8 +60,8 @@
 
 #define MAX_LINE_SIZE 256 /* max input line length from elements file */
 
-static char *tok_sep=" "; /* separator used in input files */
-static char *usage="viewpoint-g [-t tol] -c coord_file_name -e elements_file_name -o output_file_name";
+static const char *tok_sep=" "; /* separator used in input files */
+static const char *usage="viewpoint-g [-t tol] -c coord_file_name -e elements_file_name -o output_file_name";
 
 int
 main(int argc, char **argv)
@@ -69,7 +69,7 @@
     int c;
     FILE *coords, *elems;			/* input file pointers */
     struct rt_wdb *out_fp;			/* output file pointers */
-    char *output_file = "viewpoint.g";
+    const char *output_file = "viewpoint.g";
     char *base_name;				/* title and top level group name */
     char coords_name[MAX_LINE_SIZE] = {0};	/* input coordinates file name */
     char elems_name[MAX_LINE_SIZE] = {0};	/* input elements file name */
Index: src/conv/g-acad.c
===================================================================
--- src/conv/g-acad.c	(revision 54124)
+++ src/conv/g-acad.c	(working copy)
@@ -522,7 +522,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
@@ -547,7 +547,7 @@
 		NMG_debug = rt_g.NMG_debug;
 		break;
 	    case 'e':		/* Error file name. */
-		error_file = bu_optarg;
+		error_file = (char *)bu_optarg;
 		break;
 	    case 'i':
 		inches = 1;
Index: src/conv/patch/rpatch.c
===================================================================
--- src/conv/patch/rpatch.c	(revision 54124)
+++ src/conv/patch/rpatch.c	(working copy)
@@ -46,7 +46,7 @@
 static int fast3;
 
 double
-get_ftn_float(char *str, unsigned int start_col, char *format)
+get_ftn_float(char *str, unsigned int start_col, const char *format)
 {
     char *ptr;
     char tmp_str[MAXLINELEN];
@@ -55,7 +55,7 @@
     int i;
 
     /* Check that format is legal for floating point or double */
-    ptr = format;
+    ptr = (char *)format;
     if ( *ptr != 'F' && *ptr != 'f' && *ptr != 'E' && *ptr != 'e' && *ptr != 'D' && *ptr != 'd' )
     {
 	fprintf( stderr, "Get_ftn_float( str=%s\n, start_col=%d, format=%s )\n",
@@ -131,7 +131,7 @@
 }
 
 int
-get_ftn_int(char *str, unsigned int start_col, char *format)
+get_ftn_int(char *str, unsigned int start_col, const char *format)
 {
     char *ptr;
     char tmp_str[MAXLINELEN];
@@ -140,7 +140,7 @@
     int i;
 
     /* check that format id for an integer */
-    ptr = format;
+    ptr = (char *)format;
     if ( *ptr != 'I' && *ptr != 'i' )
     {
 	fprintf( stderr, "Get_ftn_int( str=%s\n, start_col=%d, format=%s )\n",
Index: src/conv/patch/patch-g.c
===================================================================
--- src/conv/patch/patch-g.c	(revision 54124)
+++ src/conv/patch/patch-g.c	(working copy)
@@ -3453,17 +3453,17 @@
 
 	    case 'f':  /* fastgen source file data */
 
-		patchfile = bu_optarg;
+		patchfile = (char *)bu_optarg;
 		break;
 
 	    case 'i':  /* group labels source file */
 
-		labelfile = bu_optarg;
+		labelfile = (char *)bu_optarg;
 		break;
 
 	    case 'm':  /* materials information file */
 
-		matfile = bu_optarg;
+		matfile = (char *)bu_optarg;
 		break;
 
 	    case 'a':  /* process phantom armor ? */
@@ -3487,12 +3487,12 @@
 
 	    case 't':  /* optional title for the database */
 
-		title = bu_optarg;
+		title = (char *)bu_optarg;
 		break;
 
 	    case 'o':  /* optional top-level object name */
 
-		top_level = bu_optarg;
+		top_level = (char *)bu_optarg;
 		break;
 
 	    case 'r':  /* reverse normals for plate mode triangles */
@@ -3553,7 +3553,7 @@
 	}
     } else {
 	fd = 0;		/* stdin */
-	patchfile = "stdin";
+	patchfile = (char *)"stdin";
     }
 
     if (labelfile != (char *)0) {
Index: src/conv/patch/patch-g.h
===================================================================
--- src/conv/patch/patch-g.h	(revision 54124)
+++ src/conv/patch/patch-g.h	(working copy)
@@ -94,8 +94,8 @@
 int nflg = 1;
 int aflg = 1;		/* use phantom armor */
 int num_unions = 5;	/* number of unions per region */
-char *title = "Untitled MGED database";	/* database title */
-char *top_level = "all"; /* top-level node name in the database */
+const char *title = "Untitled MGED database";	/* database title */
+const char *top_level = "all"; /* top-level node name in the database */
 int rev_norms = 0;	/* reverse normals for plate mode triangles */
 int polysolid = 0;	/* convert triangle-facetted objects to polysolids */
 int arb6 = 0;		/* flag: convert plate-mode objects to arb6s */
Index: src/conv/stl/g-stl.c
===================================================================
--- src/conv/stl/g-stl.c	(revision 54124)
+++ src/conv/stl/g-stl.c	(working copy)
@@ -359,10 +359,10 @@
 		use_mc = 1;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'm':
-		output_directory = bu_optarg;
+		output_directory = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
Index: src/conv/stl/stl-g.c
===================================================================
--- src/conv/stl/stl-g.c	(revision 54124)
+++ src/conv/stl/stl-g.c	(working copy)
@@ -611,7 +611,7 @@
 		    bu_log("Converting units from %s to mm (conversion factor is %g)\n", bu_optarg, conv_factor);
 		break;
 	    case 'N':	/* force a name on this object */
-		forced_name = bu_optarg;
+		forced_name = (char *)bu_optarg;
 		break;
 	    case 'i':
 		id_no = atoi(bu_optarg);
Index: src/conv/euclid/euclid-g.c
===================================================================
--- src/conv/euclid/euclid-g.c	(revision 54124)
+++ src/conv/euclid/euclid-g.c	(working copy)
@@ -116,7 +116,7 @@
 		bu_log( "Found a crack:\n" );
 	    else if ( found ==2 )
 		bu_log( "Found a zero length edge:\n" );
-	    nmg_pr_fu_briefly( fu, "" );
+	    nmg_pr_fu_briefly( fu, (char *)"" );
 	}
     }
 }
@@ -136,7 +136,7 @@
 
     fpin = stdin;
     efile = NULL;
-    bfile = "euclid.g";
+    bfile = (char *)"euclid.g";
     polysolids = 1;
     debug = 0;
 
@@ -158,7 +158,7 @@
 		debug = 1;
 		break;
 	    case 'i':
-		efile = bu_optarg;
+		efile = (char *)bu_optarg;
 		if ((fpin = fopen(efile, "rb")) == NULL)
 		{
 		    perror( argv[0] );
@@ -167,7 +167,7 @@
 		}
 		break;
 	    case 'o':
-		bfile = bu_optarg;
+		bfile = (char *)bu_optarg;
 		break;
 	    case 'n':
 		polysolids = 0;
@@ -592,7 +592,7 @@
 	if ( nmg_calc_face_g( outfaceuses[i] ) )
 	{
 	    bu_log( "nmg_calc_face_g failed\n" );
-	    nmg_pr_fu_briefly( outfaceuses[i], "" );
+	    nmg_pr_fu_briefly( outfaceuses[i], (char *)"" );
 	}
     }
 
Index: src/conv/euclid/g-euclid.c
===================================================================
--- src/conv/euclid/g-euclid.c	(revision 54124)
+++ src/conv/euclid/g-euclid.c	(working copy)
@@ -530,7 +530,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name */
-		out_file = bu_optarg;
+		out_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
Index: src/conv/asc/asc2g.c
===================================================================
--- src/conv/asc/asc2g.c	(revision 54124)
+++ src/conv/asc/asc2g.c	(working copy)
@@ -68,8 +68,8 @@
 static int ars_pt = 0;
 static char *ars_name = NULL;
 static fastf_t **ars_curves = NULL;
-static char *slave_name = "safe_interp";
-static char *db_name = "_db";
+static const char *slave_name = "safe_interp";
+static const char *db_name = "_db";
 
 static int linecnt = 0;
 static char usage[] = "\
@@ -77,7 +77,7 @@
  Convert an ASCII BRL-CAD database to binary form\n\
 ";
 
-char *aliases[] = {
+const char *aliases[] = {
     "attr",
     "color",
     "put",
Index: src/conv/asc/g2asc.c
===================================================================
--- src/conv/asc/g2asc.c	(revision 54124)
+++ src/conv/asc/g2asc.c	(working copy)
@@ -64,7 +64,7 @@
 
 FILE	*ifp;
 FILE	*ofp;
-char	*iname = "-";
+char	*iname = (char *)"-";
 
 static char *tclified_name=NULL;
 static size_t tclified_name_buffer_len=0;
@@ -120,7 +120,7 @@
     setmode(fileno(stderr), O_BINARY);
 #endif
 
-    iname = "-";
+    iname = (char *)"-";
     ifp = stdin;
     ofp = stdout;
 
@@ -443,7 +443,7 @@
 	/* Null input name */
 	fprintf(stderr,
 		      "g2asc:  NULL object name converted to -=NULL=-\n");
-	return "-=NULL=-";
+	return (char *)"-=NULL=-";
     }
     return buf;
 }
@@ -1177,7 +1177,7 @@
 	/* Null input name */
 	fprintf(stderr,
 		      "g2asc:  NULL string converted to -=STRING=-\n");
-	return "-=STRING=-";
+	return (char *)"-=STRING=-";
     }
     return buf;
 }
Index: src/conv/g-egg.c
===================================================================
--- src/conv/g-egg.c	(revision 54124)
+++ src/conv/g-egg.c	(working copy)
@@ -232,7 +232,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
Index: src/conv/g-shell-rect.c
===================================================================
--- src/conv/g-shell-rect.c	(revision 54124)
+++ src/conv/g-shell-rect.c	(working copy)
@@ -97,7 +97,7 @@
 static struct xray *yz_rays;
 static struct rt_i *rtip;
 static struct bn_tol tol;
-static char *usage="Usage:\n\
+static const char *usage="Usage:\n\
 	%s [-d debug_level] [-b] [-n] [-v] [-i initial_ray_dir] [-g cell_size] [-d debug_level] -o brlcad_output_file database.g object1 object2...\n";
 static char dir_ch[3]={ 'X', 'Y', 'Z' };
 
@@ -117,7 +117,7 @@
 static char	*plotfile;
 static short	vert_ids[8]={1, 2, 4, 8, 16, 32, 64, 128};
 static int	debug=0;
-static char	*token_seps=" \t,;\n";
+static const char	*token_seps=" \t,;\n";
 static int	cur_dir=0;
 static int	cell_count[3];
 static fastf_t	decimation_tol=0.0;
@@ -771,7 +771,7 @@
 
 	if (count != 4) {
 	    bu_log("Found a loop with %d edge! (should be 3 or 4)\n", count);
-	    nmg_pr_fu_briefly(fu, "");
+	    nmg_pr_fu_briefly(fu, (char *)"");
 	    continue;
 	}
 
@@ -818,7 +818,7 @@
 
 	if (!eu1 || !eu2) {
 	    bu_log("Could not find edges to split in loop:\n");
-	    nmg_pr_fu_briefly(fu, "");
+	    nmg_pr_fu_briefly(fu, (char *)"");
 	    continue;
 	}
 
@@ -1688,10 +1688,10 @@
 		struct refine_rpp *rpp;
 		int bad_opt = 0;
 
-		ptr = bu_optarg;
+		ptr = (char *)bu_optarg;
 
 		rpp = (struct refine_rpp *)bu_malloc(sizeof(struct refine_rpp), "add refine rpp");
-		ptr = strtok(bu_optarg, token_seps);
+		ptr = strtok((char *)bu_optarg, token_seps);
 		if (!ptr) {
 		    bu_log("Bad -a option '%s'\n", bu_optarg);
 		    bu_free((char *)rpp, "rpp");
@@ -1746,7 +1746,7 @@
 		edge_tol = atof(bu_optarg);
 		break;
 	    case 'p':	/* plot edge breaking */
-		plotfile = bu_optarg;
+		plotfile = (char *)bu_optarg;
 		break;
 	    case 'd':	/* debug level */
 		debug = atoi(bu_optarg);
@@ -1756,7 +1756,7 @@
 		cell_size_sq = cell_size * cell_size;
 		break;
 	    case 'o':	/* BRL-CAD output file */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'b':	/* Output a BOT rather than an NMG */
 		bot = 1;
Index: src/conv/ply-g.c
===================================================================
--- src/conv/ply-g.c	(revision 54124)
+++ src/conv/ply-g.c	(working copy)
@@ -49,7 +49,7 @@
 static int verbose=0;
 static int endianness;
 
-static char *usage="Usage:\n\tply-g [-s scale_factor] [-d] [-v] input_file.ply output_file.g";
+static const char *usage="Usage:\n\tply-g [-s scale_factor] [-d] [-v] input_file.ply output_file.g";
 
 #define MAX_LINE_SIZE		512
 
@@ -68,7 +68,7 @@
 #define TYPE_FLOAT	6
 #define TYPE_DOUBLE	7
 
-static char *types[]={
+static const char *types[]={
     "char",
     "uchar",
     "short",
@@ -79,7 +79,7 @@
     "double",
     NULL };
 
-static char *types2[]={
+static const char *types2[]={
     "int8",
     "uint8",
     "int16",
Index: src/conv/proe-g.c
===================================================================
--- src/conv/proe-g.c	(revision 54124)
+++ src/conv/proe-g.c	(working copy)
@@ -1079,7 +1079,7 @@
 		}
 		break;
 	    case 'N':	/* force a name on this object */
-		forced_name = bu_optarg;
+		forced_name = (char *)bu_optarg;
 		break;
 
 	    case 'S':	/* raw stl_format format */
Index: src/conv/nmg/asc-nmg.c
===================================================================
--- src/conv/nmg/asc-nmg.c	(revision 54124)
+++ src/conv/nmg/asc-nmg.c	(working copy)
@@ -53,7 +53,7 @@
 int
 main(int argc, char **argv)
 {
-    char		*afile, *bfile = "nmg.g";
+    char		*afile, *bfile = (char *)"nmg.g";
     FILE		*fpin;
     struct rt_wdb	*fpout;
 
@@ -61,7 +61,7 @@
 
     /* Get ascii NMG input file name. */
     if (bu_optind >= argc) {
-	afile = "-";
+	afile = (char *)"-";
 	fpin = stdin;
 #if defined(_WIN32) && !defined(__CYGWIN__)
 	setmode(fileno(fpin), O_BINARY);
@@ -80,7 +80,7 @@
     /* Get BRL-CAD output data base name. */
     bu_optind++;
     if (bu_optind >= argc) {
-	bfile = "nmg.g";
+	bfile = (char *)"nmg.g";
     } else {
 	bfile = argv[bu_optind];
     }
@@ -90,7 +90,7 @@
 	bu_exit(1, NULL);
     }
 
-    ascii_to_brlcad(fpin, fpout, "nmg", NULL);
+    ascii_to_brlcad(fpin, fpout, (char *)"nmg", NULL);
     fclose(fpin);
     wdb_close(fpout);
     return 0;
Index: src/conv/nmg/g-nmg.c
===================================================================
--- src/conv/nmg/g-nmg.c	(revision 54124)
+++ src/conv/nmg/g-nmg.c	(working copy)
@@ -46,15 +46,15 @@
 
 extern union tree *do_region_end(struct db_tree_state *tsp, const struct db_full_path *pathp, union tree *curtree, genptr_t client_data);
 
-static char	usage[] = "Usage: %s [-v] [-b] [-xX lvl] [-a abs_tol] [-r rel_tol] [-t dist_tol] [-n norm_tol] [-o out_file] brlcad_db.g object(s)\n";
+static const char	usage[] = "Usage: %s [-v] [-b] [-xX lvl] [-a abs_tol] [-r rel_tol] [-t dist_tol] [-n norm_tol] [-o out_file] brlcad_db.g object(s)\n";
 
-static char	*tok_sep = " \t";
+static const char	*tok_sep = " \t";
 static int	NMG_debug;		/* saved arg of -X, for longjmp handling */
 static int	verbose;
 static int	do_bots=0;		/* flag to output BOT's instead of NMG's */
 /* static int	ncpu = 1; */		/* Number of processors */
 static int	nmg_count=0;		/* Count of nmgregions written to output */
-static char	*out_file = "nmg.g";	/* Output filename */
+static const char	*out_file = "nmg.g";	/* Output filename */
 static struct rt_wdb		*fp_out; /* Output file pointer */
 static struct db_i		*dbip;
 static struct rt_tess_tol	ttol;
@@ -467,7 +467,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name */
-		out_file = bu_optarg;
+		out_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
Index: src/conv/nmg/nmg-sgp.c
===================================================================
--- src/conv/nmg/nmg-sgp.c	(revision 54124)
+++ src/conv/nmg/nmg-sgp.c	(working copy)
@@ -144,7 +144,7 @@
 		debug++;
 		break;
 	    case 'o':		/* Output file name */
-		out_file = bu_optarg;
+		out_file = (char *)bu_optarg;
 		break;
 	    case 's':		/* edge length statistics */
 		stats = 1;
Index: src/conv/nmg/nmg-rib.c
===================================================================
--- src/conv/nmg/nmg-rib.c	(revision 54124)
+++ src/conv/nmg/nmg-rib.c	(working copy)
@@ -37,15 +37,15 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "ht";
+const char *options = "ht";
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 int triangulate = 0;
 
 /*
  *	U S A G E --- tell user how to invoke this program, then exit
  */
-void usage(char *s)
+void usage(const char *s)
 {
     if (s) {
 	bu_log(s);
Index: src/conv/g-vrml.c
===================================================================
--- src/conv/g-vrml.c	(revision 54124)
+++ src/conv/g-vrml.c	(working copy)
@@ -95,7 +95,7 @@
 
 static const char usage[] = "Usage: %s [-b] [-e] [-v] [-xX lvl] [-d tolerance_distance (mm) ] [-a abs_tol (mm)] [-r rel_tol] [-n norm_tol] [-o out_file] [-u units] brlcad_db.g object(s)\n";
 
-static char *tok_sep = " \t";
+static const char *tok_sep = " \t";
 static int NMG_debug; /* saved arg of -X, for longjmp handling */
 static int verbose = 0;
 static char *out_file = (char *)NULL; /* Output filename */
@@ -638,7 +638,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name */
-		out_file = bu_optarg;
+		out_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
@@ -672,7 +672,7 @@
     }
 
     if (!units) {
-	units = "mm";
+	units = (char *)"mm";
     }
 
     if ((bot_dump == 1) && (eval_all == 1)) {
Index: src/conv/iges/conv_drawings.c
===================================================================
--- src/conv/iges/conv_drawings.c	(revision 54124)
+++ src/conv/iges/conv_drawings.c	(working copy)
@@ -35,7 +35,7 @@
 };
 
 
-static char *default_drawing_name = "iges_drawing";
+static const char *default_drawing_name = "iges_drawing";
 
 struct bu_list free_hd;
 
Index: src/conv/iges/add_inner_shell.c
===================================================================
--- src/conv/iges/add_inner_shell.c	(revision 54124)
+++ src/conv/iges/add_inner_shell.c	(working copy)
@@ -43,16 +43,16 @@
     }
 
     Readrec(dir[entityno]->param);
-    Readint(&sol_num, "");
-    Readint(&no_of_faces, "");
+    Readint(&sol_num, (char *)"");
+    Readint(&no_of_faces, (char *)"");
 
     face_de = (int *)bu_calloc(no_of_faces, sizeof(int), "Add_inner_shell face DE's");
     face_orient = (int *)bu_calloc(no_of_faces, sizeof(int), "Add_inner_shell orients");
     fu = (struct faceuse **)bu_calloc(no_of_faces, sizeof(struct faceuse *), "Get_outer_shell faceuses ");
 
     for (face = 0; face < no_of_faces; face++) {
-	Readint(&face_de[face], "");
-	Readint(&face_orient[face], "");
+	Readint(&face_de[face], (char *)"");
+	Readint(&face_orient[face], (char *)"");
     }
 
     s = nmg_msv(r);
Index: src/conv/iges/trimsurf.c
===================================================================
--- src/conv/iges/trimsurf.c	(revision 54124)
+++ src/conv/iges/trimsurf.c	(working copy)
@@ -1446,7 +1446,7 @@
 	BU_LIST_INIT(&hit_list);
 	if (Find_pt_in_fu(fu, mid_pt, ray_dir)) {
 	    bu_log("Convtrimsurfs: Cannot find a point in fu (%p)\n", fu);
-	    nmg_pr_fu(fu, " ");
+	    nmg_pr_fu(fu, (char *)" ");
 	    bu_exit(1, "Convtrimsurfs: Cannot find a point in fu\n");
 	}
 
Index: src/conv/iges/readname.c
===================================================================
--- src/conv/iges/readname.c	(revision 54124)
+++ src/conv/iges/readname.c	(working copy)
@@ -34,7 +34,7 @@
 #include "./iges_extern.h"
 
 void
-Readname(char **ptr, char *id)
+Readname(char **ptr, const char *id)
 {
     int i = (-1), length = 0, done = 0, lencard;
     char num[80], *ch;
Index: src/conv/iges/readcnv.c
===================================================================
--- src/conv/iges/readcnv.c	(revision 54124)
+++ src/conv/iges/readcnv.c	(working copy)
@@ -36,7 +36,7 @@
 
 void
 Readcnv(inum, id)
-    char *id;
+    const char *id;
     fastf_t *inum;
 {
     int i = (-1), done = 0, lencard;
Index: src/conv/iges/readint.c
===================================================================
--- src/conv/iges/readint.c	(revision 54124)
+++ src/conv/iges/readint.c	(working copy)
@@ -34,7 +34,7 @@
 #include "./iges_extern.h"
 
 void
-Readint(int *inum, char *id)
+Readint(int *inum, const char *id)
 {
     int i = (-1), done = 0, lencard;
     char num[80];
Index: src/conv/iges/readstrg.c
===================================================================
--- src/conv/iges/readstrg.c	(revision 54124)
+++ src/conv/iges/readstrg.c	(working copy)
@@ -35,7 +35,7 @@
 #include "./iges_extern.h"
 
 void
-Readstrg(char *id)
+Readstrg(const char *id)
 {
     int i = (-1), length = 0, done = 0, lencard;
     char num[80];
Index: src/conv/iges/g-iges.c
===================================================================
--- src/conv/iges/g-iges.c	(revision 54124)
+++ src/conv/iges/g-iges.c	(working copy)
@@ -270,7 +270,7 @@
 		NMG_debug = rt_g.NMG_debug;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'P':
 		ncpu = atoi(bu_optarg);
Index: src/conv/iges/iges_types.c
===================================================================
--- src/conv/iges/iges_types.c	(revision 54124)
+++ src/conv/iges/iges_types.c	(working copy)
@@ -34,7 +34,7 @@
 	}
     }
 
-    return typecount[type_no].name;
+    return (char *)typecount[type_no].name;
 }
 
 
Index: src/conv/iges/iges.c
===================================================================
--- src/conv/iges/iges.c	(revision 54124)
+++ src/conv/iges/iges.c	(working copy)
@@ -124,7 +124,7 @@
 };
 
 
-static char *type_label[NO_OF_TYPES] = {
+static const char *type_label[NO_OF_TYPES] = {
     "CopiusDa",
     "Line",
     "Point",
@@ -159,7 +159,7 @@
 };
 
 
-static char *type_name[NO_OF_TYPES] = {
+static const char *type_name[NO_OF_TYPES] = {
     "Copious Data",
     "Line",
     "Point",
Index: src/conv/iges/iges_struct.h
===================================================================
--- src/conv/iges/iges_struct.h	(revision 54124)
+++ src/conv/iges/iges_struct.h	(working copy)
@@ -153,7 +153,7 @@
 struct types
 {
     int type;
-    char *name;
+    const char *name;
     int count;
 };
 
@@ -279,12 +279,12 @@
 extern void Convtree();
 extern void Convassem();
 extern int Readrec(int recno);
-extern void Readint(int *inum, char *id);
-extern void Readflt(fastf_t *inum, char *id);
-extern void Readdbl(double *inum, char *id);
-extern void Readstrg(char *id);
-extern void Readname(char **ptr, char *id);
-extern void Readcnv(fastf_t *inum, char *id);
+extern void Readint(int *inum, const char *id);
+extern void Readflt(fastf_t *inum, const char *id);
+extern void Readdbl(double *inum, const char *id);
+extern void Readstrg(const char *id);
+extern void Readname(char **ptr, const char *id);
+extern void Readcnv(fastf_t *inum, const char *id);
 extern void Assign_surface_to_fu(struct faceuse *fu, struct face_g_snurb *srf);
 extern void Assign_cnurb_to_eu(struct edgeuse *eu, struct edge_g_cnurb *crv);
 extern int Put_vertex(struct vertex *v, struct iges_edge_use *edge);
@@ -314,7 +314,7 @@
 extern int extrude(int entityno);
 extern int ell(int entityno);
 extern int brep(int entityno);
-extern void Readtime(char *id);
+extern void Readtime(const char *id);
 extern void Readcols(char *id, int cols);
 extern void Readmatrix(int xform, mat_t rot);
 
Index: src/conv/iges/block2.c
===================================================================
--- src/conv/iges/block2.c	(revision 54124)
+++ src/conv/iges/block2.c	(working copy)
@@ -62,19 +62,19 @@
     }
 
     Readrec(dir[entityno]->param);
-    Readint(&sol_num, "");
-    Readcnv(&xscale, "");
-    Readcnv(&yscale, "");
-    Readcnv(&zscale, "");
-    Readcnv(&x_1, "");
-    Readcnv(&y_1, "");
-    Readcnv(&z_1, "");
-    Readflt(&x_2, "");
-    Readflt(&y_2, "");
-    Readflt(&z_2, "");
-    Readflt(&x_3, "");
-    Readflt(&y_3, "");
-    Readflt(&z_3, "");
+    Readint(&sol_num, (char *)"");
+    Readcnv(&xscale, (char *)"");
+    Readcnv(&yscale, (char *)"");
+    Readcnv(&zscale, (char *)"");
+    Readcnv(&x_1, (char *)"");
+    Readcnv(&y_1, (char *)"");
+    Readcnv(&z_1, (char *)"");
+    Readflt(&x_2, (char *)"");
+    Readflt(&y_2, (char *)"");
+    Readflt(&z_2, (char *)"");
+    Readflt(&x_3, (char *)"");
+    Readflt(&y_3, (char *)"");
+    Readflt(&z_3, (char *)"");
 
     if (xscale <= 0.0 || yscale <= 0.0 || zscale <= 0.0) {
 	bu_log("Illegal parameters for entity D%07d (%s)\n" ,
Index: src/conv/iges/readflt.c
===================================================================
--- src/conv/iges/readflt.c	(revision 54124)
+++ src/conv/iges/readflt.c	(working copy)
@@ -34,7 +34,7 @@
 #include "./iges_extern.h"
 
 void
-Readflt(fastf_t *inum, char *id)
+Readflt(fastf_t *inum, const char *id)
 {
     int i = (-1), done = 0, lencard;
     char num[80];
Index: src/conv/iges/readtime.c
===================================================================
--- src/conv/iges/readtime.c	(revision 54124)
+++ src/conv/iges/readtime.c	(working copy)
@@ -41,7 +41,7 @@
 #include "./iges_extern.h"
 
 void
-Readtime(char *id)
+Readtime(const char *id)
 {
     int i = (-1), length = 0, lencard, done = 0, year;
     char num[80];
Index: src/conv/iges/readglobal.c
===================================================================
--- src/conv/iges/readglobal.c	(revision 54124)
+++ src/conv/iges/readglobal.c	(working copy)
@@ -32,7 +32,7 @@
 #define NO_OF_VERSIONS 10
 #define COMMA ','
 
-char *iges_version[NO_OF_VERSIONS] = {
+const char *iges_version[NO_OF_VERSIONS] = {
     " ",
     "1.0",
     "ANSI Y14.26M - 1981",
Index: src/conv/iges/add_face.c
===================================================================
--- src/conv/iges/add_face.c	(revision 54124)
+++ src/conv/iges/add_face.c	(working copy)
@@ -46,13 +46,13 @@
     }
 
     Readrec(dir[entityno]->param);
-    Readint(&sol_num, "");
-    Readint(&surf_de, "");
-    Readint(&no_of_loops, "");
-    Readint(&outer_loop_flag, "");
+    Readint(&sol_num, (char *)"");
+    Readint(&surf_de, (char *)"");
+    Readint(&no_of_loops, (char *)"");
+    Readint(&outer_loop_flag, (char *)"");
     loop_de = (int *)bu_calloc(no_of_loops, sizeof(int), "Get_outer_face loop DE's");
     for (loop = 0; loop < no_of_loops; loop++)
-	Readint(&loop_de[loop], "");
+	Readint(&loop_de[loop], (char *)"");
 
     /* Check that this is a planar surface */
     if (dir[(surf_de-1)/2]->type == 190) /* plane entity */
Index: src/conv/iges/main.c
===================================================================
--- src/conv/iges/main.c	(revision 54124)
+++ src/conv/iges/main.c	(working copy)
@@ -66,23 +66,23 @@
 
 static char *iges_file;
 
-static char *msg1 =
+static const char *msg1 =
 "\nThis IGES file contains solid model entities, but your options do not permit\n\
 converting them to BRL-CAD. You may want to try 'iges-g -o file.g %s' to\n\
 convert the solid model elements\n";
 
-static char *msg2 =
+static const char *msg2 =
 "\nThis IGES file contains drawing entities, but no solid model entities. You may\n\
 convert the drawing to BRL-CAD by 'iges-g -d -o file.g %s'. Note that the resulting\n\
 BRL-CAD object will be a 2D drawing, not a solid object. You might also try the\n\
 '-3' option to get 3D drawings\n";
 
-static char *msg3 =
+static const char *msg3 =
 "\nThis IGES file contains spline surfaces, but no solid model entities. All the spline\n\
 surfaces in the IGES file may be combined into a single BRL-CAD spline solid by\n\
 'iges-g -n -o file.g %s'\n";
 
-static char *msg4 =
+static const char *msg4 =
 "\nThis IGES file contains trimmed surfaces, but no solid model entities.\n\
 Try the '-t' option to convert all the trimmed surfaces into one BRL-CAD solid.\n\
 'iges-g -t -o file.g %s'\n";
@@ -155,7 +155,7 @@
 		do_splines = 1;
 		break;
 	    case 'o':
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 't':
 		trimmed_surf = 1;
@@ -164,7 +164,7 @@
 		do_bots = 0;
 		break;
 	    case 'N':
-		solid_name = bu_optarg;
+		solid_name = (char *)bu_optarg;
 		break;
 	    case 'x':
 		sscanf(bu_optarg, "%x", (unsigned int *)&rt_g.debug);
@@ -231,7 +231,7 @@
     if (solid_name)
 	bu_strlcpy(curr_file->obj_name, Make_unique_brl_name(solid_name), NAMESIZE+1);
     else
-	bu_strlcpy(curr_file->obj_name, Make_unique_brl_name("all"), NAMESIZE+1);
+	bu_strlcpy(curr_file->obj_name, Make_unique_brl_name((char *)"all"), NAMESIZE+1);
 
     curr_file->file_name = (char *)bu_malloc(strlen(argv[0])+1, "iges-g: curr_file->file_name");
     bu_strlcpy(curr_file->file_name, argv[0], strlen(argv[0])+1);
Index: src/conv/iges/make_face.c
===================================================================
--- src/conv/iges/make_face.c	(revision 54124)
+++ src/conv/iges/make_face.c	(working copy)
@@ -149,7 +149,7 @@
 	area = nmg_loop_plane_area(lu, pl);
 	if (area < 0.0) {
 	    bu_log("Could not calculate area for face (entityno = %d)\n", entityno);
-	    nmg_pr_fu_briefly(fu, "");
+	    nmg_pr_fu_briefly(fu, (char *)"");
 	    nmg_kfu(fu);
 	    fu = (struct faceuse *)NULL;
 	    goto err;
Index: src/conv/iges/readdbl.c
===================================================================
--- src/conv/iges/readdbl.c	(revision 54124)
+++ src/conv/iges/readdbl.c	(working copy)
@@ -34,7 +34,7 @@
 #include "./iges_extern.h"
 
 void
-Readdbl(double *inum, char *id)
+Readdbl(double *inum, const char *id)
 {
     int i = (-1), done = 0, lencard;
     char num[80];
Index: src/conv/walk_example.c
===================================================================
--- src/conv/walk_example.c	(revision 54124)
+++ src/conv/walk_example.c	(working copy)
@@ -47,7 +47,7 @@
 
 
 /** list of legal command line options for use with bu_getopt()  */
-char *options = "hd:";
+const char *options = "hd:";
 
 /** flag for printing names of objects as encountered  */
 #define DEBUG_NAMES 1
Index: src/conv/vdeck/vextern.h
===================================================================
--- src/conv/vdeck/vextern.h	(revision 54124)
+++ src/conv/vdeck/vextern.h	(working copy)
@@ -55,12 +55,12 @@
 #define NO	0
 
 extern int	debug;
-extern char	*usage[], *cmd[];
+extern const char	*usage[], *cmd[];
 extern mat_t	identity;
 
 extern void		abort_sig(int sig), quit(int sig);
 extern void		toc(void), list_toc(char **args);
-extern void		prompt(char *fmt);
+extern void		prompt(const char *fmt);
 
 extern int	curr_ct;
 extern char	*arg_list[];
Index: src/conv/vdeck/vdeck.c
===================================================================
--- src/conv/vdeck/vdeck.c	(revision 54124)
+++ src/conv/vdeck/vdeck.c	(working copy)
@@ -74,7 +74,7 @@
 
 int	debug = 0;
 
-char	*cmd[] = {
+const char	*cmd[] = {
     "",
     "C O M M A N D                  D E S C R I P T I O N",
     "",
@@ -95,7 +95,7 @@
     0
 };
 
-char	*usage[] = {
+const char	*usage[] = {
     "",
     "v d e c k",
     "Make COMGEOM decks of objects from a \"mged\" file suitable as",
@@ -193,7 +193,7 @@
  *  Print a non-newline-terminate string, and flush stdout
  */
 void
-prompt(char *fmt)
+prompt(const char *fmt)
 {
     fputs(fmt, stdout);
     fflush(stdout);
@@ -379,16 +379,16 @@
 	    return;
 
 	case OP_UNION:
-	    flatten_tree(vls, tp->tr_b.tb_left, "or", neg);
-	    flatten_tree(vls, tp->tr_b.tb_right, "or", 0);
+	    flatten_tree(vls, tp->tr_b.tb_left, (char *)"or", neg);
+	    flatten_tree(vls, tp->tr_b.tb_right, (char *)"or", 0);
 	    break;
 	case OP_INTERSECT:
 	    flatten_tree(vls, tp->tr_b.tb_left, op, neg);
-	    flatten_tree(vls, tp->tr_b.tb_right, "  ", 0);
+	    flatten_tree(vls, tp->tr_b.tb_right, (char *)"  ", 0);
 	    break;
 	case OP_SUBTRACT:
 	    flatten_tree(vls, tp->tr_b.tb_left, op, neg);
-	    flatten_tree(vls, tp->tr_b.tb_right, "  ", 1);
+	    flatten_tree(vls, tp->tr_b.tb_right, (char *)"  ", 1);
 	    break;
     }
 }
@@ -444,7 +444,7 @@
     } else {
 	/* Rewrite tree so that all unions are at tree top */
 	db_non_union_push(curtree, &rt_uniresource);
-	flatten_tree(&flat, curtree, "  ", 0);
+	flatten_tree(&flat, curtree, (char *)"  ", 0);
     }
 
     /* Output 9 of the 7-char chunks per region "card" */
Index: src/conv/g-var.c
===================================================================
--- src/conv/g-var.c	(revision 54124)
+++ src/conv/g-var.c	(working copy)
@@ -412,7 +412,7 @@
 		break;
 
 	    case 'o':
-		out_file = bu_optarg;
+		out_file = (char *)bu_optarg;
 		break;
 
 	    case 'y':
Index: src/conv/tankill/g-tankill.c
===================================================================
--- src/conv/tankill/g-tankill.c	(revision 54124)
+++ src/conv/tankill/g-tankill.c	(working copy)
@@ -432,14 +432,14 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'i':		/* Idents output file */
-		id_file = bu_optarg;
+		id_file = (char *)bu_optarg;
 		break;
 	    case 'n':		/* Surface normal tolerance. */
 		ttol.norm = atof(bu_optarg);
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name */
-		out_file = bu_optarg;
+		out_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
Index: src/conv/tankill/tankill-g.c
===================================================================
--- src/conv/tankill/tankill-g.c	(revision 54124)
+++ src/conv/tankill/tankill-g.c	(working copy)
@@ -150,7 +150,7 @@
     struct comp_idents *ptr;
     char name[NAMESIZE+1];
     char input_file[START_ARRAY_SIZE] = {0};				/* input file name */
-    char *output_file = "tankill.g";
+    const char *output_file = "tankill.g";
     FILE *in_fp;					/* input file pointer */
     struct rt_wdb *out_fp;				/* output file pointer */
     int polysolids;					/* flag indicating polysolid output */
@@ -214,7 +214,7 @@
 		bu_strlcpy( input_file, bu_optarg, sizeof(input_file) );
 		break;
 	    case 'o': /* output file name */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    default:
 		usage();
Index: src/conv/bot_shell-vtk.c
===================================================================
--- src/conv/bot_shell-vtk.c	(revision 54124)
+++ src/conv/bot_shell-vtk.c	(working copy)
@@ -77,7 +77,7 @@
 static long num_faces = 0;
 #define FACES_BLOCK	512
 
-static char *usage = "Usage:\n\
+static const char *usage = "Usage:\n\
 	%s [-m] [-n] [-d debug_level] [-g cell_size] -o vtk_polydata_output_file database.g object1 object2...\n";
 
 /* routine to replace default overlap handler.
@@ -411,7 +411,7 @@
 		}
 		break;
 	    case 'o':	/* VTK polydata output file */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'n':	/* include normals in the VTK data */
 		use_normals = 1;
Index: src/conv/g-x3d.c
===================================================================
--- src/conv/g-x3d.c	(revision 54124)
+++ src/conv/g-x3d.c	(working copy)
@@ -108,7 +108,7 @@
 
 static const char usage[] = "Usage: %s [-v] [-xX lvl] [-d tolerance_distance (mm) ] [-a abs_tol (mm)] [-r rel_tol] [-n norm_tol] [-o out_file] [-u units] brlcad_db.g object(s)\n";
 
-static char	*tok_sep = " \t";
+static const char	*tok_sep = " \t";
 static int	NMG_debug;		/* saved arg of -X, for longjmp handling */
 static int	verbose=0;
 /* static int	ncpu = 1; */		/* Number of processors */
@@ -408,7 +408,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name */
-		out_file = bu_optarg;
+		out_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
@@ -446,7 +446,7 @@
     }
 
     if ( !units )
-	units = "mm";
+	units = (char *)"mm";
 
     /* Open BRL-CAD database */
     if ((dbip = db_open( argv[bu_optind], "r")) == DBI_NULL)
Index: src/conv/jack/g-jack.c
===================================================================
--- src/conv/jack/g-jack.c	(revision 54124)
+++ src/conv/jack/g-jack.c	(working copy)
@@ -464,7 +464,7 @@
 		ttol.norm = atof(bu_optarg);
 		break;
 	    case 'p':		/* Prefix for Jack file names. */
-		prefix = bu_optarg;
+		prefix = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
Index: src/conv/jack/jack-g.c
===================================================================
--- src/conv/jack/jack-g.c	(revision 54124)
+++ src/conv/jack/jack-g.c	(working copy)
@@ -72,12 +72,12 @@
     while ((c = bu_getopt(argc, argv, "g:r:")) != -1) {
 	switch (c) {
 	    case 'g':
-		grp_name = bu_optarg;
+		grp_name = (char *)bu_optarg;
 		/* BRL-CAD group to add psurf to. */
 		break;
 	    case 'r':
 		/* BRL-CAD region name for psurf. */
-		reg_name = bu_optarg;
+		reg_name = (char *)bu_optarg;
 		break;
 	    default:
 		bu_exit(1, usage, argv[0]);
@@ -87,7 +87,7 @@
 
     /* Get Jack psurf input file name. */
     if (bu_optind >= argc) {
-	jfile = "-";
+	jfile = (char *)"-";
 	fpin = stdin;
     } else {
 	jfile = argv[bu_optind];
@@ -100,7 +100,7 @@
     /* Get BRL-CAD output data base name. */
     bu_optind++;
     if (bu_optind >= argc) {
-	bfile = "-";
+	bfile = (char *)"-";
 	bu_exit(1, usage, argv[0]);
     } else {
 	bfile = argv[bu_optind];
Index: src/conv/off/g-off.c
===================================================================
--- src/conv/off/g-off.c	(revision 54124)
+++ src/conv/off/g-off.c	(working copy)
@@ -115,7 +115,7 @@
 		ttol.norm = atof(bu_optarg);
 		break;
 	    case 'p':		/* Prefix for Jack file names. */
-		prefix = bu_optarg;
+		prefix = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
Index: src/conv/step/step-g.cpp
===================================================================
--- src/conv/step/step-g.cpp	(revision 54124)
+++ src/conv/step/step-g.cpp	(working copy)
@@ -76,7 +76,7 @@
     while ((c=bu_getopt(argc, argv, "o:")) != -1) {
 	switch (c) {
 	    case 'o':
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    default:
 		usage();
Index: src/conv/nastran-g.c
===================================================================
--- src/conv/nastran-g.c	(revision 54124)
+++ src/conv/nastran-g.c	(working copy)
@@ -102,13 +102,13 @@
 
 
 static int units;			/* units flag */
-static char *output_file = "nastran.g";
+static const char *output_file = "nastran.g";
 static struct rt_wdb *fpout;		/* brlcad output file */
 static FILE *fpin;			/* NASTRAN input file */
 static FILE *fptmp;			/* temporary version of NASTRAN input */
-static char *Usage="Usage:\n\t%s [-p] [-xX lvl] [-t tol.dist] [-i NASTRAN_file] -o BRL-CAD_file\n";
+static const char *Usage="Usage:\n\t%s [-p] [-xX lvl] [-t tol.dist] [-i NASTRAN_file] -o BRL-CAD_file\n";
 static long start_off;
-static char *delims=", \t";
+static const char *delims=", \t";
 static struct coord_sys coord_head;	/* head of linked list of coordinate systems */
 static struct pbar pbar_head;		/* head of linked list of PBAR's */
 static struct pshell pshell_head;	/* head of linked list of PSHELL's */
@@ -498,7 +498,7 @@
 
 
 HIDDEN void
-log_line(char *str)
+log_line(const char *str)
 {
     int i;
 
@@ -1108,7 +1108,7 @@
     struct pbar *pbp;
     struct wmember head;
     struct wmember all_head;
-    char *nastran_file = "Converted from NASTRAN file (stdin)";
+    const char *nastran_file = "Converted from NASTRAN file (stdin)";
 
     bu_setprogname(argv[0]);
 
@@ -1146,7 +1146,7 @@
 		units = MM;
 		break;
 	    case 'i':
-		nastran_file = bu_optarg;
+		nastran_file = (char *)bu_optarg;
 		fpin = fopen(bu_optarg, "rb");
 		if (fpin == (FILE *)NULL) {
 		    bu_log("Cannot open NASTRAN file (%s) for reading!\n", bu_optarg);
@@ -1154,7 +1154,7 @@
 		}
 		break;
 	    case 'o':
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	}
     }
Index: src/conv/enf-g.c
===================================================================
--- src/conv/enf-g.c	(revision 54124)
+++ src/conv/enf-g.c	(working copy)
@@ -630,7 +630,7 @@
 		    bu_exit( 1, "Illegal tolerance (%g), musy be > 0.0\n", tmp );
 		break;
 	    case 'n':	/* part name list */
-		part_name_file = bu_optarg;
+		part_name_file = (char *)bu_optarg;
 		use_part_name_hash = 1;
 		break;
 	    case 'l':	/* max name length */
Index: src/conv/g-nff.c
===================================================================
--- src/conv/g-nff.c	(revision 54124)
+++ src/conv/g-nff.c	(working copy)
@@ -401,7 +401,7 @@
 		ttol.rel = 0.0;
 		break;
 	    case 'o':		/* Output file name. */
-		output_file = bu_optarg;
+		output_file = (char *)bu_optarg;
 		break;
 	    case 'r':		/* Relative tolerance. */
 		ttol.rel = atof(bu_optarg);
@@ -422,7 +422,7 @@
 		NMG_debug = rt_g.NMG_debug;
 		break;
 	    case 'e':		/* Error file name. */
-		error_file = bu_optarg;
+		error_file = (char *)bu_optarg;
 		break;
 	    case 'i':
 		inches = 1;
Index: src/tab/tabinterp.c
===================================================================
--- src/tab/tabinterp.c	(revision 54124)
+++ src/tab/tabinterp.c	(working copy)
@@ -239,7 +239,7 @@
 	    bu_log("File '%s', Line %d:  expected %d columns, got %d\n",
 		   file, line, nwords, i);
 	    while (i < nwords) {
-		iwords[i++] = "0.123456789";
+		iwords[i++] = (char *)"0.123456789";
 		errors++;
 	    }
 	}
@@ -297,7 +297,7 @@
 	return;
     }
     cp = &chan[ch];
-    if (cp->c_itag == (char *)0)  cp->c_itag = "_no_file_";
+    if (cp->c_itag == (char *)0)  cp->c_itag = (char *)"_no_file_";
     bu_log("--- Channel %d, ilen=%d (%s):\n",
 	   ch, cp->c_ilen, cp->c_itag);
     for (i=0; i < cp->c_ilen; i++) {
@@ -1050,7 +1050,7 @@
     int ch;
     int nvals = 2;
 
-    ch = create_chan(argv[1], nvals, argc>4?argv[4]:"rate chan");
+    ch = create_chan(argv[1], nvals, argc>4?argv[4]:(char *)"rate chan");
     chp = &chan[ch];
     chp->c_interp = INTERP_RATE;
     chp->c_periodic = 0;
@@ -1076,7 +1076,7 @@
     int ch;
     int nvals = 2;
 
-    ch = create_chan(argv[1], nvals, argc>4?argv[4]:"accel chan");
+    ch = create_chan(argv[1], nvals, argc>4?argv[4]:(char *)"accel chan");
     chp = &chan[ch];
     chp->c_interp = INTERP_ACCEL;
     chp->c_periodic = 0;
Index: src/gtools/g_diff.c
===================================================================
--- src/gtools/g_diff.c	(revision 54124)
+++ src/gtools/g_diff.c	(working copy)
@@ -646,7 +646,7 @@
     rt_db_free_internal(&intern);
 }
 
-static char *region_attrs[] = { "region",
+static const char *region_attrs[] = { "region",
 				"region_id",
 				"giftmater",
 				"los",
Index: src/gtools/remapid.c
===================================================================
--- src/gtools/remapid.c	(revision 54124)
+++ src/gtools/remapid.c	(working copy)
@@ -78,7 +78,7 @@
     {
 	REMAPID_FILE_MAGIC,
 	NULL,
-	"stdin",
+	(char *)"stdin",
 	{
 	    BU_VLS_MAGIC, (char *) 0, 0, 0, 0
 	},
@@ -88,7 +88,7 @@
 
 
 REMAPID_FILE *
-remapid_fopen(char *fname, char *type)
+remapid_fopen(char *fname, const char *type)
 {
     REMAPID_FILE *bfp;
     FILE *fp;
@@ -189,7 +189,7 @@
  * Print out a syntax error message about a REMAPID_FILE
  */
 void
-remapid_file_err(REMAPID_FILE *bfp, char *text1, char *text2, ssize_t cursor_pos)
+remapid_file_err(REMAPID_FILE *bfp, const char *text1, const char *text2, ssize_t cursor_pos)
 {
     char *cp;
     int buflen;
@@ -860,7 +860,7 @@
 
     switch (argc - bu_optind) {
 	case 1:
-	    sf_name = "stdin";
+	    sf_name = (char *)"stdin";
 	    sfp = bu_stdin;
 	    /* Break intentionally missing */
 	case 2:
@@ -881,7 +881,7 @@
     /*
      * Initialize the assignment
      */
-    assignment = bu_rb_create1("Remapping assignment", compare_curr_ids);
+    assignment = bu_rb_create1((char *)"Remapping assignment", compare_curr_ids);
     bu_rb_uniq_on1(assignment);
 
     /*
Index: src/gtools/g_lint.c
===================================================================
--- src/gtools/g_lint.c	(revision 54124)
+++ src/gtools/g_lint.c	(working copy)
@@ -150,7 +150,7 @@
 /**
  * The usage message -- it's a long 'un.
  */
-static char *usage[] = {
+static const char *usage[] = {
     "Usage: 'g_lint [options] model.g object ...'\n",
     "Options:\n",
     "  -a azim      View target from azimuth of azim (0.0 degrees)\n",
@@ -183,7 +183,7 @@
 {
     char **u;
 
-    for (u = usage; *u != 0; ++u)
+    for (u = (char **)usage; *u != 0; ++u)
 	bu_log("%s", *u);
 }
 
@@ -901,7 +901,7 @@
 		use_air = ((control.glc_what_to_report & G_LINT_A_ANY) != 0);
 		break;
 	    case 's':
-		ovlp_log = bu_rb_create1("overlap log", compare_overlaps);
+		ovlp_log = bu_rb_create1((char *)"overlap log", compare_overlaps);
 		if (control.glc_how_to_report == G_LINT_PLOT3)
 		    control.glc_how_to_report = G_LINT_ASCII;
 		bu_rb_uniq_on1(ovlp_log);
@@ -1036,7 +1036,7 @@
      * sort them now and then print them out.
      */
     if (ovlp_log) {
-	ovlps_by_vol = bu_rb_create1("overlaps by volume", compare_by_vol);
+	ovlps_by_vol = bu_rb_create1((char *)"overlaps by volume", compare_by_vol);
 	bu_rb_uniq_on1(ovlps_by_vol);
 	bu_rb_walk1(ovlp_log, insert_by_vol, INORDER);
 
Index: src/libpkg/pkg.c
===================================================================
--- src/libpkg/pkg.c	(revision 54124)
+++ src/libpkg/pkg.c	(working copy)
@@ -257,7 +257,7 @@
  * This is a private implementation function.
  */
 static void
-_pkg_perror(void (*errlog) (char *msg), char *s)
+_pkg_perror(void (*errlog) (char *msg), const char *s)
 {
     snprintf(_pkg_errbuf, MAX_PKG_ERRBUF_SIZE, "%s: ", s);
 
@@ -1387,7 +1387,7 @@
     }
 
     if (pc->pkc_buf != (char *)0) {
-	pc->pkc_errlog("pkg_waitfor: buffer clash\n");
+	pc->pkc_errlog((char *)"pkg_waitfor: buffer clash\n");
 	return -1;
     }
     if (_pkg_gethdr(pc, buf) < 0)
@@ -1423,7 +1423,7 @@
 	}
 	excess = pc->pkc_len - len;	/* size of excess message */
 	if ((bp = (char *)malloc(excess)) == NULL) {
-	    _pkg_perror(pc->pkc_errlog, "pkg_waitfor: excess message, malloc failed");
+	    _pkg_perror(pc->pkc_errlog, (char *)"pkg_waitfor: excess message, malloc failed");
 	    return -1;
 	}
 	if ((i = _pkg_inget(pc, bp, excess)) != excess) {
@@ -1479,7 +1479,7 @@
 	    if (pkg_block(pc) < 0)
 		return (char *)0;
 	if (pc->pkc_buf != (char *)0) {
-	    pc->pkc_errlog("pkg_bwaitfor: buffer clash\n");
+	    pc->pkc_errlog((char *)"pkg_bwaitfor: buffer clash\n");
 	    return (char *)0;
 	}
 	if (_pkg_gethdr(pc, (char *)0) < 0)
@@ -1750,7 +1750,7 @@
     if (pc->pkc_inbuf == (char *)0 || pc->pkc_inlen <= 0) {
 	pc->pkc_inlen = PKG_STREAMLEN;
 	if ((pc->pkc_inbuf = (char *)malloc((size_t)pc->pkc_inlen)) == (char *)0) {
-	    pc->pkc_errlog("pkg_suckin malloc failure\n");
+	    pc->pkc_errlog((char *)"pkg_suckin malloc failure\n");
 	    pc->pkc_inlen = 0;
 	    ret = -1;
 	    goto out;
@@ -1786,7 +1786,7 @@
 	    fflush(_pkg_debug);
 	}
 	if ((pc->pkc_inbuf = (char *)realloc(pc->pkc_inbuf, (size_t)pc->pkc_inlen)) == (char *)0) {
-	    pc->pkc_errlog("pkg_suckin realloc failure\n");
+	    pc->pkc_errlog((char *)"pkg_suckin realloc failure\n");
 	    pc->pkc_inlen = 0;
 	    ret = -1;
 	    goto out;
@@ -1821,7 +1821,7 @@
 	goto out;
     }
     if (got > (int)avail) {
-	pc->pkc_errlog("pkg_suckin: read more bytes than desired\n");
+	pc->pkc_errlog((char *)"pkg_suckin: read more bytes than desired\n");
 	got = (int)avail;
     }
     pc->pkc_inend += got;
Index: src/libicv/rot.c
===================================================================
--- src/libicv/rot.c	(revision 54124)
+++ src/libicv/rot.c	(working copy)
@@ -63,8 +63,8 @@
 get_args(int argc, char **argv, FILE **ifp, FILE **ofp, double *angle)
 {
     int c;
-    char *in_file_name = NULL;
-    char *out_file_name = NULL;
+    const char *in_file_name = NULL;
+    const char *out_file_name = NULL;
 
     if (!ifp || !ofp || !angle)
 	bu_exit(1, "internal error processing arguments\n");
Index: src/mged/muves.c
===================================================================
--- src/mged/muves.c	(revision 54124)
+++ src/mged/muves.c	(working copy)
@@ -98,8 +98,8 @@
 };
 
 
-static char *regionmap_delims=" \t";
-static char *sysdef_delims=" \t\n@?!~&-^><|*+";
+static const char *regionmap_delims=" \t";
+static const char *sysdef_delims=" \t\n@?!~&-^><|*+";
 
 static struct muves_sys muves_sys_head = {
     {BU_LIST_HEAD_MAGIC, &muves_sys_head.l, &muves_sys_head.l}, /* l */
@@ -596,7 +596,7 @@
     char **e_argv;
     int e_argc;
     int e_argv_len=0;
-    char *e_comm="e";
+    char *e_comm=(char *)"e";
 
     bu_log("DEPRECATION WARNING:  This command is scheduled for removal.  Please contact the developers if you use this command.\n");
 
Index: src/mged/scroll.h
===================================================================
--- src/mged/scroll.h	(revision 54124)
+++ src/mged/scroll.h	(working copy)
@@ -23,10 +23,10 @@
  *
  */
 struct scroll_item {
-    char *scroll_string;
+    const char *scroll_string;
     void (*scroll_func)();
     int scroll_val;
-    char *scroll_cmd;
+    const char *scroll_cmd;
 };
 #define SCROLL_NULL ((struct scroll_item *)0)
 
Index: src/mged/dm-X.c
===================================================================
--- src/mged/dm-X.c	(revision 54124)
+++ src/mged/dm-X.c	(working copy)
@@ -171,7 +171,7 @@
 void
 X_fb_open(void)
 {
-    char *X_name = "/dev/X";
+    const char *X_name = "/dev/X";
 
     if ((fbp = (FBIO *)calloc(sizeof(FBIO), 1)) == FBIO_NULL) {
 	Tcl_AppendResult(INTERP, "X_dm_init: failed to allocate framebuffer memory\n",
Index: src/mged/dm-ogl.c
===================================================================
--- src/mged/dm-ogl.c	(revision 54124)
+++ src/mged/dm-ogl.c	(working copy)
@@ -143,7 +143,7 @@
 void
 Ogl_fb_open()
 {
-    char *ogl_name = "/dev/ogl";
+    const char *ogl_name = "/dev/ogl";
 
     if ((fbp = (FBIO *)calloc(sizeof(FBIO), 1)) == FBIO_NULL) {
 	Tcl_AppendResult(INTERP, "Ogl_fb_open: failed to allocate framebuffer memory\n",
Index: src/mged/arbs.c
===================================================================
--- src/mged/arbs.c	(revision 54124)
+++ src/mged/arbs.c	(working copy)
@@ -37,7 +37,7 @@
 
 char **promp;
 
-char *p_arb3pt[] = {
+const char *p_arb3pt[] = {
     "Enter X, Y, Z for point 1: ",
     "Enter Y, Z: ",
     "Enter Z: ",
@@ -49,7 +49,7 @@
     "Enter Z: "
 };
 
-char *p_rfin[] = {
+const char *p_rfin[] = {
     "Enter X, Y, Z of the known point: ",
     "Enter Y, Z: ",
     "Enter Z: "
@@ -101,7 +101,7 @@
 
 
     /* read the known point */
-    promp = &p_rfin[0];
+    promp = (char **)&p_rfin[0];
     if (argc < 5) {
 	Tcl_AppendResult(interp, MORE_ARGS_STR, promp[argc-2], (char *)NULL);
 	return TCL_ERROR;
Index: src/mged/clone.c
===================================================================
--- src/mged/clone.c	(revision 54124)
+++ src/mged/clone.c	(working copy)
@@ -398,7 +398,7 @@
 
     /* make n copies */
     for (i = 0; i < state->n_copies; i++) {
-	char *argv[6] = {"wdb_copy", (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL};
+	const char *argv[6] = {"wdb_copy", (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL, (char *)NULL};
 	struct bu_vls *name;
 	int ret;
 	struct directory *dp = (struct directory *)NULL;
Index: src/mged/rtif.c
===================================================================
--- src/mged/rtif.c	(revision 54124)
+++ src/mged/rtif.c	(working copy)
@@ -384,7 +384,7 @@
 
     if (mged_variables->mv_use_air) {
 	int insertArgc = 2;
-	char *insertArgv[3];
+	const char *insertArgv[3];
 	int newArgc;
 	char **newArgv;
 
Index: src/mged/menu.h
===================================================================
--- src/mged/menu.h	(revision 54124)
+++ src/mged/menu.h	(working copy)
@@ -29,7 +29,7 @@
 #define SEEN_MENU_H
 
 struct menu_item {
-    char *menu_string;
+    const char *menu_string;
     void (*menu_func)();
     int menu_arg;
 };
Index: src/mged/facedef.c
===================================================================
--- src/mged/facedef.c	(revision 54124)
+++ src/mged/facedef.c	(working copy)
@@ -39,7 +39,7 @@
 
 extern struct rt_db_internal es_int;
 
-char *p_rotfb[] = {
+const char *p_rotfb[] = {
     "Enter rot, fb angles: ",
     "Enter fb angle: ",
     "Enter fixed vertex(v#) or point(X Y Z): ",
@@ -48,14 +48,14 @@
 };
 
 
-char *p_3pts[] = {
+const char *p_3pts[] = {
     "Enter X, Y, Z of point",
     "Enter Y, Z of point",
     "Enter Z of point"
 };
 
 
-char *p_pleqn[] = {
+const char *p_pleqn[] = {
     "Enter A, B, C, D of plane equation: ",
     "Enter B, C, D of plane equation: ",
     "Enter C, D of plane equation: ",
@@ -63,7 +63,7 @@
 };
 
 
-char *p_nupnt[] = {
+const char *p_nupnt[] = {
     "Enter X, Y, Z of fixed point: ",
     "Enter Y, Z of fixed point: ",
     "Enter Z of fixed point: "
Index: src/mged/dodraw.c
===================================================================
--- src/mged/dodraw.c	(revision 54124)
+++ src/mged/dodraw.c	(working copy)
@@ -132,7 +132,7 @@
     size_t i;
     char shortname[32];
     char namebuf[64];
-    char *av[4];
+    const char *av[4];
 
     bu_strlcpy(shortname, name, sizeof(shortname));
 
@@ -764,7 +764,7 @@
 	    case 'C':
 		{
 		    int r, g, b;
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 
 		    r = atoi(cp);
 		    while ((*cp >= '0' && *cp <= '9')) cp++;
Index: src/mged/fbserv.c
===================================================================
--- src/mged/fbserv.c	(revision 54124)
+++ src/mged/fbserv.c	(working copy)
@@ -327,14 +327,14 @@
 #endif
 
     if ((pc = (struct pkg_conn *)malloc(sizeof(struct pkg_conn))) == PKC_NULL) {
-	communications_error("fbserv_makeconn: malloc failure\n");
+	communications_error((char *)"fbserv_makeconn: malloc failure\n");
 	return PKC_ERROR;
     }
 
 #ifdef HAVE_WINSOCK_H
     wVersionRequested = MAKEWORD(1, 1);
     if (WSAStartup(wVersionRequested, &wsaData) != 0) {
-	communications_error("fbserv_makeconn:  could not find a usable WinSock DLL\n");
+	communications_error((char *)"fbserv_makeconn:  could not find a usable WinSock DLL\n");
 	return PKC_ERROR;
     }
 #endif
@@ -518,7 +518,7 @@
 
     want = 5*NET_LONG_LEN;
     if (pkg_send(MSG_RETURN, rbuf, want, pcp) != want)
-	communications_error("pkg_send fb_open reply\n");
+	communications_error((char *)"pkg_send fb_open reply\n");
 
     (void)free(buf);
 }
@@ -554,7 +554,7 @@
 
     /* Don't really free framebuffer */
     if (pkg_send(MSG_RETURN, rbuf, NET_LONG_LEN, pcp) != NET_LONG_LEN)
-	communications_error("pkg_send fb_free reply\n");
+	communications_error((char *)"pkg_send fb_free reply\n");
 
     if (buf)
 	(void)free(buf);
Index: src/mged/buttons.c
===================================================================
--- src/mged/buttons.c	(revision 54124)
+++ src/mged/buttons.c	(working copy)
@@ -110,7 +110,7 @@
 
 struct buttons {
     int bu_code;	/* dm_values.dv_button */
-    char *bu_name;	/* keyboard string */
+    const char *bu_name;	/* keyboard string */
     int (*bu_func)();	/* function to call */
 }  button_table[] = {
     {BV_35_25,		"35,25",	bv_35_25},
@@ -336,7 +336,7 @@
     for (bp = button_table; bp->bu_code >= 0; bp++) {
 	if (bnum != bp->bu_code)
 	    continue;
-	return bp->bu_name;
+	return (char *)bp->bu_name;
     }
 
     {
@@ -347,7 +347,7 @@
 	bu_vls_free(&tmp_vls);
     }
 
-    return "";
+    return (char *)"";
 }
 
 
@@ -914,7 +914,7 @@
  * Returns !0 and prints error message if state mismatch.
  */
 int
-not_state(int desired, char *str)
+not_state(int desired, const char *str)
 {
     if (STATE != desired) {
 	Tcl_AppendResult(INTERP, "Unable to do <", str, "> from ", state_str[STATE], " state.\n", (char *)NULL);
@@ -966,7 +966,7 @@
  * Returns !0 and prints error message if error.
  */
 int
-chg_state(int from, int to, char *str)
+chg_state(int from, int to, const char *str)
 {
     struct dm_list *p;
     struct dm_list *save_dm_list;
@@ -999,7 +999,7 @@
 
 
 void
-state_err(char *str)
+state_err(const char *str)
 {
     Tcl_AppendResult(INTERP, "Unable to do <", str, "> from ", state_str[STATE],
 		     " state.\n", (char *)NULL);
Index: src/mged/titles.c
===================================================================
--- src/mged/titles.c	(revision 54124)
+++ src/mged/titles.c	(working copy)
@@ -42,7 +42,7 @@
 /* should only be accessed via STATE define in mged.h */
 int ged_state;
 
-char *state_str[] = {
+const char *state_str[] = {
     "-ZOT-",
     "VIEWING",
     "SOL PICK",
Index: src/mged/attach.c
===================================================================
--- src/mged/attach.c	(revision 54124)
+++ src/mged/attach.c	(working copy)
@@ -112,10 +112,10 @@
 static fastf_t windowbounds[6] = { XMIN, XMAX, YMIN, YMAX, (int)GED_MIN, (int)GED_MAX };
 
 struct w_dm which_dm[] = {
-    { DM_TYPE_PLOT, "plot", Plot_dm_init },  /* DM_PLOT_INDEX defined in mged_dm.h */
-    { DM_TYPE_PS, "ps", PS_dm_init },      /* DM_PS_INDEX defined in mged_dm.h */
+    { DM_TYPE_PLOT, (char *)"plot", Plot_dm_init },  /* DM_PLOT_INDEX defined in mged_dm.h */
+    { DM_TYPE_PS, (char *)"ps", PS_dm_init },      /* DM_PS_INDEX defined in mged_dm.h */
 #ifdef DM_X
-    { DM_TYPE_X, "X", X_dm_init },
+    { DM_TYPE_X, (char *)"X", X_dm_init },
 #endif /* DM_X */
 #if 0
 /* turn off until working */
@@ -128,7 +128,7 @@
 #endif /* DM_WGL */
 #ifdef DM_OGL
 #  if defined(HAVE_TK)
-    { DM_TYPE_OGL, "ogl", Ogl_dm_init },
+    { DM_TYPE_OGL, (char *)"ogl", Ogl_dm_init },
 #  endif
 #endif /* DM_OGL */
 #ifdef DM_RTGL
Index: src/mged/edsol.c
===================================================================
--- src/mged/edsol.c	(revision 54124)
+++ src/mged/edsol.c	(working copy)
@@ -1880,13 +1880,13 @@
 
 		if (BU_STR_EQUAL(cp, "V")) {
 		    VMOVE(mpt, cli->v);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		} else if (BU_STR_EQUAL(cp, "H")) {
 		    VADD2(mpt, cli->v, cli->h);
-		    *strp = "H";
+		    *strp = (char *)"H";
 		} else {
 		    VMOVE(mpt, cli->v);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		}
 		break;
 	    }
@@ -1899,14 +1899,14 @@
 
 		if (BU_STR_EQUAL(cp, "V")) {
 		    VMOVE(mpt, part->part_V);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		} else if (BU_STR_EQUAL(cp, "H")) {
 		    VADD2(mpt, part->part_V, part->part_H);
-		    *strp = "H";
+		    *strp = (char *)"H";
 		} else {
 		    /* default */
 		    VMOVE(mpt, part->part_V);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		}
 		break;
 	    }
@@ -1924,7 +1924,7 @@
 		} else {
 		    VMOVE(mpt, es_pipept->pp_coord);
 		}
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_METABALL:
@@ -1979,7 +1979,7 @@
 			break;
 		}
 
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_EBM:
@@ -1992,7 +1992,7 @@
 
 		VSETALL(pnt, 0.0);
 		MAT4X3PNT(mpt, ebm->mat, pnt);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_BOT:
@@ -2018,7 +2018,7 @@
 
 		VSETALL(pnt, 0.0);
 		MAT4X3PNT(mpt, dsp->dsp_stom, pnt);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_HF:
@@ -2029,7 +2029,7 @@
 		RT_HF_CK_MAGIC(hf);
 
 		VMOVE(mpt, hf->v);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_VOL:
@@ -2042,7 +2042,7 @@
 
 		VSETALL(pnt, 0.0);
 		MAT4X3PNT(mpt, vol->mat, pnt);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_HALF:
@@ -2052,7 +2052,7 @@
 		RT_HALF_CK_MAGIC(haf);
 
 		VSCALE(mpt, haf->eqn, haf->eqn[H]);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_ARB8:
@@ -2077,7 +2077,7 @@
 
 		/* Default */
 		VMOVE(mpt, arb->pt[0]);
-		*strp = "V1";
+		*strp = (char *)"V1";
 
 		break;
 	    }
@@ -2090,27 +2090,27 @@
 
 		if (BU_STR_EQUAL(cp, "V")) {
 		    VMOVE(mpt, ell->v);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "A")) {
 		    VADD2(mpt, ell->v, ell->a);
-		    *strp = "A";
+		    *strp = (char *)"A";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "B")) {
 		    VADD2(mpt, ell->v, ell->b);
-		    *strp = "B";
+		    *strp = (char *)"B";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "C")) {
 		    VADD2(mpt, ell->v, ell->c);
-		    *strp = "C";
+		    *strp = (char *)"C";
 		    break;
 		}
 		/* Default */
 		VMOVE(mpt, ell->v);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_SUPERELL:
@@ -2121,27 +2121,27 @@
 
 		if (BU_STR_EQUAL(cp, "V")) {
 		    VMOVE(mpt, superell->v);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "A")) {
 		    VADD2(mpt, superell->v, superell->a);
-		    *strp = "A";
+		    *strp = (char *)"A";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "B")) {
 		    VADD2(mpt, superell->v, superell->b);
-		    *strp = "B";
+		    *strp = (char *)"B";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "C")) {
 		    VADD2(mpt, superell->v, superell->c);
-		    *strp = "C";
+		    *strp = (char *)"C";
 		    break;
 		}
 		/* Default */
 		VMOVE(mpt, superell->v);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_TOR:
@@ -2152,12 +2152,12 @@
 
 		if (BU_STR_EQUAL(cp, "V")) {
 		    VMOVE(mpt, tor->v);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 		/* Default */
 		VMOVE(mpt, tor->v);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_TGC:
@@ -2169,37 +2169,37 @@
 
 		if (BU_STR_EQUAL(cp, "V")) {
 		    VMOVE(mpt, tgc->v);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "H")) {
 		    VMOVE(mpt, tgc->h);
-		    *strp = "H";
+		    *strp = (char *)"H";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "A")) {
 		    VMOVE(mpt, tgc->a);
-		    *strp = "A";
+		    *strp = (char *)"A";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "B")) {
 		    VMOVE(mpt, tgc->b);
-		    *strp = "B";
+		    *strp = (char *)"B";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "C")) {
 		    VMOVE(mpt, tgc->c);
-		    *strp = "C";
+		    *strp = (char *)"C";
 		    break;
 		}
 		if (BU_STR_EQUAL(cp, "D")) {
 		    VMOVE(mpt, tgc->d);
-		    *strp = "D";
+		    *strp = (char *)"D";
 		    break;
 		}
 		/* Default */
 		VMOVE(mpt, tgc->v);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_BSPLINE:
@@ -2225,7 +2225,7 @@
 		    (struct rt_grip_internal *)ip->idb_ptr;
 		RT_GRIP_CK_MAGIC(gip);
 		VMOVE(mpt, gip->center);
-		*strp = "C";
+		*strp = (char *)"C";
 		break;
 	    }
 	case ID_ARS:
@@ -2240,7 +2240,7 @@
 		    VMOVE(mpt, &ars->curves[es_ars_crv][es_ars_col*3]);
 		}
 
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_RPC:
@@ -2250,7 +2250,7 @@
 		RT_RPC_CK_MAGIC(rpc);
 
 		VMOVE(mpt, rpc->rpc_V);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_RHC:
@@ -2260,7 +2260,7 @@
 		RT_RHC_CK_MAGIC(rhc);
 
 		VMOVE(mpt, rhc->rhc_V);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_EPA:
@@ -2270,7 +2270,7 @@
 		RT_EPA_CK_MAGIC(epa);
 
 		VMOVE(mpt, epa->epa_V);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_EHY:
@@ -2280,7 +2280,7 @@
 		RT_EHY_CK_MAGIC(ehy);
 
 		VMOVE(mpt, ehy->ehy_V);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_HYP:
@@ -2290,7 +2290,7 @@
 		RT_HYP_CK_MAGIC(hyp);
 
 		VMOVE(mpt, hyp->hyp_Vi);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_ETO:
@@ -2300,7 +2300,7 @@
 		RT_ETO_CK_MAGIC(eto);
 
 		VMOVE(mpt, eto->eto_V);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_POLY:
@@ -2312,7 +2312,7 @@
 
 		_poly = pg->poly;
 		VMOVE(mpt, _poly->verts);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_SKETCH:
@@ -2322,7 +2322,7 @@
 		RT_SKETCH_CK_MAGIC(skt);
 
 		VMOVE(mpt, skt->V);
-		*strp = "V";
+		*strp = (char *)"V";
 		break;
 	    }
 	case ID_EXTRUDE:
@@ -2333,10 +2333,10 @@
 
 		if (extr->skt && extr->skt->verts) {
 		    VJOIN2(mpt, extr->V, extr->skt->verts[0][0], extr->u_vec, extr->skt->verts[0][1], extr->v_vec);
-		    *strp = "V1";
+		    *strp = (char *)"V1";
 		} else {
 		    VMOVE(mpt, extr->V);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		}
 		break;
 	    }
@@ -2356,7 +2356,7 @@
 
 		/* set default first */
 		VSETALL(mpt, 0.0);
-		*strp = "(origin)";
+		*strp = (char *)"(origin)";
 
 		/* XXX Try to use the first point of the selected edge */
 		if (es_eu != (struct edgeuse *)NULL &&
@@ -2405,7 +2405,7 @@
 		    if (!v->vg_p)
 			break;
 		    VMOVE(mpt, v->vg_p->coord);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 		if (BU_LIST_IS_EMPTY(&s->lu_hd))
@@ -2428,7 +2428,7 @@
 		    if (!v->vg_p)
 			break;
 		    VMOVE(mpt, v->vg_p->coord);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 		if (BU_LIST_IS_EMPTY(&s->eu_hd))
@@ -2443,7 +2443,7 @@
 		    if (!v->vg_p)
 			break;
 		    VMOVE(mpt, v->vg_p->coord);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 		vu = s->vu_p;
@@ -2454,14 +2454,14 @@
 		    if (!v->vg_p)
 			break;
 		    VMOVE(mpt, v->vg_p->coord);
-		    *strp = "V";
+		    *strp = (char *)"V";
 		    break;
 		}
 	    }
 	default:
 	    Tcl_AppendResult(INTERP, "get_solid_keypoint: unrecognized solid type (setting keypoint to origin)\n", (char *)NULL);
 	    VSETALL(mpt, 0.0);
-	    *strp = "(origin)";
+	    *strp = (char *)"(origin)";
 	    break;
     }
     MAT4X3PNT(pt, mat, mpt);
@@ -2555,7 +2555,7 @@
     bn_mat_inv(es_invmat, es_mat);
 
     /* Establish initial keypoint */
-    es_keytag = "";
+    es_keytag = (char *)"";
     get_solid_keypoint(es_keypoint, &es_keytag, &es_int, es_mat);
 
     es_eu = (struct edgeuse *)NULL;	/* Reset es_eu */
@@ -7334,7 +7334,7 @@
 init_oedit_guts(void)
 {
     int id;
-    char *strp="";
+    char *strp=(char *)"";
 
     /* for safety sake */
     es_menu = 0;
@@ -8656,12 +8656,12 @@
 		 atof(argv[1]) * local2base,
 		 atof(argv[2]) * local2base,
 		 atof(argv[3]) * local2base);
-	    es_keytag = "user-specified";
+	    es_keytag = (char *)"user-specified";
 	    es_keyfixed = 1;
 	    break;
 	case 1:
 	    if (BU_STR_EQUAL(argv[1], "reset")) {
-		es_keytag = "";
+		es_keytag = (char *)"";
 		es_keyfixed = 0;
 		get_solid_keypoint(es_keypoint, &es_keytag,
 				   &es_int, es_mat);
@@ -9049,7 +9049,7 @@
     replot_editing_solid();
 
     /* Establish initial keypoint */
-    es_keytag = "";
+    es_keytag = (char *)"";
     get_solid_keypoint(es_keypoint, &es_keytag, &es_int, es_mat);
 
     /* Reset relevant variables */
@@ -9144,7 +9144,7 @@
 f_oedit_apply(ClientData UNUSED(clientData), Tcl_Interp *interp, int UNUSED(argc), const char *UNUSED(argv[]))
 {
     struct bu_vls vls = BU_VLS_INIT_ZERO;
-    char *strp="";
+    char *strp=(char *)"";
 
     CHECK_DBI_NULL;
     oedit_apply(UP); /* apply changes, but continue editing */
Index: src/mged/edarb.c
===================================================================
--- src/mged/edarb.c	(revision 54124)
+++ src/mged/edarb.c	(working copy)
@@ -829,7 +829,7 @@
      * Wherever the internal representation of the ARB as an ARB8
      * stores a redundant copy of a vertex, the string contains a '*'.
      */
-    static char *perm4[4][7] = {
+    static const char *perm4[4][7] = {
 	{"123*4***", "124*3***", "132*4***", "134*2***", "142*3***",
 	 "143*2***", 0},
 	{"213*4***", "214*3***", "231*4***", "234*1***", "241*3***",
@@ -839,14 +839,14 @@
 	{"412*3***", "413*2***", "421*3***", "423*1***", "431*2***",
 	 "432*1***", 0}
     };
-    static char *perm5[5][3] = {
+    static const char *perm5[5][3] = {
 	{"12345***", "14325***", 0},
 	{"21435***", "23415***", 0},
 	{"32145***", "34125***", 0},
 	{"41235***", "43215***", 0},
 	{0, 0, 0}
     };
-    static char *perm6[6][3] = {
+    static const char *perm6[6][3] = {
 	{"12345*6*", "15642*3*", 0},
 	{"21435*6*", "25631*4*", 0},
 	{"34126*5*", "36524*1*", 0},
@@ -854,7 +854,7 @@
 	{"51462*3*", "52361*4*", 0},
 	{"63254*1*", "64153*2*", 0}
     };
-    static char *perm7[7][2] = {
+    static const char *perm7[7][2] = {
 	{"1234567*", 0},
 	{0, 0},
 	{0, 0},
@@ -863,7 +863,7 @@
 	{"6237514*", 0},
 	{"7326541*", 0}
     };
-    static char *perm8[8][7] = {
+    static const char *perm8[8][7] = {
 	{"12345678", "12654378", "14325876", "14852376",
 	 "15624873", "15842673", 0},
 	{"21436587", "21563487", "23416785", "23761485",
@@ -960,10 +960,10 @@
 	bu_vls_free(&vls);
 	return TCL_ERROR;
     }
-    p = (es_type == 4) ? perm4[vertex] :
-	(es_type == 5) ? perm5[vertex] :
-	(es_type == 6) ? perm6[vertex] :
-	(es_type == 7) ? perm7[vertex] : perm8[vertex];
+    p = (es_type == 4) ? (char **)perm4[vertex] :
+	(es_type == 5) ? (char **)perm5[vertex] :
+	(es_type == 6) ? (char **)perm6[vertex] :
+	(es_type == 7) ? (char **)perm7[vertex] : (char **)perm8[vertex];
     for (;; ++p) {
 	if (*p == 0) {
 	    Tcl_AppendResult(interp, "ERROR: invalid vertex tuple: '",
Index: src/mged/qray.h
===================================================================
--- src/mged/qray.h	(revision 54124)
+++ src/mged/qray.h	(working copy)
@@ -60,7 +60,7 @@
 
 struct qray_fmt_data {
     char type;
-    char *fmt;
+    const char *fmt;
 };
 
 
Index: src/mged/chgview.c
===================================================================
--- src/mged/chgview.c	(revision 54124)
+++ src/mged/chgview.c	(working copy)
@@ -151,7 +151,7 @@
 void
 mged_center(point_t center)
 {
-    char *av[5];
+    const char *av[5];
     char xbuf[32];
     char ybuf[32];
     char zbuf[32];
@@ -227,7 +227,7 @@
 void
 size_reset(void)
 {
-    char *av[2];
+    const char *av[2];
 
     if (gedp == GED_NULL) {
 	return;
@@ -480,7 +480,7 @@
 	/* If we went from blank screen to non-blank, resize */
 	if (mged_variables->mv_autosize && initial_blank_screen && non_empty) {
 	    struct view_ring *vrp;
-	    char *av[2];
+	    const char *av[2];
 
 	    av[0] = "autoview";
 	    av[1] = (char *)0;
@@ -731,7 +731,7 @@
 {
     struct ged_display_list *gdlp;
     struct ged_display_list *next_gdlp;
-    char *av[2] = {"zap", (char *)0};
+    const char *av[2] = {"zap", (char *)0};
 
     CHECK_DBI_NULL;
 
@@ -2581,7 +2581,7 @@
 static void
 abs_zoom(void)
 {
-    char *av[3];
+    const char *av[3];
 
     /* Use initial Viewscale */
     if (-SMALL_FASTF < view_state->vs_absolute_scale && view_state->vs_absolute_scale < SMALL_FASTF) {
@@ -2620,7 +2620,7 @@
 mged_zoom(double val)
 {
     int ret;
-    char *av[3];
+    const char *av[3];
     char buf[32];
     Tcl_DString ds;
 
@@ -2949,7 +2949,7 @@
 	double a2,
 	double a3)		/* DOUBLE angles, in degrees */
 {
-    char *av[5];
+    const char *av[5];
     char xbuf[32];
     char ybuf[32];
     char zbuf[32];
@@ -2993,7 +2993,7 @@
     point_t new_model_center;
     vect_t diff;
     mat_t delta;
-    char *av[5];
+    const char *av[5];
     char xbuf[32];
     char ybuf[32];
     char zbuf[32];
Index: src/mged/tedit.c
===================================================================
--- src/mged/tedit.c	(revision 54124)
+++ src/mged/tedit.c	(working copy)
@@ -161,7 +161,7 @@
 {
     int i;
     FILE *fp;
-    char *eol = "\n";
+    char *eol = (char *)"\n";
 
     CHECK_DBI_NULL;
 
Index: src/mged/mged.c
===================================================================
--- src/mged/mged.c	(revision 54124)
+++ src/mged/mged.c	(working copy)
@@ -1088,10 +1088,10 @@
     while ((c = bu_getopt(argc, argv, "a:d:hbicnorx:X:v?")) != -1) {
 	switch (c) {
 	    case 'a':
-		attach = bu_optarg;
+		attach = (char *)bu_optarg;
 		break;
 	    case 'd':
-		dpy_string = bu_optarg;
+		dpy_string = (char *)bu_optarg;
 		break;
 	    case 'r':
 		read_only_flag = 1;
Index: src/mged/mged.h
===================================================================
--- src/mged/mged.h	(revision 54124)
+++ src/mged/mged.h	(working copy)
@@ -225,9 +225,9 @@
 extern void button(int bnum);
 extern void press(char *str);
 extern char *label_button(int bnum);
-extern int not_state(int desired, char *str);
-extern int chg_state(int from, int to, char *str);
-extern void state_err(char *str);
+extern int not_state(int desired, const char *str);
+extern int chg_state(int from, int to, const char *str);
+extern void state_err(const char *str);
 
 extern int invoke_db_wrapper(Tcl_Interp *interpreter, int argc, const char *argv[]);
 
@@ -260,7 +260,7 @@
 /**
  * Editor States
  */
-extern char *state_str[]; /* identifying strings */
+extern const char *state_str[]; /* identifying strings */
 #define ST_VIEW		1 /* Viewing only */
 #define ST_S_PICK	2 /* Picking for Solid Edit */
 #define ST_S_EDIT	3 /* Solid Editing */
Index: src/libfb/if_ogl.c
===================================================================
--- src/libfb/if_ogl.c	(revision 54124)
+++ src/libfb/if_ogl.c	(working copy)
@@ -248,7 +248,7 @@
     char c;
     long mask;
     long value;
-    char *help;
+    const char *help;
 } modeflags[] = {
     { 'p',	MODE_1MASK, MODE_1MALLOC,
       "Private memory - else shared" },
@@ -2455,10 +2455,10 @@
     ogl_flush,		/* flush output */
     ogl_free,		/* free resources */
     ogl_help,		/* help message */
-    "Silicon Graphics OpenGL",	/* device description */
+    (char *)"Silicon Graphics OpenGL",	/* device description */
     XMAXSCREEN+1,	/* max width */
     YMAXSCREEN+1,	/* max height */
-    "/dev/ogl",		/* short device name */
+    (char *)"/dev/ogl",		/* short device name */
     512,		/* default/current width */
     512,		/* default/current height */
     -1,			/* select file desc */
Index: src/libfb/if_debug.c
===================================================================
--- src/libfb/if_debug.c	(revision 54124)
+++ src/libfb/if_debug.c	(working copy)
@@ -343,10 +343,10 @@
     deb_flush,
     deb_free,
     deb_help,
-    "Debugging Interface",
+    (char *)"Debugging Interface",
     32*1024,		/* max width */
     32*1024,		/* max height */
-    "/dev/debug",
+    (char *)"/dev/debug",
     512,			/* current/default width */
     512,			/* current/default height */
     -1,			/* select fd */
Index: src/libfb/if_disk.c
===================================================================
--- src/libfb/if_disk.c	(revision 54124)
+++ src/libfb/if_disk.c	(working copy)
@@ -340,10 +340,10 @@
     fb_null,		/* flush */
     dsk_free,
     dsk_help,
-    "Disk File Interface",
+    (char *)"Disk File Interface",
     32*1024,		/* the sky's really the limit here */
     32*1024,
-    "filename",		/* not in list so name is safe */
+    (char *)"filename",		/* not in list so name is safe */
     512,
     512,
     -1,			/* select fd */
Index: src/libfb/if_remote.c
===================================================================
--- src/libfb/if_remote.c	(revision 54124)
+++ src/libfb/if_remote.c	(working copy)
@@ -121,7 +121,7 @@
 	/* 0 */
 	port = atoi(file);
 	bu_strlcpy(host, "localhost", length);
-	dev = "";
+	dev = (char *)"";
 	goto done;
     }
     if ((colon = strchr(file, ':')) != NULL) {
@@ -139,7 +139,7 @@
 	    if (numeric(rest)) {
 		/* :0 or host:0 */
 		port = atoi(rest);
-		dev = "";
+		dev = (char *)"";
 		goto done;
 	    } else {
 		/* check for [host]:0:[dev] */
@@ -791,10 +791,10 @@
     rem_flush,
     rem_free,
     rem_help,
-    "Remote Device Interface",	/* should be filled in */
+    (char *)"Remote Device Interface",	/* should be filled in */
     32*1024,			/* " */
     32*1024,			/* " */
-    "host:[dev]",
+    (char *)"host:[dev]",
     512,
     512,
     -1,				/* select fd */
Index: src/libfb/fbserv_obj.c
===================================================================
--- src/libfb/fbserv_obj.c	(revision 54124)
+++ src/libfb/fbserv_obj.c	(working copy)
@@ -307,7 +307,7 @@
 
     want = 5*NET_LONG_LEN;
     if (pkg_send(MSG_RETURN, rbuf, want, pcp) != want)
-	comm_error("pkg_send fb_open reply\n");
+	comm_error((char *)"pkg_send fb_open reply\n");
 
     if (buf) {
 	(void)free(buf);
@@ -346,7 +346,7 @@
 
     /* Don't really free framebuffer */
     if (pkg_send(MSG_RETURN, rbuf, NET_LONG_LEN, pcp) != NET_LONG_LEN)
-	comm_error("pkg_send fb_free reply\n");
+	comm_error((char *)"pkg_send fb_free reply\n");
 
     if (buf) {
 	(void)free(buf);
@@ -996,7 +996,7 @@
 	{ 0, NULL, NULL, NULL }
     };
 
-    new_client(fbsp, pkg_getclient(fd, pswitch, comm_error, 0), 0);
+    new_client(fbsp, pkg_getclient(fd, pswitch, comm_error, 0), (Tcl_Channel)0);
 }
 #endif /* if defined(_WIN32) && !defined(__CYGWIN__) */
 
Index: src/libfb/if_stack.c
===================================================================
--- src/libfb/if_stack.c	(revision 54124)
+++ src/libfb/if_stack.c	(working copy)
@@ -421,10 +421,10 @@
     stk_flush,		/* flush output */
     stk_free,		/* free resources */
     stk_help,		/* help function */
-    "Multiple Device Stacker", /* device description */
+    (char *)"Multiple Device Stacker", /* device description */
     32*1024,		/* max width */
     32*1024,		/* max height */
-    "/dev/stack",		/* short device name */
+    (char *)"/dev/stack",		/* short device name */
     4,			/* default/current width */
     4,			/* default/current height */
     -1,			/* select fd */
Index: src/libfb/if_X.c
===================================================================
--- src/libfb/if_X.c	(revision 54124)
+++ src/libfb/if_X.c	(working copy)
@@ -119,7 +119,7 @@
     char c;
     long mask;
     long value;
-    char *help;
+    const char *help;
 } modeflags[] = {
     { 'l',	MODE_1MASK, MODE_1LINGERING,
       "Lingering window" },
@@ -1720,10 +1720,10 @@
     X_flush,		/* flush */
     X_close_fb,		/* free */
     X_help,			/* help message */
-    "X Window System (X11) 8-bit and 1-bit visuals only",
+    (char *)"X Window System (X11) 8-bit and 1-bit visuals only",
     2048,			/* max width */
     2048,			/* max height */
-    "/dev/xold",		/* short device name */
+    (char *)"/dev/xold",		/* short device name */
     512,			/* default/current width */
     512,			/* default/current height */
     -1,			/* select file desc */
Index: src/libfb/if_null.c
===================================================================
--- src/libfb/if_null.c	(revision 54124)
+++ src/libfb/if_null.c	(working copy)
@@ -238,10 +238,10 @@
     null_flush,		/* flush output */
     null_free,		/* free resources */
     null_help,		/* help message */
-    "Null Device",	/* device description */
+    (char *)"Null Device",	/* device description */
     32*1024,		/* max width */
     32*1024,		/* max height */
-    "/dev/null",	/* short device name */
+    (char *)"/dev/null",	/* short device name */
     512,		/* default/current width */
     512,		/* default/current height */
     -1,			/* select fd */
Index: src/libfb/if_X24.c
===================================================================
--- src/libfb/if_X24.c	(revision 54124)
+++ src/libfb/if_X24.c	(working copy)
@@ -224,7 +224,7 @@
     char c;
     unsigned long mask;
     unsigned long value;
-    char *help;
+    const char *help;
 } modeflags[] = {
     { 'l',	MODE1_MASK, MODE1_LINGERING,
       "Lingering window" },
@@ -571,7 +571,7 @@
     /* Open the display - use the env variable DISPLAY */
     xname = XDisplayName(NULL);
     /* Attempt one level of fallback, esp. for fbserv daemon */
-    if (!xname || *xname == '\0') xname = ":0";
+    if (!xname || *xname == '\0') xname = (char *)":0";
 
     if ((xi->xi_dpy = XOpenDisplay(xname)) == NULL) {
 	fb_log("if_X: Can't open X display \"%s\"\n", xname);
@@ -3683,10 +3683,10 @@
     X24_flush,		/* flush output */
     X24_free,		/* free resources */
     X24_help,		/* help message */
-    "24 bit X Window System (X11)",	/* device description */
+    (char *)"24 bit X Window System (X11)",	/* device description */
     2048,		/* max width */
     2048,		/* max height */
-    "/dev/X",		/* short device name */
+    (char *)"/dev/X",		/* short device name */
     512,		/* default/current width */
     512,		/* default/current height */
     -1,			/* select file desc */
Index: src/libfb/if_mem.c
===================================================================
--- src/libfb/if_mem.c	(revision 54124)
+++ src/libfb/if_mem.c	(working copy)
@@ -60,7 +60,7 @@
     char c;
     long mask;
     long value;
-    char *help;
+    const char *help;
 } modeflags[] = {
     { 'w',	MODE_1MASK, MODE_1IMMEDIATE,
       "Write thru mode - pass writes directly to attached frame buffer" },
@@ -450,10 +450,10 @@
     mem_flush,		/* flush */
     mem_close,		/* free */
     mem_help,		/* help message */
-    "Memory Buffer",	/* device description */
+    (char *)"Memory Buffer",	/* device description */
     8192,		/* max width */
     8192,		/* max height */
-    "/dev/mem",		/* short device name */
+    (char *)"/dev/mem",		/* short device name */
     512,		/* default/current width */
     512,		/* default/current height */
     -1,			/* select fd */
Index: src/libtclcad/tclcad_obj.c
===================================================================
--- src/libtclcad/tclcad_obj.c	(revision 54124)
+++ src/libtclcad/tclcad_obj.c	(working copy)
@@ -869,8 +869,8 @@
 static struct tclcad_obj *current_top = TCLCAD_OBJ_NULL;
 
 struct to_cmdtab {
-    char *to_name;
-    char *to_usage;
+    const char *to_name;
+    const char *to_usage;
     int to_maxargs;
     to_wrapper_func_ptr to_wrapper_func;
     ged_func_ptr to_func;
@@ -2169,8 +2169,8 @@
 	snprintf(cdimX, 32, "%d", gdvp->gdv_dmp->dm_width);
 	snprintf(cdimY, 32, "%d", gdvp->gdv_dmp->dm_height);
 
-	av[0] = "rect";
-	av[1] = "cdim";
+	av[0] = (char *)"rect";
+	av[1] = (char *)"cdim";
 	av[2] = cdimX;
 	av[3] = cdimY;
 	av[4] = '\0';
@@ -4669,18 +4669,18 @@
     size_t top_j = 0;
     size_t top_k = 0;
     int found_top = 0;
-    char *top_data_str = NULL;
-    char *top_data_label = NULL;
+    const char *top_data_str = (const char *)NULL;
+    const char *top_data_label = (const char *)NULL;
     static fastf_t tol = 0.015;
-    static char *data_polygons_str = "data_polygons";
-    static char *data_labels_str = "data_labels";
-    static char *sdata_labels_str = "sdata_labels";
-    static char *data_lines_str = "data_lines";
-    static char *sdata_lines_str = "sdata_lines";
-    static char *data_arrows_str = "data_arrows";
-    static char *sdata_arrows_str = "sdata_arrows";
-    static char *data_axes_str = "data_axes";
-    static char *sdata_axes_str = "sdata_axes";
+    static const char *data_polygons_str = "data_polygons";
+    static const char *data_labels_str = "data_labels";
+    static const char *sdata_labels_str = "sdata_labels";
+    static const char *data_lines_str = "data_lines";
+    static const char *sdata_lines_str = "sdata_lines";
+    static const char *data_arrows_str = "data_arrows";
+    static const char *sdata_arrows_str = "sdata_arrows";
+    static const char *data_axes_str = "data_axes";
+    static const char *sdata_axes_str = "sdata_axes";
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
@@ -5803,8 +5803,8 @@
 	char *av[3];
 
 	gedp->ged_gvp = gdvp->gdv_view;
-	av[0] = "grid";
-	av[1] = "vsnap";
+	av[0] = (char *)"grid";
+	av[1] = (char *)"vsnap";
 	av[2] = '\0';
 	ged_grid(gedp, 2, (const char **)av);
 
@@ -6025,7 +6025,7 @@
     ret = ged_make(gedp, argc, argv);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[argc-2];
 	av[2] = (char *)0;
 	to_autoview_func(gedp, 2, (const char **)av, ged_draw, (char *)0, TO_UNLIMITED);
@@ -6048,7 +6048,7 @@
     ret = ged_mirror(gedp, argc, argv);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[argc-1];
 	av[2] = (char *)0;
 	to_autoview_func(gedp, 2, (const char **)av, ged_draw, (char *)0, TO_UNLIMITED);
@@ -6245,7 +6245,7 @@
     bu_vls_free(&pt_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -6345,8 +6345,8 @@
 
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 3;
-    av[0] = "rot";
-    av[1] = "-m";
+    av[0] = (char *)"rot";
+    av[1] = (char *)"-m";
     av[2] = bu_vls_addr(&rot_vls);
     av[3] = (char *)0;
 
@@ -6457,8 +6457,8 @@
 
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 3;
-    av[0] = "tra";
-    av[1] = "-m";
+    av[0] = (char *)"tra";
+    av[1] = (char *)"-m";
     av[2] = bu_vls_addr(&tran_vls);
     av[3] = (char *)0;
 
@@ -6536,7 +6536,7 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", view[X], view[Y], view[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "find_bot_edge_nearest_pt";
+    av[0] = (char *)"find_bot_edge_nearest_pt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
     av[3] = (char *)0;
@@ -6607,7 +6607,7 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", view[X], view[Y], view[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "find_botpt_nearest_pt";
+    av[0] = (char *)"find_botpt_nearest_pt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
     av[3] = (char *)0;
@@ -6680,7 +6680,7 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "find_pipept_nearest_pt";
+    av[0] = (char *)"find_pipept_nearest_pt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
     av[3] = (char *)0;
@@ -6769,8 +6769,8 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "move_arb_edge";
-    av[1] = "-r";
+    av[0] = (char *)"move_arb_edge";
+    av[1] = (char *)"-r";
     av[2] = (char *)argv[2];
     av[3] = (char *)argv[3];
     av[4] = bu_vls_addr(&pt_vls);
@@ -6780,7 +6780,7 @@
     bu_vls_free(&pt_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -6867,8 +6867,8 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "move_arb_face";
-    av[1] = "-r";
+    av[0] = (char *)"move_arb_face";
+    av[1] = (char *)"-r";
     av[2] = (char *)argv[2];
     av[3] = (char *)argv[3];
     av[4] = bu_vls_addr(&pt_vls);
@@ -6878,7 +6878,7 @@
     bu_vls_free(&pt_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -7045,10 +7045,10 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "move_botpt";
+    av[0] = (char *)"move_botpt";
 
     if (rflag) {
-	av[1] = "-r";
+	av[1] = (char *)"-r";
 	av[2] = (char *)argv[2];
 	av[3] = (char *)argv[3];
 	av[4] = bu_vls_addr(&pt_vls);
@@ -7067,7 +7067,7 @@
     bu_vls_free(&pt_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -7167,7 +7167,7 @@
 	register int i, j;
 	int ac = argc - 2;
 	char **av = (char **)bu_calloc(ac, sizeof(char *), "to_mouse_move_botpts: av[]");
-	av[0] = "move_botpts";
+	av[0] = (char *)"move_botpts";
 
 	av[1] = (char *)argv[4];
 	av[2] = bu_vls_addr(&pt_vls);
@@ -7180,7 +7180,7 @@
 	bu_vls_free(&pt_vls);
 
 	if (ret == GED_OK) {
-	    av[0] = "draw";
+	    av[0] = (char *)"draw";
 	    av[1] = (char *)argv[4];
 	    av[2] = (char *)0;
 	    to_edit_redraw(gedp, 2, (const char **)av);
@@ -7271,8 +7271,8 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "move_pipept";
-    av[1] = "-r";
+    av[0] = (char *)"move_pipept";
+    av[1] = (char *)"-r";
     av[2] = (char *)argv[2];
     av[3] = (char *)argv[3];
     av[4] = bu_vls_addr(&pt_vls);
@@ -7282,7 +7282,7 @@
     bu_vls_free(&pt_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -7380,7 +7380,7 @@
     } else {
 	char *av[6];
 
-	av[0] = "orotate";
+	av[0] = (char *)"orotate";
 	av[1] = (char *)argv[2];
 	av[2] = bu_vls_addr(&rot_x_vls);
 	av[3] = bu_vls_addr(&rot_y_vls);
@@ -7388,7 +7388,7 @@
 	av[5] = (char *)0;
 
 	if (ged_orotate(gedp, 5, (const char **)av) == GED_OK) {
-	    av[0] = "draw";
+	    av[0] = (char *)"draw";
 	    av[1] = (char *)argv[2];
 	    av[2] = (char *)0;
 	    to_edit_redraw(gedp, 2, (const char **)av);
@@ -7488,13 +7488,13 @@
     } else {
 	char *av[6];
 
-	av[0] = "oscale";
+	av[0] = (char *)"oscale";
 	av[1] = (char *)argv[2];
 	av[2] = bu_vls_addr(&sf_vls);
 	av[3] = (char *)0;
 
 	if (ged_oscale(gedp, 3, (const char **)av) == GED_OK) {
-	    av[0] = "draw";
+	    av[0] = (char *)"draw";
 	    av[1] = (char *)argv[2];
 	    av[2] = (char *)0;
 	    to_edit_redraw(gedp, 2, (const char **)av);
@@ -7597,7 +7597,7 @@
     } else {
 	char *av[6];
 
-	av[0] = "otranslate";
+	av[0] = (char *)"otranslate";
 	av[1] = (char *)argv[2];
 	av[2] = bu_vls_addr(&tran_x_vls);
 	av[3] = bu_vls_addr(&tran_y_vls);
@@ -7605,7 +7605,7 @@
 	av[5] = (char *)0;
 
 	if (ged_otranslate(gedp, 5, (const char **)av) == GED_OK) {
-	    av[0] = "draw";
+	    av[0] = (char *)"draw";
 	    av[1] = (char *)argv[2];
 	    av[2] = (char *)0;
 	    to_edit_redraw(gedp, 2, (const char **)av);
@@ -7727,9 +7727,9 @@
 
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 5;
-    av[0] = "data_polygons";
+    av[0] = (char *)"data_polygons";
     av[1] = bu_vls_addr(&gdvp->gdv_name);
-    av[2] = "replace_poly";
+    av[2] = (char *)"replace_poly";
     av[3] = bu_vls_addr(&i_vls);
     av[4] = bu_vls_addr(&plist);
     av[5] = (char *)0;
@@ -7821,11 +7821,11 @@
 	bu_vls_printf(&plist, "%lf %lf %lf", V3ARGS(m_pt));
 
 	ac = 7;
-	av[0] = "data_polygons";
+	av[0] = (char *)"data_polygons";
 	av[1] = bu_vls_addr(&gdvp->gdv_name);
-	av[2] = "replace_point";
+	av[2] = (char *)"replace_point";
 	av[3] = bu_vls_addr(&i_vls);
-	av[4] = "0";
+	av[4] = (char *)"0";
 	av[5] = bu_vls_addr(&k_vls);
 	av[6] = bu_vls_addr(&plist);
 	av[7] = (char *)0;
@@ -7958,9 +7958,9 @@
 
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 5;
-    av[0] = "data_polygons";
+    av[0] = (char *)"data_polygons";
     av[1] = bu_vls_addr(&gdvp->gdv_name);
-    av[2] = "replace_poly";
+    av[2] = (char *)"replace_poly";
     av[3] = bu_vls_addr(&i_vls);
     av[4] = bu_vls_addr(&plist);
     av[5] = (char *)0;
@@ -8078,9 +8078,9 @@
 
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 5;
-    av[0] = "data_polygons";
+    av[0] = (char *)"data_polygons";
     av[1] = bu_vls_addr(&gdvp->gdv_name);
-    av[2] = "replace_poly";
+    av[2] = (char *)"replace_poly";
     av[3] = bu_vls_addr(&i_vls);
     av[4] = bu_vls_addr(&plist);
     av[5] = (char *)0;
@@ -8159,8 +8159,8 @@
     bu_vls_printf(&dy_vls, "%d", dy);
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 4;
-    av[0] = "rect";
-    av[1] = "dim";
+    av[0] = (char *)"rect";
+    av[1] = (char *)"dim";
     av[2] = bu_vls_addr(&dx_vls);
     av[3] = bu_vls_addr(&dy_vls);
     av[4] = (char *)0;
@@ -8246,8 +8246,8 @@
 
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 3;
-    av[0] = "rot";
-    av[1] = "-v";
+    av[0] = (char *)"rot";
+    av[1] = (char *)"-v";
     av[2] = bu_vls_addr(&rot_vls);
     av[3] = (char *)0;
 
@@ -8341,7 +8341,7 @@
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "rotate_arb_face";
+    av[0] = (char *)"rotate_arb_face";
     av[1] = (char *)argv[2];
     av[2] = (char *)argv[3];
     av[3] = (char *)argv[4];
@@ -8352,7 +8352,7 @@
     bu_vls_free(&pt_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -8438,7 +8438,7 @@
     bu_vls_printf(&zoom_vls, "%lf", sf);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "zoom";
+    av[0] = (char *)"zoom";
     av[1] = bu_vls_addr(&zoom_vls);
     av[2] = (char *)0;
 
@@ -8532,7 +8532,7 @@
     bu_vls_printf(&mrot_vls, "%lf %lf %lf", V3ARGS(model));
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "protate";
+    av[0] = (char *)"protate";
     av[1] = (char *)argv[2];
     av[2] = (char *)argv[3];
     av[3] = bu_vls_addr(&mrot_vls);
@@ -8542,7 +8542,7 @@
     bu_vls_free(&mrot_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -8628,8 +8628,8 @@
     bu_vls_printf(&sf_vls, "%lf", sf);
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "pscale";
-    av[1] = "-r";
+    av[0] = (char *)"pscale";
+    av[1] = (char *)"-r";
     av[2] = (char *)argv[2];
     av[3] = (char *)argv[3];
     av[4] = bu_vls_addr(&sf_vls);
@@ -8639,7 +8639,7 @@
     bu_vls_free(&sf_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -8726,8 +8726,8 @@
     bu_vls_printf(&tvec_vls, "%lf %lf %lf", V3ARGS(model));
 
     gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "ptranslate";
-    av[1] = "-r";
+    av[0] = (char *)"ptranslate";
+    av[1] = (char *)"-r";
     av[2] = (char *)argv[2];
     av[3] = (char *)argv[3];
     av[4] = bu_vls_addr(&tvec_vls);
@@ -8737,7 +8737,7 @@
     bu_vls_free(&tvec_vls);
 
     if (ret == GED_OK) {
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[2];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -8819,8 +8819,8 @@
 
     gedp->ged_gvp = gdvp->gdv_view;
     ac = 3;
-    av[0] = "tra";
-    av[1] = "-v";
+    av[0] = (char *)"tra";
+    av[1] = (char *)"-v";
     av[2] = bu_vls_addr(&trans_vls);
     av[3] = (char *)0;
 
@@ -8989,7 +8989,7 @@
 	else
 	    i = 2;
 
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[i];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -9014,7 +9014,7 @@
     if ((ret = ged_move_botpts(gedp, argc, argv)) == GED_OK) {
 	char *av[3];
 
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[1];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -9172,7 +9172,7 @@
 	else
 	    i = 2;
 
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[i];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -9898,9 +9898,9 @@
     bu_vls_printf(&plist, "{ {%lf %lf %lf} {%lf %lf %lf} {%lf %lf %lf} {%lf %lf %lf} }",
 		  V3ARGS(m_pt), V3ARGS(m_pt), V3ARGS(m_pt), V3ARGS(m_pt));
     ac = 4;
-    av[0] = "data_polygons";
+    av[0] = (char *)"data_polygons";
     av[1] = bu_vls_addr(&gdvp->gdv_name);
-    av[2] = "append_poly";
+    av[2] = (char *)"append_poly";
     av[3] = bu_vls_addr(&plist);
     av[4] = (char *)0;
 
@@ -10003,7 +10003,7 @@
 
     MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, v_pt);
 
-    av[0] = "data_polygons";
+    av[0] = (char *)"data_polygons";
     av[1] = bu_vls_addr(&gdvp->gdv_name);
     if (gdpsp->gdps_cflag == 0) {
 	struct bu_vls plist = BU_VLS_INIT_ZERO;
@@ -10019,7 +10019,7 @@
 
 	bu_vls_printf(&plist, "{ {%lf %lf %lf} {%lf %lf %lf} }", V3ARGS(m_pt), V3ARGS(m_pt));
 	ac = 4;
-	av[2] = "append_poly";
+	av[2] = (char *)"append_poly";
 	av[3] = bu_vls_addr(&plist);
 	av[4] = (char *)0;
 
@@ -10042,16 +10042,16 @@
 	bu_vls_printf(&plist, "%lf %lf %lf", V3ARGS(m_pt));
 
 	ac = 7;
-	av[2] = "replace_point";
+	av[2] = (char *)"replace_point";
 	av[3] = bu_vls_addr(&i_vls);
-	av[4] = "0";
+	av[4] = (char *)"0";
 	av[5] = bu_vls_addr(&k_vls);
 	av[6] = bu_vls_addr(&plist);
 	av[7] = (char *)0;
 	(void)to_data_polygons(gedp, ac, (const char **)av, (ged_func_ptr)0, "", 0);
 
 	ac = 6;
-	av[2] = "append_point";
+	av[2] = (char *)"append_point";
 	av[5] = bu_vls_addr(&plist);
 	av[6] = (char *)0;
 	(void)to_data_polygons(gedp, ac, (const char **)av, (ged_func_ptr)0, "", 0);
@@ -10198,9 +10198,9 @@
     bu_vls_printf(&plist, "{ {%lf %lf %lf} {%lf %lf %lf} {%lf %lf %lf} {%lf %lf %lf} }",
 		  V3ARGS(m_pt), V3ARGS(m_pt), V3ARGS(m_pt), V3ARGS(m_pt));
     ac = 4;
-    av[0] = "data_polygons";
+    av[0] = (char *)"data_polygons";
     av[1] = bu_vls_addr(&gdvp->gdv_name);
-    av[2] = "append_poly";
+    av[2] = (char *)"append_poly";
     av[3] = bu_vls_addr(&plist);
     av[4] = (char *)0;
 
@@ -10322,9 +10322,9 @@
     bu_vls_printf(&plist, "{ {%lf %lf %lf} {%lf %lf %lf} {%lf %lf %lf} {%lf %lf %lf} }",
 		  V3ARGS(m_pt), V3ARGS(m_pt), V3ARGS(m_pt), V3ARGS(m_pt));
     ac = 4;
-    av[0] = "data_polygons";
+    av[0] = (char *)"data_polygons";
     av[1] = bu_vls_addr(&gdvp->gdv_name);
-    av[2] = "append_poly";
+    av[2] = (char *)"append_poly";
     av[3] = bu_vls_addr(&plist);
     av[4] = (char *)0;
 
@@ -10437,16 +10437,16 @@
     gdvp->gdv_view->gv_mode = TCLCAD_RECTANGLE_MODE;
 
     ac = 4;
-    av[0] = "rect";
-    av[1] = "dim";
-    av[2] = "0";
-    av[3] = "0";
+    av[0] = (char *)"rect";
+    av[1] = (char *)"dim";
+    av[2] = (char *)"0";
+    av[3] = (char *)"0";
     av[4] = (char *)0;
     (void)ged_rect(gedp, ac, (const char **)av);
 
     bu_vls_printf(&x_vls, "%d", (int)gdvp->gdv_view->gv_prevMouseX);
     bu_vls_printf(&y_vls, "%d", (int)gdvp->gdv_view->gv_prevMouseY);
-    av[1] = "pos";
+    av[1] = (char *)"pos";
     av[2] = bu_vls_addr(&x_vls);
     av[3] = bu_vls_addr(&y_vls);
     (void)ged_rect(gedp, ac, (const char **)av);
@@ -10454,9 +10454,9 @@
     bu_vls_free(&y_vls);
 
     ac = 3;
-    av[0] = "rect";
-    av[1] = "draw";
-    av[2] = "1";
+    av[0] = (char *)"rect";
+    av[1] = (char *)"draw";
+    av[2] = (char *)"1";
     av[3] = (char *)0;
     (void)ged_rect(gedp, ac, (const char **)av);
 
@@ -11346,7 +11346,7 @@
 
 	bu_vls_init(&save_result);
 
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[1];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -11378,7 +11378,7 @@
 
 	bu_vls_init(&save_result);
 
-	av[0] = "draw";
+	av[0] = (char *)"draw";
 	av[1] = (char *)argv[1];
 	av[2] = (char *)0;
 	to_edit_redraw(gedp, 2, (const char **)av);
@@ -11762,9 +11762,9 @@
 	sprintf(scale, "%f", gdvp->gdv_view->gv_scale * 2.0);
 
 	av[0] = (char *)argv[0];
-	av[1] = "-o";
+	av[1] = (char *)"-o";
 	av[2] = center;
-	av[3] = "-s";
+	av[3] = (char *)"-s";
 	av[4] = scale;
 	av[5] = (char *)argv[2];
 	av[6] = (char *)argv[3];
@@ -11773,7 +11773,7 @@
 	ret = ged_make(gedp, 7, (const char **)av);
 
 	if (ret == GED_OK) {
-	    av[0] = "draw";
+	    av[0] = (char *)"draw";
 	    av[1] = (char *)argv[2];
 	    av[2] = (char *)0;
 	    to_autoview_func(gedp, 2, (const char **)av, ged_draw, (char *)0, TO_UNLIMITED);
@@ -11851,8 +11851,8 @@
 	if (gdvp->gdv_view->gv_grid.ggs_snap) {
 
 	    gedp->ged_gvp = gdvp->gdv_view;
-	    av[0] = "grid";
-	    av[1] = "vsnap";
+	    av[0] = (char *)"grid";
+	    av[1] = (char *)"vsnap";
 	    av[2] = '\0';
 	    ged_grid(gedp, 2, (const char **)av);
 	}
@@ -11998,7 +11998,7 @@
     char *av[2];
     int aflag = 0;
 
-    av[0] = "who";
+    av[0] = (char *)"who";
     av[1] = (char *)0;
     ret = ged_who(gedp, 1, (const char **)av);
 
@@ -12603,7 +12603,7 @@
     const char *av[3];
 
     gdvp->gdv_gop->go_gedp->ged_gvp = gdvp->gdv_view;
-    av[0] = "autoview";
+    av[0] = (char *)"autoview";
     av[1] = scale;
     av[2] = NULL;
 
Index: src/sig/smod.c
===================================================================
--- src/sig/smod.c	(revision 54124)
+++ src/sig/smod.c	(working copy)
@@ -45,7 +45,7 @@
 #define BUFLEN 65536
 
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 
 int numop = 0;		/* number of operations */
 int op[256];		/* operations */
@@ -109,7 +109,7 @@
     if (bu_optind >= argc) {
 	if (isatty((int)fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
     } else {
 	char *ifname;
 	file_name = argv[bu_optind];
Index: src/sig/umod.c
===================================================================
--- src/sig/umod.c	(revision 54124)
+++ src/sig/umod.c	(working copy)
@@ -38,7 +38,7 @@
 #include "vmath.h"
 
 
-char *progname = "umod";
+const char *progname = "umod";
 char *file_name = NULL;
 
 
@@ -107,7 +107,7 @@
     if ( bu_optind >= argc )  {
 	if ( isatty((int)fileno(stdin)) )
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
     } else {
 	char *ifname;
 	file_name = argv[bu_optind];
Index: src/sig/istats.c
===================================================================
--- src/sig/istats.c	(revision 54124)
+++ src/sig/istats.c	(working copy)
@@ -45,7 +45,7 @@
 /*
  * P A R S E _ A R G S --- Parse through command line flags
  */
-int parse_args(int ac, char **av, char *progname)
+int parse_args(int ac, char **av, const char *progname)
 {
     int c;
 
@@ -108,7 +108,7 @@
  */
 int main(int ac, char *av[])
 {
-    char *progname = "(noname)";
+    const char *progname = "(noname)";
     int arg_index;
 
     /* parse command flags
Index: src/sig/dmod.c
===================================================================
--- src/sig/dmod.c	(revision 54124)
+++ src/sig/dmod.c	(working copy)
@@ -106,7 +106,7 @@
     if ( bu_optind >= argc )  {
 	if ( isatty(fileno(stdin)) )
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/sig/ustats.c
===================================================================
--- src/sig/ustats.c	(revision 54124)
+++ src/sig/ustats.c	(working copy)
@@ -34,8 +34,8 @@
 #include "bu.h"
 
 
-char *options = "h";
-char *progname = "(noname)";
+const char *options = "h";
+const char *progname = "(noname)";
 
 /*
  * U S A G E --- tell user how to invoke this program, then exit
Index: src/sig/imod.c
===================================================================
--- src/sig/imod.c	(revision 54124)
+++ src/sig/imod.c	(working copy)
@@ -38,7 +38,7 @@
 #include "vmath.h"
 
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 char *file_name = NULL;
 
 
@@ -107,7 +107,7 @@
     if ( bu_optind >= argc )  {
 	if ( isatty((int)fileno(stdin)) )
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
     } else {
 	char *ifname;
 	file_name = argv[bu_optind];
Index: src/liboptical/sh_light.c
===================================================================
--- src/liboptical/sh_light.c	(revision 54124)
+++ src/liboptical/sh_light.c	(working copy)
@@ -903,7 +903,7 @@
     int light_visible = 0;
     int air_sols_seen = 0;
     int is_proc;
-    char *reason = "???";
+    const char *reason = "???";
 
 #ifdef RT_MULTISPECTRAL
     struct bn_tabdata *ms_filter_color = BN_TABDATA_NULL;
Index: src/liboptical/photonmap.c
===================================================================
--- src/liboptical/photonmap.c	(revision 54124)
+++ src/liboptical/photonmap.c	(working copy)
@@ -345,7 +345,7 @@
 
 
 int
-CheckMaterial(char *cmp, char *MS)
+CheckMaterial(const char *cmp, char *MS)
 {
     size_t i;
 
Index: src/liboptical/sh_grass.c
===================================================================
--- src/liboptical/sh_grass.c	(revision 54124)
+++ src/liboptical/sh_grass.c	(working copy)
@@ -257,7 +257,7 @@
 
 
 static void
-print_plant(char *str, const struct plant *plant)
+print_plant(const char *str, const struct plant *plant)
 {
     int blade, seg;
 
@@ -1243,7 +1243,7 @@
      * the number of times we've made a full step in the X direction.
      */
     for (n=X; n < Z; n++) {
-	char *s;
+	const char *s;
 	if (n == X) s="X";
 	else s="Y";
 
Index: src/liboptical/sh_camo.c
===================================================================
--- src/liboptical/sh_camo.c	(revision 54124)
+++ src/liboptical/sh_camo.c	(working copy)
@@ -214,7 +214,7 @@
 
 
 HIDDEN int
-setup(register struct region *rp, struct bu_vls *matparm, genptr_t *dpp, struct rt_i *rtip, char *parameters, struct camo_specific defaults)
+setup(register struct region *rp, struct bu_vls *matparm, genptr_t *dpp, struct rt_i *rtip, const char *parameters, struct camo_specific defaults)
 {
 /* pointer to reg_udata in *rp */
 
Index: src/shapes/fence.c
===================================================================
--- src/shapes/fence.c	(revision 54124)
+++ src/shapes/fence.c	(working copy)
@@ -38,7 +38,7 @@
 
 /* command-line options are described in the parseArguments function
  */
-char *options="IiDdVvO:o:N:n:U:u:H:h:L:l:R:r:J:j:A:a:T:t:B:b:C:c:F:f:P:p:M:m:W:w:S:s:E:e:G:g:XxZz";
+const char *options="IiDdVvO:o:N:n:U:u:H:h:L:l:R:r:J:j:A:a:T:t:B:b:C:c:F:f:P:p:M:m:W:w:S:s:E:e:G:g:XxZz";
 
 /*
  * these variables control the "behavior" of this program's output if
@@ -122,7 +122,7 @@
  * displayed when an invalid command line argument is entered or if
  * the user explicitly requests assistance.
  ***************************************/
-void argumentHelp(FILE *fp, char *progname, char *message)
+void argumentHelp(FILE *fp, char *progname, const char *message)
 {
 
     fflush(stdout);
@@ -644,7 +644,7 @@
  * passed to some fp (usually DEFAULT_DEBUG_OUTPUT or
  * DEFAULT_VERBOSE_OUTPUT).
  *************************/
-void printMatrix(FILE *fp, char *n, fastf_t *m)
+void printMatrix(FILE *fp, const char *n, fastf_t *m)
 {
     int i = 0;
     fprintf(fp, "\n-----%s------\n", n);
@@ -685,7 +685,7 @@
  * comprise the base, prefix, and suffix of the name.  any three are
  * optional by sending a NULL parameter
  *****************************************/
-char *getPrePostName(char *prefix, char *base, char *suffix)
+char *getPrePostName(char *prefix, char *base, const char *suffix)
 {
     static char newname[DEFAULT_MAXNAMELENGTH];
 
Index: src/shapes/fence.h
===================================================================
--- src/shapes/fence.h	(revision 54124)
+++ src/shapes/fence.h	(working copy)
@@ -255,13 +255,13 @@
 #endif
 
 
-    extern void argumentHelp(FILE *fp, char *progname, char *message);
+    extern void argumentHelp(FILE *fp, char *progname, const char *message);
     extern void argumentExamples(FILE *fp, char *progname);
     extern void defaultSettings(FILE *fp);
     extern int parseArguments(int argc, char *argv[]);
-    extern void printMatrix(FILE *fp, char *n, mat_t m);
+    extern void printMatrix(FILE *fp, const char *n, mat_t m);
     extern char *getName(const char *base, int id, const char *suffix);
-    extern char *getPrePostName(char *prefix, char *base, char *suffix);
+    extern char *getPrePostName(char *prefix, char *base, const char *suffix);
 
     extern int generateFence_s(struct rt_wdb *fp, char *fencename, point_t startposition, point_t endposition);
     extern int generateFence(struct rt_wdb *fp, char *fencename, point_t startposition, vect_t heightvector, vect_t widthvector);
Index: src/shapes/coil.c
===================================================================
--- src/shapes/coil.c	(revision 54124)
+++ src/shapes/coil.c	(working copy)
@@ -315,7 +315,7 @@
 ReadArgs(int argc, char **argv, struct bu_list *sections, fastf_t *mean_outer_diameter, fastf_t *wire_diameter, fastf_t *helix_angle, fastf_t *pitch, int *nt, int *start_cap_type, int *end_cap_type, fastf_t *overall_length, int *lhf)
 {
     int c = 0;
-    char *options="d:w:h:p:n:s:e:S:l:L";
+    const char *options="d:w:h:p:n:s:e:S:l:L";
     int numturns, stype, etype, lhflag;
     float mean_od, wired, h_angle, ptch, lngth;
     int d1, d6;
Index: src/rt/reshoot.c
===================================================================
--- src/rt/reshoot.c	(revision 54124)
+++ src/rt/reshoot.c	(working copy)
@@ -87,7 +87,7 @@
 #include "./rtuif.h"
 
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 
 /**
  * @struct shot
@@ -138,7 +138,7 @@
  *	U S A G E --- tell user how to invoke this program, then exit
  */
 void
-usage(char *s)
+usage(const char *s)
 {
     if (s) (void)fputs(s, stderr);
     bu_exit(1, "Usage: %s geom.g obj [obj...] < rayfile \n", progname);
Index: src/rt/opt.c
===================================================================
--- src/rt/opt.c	(revision 54124)
+++ src/rt/opt.c	(working copy)
@@ -211,7 +211,7 @@
 		break;
 	    case 'j':
 	    {
-		register char	*cp = bu_optarg;
+		register char	*cp = (char *)bu_optarg;
 
 		sub_xmin = atoi(cp);
 		while ( (*cp >= '0' && *cp <= '9') )  cp++;
@@ -274,7 +274,7 @@
 	    {
 		char		buf[128];
 		int		r, g, b;
-		register char	*cp = bu_optarg;
+		register char	*cp = (char *)bu_optarg;
 
 		r = atoi(cp);
 		while ( (*cp >= '0' && *cp <= '9') )  cp++;
@@ -350,7 +350,7 @@
 		    jitter = 1;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 'D':
 		desiredframe = atoi( bu_optarg );
@@ -428,7 +428,7 @@
 
 		/* Select lighting model # */
 		lightmodel= 1;	/* Initialize with Full Lighting Model */
-		item= strtok(bu_optarg, ",");
+		item= strtok((char *)bu_optarg, ",");
 		lightmodel= atoi(item);
 
 		if (lightmodel == 7) {
@@ -462,12 +462,12 @@
 	    break;
 	    case 'O':
 		/* Output pixel file name, double precision format */
-		outputfile = bu_optarg;
+		outputfile = (char *)bu_optarg;
 		doubles_out = 1;
 		break;
 	    case 'o':
 		/* Output pixel file name, unsigned char format */
-		outputfile = bu_optarg;
+		outputfile = (char *)bu_optarg;
 		doubles_out = 0;
 		break;
 	    case 'p':
@@ -550,7 +550,7 @@
 	    case 'b':
 		/* Specify a single pixel to be done */
 		/* Actually processed in do_frame() */
-		string_pix_start = bu_optarg;
+		string_pix_start = (char *)bu_optarg;
 		npsw = 1;	/* Cancel running in parallel */
 		break;
 	    case 'f':
@@ -570,7 +570,7 @@
 		/* View aspect */
 
 		fastf_t xx, yy;
-		register char *cp = bu_optarg;
+		register char *cp = (char *)bu_optarg;
 
 		xx = atof(cp);
 		while ( (*cp >= '0' && *cp <= '9')
@@ -600,7 +600,7 @@
 		break;
 	    case '+':
 	    {
-		register char	*cp = bu_optarg;
+		register char	*cp = (char *)bu_optarg;
 		switch (*cp) {
 		    case 't':
 			output_is_binary = 0;
Index: src/libbn/tcl.c
===================================================================
--- src/libbn/tcl.c	(revision 54124)
+++ src/libbn/tcl.c	(working copy)
@@ -184,7 +184,7 @@
 
 
 static struct math_func_link {
-    char *name;
+    const char *name;
     void (*func)();
 } math_funcs[] = {
     {"bn_dist_pt2_lseg2",	(void (*)())bn_dist_pt2_lseg2},
Index: src/lgt/trie.c
===================================================================
--- src/lgt/trie.c	(revision 54124)
+++ src/lgt/trie.c	(working copy)
@@ -436,9 +436,9 @@
 	}
 	else
 	    if ( i == DEL )
-		return	"DL";
+		return	(char *)"DL";
 	    else
-		return	"EOF";
+		return	(char *)"EOF";
     return	buf;
 }
 
Index: src/lgt/execshell.c
===================================================================
--- src/lgt/execshell.c	(revision 54124)
+++ src/lgt/execshell.c	(working copy)
@@ -88,7 +88,7 @@
 		||	BU_STR_EQUAL( arg_sh, TCSH )
 		||	BU_STR_EQUAL( arg_sh, CSH )
 	    )
-	    arg_sh = DFL_SHELL;
+	    arg_sh = (char *)DFL_SHELL;
 	args[0] = arg_sh;
 	args[1] = NULL;
     }
@@ -123,7 +123,7 @@
 	    (void) signal( SIGQUIT, quit_sig );
 	    if ( pid == -1 ) {
 		/* No children. */
-		loc_Perror( "wait" );
+		loc_Perror( (char *)"wait" );
 		return errno;
 	    }
 	    switch ( stat_loc & 0377 ) {
Index: src/lgt/hmenu.c
===================================================================
--- src/lgt/hmenu.c	(revision 54124)
+++ src/lgt/hmenu.c	(working copy)
@@ -95,9 +95,9 @@
     HMitem	*citemp;
     for ( citemp = itemp; citemp->text != NULL; citemp++ )
     {
-	free( citemp->text );
+	free( (char *)citemp->text );
 	if ( citemp->help != NULL )
-	    free( citemp->help );
+	    free( (char *)citemp->help );
     }
     free( (char *) itemp );
     return;
@@ -424,7 +424,7 @@
 	    {
 		size_t len = strlen( gitemp->text ) + 1;
 		Alloc(itemp->text, char, len);
-		bu_strlcpy( itemp->text, gitemp->text, len );
+		bu_strlcpy( (char *)itemp->text, gitemp->text, len );
 	    }
 	    else
 		itemp->text = NULL;
@@ -432,7 +432,7 @@
 	    {
 		size_t len = strlen( gitemp->help ) + 1;
 		Alloc( itemp->help, char, len);
-		bu_strlcpy( itemp->help, gitemp->help, len );
+		bu_strlcpy( (char *)itemp->help, gitemp->help, len );
 	    }
 	    else
 		itemp->help = NULL;
Index: src/lgt/do_options.c
===================================================================
--- src/lgt/do_options.c	(revision 54124)
+++ src/lgt/do_options.c	(working copy)
@@ -391,7 +391,7 @@
     buf[1] = '\0';
     /* Set up argument vector for function. */
     local_argv[0] = buf;
-    local_argv[1] = strtok(arg, " \t");	/* Arguments to option. */
+    local_argv[1] = strtok(arg, (char *)" \t");	/* Arguments to option. */
     /* Look for multiple tokens in argument. */
     for (i = 2;
 	 i < 5
@@ -684,7 +684,7 @@
 static int
 f_Batch()
 {
-    static char *batch_com[8];
+    static const char *batch_com[8];
     char script[MAXPATHLEN];
     FILE *fp = NULL;
 
@@ -813,7 +813,7 @@
 {
     char buf[10];
     char *ar[3];
-    ar[1] = "0";
+    ar[1] = (char *)"0";
     ar[2] = buf;
     (void) sprintf(ar[2], "%d", grid_sz-1);
     (void) f_Grid_X_Pos(ar);
@@ -1108,7 +1108,7 @@
 				    }
 				    view_size *= scale;
 				    /* Scale down view size. */
-				    ar[0] = "G";
+				    ar[0] = (char *)"G";
 				    ar[1] = buf;
 				    ar[2] = NULL;
 				    (void) sprintf(ar[1], "%d", grid_sz);
@@ -1905,7 +1905,7 @@
     OcList *oclist;
     static char reg_name[MAX_LN];
     static int temperature = 0;
-    oclist = get_Region_Name(reg_name, MAX_LN, "Region name ? ");
+    oclist = get_Region_Name(reg_name, MAX_LN, (char *)"Region name ? ");
     (void) sprintf(prompt,
 		   "Temperature for region(s) ? (%d) ",
 		   temperature
@@ -2907,7 +2907,7 @@
 	    return -1;
 	}
 	stashed_args = args;
-	args[0] = "!";
+	args[0] = (char *)"!";
 	args[1] = NULL;
     }
     /* Skip leading blanks. */
@@ -2955,7 +2955,7 @@
 	    (void) fputs("completed successfully.", stdout);
 	(void) get_Input(input_ln, BUFSIZ, "Continue ? [y|n](y) ");
 	if (input_ln[0] == 'n') {
-	    args[0] = "!";
+	    args[0] = (char *)"!";
 	    args[1] = NULL;
 	    goto exec_start;
 	}
@@ -3267,7 +3267,7 @@
 	/* If detached, and at EOF, do at least 1 picture. */
 	if (! tty && first_time_through) {
 	    first_time_through = FALSE;
-	    args[0] = "R";
+	    args[0] = (char *)"R";
 	    args[1] = NULL;
 	    return;
 	} else
@@ -3275,7 +3275,7 @@
 		/* User types interrupt, EOT, or EOF encountered
 		   from detached process.
 		*/
-		args[0] = "q";
+		args[0] = (char *)"q";
 		args[1] = NULL;
 		return;
 	    }
@@ -3291,7 +3291,7 @@
     if ((args[0] = strtok(input_ln, " \t")) == NULL) {
 	if (! tty)
 	    bu_log("Blank line input.\n");
-	args[0] = "#";
+	args[0] = (char *)"#";
 	args[1] = NULL;
 	return;
     }
@@ -3445,7 +3445,7 @@
     {
 	switch (c) {
 	    default :
-		if (! user_Opt(c, bu_optarg)) {
+		if (! user_Opt(c, (char *)bu_optarg)) {
 		    (void) printf("Failure of user_Opt(%c)", c);
 		    return 0;
 		}
Index: src/lgt/hmenu.h
===================================================================
--- src/lgt/hmenu.h	(revision 54124)
+++ src/lgt/hmenu.h	(working copy)
@@ -38,8 +38,8 @@
 */
 typedef struct HMitem
 {
-    char		*text;	/* menu item string			*/
-    char		*help;	/* help string				*/
+    const char		*text;	/* menu item string			*/
+    const char		*help;	/* help string				*/
     struct HMenu	*next;	/* sub-menu pointer or NULL		*/
     void		(*dfn)(), (*bfn)();
     int		(*hfn)();
Index: src/lgt/fb.c
===================================================================
--- src/lgt/fb.c	(revision 54124)
+++ src/lgt/fb.c	(working copy)
@@ -43,7 +43,7 @@
 fb_Setup(char *file, int size)
 {
     if ( BU_STR_EQUAL( file, "/dev/remote" ) )
-	file = "/dev/debug";
+	file = (char *)"/dev/debug";
     prnt_Event( "Opening device..." );
 
     if (((fbiop = fb_open(file[0] == '\0' ? NULL : file, size, size)) == FBIO_NULL) ||
Index: src/libdm/query.c
===================================================================
--- src/libdm/query.c	(revision 54124)
+++ src/libdm/query.c	(working copy)
@@ -153,7 +153,7 @@
 	if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
 	    if (XQueryExtension(dpy, "GLX", &return_val, &return_val, &return_val)) {
 		XCloseDisplay(dpy);
-		return "ogl";
+		return (char *)"ogl";
 	    }
 	    XCloseDisplay(dpy);
 	}
@@ -165,13 +165,13 @@
 	Display *dpy;
 	if ((dpy = XOpenDisplay(dpy_string)) != NULL) {
 	    XCloseDisplay(dpy);
-	    return "X";
+	    return (char *)"X";
 	}
     }
 #endif
 
 #ifdef DM_TK
-    return "tk";
+    return (char *)"tk";
 #else
     return "nu";
 #endif
Index: src/libdm/dm-X.c
===================================================================
--- src/libdm/dm-X.c	(revision 54124)
+++ src/libdm/dm-X.c	(working copy)
@@ -1697,8 +1697,8 @@
     0,                            /* no stereo */
     PLOTBOUND,			/* zoom-in limit */
     1,				/* bound flag */
-    "X",
-    "X Window System (X11)",
+    (char *)"X",
+    (char *)"X Window System (X11)",
     DM_TYPE_X,
     1,
     0,
Index: src/libdm/dm-Null.c
===================================================================
--- src/libdm/dm-Null.c	(revision 54124)
+++ src/libdm/dm-Null.c	(working copy)
@@ -296,8 +296,8 @@
     0,				/* no stereo */
     0.0,			/* zoom-in limit */
     1,				/* bound flag */
-    "nu",
-    "Null Display",
+    (char *)"nu",
+    (char *)"Null Display",
     DM_TYPE_NULL,
     0,/* top */
     0,/* width */
Index: src/libdm/dm-plot.c
===================================================================
--- src/libdm/dm-plot.c	(revision 54124)
+++ src/libdm/dm-plot.c	(working copy)
@@ -539,8 +539,8 @@
     0,				/* no stereo */
     PLOTBOUND,			/* zoom-in limit */
     1,				/* bound flag */
-    "plot",
-    "Screen to UNIX-Plot",
+    (char *)"plot",
+    (char *)"Screen to UNIX-Plot",
     DM_TYPE_PLOT,
     0,
     0,
Index: src/libdm/dm-tk.c
===================================================================
--- src/libdm/dm-tk.c	(revision 54124)
+++ src/libdm/dm-tk.c	(working copy)
@@ -846,8 +846,8 @@
     0,				/* no stereo */
     PLOTBOUND,			/* zoom-in limit */
     1,				/* bound flag */
-    "Tk",
-    "Tk Abstraction Layer",
+    (char *)"Tk",
+    (char *)"Tk Abstraction Layer",
     DM_TYPE_TK,
     1,
     0,
Index: src/libdm/dm-ogl.c
===================================================================
--- src/libdm/dm-ogl.c	(revision 54124)
+++ src/libdm/dm-ogl.c	(working copy)
@@ -173,8 +173,8 @@
     0,                          /* no stereo by default */
     1.0,			/* zoom-in limit */
     1,				/* bound flag */
-    "ogl",
-    "X Windows with OpenGL graphics",
+    (char *)"ogl",
+    (char *)"X Windows with OpenGL graphics",
     DM_TYPE_OGL,
     1,
     0,
@@ -1781,7 +1781,7 @@
 HIDDEN int
 ogl_drawLine2D(struct dm *dmp, fastf_t X1, fastf_t Y1, fastf_t X2, fastf_t Y2)
 {
-    return drawLine2D(dmp, X1, Y1, X2, Y2, "ogl_drawLine2D()\n");
+    return drawLine2D(dmp, X1, Y1, X2, Y2, (char *)"ogl_drawLine2D()\n");
 }
 
 
@@ -1792,7 +1792,7 @@
 HIDDEN int
 ogl_drawLine3D(struct dm *dmp, point_t pt1, point_t pt2)
 {
-    return drawLine3D(dmp, pt1, pt2, "ogl_drawLine3D()\n", wireColor);
+    return drawLine3D(dmp, pt1, pt2, (char *)"ogl_drawLine3D()\n", wireColor);
 }
 
 
@@ -1803,7 +1803,7 @@
 HIDDEN int
 ogl_drawLines3D(struct dm *dmp, int npoints, point_t *points, int sflag)
 {
-    return drawLines3D(dmp, npoints, points, sflag, "ogl_drawLine3D()\n", wireColor);
+    return drawLines3D(dmp, npoints, points, sflag, (char *)"ogl_drawLine3D()\n", wireColor);
 }
 
 
Index: src/libdm/dm-ps.c
===================================================================
--- src/libdm/dm-ps.c	(revision 54124)
+++ src/libdm/dm-ps.c	(working copy)
@@ -543,8 +543,8 @@
     0,                            /* no stereo */
     PLOTBOUND,			/* zoom-in limit */
     1,				/* bound flag */
-    "ps",
-    "Screen to PostScript",
+    (char *)"ps",
+    (char *)"Screen to PostScript",
     DM_TYPE_PS,
     0,
     0,
Index: src/fbserv/fbserv.c
===================================================================
--- src/fbserv/fbserv.c	(revision 54124)
+++ src/fbserv/fbserv.c	(working copy)
@@ -141,7 +141,7 @@
 		height = width = 1024;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 	    case 'S':
@@ -506,7 +506,7 @@
 	if (error_count++ < 60) {
 	    continue;
 	}
-	comm_error("Unable to start the stand-alone framebuffer daemon after 60 seconds, giving up.");
+	comm_error((char *)"Unable to start the stand-alone framebuffer daemon after 60 seconds, giving up.");
 	return 1;
     }
 
@@ -577,7 +577,7 @@
     for ( i = MAX_CLIENTS-1; i >= 0; i-- )  {
 	if ( clients[i] == NULL )  continue;
 	if ( pkg_send( MSG_ERROR, outbuf, want, clients[i] ) != want )  {
-	    comm_error("pkg_send error in fb_log, message was:\n");
+	    comm_error((char *)"pkg_send error in fb_log, message was:\n");
 	    comm_error(outbuf);
 	} else {
 	    nsent++;
Index: src/liborle/rle.c
===================================================================
--- src/liborle/rle.c	(revision 54124)
+++ src/liborle/rle.c	(working copy)
@@ -226,7 +226,7 @@
 }
 
 void
-prnt_XSetup(char *msg, register Xtnd_Rle_Header *setup)
+prnt_XSetup(const char *msg, register Xtnd_Rle_Header *setup)
 {
     (void) fprintf(stderr, "%s : \n", msg);
     (void) fprintf(stderr,
Index: src/libbu/which.c
===================================================================
--- src/libbu/which.c	(revision 54124)
+++ src/libbu/which.c	(working copy)
@@ -43,7 +43,7 @@
 
     char PATH[MAXPATHENV];
 
-    char *directory = NULL;
+    const char *directory = NULL;
     char *position = NULL;
 
     if (UNLIKELY(bu_debug & BU_DEBUG_PATHS)) {
Index: src/libbu/getopt.c
===================================================================
--- src/libbu/getopt.c	(revision 54124)
+++ src/libbu/getopt.c	(working copy)
@@ -42,7 +42,7 @@
 int
 bu_getopt(int nargc, char * const nargv[], const char *ostr)
 {
-    static char *place = EMSG;	/* option letter processing */
+    static const char *place = EMSG;	/* option letter processing */
     register char *oli;		/* option letter list index */
 
     if (*place=='\0') {
Index: src/libbu/tests/bu_str_isprint.c
===================================================================
--- src/libbu/tests/bu_str_isprint.c	(revision 54124)
+++ src/libbu/tests/bu_str_isprint.c	(working copy)
@@ -28,7 +28,7 @@
 
 
 int
-test_str_isprint(char *inp , int exp)
+test_str_isprint(const char *inp , int exp)
 {
     int res;
     res = bu_str_isprint(inp);
Index: src/libbu/tests/bu_redblack.c
===================================================================
--- src/libbu/tests/bu_redblack.c	(revision 54124)
+++ src/libbu/tests/bu_redblack.c	(working copy)
@@ -63,7 +63,7 @@
 {
     struct bu_rb_tree *testTree;
     void *searchedValue;
-    char *sources[] = {"h", "e", "a", "l", "l", "o"};
+    const char *sources[] = {"h", "e", "a", "l", "l", "o"};
     int i = 0;
     int passed = 0;
 
@@ -72,12 +72,12 @@
 	return 1;
     }
 
-    testTree = bu_rb_create1("TestingTree", compareFunc);
+    testTree = bu_rb_create1((char *)"TestingTree", compareFunc);
     for (i = 0; i < 6; i++)
-	bu_rb_insert(testTree, sources[i]);
+	bu_rb_insert(testTree, (char *)sources[i]);
 
     printf("SEARCH TEST: \n\tSEARCHING AN EXISTING VALUE:\n");
-    searchedValue = bu_rb_search(testTree, 0, "h");
+    searchedValue = bu_rb_search(testTree, 0, (char *)"h");
 
     if (searchedValue == NULL) {
 	printf("\t\t\t[FAILED]\n\t\t\tShould be h \n");
@@ -87,7 +87,7 @@
     }
 
     printf("\tSEARCHING A NONEXISTENT VALUE:\n");
-    searchedValue = bu_rb_search(testTree, 0, "not");
+    searchedValue = bu_rb_search(testTree, 0, (char *)"not");
 
     if (searchedValue == 0) {
 	printf("\t\t\t[PASSED]\n");
@@ -97,11 +97,11 @@
     }
 
     printf("DELETE TEST: \n\tDELETING AN EXISTENT VALUE:\n");
-    searchedValue = bu_rb_search(testTree, 0, "a");
+    searchedValue = bu_rb_search(testTree, 0, (char *)"a");
     bu_rb_delete(testTree, 0);
 
     printf("\tSEARCHING THE SAME VALUE AFTER DELETION \n");
-    searchedValue = bu_rb_search(testTree, 0, "a");
+    searchedValue = bu_rb_search(testTree, 0, (char *)"a");
 
     if (searchedValue == 0) {
 	printf("\t\t\t[PASSED]\n");
@@ -116,7 +116,7 @@
     printf("\nPREORDER:\n");
     bu_rb_walk(testTree, 0, displayNode, 0);
     bu_rb_diagnose_tree(testTree, 0, 0);
-    searchedValue = bu_rb_search(testTree, 0, "h");
+    searchedValue = bu_rb_search(testTree, 0, (char *)"h");
 
     printf("\nPREORDER AFTER SEARCH:\n");
     bu_rb_walk(testTree, 0, displayNode, 0);
Index: src/libbu/mappedfile.c
===================================================================
--- src/libbu/mappedfile.c	(revision 54124)
+++ src/libbu/mappedfile.c	(working copy)
@@ -295,7 +295,7 @@
 
     if (mp) {
 	bu_free(mp->name, "mp->name");
-	if (mp->appl) bu_free(mp->appl, "mp->appl");
+	if (mp->appl) bu_free((genptr_t)mp->appl, "mp->appl");
 	/* Don't free mp->buf here, it might not be bu_malloced but mmaped */
 	bu_free(mp, "mp from bu_open_mapped_file fail");
     }
Index: src/libbu/whereis.c
===================================================================
--- src/libbu/whereis.c	(revision 54124)
+++ src/libbu/whereis.c	(working copy)
@@ -52,7 +52,7 @@
 
     char PATH[MAXPATHENV];
 
-    char *directory = NULL;
+    const char *directory = NULL;
     char *position = NULL;
 
     if (UNLIKELY(bu_debug & BU_DEBUG_PATHS)) {
Index: src/libbu/fnmatch.c
===================================================================
--- src/libbu/fnmatch.c	(revision 54124)
+++ src/libbu/fnmatch.c	(working copy)
@@ -163,7 +163,7 @@
 
 
 typedef struct _charclass {
-    char *idstring;		/* identifying string */
+    const char *idstring;	/* identifying string */
     int (*checkfun)(int);	/* testing function */
 } CHARCLASS;
 
Index: src/libbu/globals.c
===================================================================
--- src/libbu/globals.c	(revision 54124)
+++ src/libbu/globals.c	(working copy)
@@ -95,7 +95,7 @@
 int bu_opterr = 1;
 int bu_optind = 1;
 int bu_optopt = 0;
-char *bu_optarg = NULL;
+const char *bu_optarg = NULL;
 
 
 /*
Index: src/libbu/vfont.c
===================================================================
--- src/libbu/vfont.c	(revision 54124)
+++ src/libbu/vfont.c	(working copy)
@@ -48,7 +48,7 @@
 
 
 struct vfont *
-vfont_get(char *font)
+vfont_get(const char *font)
 {
     register struct vfont *vfp = VFONT_NULL;
     register FILE *fp = NULL;
Index: src/burst/trie.c
===================================================================
--- src/burst/trie.c	(revision 54124)
+++ src/burst/trie.c	(working copy)
@@ -235,9 +235,9 @@
 	    buf[2] = NUL;
 	} else
 	    if (i == DEL)
-		return "DL";
+		return (char *)"DL";
 	    else
-		return "EOF";
+		return (char *)"EOF";
     return buf;
 }
 
Index: src/burst/Hm.c
===================================================================
--- src/burst/Hm.c	(revision 54124)
+++ src/burst/Hm.c	(working copy)
@@ -212,9 +212,9 @@
 	 citemp->text != (char *) NULL;
 	 citemp++, count++
 	) {
-	MmStrFree(citemp->text);
+	MmStrFree((genptr_t)citemp->text);
 	if (citemp->help != (char *) NULL)
-	    MmStrFree(citemp->help);
+	    MmStrFree((genptr_t)citemp->help);
     }
     MmVFree(count, HmItem, itemp);
     return;
Index: src/burst/Hm.h
===================================================================
--- src/burst/Hm.h	(revision 54124)
+++ src/burst/Hm.h	(working copy)
@@ -76,8 +76,8 @@
 
 typedef struct
 {
-    char *text;			/* menu item string */
-    char *help;			/* help string */
+    const char *text;			/* menu item string */
+    const char *help;			/* help string */
     struct HmMenu *next;	/* sub-menu pointer or NULL */
     void (*dfn)();
     void (*bfn)();
Index: src/burst/ui.c
===================================================================
--- src/burst/ui.c	(revision 54124)
+++ src/burst/ui.c	(working copy)
@@ -95,10 +95,10 @@
 	}
 
 typedef struct {
-    char *prompt;
+    const char *prompt;
     char buffer[LNBUFSZ];
-    char *fmt;
-    char *range;
+    const char *fmt;
+    const char *range;
 } Input;
 
 /* local menu functions, names all start with M */
@@ -151,8 +151,8 @@
 typedef struct ftable Ftable;
 struct ftable
 {
-    char *name;
-    char *help;
+    const char *name;
+    const char *help;
     Ftable *next;
     Func *func;
 };
@@ -447,7 +447,7 @@
     if (! batchmode) {
 	int c;
 	char *p;
-	char *defaultp = ip->buffer;
+	const char *defaultp = ip->buffer;
 	if (*defaultp == NUL)
 	    defaultp = "no default";
 	if (ip->range != NULL)
@@ -1488,7 +1488,7 @@
     if (itemp != NULL) {
 	if ((itemptr = HmHit(&units_hmenu)) == (HmItem *) NULL)
 	    return;
-	unitstr = itemptr->text;
+	unitstr = (char *)itemptr->text;
     } else
 	unitstr = strtok(cmdptr, WHITESPACE);
     units = unitStrToInt(unitstr);
Index: src/burst/prnt.c
===================================================================
--- src/burst/prnt.c	(revision 54124)
+++ src/burst/prnt.c	(working copy)
@@ -123,7 +123,7 @@
 
 
 void
-locPerror(char *msg)
+locPerror(const char *msg)
 {
     if (errno > 0)
 	brst_log("%s: %s\n", msg, strerror(errno));
@@ -889,7 +889,7 @@
 }
 
 
-static char *usage[] =
+static const char *usage[] =
 {
     "Usage: burst [-b]",
     "\tThe -b option suppresses the screen display (for batch jobs).",
@@ -898,7 +898,7 @@
 void
 prntUsage()
 {
-    char **p = usage;
+    char **p = (char **)usage;
     while (*p != NULL)
 	(void) fprintf(stderr, "%s\n", *p++);
 }
Index: src/fbed/fbed.c
===================================================================
--- src/fbed/fbed.c	(revision 54124)
+++ src/fbed/fbed.c	(working copy)
@@ -104,7 +104,7 @@
 
 HIDDEN RGBpixel *pixel_Avg();
 HIDDEN int drawRect2D(Rect2D *rectp, unsigned char *pixelp);
-HIDDEN int getColor(unsigned char *pixelp, char *prompt, char *buffer);
+HIDDEN int getColor(unsigned char *pixelp, const char *prompt, char *buffer);
 HIDDEN int paintNonBorder(unsigned char *borderpix, Point *pt);
 HIDDEN int paintSolidRegion(unsigned char *regionpix, Point *pt);
 HIDDEN int popPoint(Point *pt, PtStack **spp);
@@ -116,7 +116,7 @@
 HIDDEN void init_Try(void);
 HIDDEN void fb_Paint(int x0, int y0, int x1, int y1, RGBpixel (*color));
 HIDDEN void fb_Wind(void);
-HIDDEN void get_Point(char *msg, Point *pointp);
+HIDDEN void get_Point(const char *msg, Point *pointp);
 HIDDEN void clip_Rect2D(Rect2D *rectp);
 HIDDEN void get_Rect2D(char *name, Rect2D *rectp);
 HIDDEN void fillRect2D(Rect2D *rectp, RGBpixel (*pixelp));
@@ -608,7 +608,7 @@
 }
 
 HIDDEN int
-getColor(unsigned char *pixelp, char *prompt, char *buffer)
+getColor(unsigned char *pixelp, const char *prompt, char *buffer)
 {
     static char promptbuf[PROMPT_LEN];
     static int red, grn, blu;
@@ -1130,7 +1130,7 @@
     {
 	Malloc_Bomb();
     }
-    bu_strlcpy( macro_entry->f_name, macro_name, strlen(macro_name)+1 );
+    bu_strlcpy( (char *)macro_entry->f_name, macro_name, strlen(macro_name)+1 );
     add_Try( macro_entry, macro_entry->f_name, &try_rootp );
     return 1;
 }
@@ -1440,7 +1440,7 @@
     static FILE	*rle_fp;
     static char *args[] =
 	{
-	    "rle-fb", rle_file_nm, NULL
+	    (char *)"rle-fb", rle_file_nm, NULL
 	};
     if ( ! get_Input( rle_file_nm, MAX_LN, "Enter RLE file name : " ) )
 	return 0;
@@ -1476,11 +1476,11 @@
     static char rle_file_nm[MAX_LN];
     static char *args[4] =
 	{
-	    "fb-rle", rle_file_nm, NULL, NULL
+	    (char *)"fb-rle", rle_file_nm, NULL, NULL
 	};
     if ( fb_getwidth(fbp) == 1024 )
     {
-	args[1] = "-h";
+	args[1] = (char *)"-h";
 	args[2] = rle_file_nm;
     }
     if ( ! get_Input( rle_file_nm, MAX_LN, "Enter RLE file name : " ) )
@@ -1622,7 +1622,7 @@
 HIDDEN int
 f_Set_Rect2D() /* Set current rectangle. */
 {
-    get_Rect2D( "rectangle", &current );
+    get_Rect2D( (char *)"rectangle", &current );
     return 1;
 }
 
@@ -2145,7 +2145,7 @@
 
 /*	g e t _ P o i n t ( ) */
 HIDDEN void
-get_Point(char *msg, Point *pointp)
+get_Point(const char *msg, Point *pointp)
 {
     int tag_point = -1;
     int c = NUL;
@@ -2259,9 +2259,9 @@
 	    buf[2] = NUL;
 	} else
 	    if ( i == DEL )
-		return "DL";
+		return (char *)"DL";
 	    else
-		return "EOF";
+		return (char *)"EOF";
     return buf;
 }
 
Index: src/fbed/execshell.c
===================================================================
--- src/fbed/execshell.c	(revision 54124)
+++ src/fbed/execshell.c	(working copy)
@@ -63,7 +63,7 @@
 	char *arg_sh = getenv( "SHELL" );
 	/* $SHELL, if set, DFL_SHELL otherwise. */
 	if ( arg_sh == NULL )
-	    arg_sh = DFL_SHELL;
+	    arg_sh = (char *)DFL_SHELL;
 	args[0] = arg_sh;
 	args[1] = NULL;
     }
Index: src/fbed/try.h
===================================================================
--- src/fbed/try.h	(revision 54124)
+++ src/fbed/try.h	(working copy)
@@ -25,7 +25,7 @@
 {
     int (*f_func)();		/* Function pointer. */
     char *f_buff;		/* Macro key-stroke buffer. */
-    char *f_name;		/* Function/macro name. */
+    const char *f_name;		/* Function/macro name. */
 }
 Func_Tab;
 #define FT_NULL	(Func_Tab *) NULL
Index: src/fbed/prnt.c
===================================================================
--- src/fbed/prnt.c	(revision 54124)
+++ src/fbed/prnt.c	(working copy)
@@ -45,7 +45,7 @@
 #define SCROLL_PR_MOVE()	MvCursor( 1, PROMPT_LINE - 1 )
 #define SCROLL_DL_MOVE()	MvCursor( 1, BOTTOM_STATUS_AREA + 1 )
 
-static char *usage[] =
+static const char *usage[] =
 {
     "",
     "fbed (2.1)",
@@ -89,7 +89,7 @@
     return;
 }
 
-static char *screen_template[] = {
+static const char *screen_template[] = {
 /*        1         2         3         4         5         6         7         8
 	  012345678901234567890123456789012345678901234567890123456789012345678901234567890
 */
@@ -102,7 +102,7 @@
 void
 init_Status(void)
 {
-    char **p = screen_template;
+    char **p = (char **)screen_template;
     int template_co;
     char buf[MAX_LN];
     template_co = Min( CO, MAX_LN );
@@ -132,7 +132,7 @@
 void
 prnt_Usage(void)
 {
-    char **p = usage;
+    char **p = (char **)usage;
     while ( *p )
 	(void) fprintf( stderr, "%s\n", *p++ );
     return;
Index: src/fbed/pos_pad.c
===================================================================
--- src/fbed/pos_pad.c	(revision 54124)
+++ src/fbed/pos_pad.c	(working copy)
@@ -42,7 +42,7 @@
 #define	PADSIZE		2200
 
 static	int pfd;
-static	char *padfile = "/dev/pad";
+static	const char *padfile = "/dev/pad";
 static	int npoints;
 
 int
Index: src/librt/db5_types.c
===================================================================
--- src/librt/db5_types.c	(revision 54124)
+++ src/librt/db5_types.c	(working copy)
@@ -42,8 +42,8 @@
     int major_code;
     int minor_code;
     int heed_minor;
-    char *tag;
-    char *description;
+    const char *tag;
+    const char *description;
 };
 
 
@@ -117,7 +117,7 @@
 	 tp->major_code != DB5_MAJORTYPE_RESERVED;
 	 ++tp) {
 	if ((tp->major_code == major) && !(tp->heed_minor)) {
-	    *tag = tp->tag;
+	    *tag = (char *)tp->tag;
 	    return 0;
 	}
     }
@@ -134,7 +134,7 @@
 	 tp->major_code != DB5_MAJORTYPE_RESERVED;
 	 ++tp) {
 	if ((tp->major_code == major) && !(tp->heed_minor)) {
-	    *descrip = tp->description;
+	    *descrip = (char *)tp->description;
 	    return 0;
 	}
     }
@@ -155,7 +155,7 @@
 	    if (tp->heed_minor)
 		found_minors = 1;
 	    if ((tp->minor_code == minor) || !found_minors) {
-		*tag = tp->tag;
+		*tag = (char *)tp->tag;
 		return 0;
 	    }
 	}
@@ -177,7 +177,7 @@
 	    if (tp->heed_minor)
 		found_minors = 1;
 	    if ((tp->minor_code == minor) || !found_minors) {
-		*descrip = tp->description;
+		*descrip = (char *)tp->description;
 		return 0;
 	    }
 	}
Index: src/librt/primitives/poly/poly.c
===================================================================
--- src/librt/primitives/poly/poly.c	(revision 54124)
+++ src/librt/primitives/poly/poly.c	(working copy)
@@ -652,7 +652,7 @@
 
 	/* Associate face geometry */
 	if (nmg_calc_face_g(fu)) {
-	    nmg_pr_fu_briefly(fu, "");
+	    nmg_pr_fu_briefly(fu, (char *)"");
 	    bu_free((char *)verts, "pg_tess verts[]");
 	    bu_free((char *)vertp, "pg_tess vertp[]");
 	    return -1;			/* FAIL */
Index: src/librt/primitives/brep/brep_debug.cpp
===================================================================
--- src/librt/primitives/brep/brep_debug.cpp	(revision 54124)
+++ src/librt/primitives/brep/brep_debug.cpp	(working copy)
@@ -2219,7 +2219,7 @@
 	case OP_DB_LEAF:
 	    char *tmpname;
 	    char *oldname;
-	    oldname = oldtree->tr_l.tl_name;
+	    oldname = (char *)oldtree->tr_l.tl_name;
 	    tmpname = (char*)bu_malloc(strlen(oldname)+strlen(suffix)+1, "char");
 	    newtree->tr_l.tl_name = (char*)bu_malloc(strlen(oldname)+strlen(suffix)+1, "char");
 	    bu_strlcpy(tmpname, oldname, strlen(oldname)+1);
@@ -2238,7 +2238,7 @@
 			    rt_db_free_internal(intern);
 			    break;
 			}
-			bu_strlcpy(newtree->tr_l.tl_name, tmpname, strlen(tmpname)+1);
+			bu_strlcpy((char *)newtree->tr_l.tl_name, tmpname, strlen(tmpname)+1);
 			bu_free(tmpname, "char");
 			break;
 		    }
@@ -2262,7 +2262,7 @@
 			    } else {
 				bu_log("The conversion of [%s] (type: %s) is skipped. Implicit form remains as %s.\n",
 				       oldname, intern->idb_meth->ft_label, tmpname);
-				bu_strlcpy(newtree->tr_l.tl_name, tmpname, strlen(tmpname)+1);
+				bu_strlcpy((char *)newtree->tr_l.tl_name, tmpname, strlen(tmpname)+1);
 			    }
 			    bu_free(tmpname, "char");
 			    bu_free(brep, "ON_Brep*");
Index: src/librt/primitives/cline/cline.c
===================================================================
--- src/librt/primitives/cline/cline.c	(revision 54124)
+++ src/librt/primitives/cline/cline.c	(working copy)
@@ -807,7 +807,7 @@
 
 	if (nmg_calc_face_g(fu)) {
 	    bu_log("rt_tess_cline: failed to calculate plane equation\n");
-	    nmg_pr_fu_briefly(fu, "");
+	    nmg_pr_fu_briefly(fu, (char *)"");
 	    return -1;
 	}
     }
Index: src/librt/primitives/arb8/arb8.c
===================================================================
--- src/librt/primitives/arb8/arb8.c	(revision 54124)
+++ src/librt/primitives/arb8/arb8.c	(working copy)
@@ -114,7 +114,7 @@
  * (Although the cross product wants counter-clockwise order)
  */
 struct arb_info {
-    char *ai_title;
+    const char *ai_title;
     int ai_sub[4];
 };
 
Index: src/librt/primitives/bspline/nurb_util.c
===================================================================
--- src/librt/primitives/bspline/nurb_util.c	(revision 54124)
+++ src/librt/primitives/bspline/nurb_util.c	(working copy)
@@ -221,7 +221,7 @@
 
 
 void
-rt_nurb_s_print(char *c, const struct face_g_snurb *srf)
+rt_nurb_s_print(const char *c, const struct face_g_snurb *srf)
 {
 
     bu_log("%s\n", c);
Index: src/librt/primitives/tgc/tgc.c
===================================================================
--- src/librt/primitives/tgc/tgc.c	(revision 54124)
+++ src/librt/primitives/tgc/tgc.c	(working copy)
@@ -2604,7 +2604,7 @@
 
 	if (nmg_calc_face_g(fu)) {
 	    bu_log("rt_tess_tgc: failed to calculate plane equation\n");
-	    nmg_pr_fu_briefly(fu, "");
+	    nmg_pr_fu_briefly(fu, (char *)"");
 	    return -1;
 	}
     }
Index: src/librt/primitives/nmg/nmg_tri.c
===================================================================
--- src/librt/primitives/nmg/nmg_tri.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_tri.c	(working copy)
@@ -3574,7 +3574,7 @@
 		nmg_plot_lu_around_eu("cut_unimonotone_infinite_loopuse", eu, tol);
 		m = nmg_find_model(current->vu_p->up.eu_p->up.lu_p->up.magic_p);
 		nmg_stash_model_to_file("cut_unimonotone_infinite_model.g", m, "cut_unimonotone_infinite_model");
-		nmg_pr_lu(current->vu_p->up.eu_p->up.lu_p, "cut_unimonotone_loopuse");
+		nmg_pr_lu(current->vu_p->up.eu_p->up.lu_p, (char *)"cut_unimonotone_loopuse");
 		nmg_plot_fu("cut_unimonotone_infinite_loopuse", current->vu_p->up.eu_p->up.lu_p->up.fu_p, tol);
 	    }
 	    bu_log("cut_unimonotone(): infinite loop %x\n", current->vu_p->up.eu_p->up.lu_p);
@@ -3701,7 +3701,7 @@
 	     */
 	    if (rt_g.NMG_debug & DEBUG_TRI) {
 		bu_log("cut_unimonotone(): before cut loop:\n");
-		nmg_pr_fu_briefly(lu->up.fu_p, "");
+		nmg_pr_fu_briefly(lu->up.fu_p, (char *)"");
 	    }
 
 	    if (rt_g.NMG_debug & DEBUG_TRI) {
@@ -3888,7 +3888,7 @@
 
 	    if (rt_g.NMG_debug & DEBUG_TRI) {
 		bu_log("cut_unimonotone(): after cut loop:\n");
-		nmg_pr_fu_briefly(lu->up.fu_p, "");
+		nmg_pr_fu_briefly(lu->up.fu_p, (char *)"");
 	    }
 	    if (next->vu_p->v_p == prev->vu_p->v_p) {
 		/* the vert count must be decremented 2 when
Index: src/librt/primitives/nmg/nmg_fcut.c
===================================================================
--- src/librt/primitives/nmg/nmg_fcut.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_fcut.c	(working copy)
@@ -1982,14 +1982,14 @@
 	bu_log("\tvertexuses in fu that are on lintersect line:\n");
 	for (i=0; i<BU_PTBL_END(b); i++) {
 	    vu = (struct vertexuse *)BU_PTBL_GET(b, i);
-	    nmg_pr_vu_briefly(vu, "\t  ");
+	    nmg_pr_vu_briefly(vu, (char *)"\t  ");
 	}
 	bu_log("\tLoopuse in fu (x%x):\n", fu1);
 	for (BU_LIST_FOR(lu, loopuse, &fu1->lu_hd)) {
 	    bu_log("\tLOOPUSE x%x:\n", lu);
 	    if (BU_LIST_FIRST_MAGIC(&lu->down_hd) == NMG_VERTEXUSE_MAGIC) {
 		vu = BU_LIST_FIRST(vertexuse, &lu->down_hd);
-		nmg_pr_vu_briefly(vu, "\tVertex Loop: ");
+		nmg_pr_vu_briefly(vu, (char *)"\tVertex Loop: ");
 	    } else {
 		for (BU_LIST_FOR(eu, edgeuse, &lu->down_hd)) {
 		    struct edgeuse *eu_next;
@@ -1997,7 +1997,7 @@
 		    fastf_t eu_len;
 		    double inv_len;
 
-		    nmg_pr_eu_briefly(eu, "\t\t");
+		    nmg_pr_eu_briefly(eu, (char *)"\t\t");
 		    eu_next = BU_LIST_PNEXT_CIRC(edgeuse, eu);
 		    VSUB2(eu_dir, eu_next->vu_p->v_p->vg_p->coord, eu->vu_p->v_p->vg_p->coord);
 		    eu_len = MAGNITUDE(eu_dir);
@@ -2725,7 +2725,7 @@
     if (rt_g.NMG_debug&DEBUG_FCUT) {
 	bu_log("rs->fu1 = x%x\n", rs->fu1);
 	bu_log("rs->fu2 = x%x\n", rs->fu2);
-	nmg_pr_fu_briefly(rs->fu1, "");
+	nmg_pr_fu_briefly(rs->fu1, (char *)"");
 	bu_log("%d vertices on intersect line\n", rs->nvu);
 	for (cur=0; cur<rs->nvu; cur++)
 	    bu_log("\tvu=x%x, v=x%x, lu=x%x\n", rs->vu[cur], rs->vu[cur]->v_p, nmg_find_lu_of_vu(rs->vu[cur]));
@@ -2872,7 +2872,7 @@
 
 		if (rt_g.NMG_debug&DEBUG_FCUT) {
 		    bu_log("\t\t new_eu = x%x\n", new_eu1);
-		    nmg_pr_fu_briefly(rs->fu1, "");
+		    nmg_pr_fu_briefly(rs->fu1, (char *)"");
 		}
 		if (old_eu) nmg_radial_join_eu(old_eu, new_eu1, rs->tol);
 
@@ -2914,7 +2914,7 @@
 
 	    if (rt_g.NMG_debug&DEBUG_FCUT) {
 		bu_log("\tjoin 2 singvu loops\n");
-		nmg_pr_fu_briefly(rs->fu1, "");
+		nmg_pr_fu_briefly(rs->fu1, (char *)"");
 	    }
 	    if (old_eu) nmg_radial_join_eu(old_eu, new_eu1, rs->tol);
 
@@ -2948,7 +2948,7 @@
 
 	    if (rt_g.NMG_debug&DEBUG_FCUT) {
 		bu_log("\tjoin loops vu1 (x%x) is sing vu loop\n", vu1);
-		nmg_pr_fu_briefly(rs->fu1, "");
+		nmg_pr_fu_briefly(rs->fu1, (char *)"");
 	    }
 	    if (old_eu) nmg_radial_join_eu(old_eu, new_eu1, rs->tol);
 
@@ -2985,7 +2985,7 @@
 
 	    if (rt_g.NMG_debug&DEBUG_FCUT) {
 		bu_log("\tjoin loops vu2 (x%x) is sing vu loop\n", vu2);
-		nmg_pr_fu_briefly(rs->fu1, "");
+		nmg_pr_fu_briefly(rs->fu1, (char *)"");
 	    }
 
 	    if (old_eu) nmg_radial_join_eu(old_eu, new_eu1, rs->tol);
@@ -3017,7 +3017,7 @@
 	    if (rt_g.NMG_debug&DEBUG_FCUT) {
 		bu_log("\t join 2 loops\n");
 		bu_log("\t\tvu2 (x%x) replaced with new_vu2 x%x\n", vu2, new_vu2);
-		nmg_pr_fu_briefly(rs->fu1, "");
+		nmg_pr_fu_briefly(rs->fu1, (char *)"");
 	    }
 
 	    if (old_eu) nmg_radial_join_eu(old_eu, new_eu1, rs->tol);
@@ -3032,12 +3032,12 @@
 
 	bu_log("ERROR in face cutter: something should have been cut!!\n");
 	bu_log("vu1=x%x, vu2=x%x\n", vu1, vu2);
-	nmg_pr_fu_briefly(rs->fu1, "");
+	nmg_pr_fu_briefly(rs->fu1, (char *)"");
 	bu_bomb("ERROR: face cutter didn't cut anything");
     }
 
     if (rt_g.NMG_debug&DEBUG_FCUT)
-	nmg_pr_fu_briefly(rs->fu1, "");
+	nmg_pr_fu_briefly(rs->fu1, (char *)"");
 }
 
 
@@ -3930,7 +3930,7 @@
 		bu_log("After LONE_V_ESPLIT, the final loop:\n");
 		lu = nmg_find_lu_of_vu(rs->vu[pos]);
 		NMG_CK_LOOPUSE(lu);
-		nmg_pr_lu(lu, "   ");
+		nmg_pr_lu(lu, (char *)"   ");
 		nmg_plot_lu_ray(lu, rs->vu[0], rs->vu[rs->nvu-1], rs->left);
 	    }
 	    break;
Index: src/librt/primitives/nmg/nmg_class.c
===================================================================
--- src/librt/primitives/nmg/nmg_class.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_class.c	(working copy)
@@ -114,7 +114,7 @@
  * N M G _ P R _ C L A S S _ S T A T U S
  */
 void
-nmg_pr_class_status(char *prefix, int status)
+nmg_pr_class_status(const char *prefix, int status)
 {
     bu_log("%s has classification status %s\n",
 	   prefix, nmg_class_status(status));
@@ -793,7 +793,7 @@
 {
     struct vertexuse *vup;
     pointp_t pt;
-    char *reason;
+    const char *reason;
     int status = 0;
     int class;
     struct vertex *sv;
@@ -928,7 +928,7 @@
     struct edgeuse *eup;
     point_t pt;
     pointp_t eupt, matept;
-    char *reason = "Unknown";
+    const char *reason = "Unknown";
     int class;
     vect_t e_min_pt;
     vect_t e_max_pt;
@@ -1013,7 +1013,7 @@
 	    (void)class_vu_vs_s(eu->vu_p, s, classlist, tol);
 	    (void)class_vu_vs_s(eu->eumate_p->vu_p, s, classlist, tol);
 	    nmg_euprint("class_eu_vs_s(): didn't this edge get cut?", eu);
-	    nmg_pr_eu(eu, "class_eu_vs_s():");
+	    nmg_pr_eu(eu, (char *)"class_eu_vs_s():");
 	}
 
 	bu_log("class_eu_vs_s(): wrote %s\n", buf);
@@ -1530,7 +1530,7 @@
     struct loopuse *q_lu;
     struct vertexuse *vu;
     uint32_t magic1;
-    char *reason = "Unknown";
+    const char *reason = "Unknown";
     int seen_error = 0;
     int status = 0;
 
@@ -1655,7 +1655,7 @@
 		    fclose(fp);
 		    bu_log("wrote %s\n", buf);
 		}
-		nmg_pr_lu(lu, "");
+		nmg_pr_lu(lu, (char *)"");
 		nmg_stash_model_to_file("class.g", nmg_find_model((uint32_t *)lu), "class_ls_vs_s: loop transits plane of shell/face?");
 		bu_free((char *)b, "nmg_pl_lu flag[]");
 	    }
@@ -2214,7 +2214,7 @@
 
     if (rt_g.NMG_debug & DEBUG_CLASSIFY) {
 	bu_log("nmg_get_interior_pt: Couldn't find interior point for lu x%x\n", lu);
-	nmg_pr_lu_briefly(lu, "");
+	nmg_pr_lu_briefly(lu, (char *)"");
     }
 
     VMOVE(pt, average_pt);
Index: src/librt/primitives/nmg/nmg_rt_segs.c
===================================================================
--- src/librt/primitives/nmg/nmg_rt_segs.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_rt_segs.c	(working copy)
@@ -65,7 +65,7 @@
 
 
 HIDDEN void
-print_seg_list(struct seg *seghead, int seg_count, char *s)
+print_seg_list(struct seg *seghead, int seg_count, const char *s)
 {
     struct seg *seg_p;
 
Index: src/librt/primitives/nmg/nmg_rt_isect.c
===================================================================
--- src/librt/primitives/nmg/nmg_rt_isect.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_rt_isect.c	(working copy)
@@ -350,7 +350,7 @@
  * Support routine for vertex_neighborhood()
  */
 HIDDEN void
-get_pole_dist_to_face(struct ray_data *rd, struct vertexuse *vu, fastf_t *Pole, fastf_t *Pole_prj_pt, double *Pole_dist, fastf_t *Pole_pca, fastf_t *pointA, fastf_t *leftA, fastf_t *pointB, fastf_t *leftB, fastf_t *polar_height_vect, char *Pole_name)
+get_pole_dist_to_face(struct ray_data *rd, struct vertexuse *vu, fastf_t *Pole, fastf_t *Pole_prj_pt, double *Pole_dist, fastf_t *Pole_pca, fastf_t *pointA, fastf_t *leftA, fastf_t *pointB, fastf_t *leftB, fastf_t *polar_height_vect, const char *Pole_name)
 {
     vect_t pca_to_pole_vect;
     vect_t VtoPole_prj;
Index: src/librt/primitives/nmg/nmg_pt_fu.c
===================================================================
--- src/librt/primitives/nmg/nmg_pt_fu.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_pt_fu.c	(working copy)
@@ -1350,7 +1350,7 @@
 	       V3ARGS(pt), __FILE__, __LINE__,
 	       ot_same_in, ot_opposite_out);
 	bu_log("fu=x%x\n",  fu);
-	nmg_pr_fu_briefly(fu, "");
+	nmg_pr_fu_briefly(fu, (char *)"");
 
 	plot_parity_error(fu, pt);
 
Index: src/librt/primitives/nmg/nmg_mod.c
===================================================================
--- src/librt/primitives/nmg/nmg_mod.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_mod.c	(working copy)
@@ -3114,7 +3114,7 @@
 
     if ((rt_g.NMG_debug & DEBUG_BASIC) || (rt_g.NMG_debug & DEBUG_CUTLOOP)) {
 	bu_log("nmg_loop_split_at_touching_jaunt(lu=x%x) START\n", lu);
-	nmg_pr_lu_briefly(lu, "");
+	nmg_pr_lu_briefly(lu, (char *)"");
     }
 
     /* first kill any accordion pleats */
@@ -3312,7 +3312,7 @@
 
     /* If we ever get here, we have failed to find a way to split this loop!!!! */
     bu_log("nmg_loop_split_at_touching_jaunt: Could not find a way to split lu x%x\n", lu);
-    nmg_pr_lu_briefly(lu, " ");
+    nmg_pr_lu_briefly(lu, (char *)" ");
     nmg_stash_model_to_file("jaunt.g", nmg_find_model(&lu->l.magic), "Can't split lu");
     bu_bomb("nmg_loop_split_at_touching_jaunt: Can't split lu\n");
 
@@ -4543,7 +4543,7 @@
 	if (eu1->vu_p->v_p != va || eu1->eumate_p->vu_p->v_p != vb) {
 	    bu_log("nmg_unbreak_edge: eu1 does not got to/from correct vertices, x%x, %x\n",
 		   eu1->vu_p->v_p, eu1->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu1, " ");
+	    nmg_pr_eu_briefly(eu1, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 1\n");
 	}
 	eu2 = BU_LIST_PNEXT_CIRC(edgeuse, eu1);
@@ -4554,7 +4554,7 @@
 	if (eu2->vu_p->v_p != vb || eu2->eumate_p->vu_p->v_p != vc) {
 	    bu_log("nmg_unbreak_edge: about to kill eu2, but does not got to/from correct vertices, x%x, x%x\n",
 		   eu2->vu_p->v_p, eu2->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu2, " ");
+	    nmg_pr_eu_briefly(eu2, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 3\n");
 	}
 
@@ -4564,7 +4564,7 @@
 	if (eu1->vu_p->v_p != va || eu1->eumate_p->vu_p->v_p != vc) {
 	    bu_log("nmg_unbreak_edge: extended eu1 does not got to/from correct vertices, x%x, x%x\n",
 		   eu1->vu_p->v_p, eu1->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu1, " ");
+	    nmg_pr_eu_briefly(eu1, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 2\n");
 	}
 
@@ -4578,7 +4578,7 @@
 	if (eu1->vu_p->v_p != va || eu1->eumate_p->vu_p->v_p != vc) {
 	    bu_log("nmg_unbreak_edge: unbroken eu1 (after eu2 killed) does not got to/from correct vertices, x%x, x%x\n",
 		   eu1->vu_p->v_p, eu1->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu1, " ");
+	    nmg_pr_eu_briefly(eu1, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 4\n");
 	}
 	eu1 = eu1->eumate_p->radial_p;
@@ -4758,7 +4758,7 @@
 	if (eu1->vu_p->v_p != va || eu1->eumate_p->vu_p->v_p != vb) {
 	    bu_log("nmg_unbreak_edge: eu1 does not got to/from correct vertices, x%x, %x\n",
 		   eu1->vu_p->v_p, eu1->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu1, " ");
+	    nmg_pr_eu_briefly(eu1, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 1\n");
 	}
 	eu2 = BU_LIST_PNEXT_CIRC(edgeuse, eu1);
@@ -4769,7 +4769,7 @@
 	if (eu2->vu_p->v_p != vb || eu2->eumate_p->vu_p->v_p != vc) {
 	    bu_log("nmg_unbreak_edge: about to kill eu2, but does not got to/from correct vertices, x%x, x%x\n",
 		   eu2->vu_p->v_p, eu2->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu2, " ");
+	    nmg_pr_eu_briefly(eu2, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 3\n");
 	}
 
@@ -4779,7 +4779,7 @@
 	if (eu1->vu_p->v_p != va || eu1->eumate_p->vu_p->v_p != vc) {
 	    bu_log("nmg_unbreak_edge: extended eu1 does not got to/from correct vertices, x%x, x%x\n",
 		   eu1->vu_p->v_p, eu1->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu1, " ");
+	    nmg_pr_eu_briefly(eu1, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 2\n");
 	}
 
@@ -4793,7 +4793,7 @@
 	if (eu1->vu_p->v_p != va || eu1->eumate_p->vu_p->v_p != vc) {
 	    bu_log("nmg_unbreak_edge: unbroken eu1 (after eu2 killed) does not got to/from correct vertices, x%x, x%x\n",
 		   eu1->vu_p->v_p, eu1->eumate_p->vu_p->v_p);
-	    nmg_pr_eu_briefly(eu1, " ");
+	    nmg_pr_eu_briefly(eu1, (char *)" ");
 	    bu_bomb("nmg_unbreak_edge 4\n");
 	}
 	eu1 = eu1->eumate_p->radial_p;
Index: src/librt/primitives/nmg/nmg_inter.c
===================================================================
--- src/librt/primitives/nmg/nmg_inter.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_inter.c	(working copy)
@@ -4742,9 +4742,9 @@
 		    if (rt_g.NMG_debug & DEBUG_POLYSECT) {
 			bu_log("Faceuses after nmg_ebreaker() call\n");
 			bu_log("fu1:\n");
-			nmg_pr_fu_briefly(fu1, "\t");
+			nmg_pr_fu_briefly(fu1, (char *)"\t");
 			bu_log("fu2:\n");
-			nmg_pr_fu_briefly(fu2, "\t");
+			nmg_pr_fu_briefly(fu2, (char *)"\t");
 		    }
 		    nmg_enlist_vu(is, vu1_midpt, 0, dist[0]);
 		    /* Neither old nor new edgeuse need further handling */
@@ -6957,9 +6957,9 @@
 	       pl2[X], pl2[Y], pl2[Z], pl2[W]);
 	bu_log("Cosine of angle between planes = %g\n", VDOT(pl1, pl2));
 	bu_log("fu1:\n");
-	nmg_pr_fu_briefly(fu1, "\t");
+	nmg_pr_fu_briefly(fu1, (char *)"\t");
 	bu_log("fu2:\n");
-	nmg_pr_fu_briefly(fu2, "\t");
+	nmg_pr_fu_briefly(fu2, (char *)"\t");
 	nmg_fu_touchingloops(fu1);
 	nmg_fu_touchingloops(fu2);
     }
Index: src/librt/primitives/nmg/nmg_pr.c
===================================================================
--- src/librt/primitives/nmg/nmg_pr.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_pr.c	(working copy)
@@ -49,7 +49,7 @@
  *
  * Convert orientation code to string.
  */
-char *
+const char *
 nmg_orientation(int orientation)
 {
     switch (orientation) {
@@ -945,8 +945,8 @@
     const struct faceuse *fu;
     const struct face *f;
     const struct shell *s;
-    char *lu_orient;
-    char *fu_orient;
+    const char *lu_orient;
+    const char *fu_orient;
 
     NMG_CK_EDGEUSE(eu);
     lu = (struct loopuse *)NULL;
Index: src/librt/primitives/nmg/nmg_info.c
===================================================================
--- src/librt/primitives/nmg/nmg_info.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_info.c	(working copy)
@@ -573,7 +573,7 @@
     if (NEAR_ZERO(area, tol->dist_sq)) {
 	if (RT_G_DEBUG & DEBUG_MATH) {
 	    bu_log("nmg_loop_is_ccw: Loop area (%g) is less than tol->dist_sq (%g)\n", area, tol->dist_sq);
-	    nmg_pr_lu_briefly(lu, " ");
+	    nmg_pr_lu_briefly(lu, (char *)" ");
 	}
 	ret = 0;
 	goto out;
Index: src/librt/primitives/nmg/nmg_bool.c
===================================================================
--- src/librt/primitives/nmg/nmg_bool.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_bool.c	(working copy)
@@ -249,7 +249,7 @@
 
 
 void
-stash_shell(struct shell *s, char *file_name, char *title, const struct bn_tol *tol)
+stash_shell(struct shell *s, const char *file_name, const char *title, const struct bn_tol *tol)
 {
     struct model *m;
     struct nmgregion *r;
@@ -747,7 +747,7 @@
 	    }
 	}
 	if (rt_g.NMG_debug & DEBUG_BOOL)
-	    nmg_pr_s(sA, "");
+	    nmg_pr_s(sA, (char *)"");
 
 	bu_log("nmg_bool: sA is unclosed, barging ahead\n");
     }
@@ -762,7 +762,7 @@
 	    }
 	}
 	if (rt_g.NMG_debug & DEBUG_BOOL)
-	    nmg_pr_s(sB, "");
+	    nmg_pr_s(sB, (char *)"");
 	bu_log("nmg_bool: sB is unclosed, barging ahead\n");
     }
 
@@ -1471,9 +1471,9 @@
 
     if (rt_g.NMG_debug & DEBUG_BOOL) {
 	bu_log("Before model fuse\nShell A:\n");
-	nmg_pr_s_briefly(BU_LIST_FIRST(shell, &tl->tr_d.td_r->s_hd), "");
+	nmg_pr_s_briefly(BU_LIST_FIRST(shell, &tl->tr_d.td_r->s_hd), (char *)"");
 	bu_log("Shell B:\n");
-	nmg_pr_s_briefly(BU_LIST_FIRST(shell, &tr->tr_d.td_r->s_hd), "");
+	nmg_pr_s_briefly(BU_LIST_FIRST(shell, &tr->tr_d.td_r->s_hd), (char *)"");
     }
 
     /* move operands into the same model */
Index: src/librt/primitives/nmg/nmg_misc.c
===================================================================
--- src/librt/primitives/nmg/nmg_misc.c	(revision 54124)
+++ src/librt/primitives/nmg/nmg_misc.c	(working copy)
@@ -273,7 +273,7 @@
 
 	lu = eu->up.lu_p;
 
-	nmg_pr_lu_briefly(lu, "");
+	nmg_pr_lu_briefly(lu, (char *)"");
     }
 
     bu_ptbl_free(&eu_tab);
@@ -3164,7 +3164,7 @@
 		}
 	    } else {
 		bu_log("nmg_propagate_normals: found an unoriented face!\n");
-		nmg_pr_fu_briefly(fu, "");
+		nmg_pr_fu_briefly(fu, (char *)"");
 		bu_bomb("nmg_propagate_normals: found an unoriented face!\n");
 	    }
 
@@ -3706,7 +3706,7 @@
 	    fu_in_s = NMG_INDEX_GETP(faceuse, trans_tbl, fu);
 	    if (!fu_in_s) {
 		bu_log("fu x%x does not have correspondence in original shell\n", fu);
-		nmg_pr_fu_briefly(fu, "");
+		nmg_pr_fu_briefly(fu, (char *)"");
 		continue;
 	    }
 	    if (fu_in_s->orientation != OT_SAME)
@@ -4566,7 +4566,7 @@
     struct bu_external ext;
     int ret;
     int flags;
-    char *name="error.s";
+    const char *name="error.s";
 
     bu_log("nmg_stash_model_to_file('%s', x%x, %s)\n", filename, m, title);
 
@@ -5331,8 +5331,8 @@
 		       V4ARGS(fu2->f_p->g.plane_p->N));
 		bu_log("\tfus x%x and x%x, faces x%x and x%x\n" ,
 		       fu1, fu2, fu1->f_p, fu2->f_p);
-		nmg_pr_fu_briefly(fu1, "fu1: ");
-		nmg_pr_fu_briefly(fu2, "fu2: ");
+		nmg_pr_fu_briefly(fu1, (char *)"fu1: ");
+		nmg_pr_fu_briefly(fu2, (char *)"fu2: ");
 		bu_bomb("Can't find plane intersection\n");
 	    }
 	    /* Make the start point at closest approach to old vertex */
@@ -6200,7 +6200,7 @@
 				  vu1->v_p->vg_p->coord, vu2->v_p->vg_p->coord,
 				  tol))
 		bu_log("\tPoints are collinear\n");
-	    nmg_pr_fu_briefly(new_fu, " ");
+	    nmg_pr_fu_briefly(new_fu, (char *)" ");
 	}
 	nmg_face_bb(new_fu->f_p, tol);
 
@@ -7767,7 +7767,7 @@
 
 	    if (area <= 0.0) {
 		bu_log("Bad lu:\n");
-		nmg_pr_lu_briefly(lu, " ");
+		nmg_pr_lu_briefly(lu, (char *)" ");
 		nmg_kfu(new_fu);
 		bu_bomb("nmg_make_connect_faces: Failed to calculate plane eqn\n");
 	    } else {
@@ -8412,7 +8412,7 @@
 		    if (eu->eumate_p->vu_p->v_p != eu2->vu_p->v_p) {
 			/* this is a problem! */
 			bu_log("nmg_kill_cracks: found a strange crack at eu1=x%x, eu2=x%x\n", eu, eu2);
-			nmg_pr_lu_briefly(lu, "");
+			nmg_pr_lu_briefly(lu, (char *)"");
 			bu_bomb("nmg_kill_cracks: found a strange crack\n");
 		    }
 
Index: src/librt/primitives/bot/bot.c
===================================================================
--- src/librt/primitives/bot/bot.c	(revision 54124)
+++ src/librt/primitives/bot/bot.c	(working copy)
@@ -1203,15 +1203,15 @@
 }
 
 
-static char *unoriented="unoriented";
-static char *ccw="counter-clockwise";
-static char *cw="clockwise";
-static char *unknown_orientation="unknown orientation";
-static char *surface="\tThis is a surface with no volume\n";
-static char *solid="\tThis is a solid object (not just a surface)\n";
-static char *plate="\tThis is a FASTGEN plate mode solid\n";
-static char *nocos="\tThis is a plate mode solid with no obliquity angle effect\n";
-static char *unknown_mode="\tunknown mode\n";
+static const char *unoriented="unoriented";
+static const char *ccw="counter-clockwise";
+static const char *cw="clockwise";
+static const char *unknown_orientation="unknown orientation";
+static const char *surface="\tThis is a surface with no volume\n";
+static const char *solid="\tThis is a solid object (not just a surface)\n";
+static const char *plate="\tThis is a FASTGEN plate mode solid\n";
+static const char *nocos="\tThis is a plate mode solid with no obliquity angle effect\n";
+static const char *unknown_mode="\tunknown mode\n";
 
 /**
  * R T _ B O T _ D E S C R I B E
@@ -1226,7 +1226,7 @@
     struct rt_bot_internal *bot_ip =
 	(struct rt_bot_internal *)ip->idb_ptr;
     char buf[256];
-    char *orientation, *mode;
+    const char *orientation, *mode;
     size_t i;
 
     size_t badVertexCount = 0;
@@ -1321,7 +1321,7 @@
 	    bu_vls_strcat(str, "\n");
 	}
 	if (bot_ip->mode == RT_BOT_PLATE || bot_ip->mode == RT_BOT_PLATE_NOCOS) {
-	    char *face_mode;
+	    const char *face_mode;
 
 	    if (BU_BITTEST(bot_ip->face_mode, i))
 		face_mode = "appended to hit point";
@@ -1667,7 +1667,7 @@
 }
 
 
-static char *modes[]={
+static const char *modes[]={
     "ERROR: Unrecognized mode",
     "surf",
     "volume",
@@ -1676,7 +1676,7 @@
 };
 
 
-static char *orientation[]={
+static const char *orientation[]={
     "ERROR: Unrecognized orientation",
     "no",
     "rh",
@@ -1684,7 +1684,7 @@
 };
 
 
-static char *los[]={
+static const char *los[]={
     "center",
     "append"
 };
Index: src/librt/primitives/dsp/dsp.c
===================================================================
--- src/librt/primitives/dsp/dsp.c	(revision 54124)
+++ src/librt/primitives/dsp/dsp.c	(working copy)
@@ -4198,7 +4198,7 @@
 dsp_get_data(struct rt_dsp_internal *dsp_ip, const mat_t mat, const struct db_i *dbip)
 {
     mat_t tmp;
-    char *p;
+    const char *p;
 
     /* Apply Modeling transform */
     MAT_COPY(tmp, dsp_ip->dsp_stom);
Index: src/librt/vshoot.c
===================================================================
--- src/librt/vshoot.c	(revision 54124)
+++ src/librt/vshoot.c	(working copy)
@@ -120,7 +120,7 @@
     auto vect_t inv_dir;	/* inverses of ap->a_ray.r_dir */
     struct bu_bitv *solidbits;	/* bits for all solids shot so far */
     struct bu_ptbl *regionbits;	/* bits for all involved regions */
-    char *status;
+    const char *status;
     auto struct partition InitialPart;	/* Head of Initial Partitions */
     auto struct partition FinalPart;	/* Head of Final Partitions */
     int nrays = 1;			/* for now */
Index: src/librt/timer42.c
===================================================================
--- src/librt/timer42.c	(revision 54124)
+++ src/librt/timer42.c	(working copy)
@@ -101,7 +101,7 @@
 {
     struct timeval tdiff;
     register time_t t;
-    register char *cp;
+    register const char *cp;
     register int i;
     int ms;
 
Index: src/librt/tcl.c
===================================================================
--- src/librt/tcl.c	(revision 54124)
+++ src/librt/tcl.c	(working copy)
@@ -57,7 +57,7 @@
  ************************************************************************/
 
 struct dbcmdstruct {
-    char *cmdname;
+    const char *cmdname;
     int (*cmdfunc)();
 };
 
Index: src/librt/db_tree.c
===================================================================
--- src/librt/db_tree.c	(revision 54124)
+++ src/librt/db_tree.c	(working copy)
@@ -923,7 +923,7 @@
 		    bu_free((char *)tp->tr_l.tl_mat, "tl_mat");
 		    tp->tr_l.tl_mat = NULL;
 		}
-		bu_free(tp->tr_l.tl_name, "tl_name");
+		bu_free((genptr_t)tp->tr_l.tl_name, "tl_name");
 		tp->tr_l.tl_name = NULL;
 		tp->tr_op = OP_NOP;
 		goto out;
@@ -946,7 +946,7 @@
 		    bu_free((char *)tp->tr_l.tl_mat, "tl_mat");
 		    tp->tr_l.tl_mat = NULL;
 		}
-		bu_free(tp->tr_l.tl_name, "tl_name");
+		bu_free((genptr_t)tp->tr_l.tl_name, "tl_name");
 		tp->tr_l.tl_name = NULL;
 		tp->tr_op = OP_NOP;
 		goto out;
@@ -972,7 +972,7 @@
 		    bu_free((char *)tp->tr_l.tl_mat, "tl_mat");
 		    tp->tr_l.tl_mat = NULL;
 		}
-		bu_free(tp->tr_l.tl_name, "tl_name");
+		bu_free((genptr_t)tp->tr_l.tl_name, "tl_name");
 		tp->tr_l.tl_name = NULL;
 		tp->tr_op = OP_NOP;
 	    }
@@ -1374,7 +1374,7 @@
 		struct nmgregion *r = tp->tr_d.td_r;
 		if (tp->tr_d.td_name) {
 		    bu_free((char *)tp->tr_d.td_name, "region name");
-		    tp->tr_d.td_name = (const char *)NULL;
+		    tp->tr_d.td_name = NULL;
 		}
 		if (r == (struct nmgregion *)NULL) {
 		    break;
@@ -1396,7 +1396,7 @@
 		bu_free((char *)tp->tr_l.tl_mat, "tl_mat");
 		tp->tr_l.tl_mat = NULL;
 	    }
-	    bu_free(tp->tr_l.tl_name, "tl_name");
+	    bu_free((genptr_t)tp->tr_l.tl_name, "tl_name");
 	    tp->tr_l.tl_name = NULL;
 	    break;
 
Index: src/librt/bundle.c
===================================================================
--- src/librt/bundle.c	(revision 54124)
+++ src/librt/bundle.c	(working copy)
@@ -80,7 +80,7 @@
     fastf_t last_bool_start;
     struct bu_bitv *solidbits;	/* bits for all solids shot so far */
     struct bu_ptbl *regionbits;	/* table of all involved regions */
-    char *status;
+    const char *status;
     auto struct partition InitialPart;	/* Head of Initial Partitions */
     auto struct partition FinalPart;	/* Head of Final Partitions */
     struct soltab **stpp;
Index: src/librt/db_lookup.c
===================================================================
--- src/librt/db_lookup.c	(revision 54124)
+++ src/librt/db_lookup.c	(working copy)
@@ -341,7 +341,7 @@
 db_pr_dir(const struct db_i *dbip)
 {
     const struct directory *dp;
-    char *flags;
+    const char *flags;
     int i;
 
     RT_CK_DBI(dbip);
Index: src/librt/db_anim.c
===================================================================
--- src/librt/db_anim.c	(revision 54124)
+++ src/librt/db_anim.c	(working copy)
@@ -71,7 +71,7 @@
 }
 
 
-static char *db_anim_matrix_strings[] = {
+static const char *db_anim_matrix_strings[] = {
     "(nope)",
     "ANM_RSTACK",
     "ANM_RARC",
Index: src/librt/bbox.c
===================================================================
--- src/librt/bbox.c	(revision 54124)
+++ src/librt/bbox.c	(working copy)
@@ -449,7 +449,7 @@
 	RT_GET_TREE(tp, &rt_uniresource);
 	RT_TREE_INIT(tp);
 	tp->tr_l.tl_op = OP_SOLID;
-	tp->tr_l.tl_name = "dummy";
+	tp->tr_l.tl_name = (char *)"dummy";
 	tp->tr_l.tl_mat = (matp_t)NULL;
 	tp->tr_a.tu_stp = rt_find_solid(rtip, dp->d_namep);
 	combp->tree = tp;
Index: src/librt/bool.c
===================================================================
--- src/librt/bool.c	(revision 54124)
+++ src/librt/bool.c	(working copy)
@@ -1515,7 +1515,7 @@
     int hits_needed;
     int ret = 0;
     int indefinite_outpt = 0;
-    char *reason = (char *)NULL;
+    const char *reason = (const char *)NULL;
     fastf_t diff;
 
 #define HITS_TODO (hits_needed - hits_avail)
Index: src/librt/shoot.c
===================================================================
--- src/librt/shoot.c	(revision 54124)
+++ src/librt/shoot.c	(working copy)
@@ -861,7 +861,7 @@
     struct bu_bitv *backbits=NULL;	/* bits for all solids using pieces that need to be intersected behind
 					   the ray start point */
     struct bu_ptbl *regionbits;	/* table of all involved regions */
-    char *status;
+    const char *status;
     auto struct partition InitialPart;	/* Head of Initial Partitions */
     auto struct partition FinalPart;	/* Head of Final Partitions */
     struct soltab **stpp;
Index: src/librt/search.h
===================================================================
--- src/librt/search.h	(revision 54124)
+++ src/librt/search.h	(working copy)
@@ -128,7 +128,7 @@
 #define e_len		p_un.ex._e_len
 
 typedef struct _option {
-    char *name;				/* option name */
+    const char *name;				/* option name */
     enum db_search_ntype token;			/* token type */
     int (*create)(char *, char ***, int, struct db_plan_t **, int *);	/* create function */
 #define O_NONE		0x01			/* no call required */
Index: src/nirt/nirt.c
===================================================================
--- src/nirt/nirt.c	(revision 54124)
+++ src/nirt/nirt.c	(working copy)
@@ -84,7 +84,7 @@
 
 int do_backout = 0;			/* Backout before shooting? */
 int overlap_claims = OVLP_RESOLVE;	/* Rebuild/retain overlaps? */
-char *ocname[4];
+const char *ocname[4];
 int silent_flag = SILENT_UNSET;	/* Refrain from babbling? */
 int nirt_debug = 0;			/* Control of diagnostics */
 
@@ -200,7 +200,7 @@
 	return; /* null char ptr */
     }
 
-    p = strtok(a, "\t ");
+    p = strtok(a, (char *)"\t ");
     while (p) {
 
 	/* make sure we have space */
@@ -226,7 +226,7 @@
  * string is a literal or a file name
  */
 static void
-enqueue_script(struct bu_list *qp, int type, char *string)
+enqueue_script(struct bu_list *qp, int type, const char *string)
 {
     struct script_rec *srp;
     FILE *cfPtr;
@@ -271,7 +271,7 @@
  * text is for the title line
  */
 static void
-show_scripts(struct bu_list *sl, char *text)
+show_scripts(struct bu_list *sl, const char *text)
 {
     int i;
     struct script_rec *srp;
@@ -389,7 +389,7 @@
     while ((Ch = bu_getopt(argc, argv, OPT_STRING)) != -1) {
 	switch (Ch) {
 	    case 'A':
-		attrib_add(bu_optarg, &need_prep);
+		attrib_add((char *)bu_optarg, &need_prep);
 		break;
 	    case 'B':
 		rt_bot_minpieces = atoi(bu_optarg);
Index: src/nirt/read_mat.c
===================================================================
--- src/nirt/read_mat.c	(revision 54124)
+++ src/nirt/read_mat.c	(working copy)
@@ -116,7 +116,7 @@
     dir2ae();
 
     targ2grid();
-    shoot("", 0, rtip);
+    shoot((char *)"", 0, rtip);
 }
 
 /*
Index: src/nirt/nirt.h
===================================================================
--- src/nirt/nirt.h	(revision 54124)
+++ src/nirt/nirt.h	(working copy)
@@ -87,10 +87,10 @@
 
 /** DATA STRUCTURES */
 typedef struct {
-    char *com_name;		/* for invoking */
+    const char *com_name;		/* for invoking */
     void (*com_func)();          /* what to do?      	         */
-    char *com_desc;		/* Help description */
-    char *com_args;		/* Command arguments for usage */
+    const char *com_desc;		/* Help description */
+    const char *com_args;		/* Command arguments for usage */
 } com_table;
 
 struct VarTable {
Index: src/nirt/usrfmt.h
===================================================================
--- src/nirt/usrfmt.h	(revision 54124)
+++ src/nirt/usrfmt.h	(working copy)
@@ -41,7 +41,7 @@
 } outitem;
 
 typedef struct outval_tag {
-    char *name;
+    const char *name;
     int code_nm;
     int type;
     union ovv {
Index: src/util/rle_args.c
===================================================================
--- src/util/rle_args.c	(revision 54124)
+++ src/util/rle_args.c	(working copy)
@@ -47,7 +47,7 @@
 		break;
 	    case 'C':
 		{
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 		    int *conp = *background;
 
 		    /* premature null => atoi gives zeros */
@@ -70,7 +70,7 @@
 	}
 	bu_optind++;
     } else {
-	*infile = "-";
+	*infile = (char *)"-";
     }
     if (argv[bu_optind] != NULL) {
 	if (bu_file_exists(argv[bu_optind], NULL)) {
Index: src/util/bwhist.c
===================================================================
--- src/util/bwhist.c	(revision 54124)
+++ src/util/bwhist.c	(working copy)
@@ -39,7 +39,7 @@
 int verbose = 0;
 FBIO *fbp;
 
-static char *Usage = "usage: bwhist [-v] [file.bw]\n";
+static const char *Usage = "usage: bwhist [-v] [file.bw]\n";
 
 
 int
Index: src/util/sun-pix.c
===================================================================
--- src/util/sun-pix.c	(revision 54124)
+++ src/util/sun-pix.c	(working copy)
@@ -156,7 +156,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	fp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pix-sun.c
===================================================================
--- src/util/pix-sun.c	(revision 54124)
+++ src/util/pix-sun.c	(working copy)
@@ -36,9 +36,9 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "hs:w:n:d";
+const char *options = "hs:w:n:d";
 char optflags[sizeof(options)];
-char *progname = "(noname)";
+const char *progname = "(noname)";
 int dither = 0;
 
 #define MAPSIZE 256   /* Number of unique color values in Sun Colormap */
Index: src/util/pixscale.c
===================================================================
--- src/util/pixscale.c	(revision 54124)
+++ src/util/pixscale.c	(working copy)
@@ -391,7 +391,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	buffp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pixcut.c
===================================================================
--- src/util/pixcut.c	(revision 54124)
+++ src/util/pixcut.c	(working copy)
@@ -131,7 +131,7 @@
 		base_y = atol(bu_optarg);
 		break;
 	    case 'C':
-		parse_color(background, bu_optarg);
+		parse_color(background, (char *)bu_optarg);
 		break;
 	    case '#':
 		num_bytes = atol(bu_optarg);
@@ -142,7 +142,7 @@
     }
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin))) return 0;
-	in_name = "-";
+	in_name = (char *)"-";
 	input = stdin;
     } else {
 	in_name = argv[bu_optind];
@@ -231,14 +231,14 @@
 			   "pixcut: adding background strip on the");
 
 	    if (base_x < 0) {
-		last = "left";
+		last = (char *)"left";
 	    }
 	    if (base_y < 0) {
 		if (last) {
 		    (void) fprintf(stderr, " %s", last);
 		    comma=1;
 		}
-		last = "bottom";
+		last = (char *)"bottom";
 	    }
 	    if (base_x+new_width >org_width) {
 		if (last) {
@@ -259,7 +259,7 @@
 		    }
 		    comma = 1;
 		}
-		last = "top";
+		last = (char *)"top";
 	    }
 	    if (comma) {
 		fprintf(stderr, " and %s.\n", last);
Index: src/util/asc-pl.c
===================================================================
--- src/util/asc-pl.c	(revision 54124)
+++ src/util/asc-pl.c	(working copy)
@@ -61,7 +61,7 @@
     char *bp;
     char buf[BUF_LEN];
     char sarg[BUF_LEN];
-    static char *fm[] = { "r", "w" };
+    static const char *fm[] = { "r", "w" };
     double darg[6] = {0.0};
     static FILE *fp[2];
     int i;
Index: src/util/pl-asc.c
===================================================================
--- src/util/pl-asc.c	(revision 54124)
+++ src/util/pl-asc.c	(working copy)
@@ -43,7 +43,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
 };
 struct uplot uerror = { 0, 0, 0 };
 struct uplot letters[] = {
Index: src/util/pl-X.c
===================================================================
--- src/util/pl-X.c	(revision 54124)
+++ src/util/pl-X.c	(working copy)
@@ -61,7 +61,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
 };
 struct uplot uerror = { 0, 0, 0 };
 struct uplot letters[] = {
Index: src/util/pix-yuv.c
===================================================================
--- src/util/pix-yuv.c	(revision 54124)
+++ src/util/pix-yuv.c	(working copy)
@@ -97,7 +97,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infd = fileno(stdin);
     } else {
 	char *ifname;
Index: src/util/yuv-pix.c
===================================================================
--- src/util/yuv-pix.c	(revision 54124)
+++ src/util/yuv-pix.c	(working copy)
@@ -98,7 +98,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infd = fileno(stdin);
     } else {
 	char *ifname;
Index: src/util/pix-png.c
===================================================================
--- src/util/pix-png.c	(revision 54124)
+++ src/util/pix-png.c	(working copy)
@@ -102,7 +102,7 @@
 
     if (bu_optind >= argc) {
 	/* no more args */
-	file_name = "-";
+	file_name = (char *)"-";
     } else {
 	file_name = argv[bu_optind];
 	if ((*infp = fopen(file_name, "rb")) == NULL) {
Index: src/util/png-pix.c
===================================================================
--- src/util/png-pix.c	(revision 54124)
+++ src/util/png-pix.c	(working copy)
@@ -39,7 +39,7 @@
 static png_color_16 def_backgrd={ 0, 0, 0, 0, 0 };
 static int verbose=0;
 
-static char *usage="Usage:\n\t%s [-v] [png_input_file] > pix_output_file\n";
+static const char *usage="Usage:\n\t%s [-v] [png_input_file] > pix_output_file\n";
 
 int
 main(int argc, char **argv)
Index: src/util/bw-a.c
===================================================================
--- src/util/bw-a.c	(revision 54124)
+++ src/util/bw-a.c	(working copy)
@@ -83,7 +83,7 @@
 
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin))) return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pixbgstrip.c
===================================================================
--- src/util/pixbgstrip.c	(revision 54124)
+++ src/util/pixbgstrip.c	(working copy)
@@ -95,7 +95,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/bw-imp.c
===================================================================
--- src/util/bw-imp.c	(revision 54124)
+++ src/util/bw-imp.c	(working copy)
@@ -67,7 +67,7 @@
 static int (*pattern)[8] = dither;	/* -> dither or halftone */
 
 static FILE *infp;			/* input file handle */
-static char *file_name = "-";	/* name of input file, for banner */
+static const char *file_name = "-";	/* name of input file, for banner */
 
 static size_t height;			/* input height */
 static size_t width;			/* input width */
Index: src/util/mac-pix.c
===================================================================
--- src/util/mac-pix.c	(revision 54124)
+++ src/util/mac-pix.c	(working copy)
@@ -132,7 +132,7 @@
 		break;
 	    case 'C':
 		{
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 		    unsigned char *conp
 			= (unsigned char *)color;
 
@@ -163,7 +163,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/dsp_add.c
===================================================================
--- src/util/dsp_add.c	(revision 54124)
+++ src/util/dsp_add.c	(working copy)
@@ -37,8 +37,8 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "h";
-char *progname = "(noname)";
+const char *options = "h";
+const char *progname = "(noname)";
 
 #define ADD_STYLE_INT 0
 #define ADD_STYLE_FLOAT 1
@@ -47,7 +47,7 @@
 /*
  * U S A G E --- tell user how to invoke this program, then exit
  */
-void usage(char *s)
+void usage(const char *s)
 {
     if (s) (void)fputs(s, stderr);
 
Index: src/util/png_info.c
===================================================================
--- src/util/png_info.c	(revision 54124)
+++ src/util/png_info.c	(working copy)
@@ -39,7 +39,7 @@
 int
 main(int argc, char **argv)
 {
-    static char *usage="Usage:\n\t%s png__file\n";
+    static const char *usage="Usage:\n\t%s png__file\n";
 
     int i;
     FILE *fp_in = NULL;
Index: src/util/orle-pix.c
===================================================================
--- src/util/orle-pix.c	(revision 54124)
+++ src/util/orle-pix.c	(working copy)
@@ -30,7 +30,7 @@
 #include "orle.h"
 #include "bu.h"
 
-static char *usage[] =
+static const char *usage[] =
 {
     "Usage: rle-pix [-dv] [-b (rgbBG)] [file.rle]",
     "",
@@ -226,7 +226,7 @@
 static void
 prnt_Usage(void)
 {
-    char **p = usage;
+    char **p = (char **)usage;
     while (*p)
 	(void) fprintf(stderr, "%s\n", *p++);
     return;
Index: src/util/pixfilter.c
===================================================================
--- src/util/pixfilter.c	(revision 54124)
+++ src/util/pixfilter.c	(working copy)
@@ -41,8 +41,8 @@
 
 /* The filter kernels */
 struct kernels {
-    char *name;
-    char *uname;		/* What is needed to recognize it */
+    const char *name;
+    const char *uname;		/* What is needed to recognize it */
     int kern[9];
     int kerndiv;	/* Divisor for kernel */
     int kernoffset;	/* To be added to result */
@@ -86,7 +86,7 @@
 		verbose++;
 		break;
 	    case 'f':
-		select_filter(bu_optarg);
+		select_filter((char *)bu_optarg);
 		break;
 	    case 'd':
 		dflag++;
@@ -113,7 +113,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
@@ -144,7 +144,7 @@
     size_t ret;
 
     /* Select Default Filter (low pass) */
-    select_filter("low");
+    select_filter((char *)"low");
 
     if (!get_args(argc, argv)) {
 	dousage();
Index: src/util/wavelet.c
===================================================================
--- src/util/wavelet.c	(revision 54124)
+++ src/util/wavelet.c	(working copy)
@@ -62,9 +62,9 @@
 #define RECONSTRUCT -1
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "W:S:s:w:n:t:#:D:12drR:";
+const char *options = "W:S:s:w:n:t:#:D:12drR:";
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 int img_space=1;
 int debug;
 size_t width = 512;
@@ -81,7 +81,7 @@
  * U S A G E --- tell user how to invoke this program, then exit
  */
 void
-usage(char *s)
+usage(const char *s)
 {
     if (s) (void)fputs(s, stderr);
 
Index: src/util/plstat.c
===================================================================
--- src/util/plstat.c	(revision 54124)
+++ src/util/plstat.c	(working copy)
@@ -43,7 +43,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
 };
 struct uplot uerror = { 0, 0, 0 };
 struct uplot letters[] = {
Index: src/util/pixcount.c
===================================================================
--- src/util/pixcount.c	(revision 54124)
+++ src/util/pixcount.c	(working copy)
@@ -233,7 +233,7 @@
 	}
     }
 
-    palette = bu_rb_create1("Pixel palette", compare_pixels);
+    palette = bu_rb_create1((char *)"Pixel palette", compare_pixels);
     bu_rb_uniq_on1(palette);
 
     /*
Index: src/util/ttcp.c
===================================================================
--- src/util/ttcp.c	(revision 54124)
+++ src/util/ttcp.c	(working copy)
@@ -141,7 +141,7 @@
 
 
 static void
-err(char *s)
+err(const char *s)
 {
     fprintf(stderr, "ttcp%s: ", trans?"-t":"-r");
     perror(s);
@@ -151,7 +151,7 @@
 
 
 void
-mes(char *s)
+mes(const char *s)
 {
     fprintf(stderr, "ttcp%s: %s\n", trans?"-t":"-r", s);
 }
@@ -263,7 +263,7 @@
 {
     struct timeval tdiff;
     time_t t;
-    char *cp;
+    const char *cp;
     int i;
     int ms;
 
Index: src/util/pixshrink.c
===================================================================
--- src/util/pixshrink.c	(revision 54124)
+++ src/util/pixshrink.c	(working copy)
@@ -35,10 +35,10 @@
 #define UCHAR unsigned char
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "uhs:w:n:f:";
+const char *options = "uhs:w:n:f:";
 
-char *progname = "(noname)";
-char *filename = "(stdin)";
+const char *progname = "(noname)";
+const char *filename = "(stdin)";
 
 void shrink_image(int scanlen, int Width, int Height, unsigned char *buffer, int Factor), usample_image(int scanlen, int Width, int Height, unsigned char *buffer, int Factor);
 
Index: src/util/bwscale.c
===================================================================
--- src/util/bwscale.c	(revision 54124)
+++ src/util/bwscale.c	(working copy)
@@ -126,7 +126,7 @@
 	if (isatty(fileno(stdin))) {
 	    return 0;
 	}
-	file_name = "-";
+	file_name = (char *)"-";
 	buffp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pix-ps.c
===================================================================
--- src/util/pix-ps.c	(revision 54124)
+++ src/util/pix-ps.c	(working copy)
@@ -186,7 +186,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "[stdin]";
+	file_name = (char *)"[stdin]";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pixcolors.c
===================================================================
--- src/util/pixcolors.c	(revision 54124)
+++ src/util/pixcolors.c	(working copy)
@@ -37,9 +37,9 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "v";
+const char *options = "v";
 char verbose = 0;
-char *progname = "(noname)";
+const char *progname = "(noname)";
 
 #define PIXELS 1024
 unsigned char pixbuf[BUFSIZ*3];
Index: src/util/pl-pl.c
===================================================================
--- src/util/pl-pl.c	(revision 54124)
+++ src/util/pl-pl.c	(working copy)
@@ -37,7 +37,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
     int t3d;	/* non-zero if 3D */
 };
 
Index: src/util/plgetframe.c
===================================================================
--- src/util/plgetframe.c	(revision 54124)
+++ src/util/plgetframe.c	(working copy)
@@ -43,7 +43,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
 };
 struct uplot uerror = { 0, 0, 0 };
 struct uplot letters[] = {
Index: src/util/dunnsnap.c
===================================================================
--- src/util/dunnsnap.c	(revision 54124)
+++ src/util/dunnsnap.c	(working copy)
@@ -68,7 +68,7 @@
 		scr_height = scr_width = 1024;
 		break;
 	    case 'F':
-		framebuffer = bu_optarg;
+		framebuffer = (char *)bu_optarg;
 		break;
 	    case 's':
 	    case 'S':
Index: src/util/alias-pix.c
===================================================================
--- src/util/alias-pix.c	(revision 54124)
+++ src/util/alias-pix.c	(working copy)
@@ -32,7 +32,7 @@
 #include "bu.h"
 
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 
 
 void usage(void)
Index: src/util/pix-alias.c
===================================================================
--- src/util/pix-alias.c	(revision 54124)
+++ src/util/pix-alias.c	(working copy)
@@ -46,9 +46,9 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "hs:w:n:";
+const char *options = "hs:w:n:";
 char optflags[sizeof(options)];
-char *progname = "(noname)";
+const char *progname = "(noname)";
 
 int x=512;
 int y=512;
Index: src/util/bw-png.c
===================================================================
--- src/util/bw-png.c	(revision 54124)
+++ src/util/bw-png.c	(working copy)
@@ -85,7 +85,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/dunncolor.c
===================================================================
--- src/util/dunncolor.c	(revision 54124)
+++ src/util/dunncolor.c	(working copy)
@@ -41,7 +41,7 @@
 
 extern void dunnopen(void);
 extern int ready(int nsecs);
-extern void getexposure(char *title);
+extern void getexposure(const char *title);
 extern int dunnsend(char color, int val);
 
 
Index: src/util/terrain.c
===================================================================
--- src/util/terrain.c	(revision 54124)
+++ src/util/terrain.c	(working copy)
@@ -48,10 +48,10 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "w:n:s:L:H:O:S:V:D:f:co:v";
+const char *options = "w:n:s:L:H:O:S:V:D:f:co:v";
 
 int do_convert = 1;
-char *progname = "(noname)";
+const char *progname = "(noname)";
 size_t xdim = 256;
 size_t ydim = 256;
 
@@ -82,7 +82,7 @@
  * U S A G E --- tell user how to invoke this program, then exit
  */
 void
-usage(char *s)
+usage(const char *s)
 {
     if (s) (void)fputs(s, stderr);
 
Index: src/util/cv.c
===================================================================
--- src/util/cv.c	(revision 54124)
+++ src/util/cv.c	(working copy)
@@ -70,7 +70,7 @@
 
     in_pat = argv[1];
     if (BU_STR_EQUAL(in_pat, ""))
-	in_pat = "huc";
+	in_pat = (char *)"huc";
     if (strlen(in_pat) > 4 || strlen(in_pat) < 1) {
 	fprintf(stderr, "cv: unrecognized input pattern\n");
 	return 1;
@@ -78,7 +78,7 @@
 
     out_pat = argv[2];
     if (BU_STR_EQUAL(out_pat, ""))
-	out_pat = "nuc";
+	out_pat = (char *)"nuc";
     if (strlen(out_pat) > 4 || strlen(out_pat) < 1) {
 	fprintf(stderr, "cv: unrecognized output pattern\n");
 	return 1;
Index: src/util/texturescale.c
===================================================================
--- src/util/texturescale.c	(revision 54124)
+++ src/util/texturescale.c	(working copy)
@@ -128,7 +128,7 @@
 		solid_type = SPHERE;
 		break;
 	    case 'T':
-		if (! read_radii(&r1, &r2, bu_optarg)) {
+		if (! read_radii(&r1, &r2, (char *)bu_optarg)) {
 		    (void) fprintf(stderr,
 				   "Illegal torus radii: '%s'\n", bu_optarg);
 		    return 0;
@@ -148,7 +148,7 @@
 	    (void) fprintf(stderr, "texturescale: cannot read from tty\n");
 	    return 0;
 	}
-	file_name = "stdin";
+	file_name = (char *)"stdin";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pixfieldsep.c
===================================================================
--- src/util/pixfieldsep.c	(revision 54124)
+++ src/util/pixfieldsep.c	(working copy)
@@ -39,8 +39,8 @@
 size_t bytes_per_sample = 3;
 int doubleit = 0;
 
-char *even_file = "even.pix";
-char *odd_file = "odd.pix";
+const char *even_file = "even.pix";
+const char *odd_file = "odd.pix";
 
 static char usage[] = "\
 Usage: pixfieldsep [-w file_width] [-s square_size] [-# nbytes/pixel] \n\
Index: src/util/double-asc.c
===================================================================
--- src/util/double-asc.c	(revision 54124)
+++ src/util/double-asc.c	(working copy)
@@ -113,14 +113,14 @@
 	}
     }
     if (format == 0)
-	format = " %g";
+	format = (char *)" %g";
 
     /*
      * Establish the input stream
      */
     switch (argc - bu_optind) {
 	case 0:
-	    file_name = "stdin";
+	    file_name = (char *)"stdin";
 	    infd = 0;
 	    break;
 	case 1:
Index: src/util/bwfilter.c
===================================================================
--- src/util/bwfilter.c	(revision 54124)
+++ src/util/bwfilter.c	(working copy)
@@ -41,8 +41,8 @@
 
 /* The filter kernels */
 struct kernels {
-    char *name;
-    char *uname;		/* What is needed to recognize it */
+    const char *name;
+    const char *uname;		/* What is needed to recognize it */
     int kern[9];
     int kerndiv;	/* Divisor for kernel */
     int kernoffset;	/* To be added to result */
@@ -69,7 +69,7 @@
 char *file_name;
 FILE *infp;
 
-void select_filter(char *str), dousage(void);
+void select_filter(const char *str), dousage(void);
 
 char usage[] = "\
 Usage: bwfilter [-f type] [-v] [-d div] [-o offset]\n\
@@ -113,7 +113,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
@@ -240,7 +240,7 @@
  * based on it.
  */
 void
-select_filter(char *str)
+select_filter(const char *str)
 {
     int i;
 
Index: src/util/pixhalve.c
===================================================================
--- src/util/pixhalve.c	(revision 54124)
+++ src/util/pixhalve.c	(working copy)
@@ -92,7 +92,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/rle-pix.c
===================================================================
--- src/util/rle-pix.c	(revision 54124)
+++ src/util/rle-pix.c	(working copy)
@@ -103,7 +103,7 @@
 		break;
 	    case 'C':
 		{
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 		    int *conp = background;
 
 		    /* premature null => atoi gives zeros */
@@ -127,7 +127,7 @@
 	}
 	bu_optind++;
     } else {
-	infile = "-";
+	infile = (char *)"-";
     }
     if (argv[bu_optind] != NULL) {
 	if (bu_file_exists(argv[bu_optind], NULL)) {
Index: src/util/pixrot.c
===================================================================
--- src/util/pixrot.c	(revision 54124)
+++ src/util/pixrot.c	(working copy)
@@ -121,7 +121,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	ifp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/bwshrink.c
===================================================================
--- src/util/bwshrink.c	(revision 54124)
+++ src/util/bwshrink.c	(working copy)
@@ -36,10 +36,10 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-char *options = "uhs:w:n:f:";
+const char *options = "uhs:w:n:f:";
 
-char *progname = "(noname)";
-char *filename = "(stdin)";
+const char *progname = "(noname)";
+const char *filename = "(stdin)";
 
 /* S H R I N K _ I M A G E
  */
Index: src/util/bw-ps.c
===================================================================
--- src/util/bw-ps.c	(revision 54124)
+++ src/util/bw-ps.c	(working copy)
@@ -109,7 +109,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "[stdin]";
+	file_name = (char *)"[stdin]";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pix-ppm.c
===================================================================
--- src/util/pix-ppm.c	(revision 54124)
+++ src/util/pix-ppm.c	(working copy)
@@ -90,7 +90,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
     } else {
 	file_name = argv[bu_optind];
 	if ((infp = fopen(file_name, "r")) == NULL) {
Index: src/util/pixmatte.c
===================================================================
--- src/util/pixmatte.c	(revision 54124)
+++ src/util/pixmatte.c	(working copy)
@@ -83,7 +83,7 @@
 
 
 void
-usage(char *s, int n)
+usage(const char *s, int n)
 {
     if (s && *s) (void)fputs(s, stderr);
 
Index: src/util/pl-tek.c
===================================================================
--- src/util/pl-tek.c	(revision 54124)
+++ src/util/pl-tek.c	(working copy)
@@ -42,7 +42,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
     int t3d;	/* non-zero if 3D */
 };
 
Index: src/util/pix-spm.c
===================================================================
--- src/util/pix-spm.c	(revision 54124)
+++ src/util/pix-spm.c	(working copy)
@@ -46,7 +46,7 @@
     size = atoi(argv[2]);
     mp = bn_spm_init(size, sizeof(RGBpixel));
     bn_spm_pix_load(mp, argv[1], size, size);
-    bn_spm_save(mp, "-");
+    bn_spm_save(mp, (char *)"-");
 
     return 0;
 }
Index: src/util/pixembed.c
===================================================================
--- src/util/pixembed.c	(revision 54124)
+++ src/util/pixembed.c	(working copy)
@@ -99,7 +99,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
 	buffp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pixborder.c
===================================================================
--- src/util/pixborder.c	(revision 54124)
+++ src/util/pixborder.c	(working copy)
@@ -376,13 +376,13 @@
 		autosize = 1;
 		break;
 	    case 'b':
-		if (! bu_str_to_rgb(bu_optarg, border_rgb)) {
+		if (! bu_str_to_rgb((char *)bu_optarg, border_rgb)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
 		break;
 	    case 'e':
-		if (! bu_str_to_rgb(bu_optarg, exterior_rgb)) {
+		if (! bu_str_to_rgb((char *)bu_optarg, exterior_rgb)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
@@ -394,7 +394,7 @@
 		autosize = 0;
 		break;
 	    case 'i':
-		if (! bu_str_to_rgb(bu_optarg, interior_rgb)) {
+		if (! bu_str_to_rgb((char *)bu_optarg, interior_rgb)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
@@ -410,7 +410,7 @@
 		autosize = 0;
 		break;
 	    case 't':
-		if (! bu_str_to_rgb(bu_optarg, rgb_tol)) {
+		if (! bu_str_to_rgb((char *)bu_optarg, rgb_tol)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
@@ -427,14 +427,14 @@
 		bottom_edge = atol(bu_optarg);
 		break;
 	    case 'B':
-		if (! read_hsv(border_hsv, bu_optarg)) {
+		if (! read_hsv(border_hsv, (char *)bu_optarg)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
 		hsv_to_rgb(border_hsv, border_rgb);
 		break;
 	    case 'E':
-		if (! read_hsv(exterior_hsv, bu_optarg)) {
+		if (! read_hsv(exterior_hsv, (char *)bu_optarg)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
@@ -442,7 +442,7 @@
 		colors_specified |= COLORS_EXTERIOR;
 		break;
 	    case 'I':
-		if (! read_hsv(interior_hsv, bu_optarg)) {
+		if (! read_hsv(interior_hsv, (char *)bu_optarg)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
@@ -450,7 +450,7 @@
 		colors_specified |= COLORS_INTERIOR;
 		break;
 	    case 'T':
-		if (! read_hsv(hsv_tol, bu_optarg)) {
+		if (! read_hsv(hsv_tol, (char *)bu_optarg)) {
 		    (void) fprintf(stderr, "Illegal color: '%s'\n", bu_optarg);
 		    return 0;
 		}
@@ -473,7 +473,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "stdin";
+	file_name = (char *)"stdin";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/pix-orle.c
===================================================================
--- src/util/pix-orle.c	(revision 54124)
+++ src/util/pix-orle.c	(working copy)
@@ -84,7 +84,7 @@
 		break;
 	    case 'C':
 		{
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 		    int *conp = background;
 
 		    /* premature null => atoi gives zeros */
@@ -106,7 +106,7 @@
 	}
 	bu_optind++;
     } else {
-	infile = "-";
+	infile = (char *)"-";
     }
     if (argv[bu_optind] != NULL) {
 	if (bu_file_exists(argv[bu_optind], NULL)) {
Index: src/util/pixclump.c
===================================================================
--- src/util/pixclump.c	(revision 54124)
+++ src/util/pixclump.c	(working copy)
@@ -65,7 +65,7 @@
 
 static void print_debug_usage (void)
 {
-    static char *flag_denotation[] = {
+    static const char *flag_denotation[] = {
 	"",
 	"color table",
 	"finding best pixel match",
@@ -186,7 +186,7 @@
     while ((ch = bu_getopt(argc, argv, OPT_STRING)) != -1)
 	switch (ch) {
 	    case 'c':
-		if (! bu_str_to_rgb(bu_optarg, rgb)) {
+		if (! bu_str_to_rgb((char *)bu_optarg, rgb)) {
 		    bu_log("Illegal color: '%s'\n", bu_optarg);
 		    print_usage();
 		}
@@ -194,7 +194,7 @@
 		cf_name = 0;
 		break;
 	    case 'f':
-		cf_name = bu_optarg;
+		cf_name = (char *)bu_optarg;
 		next_color = 0;
 		break;
 	    case 'x':
@@ -212,7 +212,7 @@
 	    infp = stdin;
 	    /* Break intentionally missing */
 	case 1:
-	    outf_name = "stdout";
+	    outf_name = (char *)"stdout";
 	    outfp = stdout;
 	    /* Break intentionally missing */
 	case 2:
Index: src/util/bwmod.c
===================================================================
--- src/util/bwmod.c	(revision 54124)
+++ src/util/bwmod.c	(working copy)
@@ -40,7 +40,7 @@
 #include "vmath.h"
 
 
-char *progname = "(noname)";
+const char *progname = "(noname)";
 
 char *file_name;
 
@@ -143,7 +143,7 @@
     if (bu_optind >= argc) {
 	if (isatty((int)fileno(stdin)))
 	    return 0;
-	file_name = "-";
+	file_name = (char *)"-";
     } else {
 	char *ifname;
 	file_name = argv[bu_optind];
Index: src/util/pl-dm.c
===================================================================
--- src/util/pl-dm.c	(revision 54124)
+++ src/util/pl-dm.c	(working copy)
@@ -47,7 +47,7 @@
 
 
 struct cmdtab {
-    char *ct_name;
+    const char *ct_name;
     int (*ct_func)();
 };
 
@@ -1083,7 +1083,7 @@
 Ogl_dmInit()
 {
     fastf_t windowbounds[6] = { 2047.0, -2048.0, 2047.0, -2048.0, 2047.0, -2048.0 };
-    char *av[4];
+    const char *av[4];
 
     av[0] = "Ogl_open";
     av[1] = "-i";
Index: src/util/pixelswap.c
===================================================================
--- src/util/pixelswap.c	(revision 54124)
+++ src/util/pixelswap.c	(working copy)
@@ -33,8 +33,8 @@
 #include "fb.h"
 
 
-char *options = "hd:";
-char *progname = "(noname)";
+const char *options = "hd:";
+const char *progname = "(noname)";
 
 int depth = 3;
 unsigned char ibuf[32767 * 3];
@@ -46,7 +46,7 @@
 /*
  * U S A G E --- tell user how to invoke this program, then exit
  */
-void usage(char *s)
+void usage(const char *s)
 {
     if (s) (void)fputs(s, stderr);
 
Index: src/util/pixdsplit.c
===================================================================
--- src/util/pixdsplit.c	(revision 54124)
+++ src/util/pixdsplit.c	(working copy)
@@ -77,8 +77,8 @@
     int dfd = -1;	/*   "       "     */
     ssize_t ret;
 
-    c_per_p = 3; cf_name = "-";
-    d_per_p = 1; df_name = "";
+    c_per_p = 3; cf_name = (char *)"-";
+    d_per_p = 1; df_name = (char *)"";
     while ((ch = bu_getopt(argc, argv, OPT_STRING)) != -1)
 	switch (ch) {
 	    case 'd':
@@ -143,7 +143,7 @@
     if (*cf_name == '\0') {
 	cf_name = 0;
     } else if ((*cf_name == '-') && (*(cf_name + 1) == '\0')) {
-	cf_name = "stdout";
+	cf_name = (char *)"stdout";
 	cfd = 1;
     } else if ((cfd = open(cf_name,  O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644)) == -1) {
 	bu_log("Cannot open file '%s'\n", cf_name);
@@ -155,7 +155,7 @@
     if (*df_name == '\0') {
 	df_name = 0;
     } else if ((*df_name == '-') && (*(df_name + 1) == '\0')) {
-	df_name = "stdout";
+	df_name = (char *)"stdout";
 	dfd = 1;
     } else if ((dfd = open(df_name, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0644)) == -1) {
 	bu_log("Cannot open file '%s'\n", df_name);
Index: src/util/pixmerge.c
===================================================================
--- src/util/pixmerge.c	(revision 54124)
+++ src/util/pixmerge.c	(working copy)
@@ -99,7 +99,7 @@
 	    case 'C':
 	    case 'c':	/* backward compatibility */
 		{
-		    char *cp = bu_optarg;
+		    char *cp = (char *)bu_optarg;
 		    unsigned char *conp = pconst;
 
 		    /* premature null => atoi gives zeros */
Index: src/util/pldebug.c
===================================================================
--- src/util/pldebug.c	(revision 54124)
+++ src/util/pldebug.c	(working copy)
@@ -48,7 +48,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
 };
 struct uplot uerror = { 0, 0, 0 };
 struct uplot letters[] = {
Index: src/util/hex.c
===================================================================
--- src/util/hex.c	(revision 54124)
+++ src/util/hex.c	(working copy)
@@ -37,8 +37,8 @@
 
 
 /* declarations to support use of bu_getopt() system call */
-static char *options = "o:";
-static char *progname = "(noname)";
+static const char *options = "o:";
+static const char *progname = "(noname)";
 
 static long offset=0;	 /* offset from beginning of file from which to start */
 
Index: src/util/pix3filter.c
===================================================================
--- src/util/pix3filter.c	(revision 54124)
+++ src/util/pix3filter.c	(working copy)
@@ -46,8 +46,8 @@
 
 /* The filter kernels */
 struct kernels {
-    char *name;
-    char *uname;		/* What is needed to recognize it */
+    const char *name;
+    const char *uname;		/* What is needed to recognize it */
     int kern[27];
     int kerndiv;	/* Divisor for kernel */
     int kernoffset;	/* To be added to result */
@@ -98,7 +98,7 @@
 		verbose++;
 		break;
 	    case 'f':
-		select_filter(bu_optarg);
+		select_filter((char *)bu_optarg);
 		break;
 	    case 'd':
 		dflag++;
@@ -226,7 +226,7 @@
     int max, min;
 
     /* Select Default Filter (low pass) */
-    select_filter("low");
+    select_filter((char *)"low");
 
     if (!get_args(argc, argv)) {
 	dousage();
Index: src/util/imgdims.c
===================================================================
--- src/util/imgdims.c	(revision 54124)
+++ src/util/imgdims.c	(working copy)
@@ -71,7 +71,7 @@
 {
     char *ep;
     struct assoc {
-	char *ext;
+	const char *ext;
 	int size;
     }			*ap;
     static struct assoc a_tbl[] = {
Index: src/util/png-bw.c
===================================================================
--- src/util/png-bw.c	(revision 54124)
+++ src/util/png-bw.c	(working copy)
@@ -39,7 +39,7 @@
 static png_color_16 def_backgrd={ 0, 0, 0, 0, 0 };
 static int verbose=0;
 
-static char *usage="Usage:\n\t%s [-v] [-ntsc -crt -R[#] -G[#] -B[#]] [png_input_file] > bw_output_file\n";
+static const char *usage="Usage:\n\t%s [-v] [-ntsc -crt -R[#] -G[#] -B[#]] [png_input_file] > bw_output_file\n";
 
 int
 main(int argc, char **argv)
Index: src/util/azel.c
===================================================================
--- src/util/azel.c	(revision 54124)
+++ src/util/azel.c	(working copy)
@@ -72,7 +72,7 @@
 
 /* ======================================================================== */
 void
-GetCoord (FILE *Whence, double *Coord, char Label, int LineNm, char *FileName)
+GetCoord (FILE *Whence, double *Coord, char Label, int LineNm, const char *FileName)
 
     /* File from which to read */
     /* Where to store coordinate */
@@ -106,8 +106,8 @@
 int
 main (int argc, char **argv)
 {
-    char *inFname = "stdin"; /* Name of input source */
-    char *outFname = "stdout";  /* Name of output destination */
+    const char *inFname = "stdin"; /* Name of input source */
+    const char *outFname = "stdout";  /* Name of output destination */
     char *Label;             /* Names of input coordinates */
     char Tail[4096] = {0};   /* Rest of input line beyond coords */
     FILE *inPtr = stdin;     /* Pointer to input */
@@ -231,7 +231,7 @@
     }
 
 /* * * * * Filter Data * * * * */
-    Label = Invert ? "DHV" : "XYZ";
+    Label = Invert ? (char *)"DHV" : (char *)"XYZ";
 
     while ((Ch = fpeek(inPtr)) != EOF) {
 /* Read U1, V1, and W1 of next point in input frame of reference */
Index: src/util/pl-ps.c
===================================================================
--- src/util/pl-ps.c	(revision 54124)
+++ src/util/pl-ps.c	(working copy)
@@ -45,7 +45,7 @@
 struct uplot {
     int targ;	/* type of args */
     int narg;	/* number or args */
-    char *desc;	/* description */
+    const char *desc;	/* description */
 };
 struct uplot uerror = { 0, 0, 0 };
 struct uplot letters[] = {
@@ -390,7 +390,7 @@
     if (bu_optind >= argc) {
 	if (isatty(fileno(stdin)))
 	    return 0;
-	file_name = "[stdin]";
+	file_name = (char *)"[stdin]";
 	infp = stdin;
     } else {
 	file_name = argv[bu_optind];
Index: src/util/bwrot.c
===================================================================
--- src/util/bwrot.c	(revision 54124)
+++ src/util/bwrot.c	(working copy)
@@ -108,7 +108,7 @@
 		*angle = atof(bu_optarg);
 		break;
 	    case 'o':
-		out_file_name = bu_optarg;
+		out_file_name = (char *)bu_optarg;
 		*ofp = fopen(out_file_name, "wb+");
 		if (*ofp == NULL) {
 		    bu_log("ERROR: %s cannot open \"%s\" for writing\n", bu_getprogname(), out_file_name);
@@ -129,7 +129,7 @@
     }
 
     if (bu_optind >= argc) {
-	in_file_name = "-";
+	in_file_name = (char *)"-";
     } else {
 	in_file_name = argv[bu_optind];
     }
Index: misc/CMake/CompilerFlags.cmake
===================================================================
--- misc/CMake/CompilerFlags.cmake	(revision 54124)
+++ misc/CMake/CompilerFlags.cmake	(working copy)
@@ -265,6 +265,9 @@
 BRLCAD_CHECK_C_FLAG(Qunused-arguments)
 BRLCAD_CHECK_CXX_FLAG(Qunused-arguments)
 
+BRLCAD_CHECK_C_FLAG(Wwrite-strings) 
+BRLCAD_CHECK_CXX_FLAG(Wwrite-strings)
+
 # 64bit compilation flags
 if(${CMAKE_WORD_SIZE} MATCHES "64BIT")
   BRLCAD_CHECK_C_FLAG(m64 VARS 64BIT_FLAG)
