Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/LoadDataPMM.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/LoadDataPMM.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/LoadDataPMM.c	(revision 42343)
@@ -163,6 +163,5 @@
   if (!PMM_CCD_TABLE) abort ();
 
-  strncpy (fileID, datafile, 7);
-  fileID[7] = 0;
+  strncpy_nowarn (fileID, datafile, 7);
 
   f = fopen (PMM_CCD_TABLE, "r");
@@ -177,24 +176,11 @@
     if (strncmp (fileID, &line[FILE_ID_INDEX], 7)) continue;
     
-    strncpy (date, &line[DATE_INDEX], 9);
-    date[9] = 0;
-
-    strncpy (timestr, &line[TIME_INDEX], 5);
-    timestr[5] = 0;
-
-    strncpy (RA, &line[RA_INDEX], 6);
-    RA[6] = 0;
-
-    strncpy (DEC, &line[DEC_INDEX], 7);
-    DEC[7] = 0;
-
-    strncpy (emulsion, &line[EMULSION_INDEX], 5);
-    emulsion[5] = 0;
-
-    strncpy (filter, &line[FILTER_INDEX], 6);
-    filter[6] = 0;
-
-    strncpy (EXPTIME, &line[EXPTIME_INDEX], 3);
-    EXPTIME[3] = 0;
+    strncpy_nowarn (date, &line[DATE_INDEX], 9);
+    strncpy_nowarn (timestr, &line[TIME_INDEX], 5);
+    strncpy_nowarn (RA, &line[RA_INDEX], 6);
+    strncpy_nowarn (DEC, &line[DEC_INDEX], 7);
+    strncpy_nowarn (emulsion, &line[EMULSION_INDEX], 5);
+    strncpy_nowarn (filter, &line[FILTER_INDEX], 6);
+    strncpy_nowarn (EXPTIME, &line[EXPTIME_INDEX], 3);
 
     image[0].tzero   = pmm_date_to_sec (date, timestr);
@@ -357,15 +343,7 @@
   double h, m, s, ra;
   
-  strncpy (tmp, &RA[0], 2);
-  tmp[2] = 0;
-  h = atof (tmp);
-
-  strncpy (tmp, &RA[2], 2);
-  tmp[2] = 0;
-  m = atof (tmp);
-
-  strncpy (tmp, &RA[4], 2);
-  tmp[2] = 0;
-  s = atof (tmp);
+  strncpy_nowarn (tmp, &RA[0], 2); h = atof (tmp);
+  strncpy_nowarn (tmp, &RA[2], 2); m = atof (tmp);
+  strncpy_nowarn (tmp, &RA[4], 2); s = atof (tmp);
 
   ra = 15.0 * (h + m / 60.0 + s / 3600.0);
@@ -379,15 +357,7 @@
   double d, m, s, dec;
 
-  strncpy (tmp, &DEC[1], 2);
-  tmp[2] = 0;
-  d = atof (tmp);
-
-  strncpy (tmp, &DEC[3], 2);
-  tmp[2] = 0;
-  m = atof (tmp);
-
-  strncpy (tmp, &DEC[5], 2);
-  tmp[2] = 0;
-  s = atof (tmp);
+  strncpy_nowarn (tmp, &DEC[1], 2); d = atof (tmp);
+  strncpy_nowarn (tmp, &DEC[3], 2); m = atof (tmp);
+  strncpy_nowarn (tmp, &DEC[5], 2); s = atof (tmp);
 
   dec = d + m / 60.0 + s / 3600.0;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/SkyTableFromBSCIndex.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/SkyTableFromBSCIndex.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/SkyTableFromBSCIndex.c	(revision 42343)
@@ -35,6 +35,5 @@
 
     memset (tycho[i].name, 0, 21);
-    strncpy (tycho[i].name, line, 7);
-    tycho[i].name[7] = 0;
+    strncpy_nowarn (tycho[i].name, line, 7);
   }
   Ntycho = i;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/SkyTableFromTychoIndex.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/SkyTableFromTychoIndex.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/SkyTableFromTychoIndex.c	(revision 42343)
@@ -35,6 +35,5 @@
 
     memset (tycho[i].name, 0, 21);
-    strncpy (tycho[i].name, line, 7);
-    tycho[i].name[7] = 0;
+    strncpy_nowarn (tycho[i].name, line, 7);
   }
   Ntycho = i;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadatlas_readstars.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadatlas_readstars.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadatlas_readstars.c	(revision 42343)
@@ -242,6 +242,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadgaia_dr2_readstars.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadgaia_dr2_readstars.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadgaia_dr2_readstars.c	(revision 42343)
@@ -238,6 +238,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadgaia_edr3_readstars.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadgaia_edr3_readstars.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadgaia_edr3_readstars.c	(revision 42343)
@@ -253,6 +253,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadsupercos_ops.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadsupercos_ops.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadsupercos_ops.c	(revision 42343)
@@ -38,11 +38,9 @@
 
   Nchar = p2 - p1 - 1;
-  strncpy (emulsion, p1, Nchar);
-  emulsion[Nchar] = 0;
+  strncpy_nowarn (emulsion, p1, Nchar);
   stripwhite (emulsion);
 	
   Nchar = p3 - p2 - 1;
-  strncpy (filterID, p2, Nchar);
-  filterID[Nchar] = 0;
+  strncpy_nowarn (filterID, p2, Nchar);
   stripwhite (filterID);
 	
@@ -69,6 +67,6 @@
 
   char hour[3], minute[3];
-  strncpy(hour, p1, 2); hour[2] = 0;
-  strncpy(minute, p1+2, 2); minute[2] = 0;
+  strncpy_nowarn(hour, p1, 2);
+  strncpy_nowarn(minute, p1+2, 2);
 
   double minuteF = atof (minute);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugcs.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugcs.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugcs.c	(revision 42343)
@@ -458,6 +458,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugps.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugps.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ugps.c	(revision 42343)
@@ -379,6 +379,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs.c	(revision 42343)
@@ -201,6 +201,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs2022.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs2022.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_uhs2022.c	(revision 42343)
@@ -260,6 +260,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ulas.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ulas.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/loadukirt_uhs_readstars_ulas.c	(revision 42343)
@@ -406,6 +406,5 @@
 	// why do I need to copy temp here, does gprint modify the value of temp?
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/mkcmf.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/mkcmf.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/addstar/src/mkcmf.c	(revision 42343)
@@ -559,5 +559,5 @@
     Ns = strlen (simple);
     No = 80 - Ns;
-    strncpy (header.buffer, simple, Ns);
+    strncpy_nowarn (header.buffer, simple, Ns);
     memset (&header.buffer[Ns], ' ', No);
   }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/elixir/src/Photcodes.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/elixir/src/Photcodes.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/elixir/src/Photcodes.c	(revision 42343)
@@ -172,6 +172,5 @@
 
   ALLOCATE (root, char, Nbyte + 1);
-  strncpy (root, p1, Nbyte);
-  root[Nbyte] = 0;
+  strncpy_nowarn (root, p1, Nbyte);
   
   return (root);
@@ -195,6 +194,5 @@
   Nbyte = p1-file;
   ALLOCATE (path, char, Nbyte + 1);
-  strncpy (path, file, Nbyte);
-  path[Nbyte] = 0;
+  strncpy_nowarn (path, file, Nbyte);
   
   return (path);
@@ -232,6 +230,5 @@
   Nbyte = (p1 - p2);
   ALLOCATE (path, char, Nbyte + 1);
-  strncpy (path, p2, Nbyte);
-  path[Nbyte] = 0;
+  strncpy_nowarn (path, p2, Nbyte);
   
   return (path);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/elixir/src/ProcessOps.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/elixir/src/ProcessOps.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/elixir/src/ProcessOps.c	(revision 42343)
@@ -69,5 +69,5 @@
 	REALLOCATE (value, char, Nbyte);
       }    
-      strncpy (&value[Nout], p1, Ncpy);
+      strncpy_nowarn (&value[Nout], p1, Ncpy);
       Nout += Ncpy;
       p2 ++;
@@ -90,7 +90,6 @@
       REALLOCATE (value, char, Nbyte);
     }    
-    strncpy (&value[Nout], p1, Ncpy);
+    strncpy_nowarn (&value[Nout], p1, Ncpy);
     Nout += Ncpy;
-    value[Nout] = 0;
   }
 
Index: /branches/eam_branches/ipp-20220316/Ohana/src/fixcat/src/aregion.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/fixcat/src/aregion.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/fixcat/src/aregion.c	(revision 42343)
@@ -84,6 +84,5 @@
   Fread (buffer, 1, 48*NDecLines[NBigDec], f, "char");
   for (i = 0; !done && (i < NDecLines[NBigDec]); i++) {
-    strncpy (temp, &buffer[i*48], 48);
-    temp[49] = 0;
+    strncpy_nowarn (temp, &buffer[i*48], 48);
     hstgsc_hms_to_deg (&RA0, &RA1, &DEC0, &DEC1, &temp[7]);
     if (RA1 < RA0) RA1 += 360.0;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/imregister/base/fits_scan_nchar.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/imregister/base/fits_scan_nchar.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/imregister/base/fits_scan_nchar.c	(revision 42343)
@@ -20,6 +20,5 @@
 
   status = gfits_scan (header, field, "%s", N, tmpstr); 
-  strncpy (outstr, tmpstr, size - 1);
-  outstr[size-1] = 0; 
+  strncpy_nowarn (outstr, tmpstr, size - 1);
 
   return (status);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/imregister/detrend/output.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/imregister/detrend/output.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/imregister/detrend/output.c	(revision 42343)
@@ -148,5 +148,5 @@
     }
     bzero (key, 33);
-    strncpy (key, p, 32);
+    strncpy_nowarn (key, p, 32);
     if ((p = strrchr (key, '.')) != (char *) NULL) *p = 0;
 
Index: /branches/eam_branches/ipp-20220316/Ohana/src/imregister/imreg/iminfo.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/imregister/imreg/iminfo.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/imregister/imreg/iminfo.c	(revision 42343)
@@ -91,11 +91,9 @@
   /* force strings to fit in available space (32 bytes) */
   gfits_scan (&header, CameraKeyword,     "%s", 1, line);
-  strncpy (image[0].instrument, line, 31);
-  image[0].instrument[31] = 0;
+  strncpy_nowarn (image[0].instrument, line, 31);
 
   gfits_scan (&header, FilterKeyword, "%s", 1, line);
   MatchFilterList (line);
-  strncpy (image[0].filter, line, 31);
-  image[0].filter[31] = 0;
+  strncpy_nowarn (image[0].filter, line, 31);
 
   /* header has RA & DEC in decimal degrees */
Index: /branches/eam_branches/ipp-20220316/Ohana/src/imregister/imreg/modify.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/imregister/imreg/modify.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/imregister/imreg/modify.c	(revision 42343)
@@ -69,5 +69,5 @@
 
     if (output.modify_filter) {
-      strncpy (image[i].filter, output.filter, 31);
+      strncpy_nowarn (image[i].filter, output.filter, 31);
     }
 
Index: /branches/eam_branches/ipp-20220316/Ohana/src/kapa2/src/LoadLabels.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/kapa2/src/LoadLabels.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/kapa2/src/LoadLabels.c	(revision 42343)
@@ -23,6 +23,5 @@
 
   Nbytes = MIN (strlen(label), LABEL_MAXLEN - 1);
-  strncpy (graph[0].label[mode].text, label, Nbytes);
-  label[Nbytes] = 0;
+  strncpy_nowarn (graph[0].label[mode].text, label, Nbytes);
   
   FREE (label);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/kapa2/src/LoadTickmarks.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/kapa2/src/LoadTickmarks.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/kapa2/src/LoadTickmarks.c	(revision 42343)
@@ -47,6 +47,5 @@
       line[128] = 0; 
       ALLOCATE (image[0].tickmarks.objects[Nobjects].text, char, (int) dx + 1);
-      strncpy (image[0].tickmarks.objects[Nobjects].text, line, (int) dx);
-      image[0].tickmarks.objects[Nobjects].text[(int)dx] = 0;
+      strncpy_nowarn (image[0].tickmarks.objects[Nobjects].text, line, (int) dx);
     }      
     
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c	(revision 42343)
@@ -230,6 +230,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -302,6 +301,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -358,6 +356,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -397,6 +394,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c	(revision 42343)
@@ -225,6 +225,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -294,6 +293,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -353,6 +351,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -390,6 +387,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c	(revision 42343)
@@ -24,6 +24,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -88,6 +87,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -146,6 +144,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -182,6 +179,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c	(revision 42343)
@@ -153,6 +153,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -220,6 +219,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -277,6 +275,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -313,6 +310,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_SIM.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_SIM.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_SIM.c	(revision 42343)
@@ -313,6 +313,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -382,6 +381,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c	(revision 42343)
@@ -249,6 +249,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -317,6 +316,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -375,6 +373,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -411,6 +408,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c	(revision 42343)
@@ -260,6 +260,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -328,6 +327,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -391,6 +389,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -427,6 +424,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c	(revision 42343)
@@ -270,6 +270,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -338,6 +337,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -401,6 +399,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -437,6 +434,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c	(revision 42343)
@@ -308,6 +308,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -376,6 +375,5 @@
 
     // RAW_IMAGE_NAME_LEN > DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
-    out[i].name[DVO_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, DVO_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -439,6 +437,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -475,6 +472,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c	(revision 42343)
@@ -1134,6 +1134,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -1203,6 +1202,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -1267,6 +1265,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -1303,6 +1300,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V5_LOAD.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V5_LOAD.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V5_LOAD.c	(revision 42343)
@@ -645,6 +645,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -714,6 +713,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -778,6 +776,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -814,6 +811,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V6.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V6.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_PS1_V6.c	(revision 42343)
@@ -860,6 +860,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -927,6 +926,5 @@
 
     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -990,6 +988,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -1026,6 +1023,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_elixir.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_elixir.c	(revision 42343)
@@ -217,6 +217,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -291,6 +290,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -346,6 +344,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
@@ -386,6 +383,5 @@
 
   for (i = 0; i < Nvalues; i++) {
-    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
-    out[i].name[31] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, 31); // out[32], in[32]
 
     out[i].code  = in[i].code;         
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_loneos.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_loneos.c	(revision 42343)
@@ -195,6 +195,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -270,6 +269,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c	(revision 42343)
@@ -238,6 +238,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -312,6 +311,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c	(revision 42343)
@@ -238,6 +238,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
@@ -312,6 +311,5 @@
 
     // RAW_IMAGE_NAME_LEN < DVO_IMAGE_NAME_LEN
-    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
-    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
+    strncpy_nowarn (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
 
     out[i].tzero    	    = in[i].tzero;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/skydb.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/skydb.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/skydb.c	(revision 42343)
@@ -275,5 +275,5 @@
       new[Nnew].depth = 2;
       new[Nnew].child = FALSE;
-      strncpy (root, db[i].name, 5); root[5] = 0;
+      strncpy_nowarn (root, db[i].name, 5); 
       myAssert (snprintf (new[Nnew].name, 18, "%s/r%04d.cpt", root, Rnumber) < 18, "overflow");
       Rnumber ++;      
@@ -364,5 +364,5 @@
 	db[N].depth = 3;
 	db[N].child = FALSE;
-	strncpy (root, db[i].name, 10); root[10] = 0;
+	strncpy_nowarn (root, db[i].name, 10); 
 	myAssert (snprintf (db[N].name, 18, "%s.%02d.cpt", root, Rnumber) < 18, "overflow");
 	Rnumber ++;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/skyregion_gsc.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/skyregion_gsc.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libdvo/src/skyregion_gsc.c	(revision 42343)
@@ -254,6 +254,5 @@
   ALLOCATE (regions, SkyRegion, Nregions);
   for (i = 0; i < Nregions; i++) {
-    strncpy (temp, &buffer[i*48], 48);
-    temp[48] = 0;
+    strncpy_nowarn (temp, &buffer[i*48], 48);
     hstgsc_hms_to_deg (&Rmin, &Rmax, &Dmin, &Dmax, &temp[7]);
     if (Dmax < Dmin) SWAP (Dmin, Dmax);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_convert_H.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_convert_H.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_convert_H.c	(revision 42343)
@@ -11,5 +11,5 @@
   Ns = strlen (line);
   No = 80 - Ns;
-  strncpy (header->buffer, line, Ns);
+  strncpy_nowarn (header->buffer, line, Ns);
   memset (&header->buffer[Ns], ' ', No);
 
@@ -27,5 +27,5 @@
   Ns = strlen (line);
   No = 80 - Ns;
-  strncpy (header->buffer, line, Ns);
+  strncpy_nowarn (header->buffer, line, Ns);
   memset (&header->buffer[Ns], ' ', No);
 
@@ -46,5 +46,5 @@
   Ns = strlen (line);
   No = 80 - Ns;
-  strncpy (header->buffer, line, Ns);
+  strncpy_nowarn (header->buffer, line, Ns);
   memset (&header->buffer[Ns], ' ', No);
 
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_modify.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_modify.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_modify.c	(revision 42343)
@@ -48,25 +48,25 @@
     qe += 3;
     qe = MIN (p + 80, qe);
-    strncpy (comment, qe, p + 80 - qe);
+    strncpy_nowarn (comment, qe, p + 80 - qe);
   }
   gfits_pad_ending (comment, 0x20, 82);  /* comment must contain spaces to the end */
 
   /* write the numeric modes */
-  if (!strcmp (mode, "%d"))   { snprintf (string, 200, "%-8s= %20d / %-s ",    field, va_arg (argp, int),       	      	comment); goto found_it; }
-  if (!strcmp (mode, "%ld"))  { snprintf (string, 200, "%-8s= %20ld / %-s ",   field, va_arg (argp, long),      	      	comment); goto found_it; }
-  if (!strcmp (mode, "%lld")) { snprintf (string, 200, "%-8s= %20lld / %-s ",  field, va_arg (argp, long long), 	      	comment); goto found_it; }
-  if (!strcmp (mode, "%Ld"))  { snprintf (string, 200, "%-8s= %20lld / %-s ",  field, va_arg (argp, long long), 	      	comment); goto found_it; }
-  if (!strcmp (mode, "%u"))   { snprintf (string, 200, "%-8s= %20u / %-s ",    field, va_arg (argp, unsigned),  	      	comment); goto found_it; }
+  if (!strcmp (mode, "%d"))   { snprintf (string, 200, "%-8s= %20d / %-s ",    field, va_arg (argp, int),       	 comment); goto found_it; }
+  if (!strcmp (mode, "%ld"))  { snprintf (string, 200, "%-8s= %20ld / %-s ",   field, va_arg (argp, long),      	 comment); goto found_it; }
+  if (!strcmp (mode, "%lld")) { snprintf (string, 200, "%-8s= %20lld / %-s ",  field, va_arg (argp, long long), 	 comment); goto found_it; }
+  if (!strcmp (mode, "%Ld"))  { snprintf (string, 200, "%-8s= %20lld / %-s ",  field, va_arg (argp, long long), 	 comment); goto found_it; }
+  if (!strcmp (mode, "%u"))   { snprintf (string, 200, "%-8s= %20u / %-s ",    field, va_arg (argp, unsigned),  	 comment); goto found_it; }
   if (!strcmp (mode, "%lu"))  { snprintf (string, 200, "%-8s= %20lu / %-s ",   field, va_arg (argp, unsigned long),      comment); goto found_it; }
   if (!strcmp (mode, "%llu")) { snprintf (string, 200, "%-8s= %20llu / %-s ",  field, va_arg (argp, unsigned long long), comment); goto found_it; }
   if (!strcmp (mode, "%Lu"))  { snprintf (string, 200, "%-8s= %20llu / %-s ",  field, va_arg (argp, unsigned long long), comment); goto found_it; }
-  if (!strcmp (mode, "%hd"))  { snprintf (string, 200, "%-8s= %20d / %-s ",    field, va_arg (argp, int),      	        comment); goto found_it; } 
-  if (!strcmp (mode, "%f"))   { snprintf (string, 200, "%-8s= %20.10f / %-s ", field, va_arg (argp, double),   	        comment); goto found_it; } 
-  if (!strcmp (mode, "%lf"))  { snprintf (string, 200, "%-8s= %20.10f / %-s ", field, va_arg (argp, double),   	        comment); goto found_it; } 
-  if (!strcmp (mode, "%e"))   { snprintf (string, 200, "%-8s= %20.10E / %-s ", field, va_arg (argp, double),   	        comment); goto found_it; } 
-  if (!strcmp (mode, "%le"))  { snprintf (string, 200, "%-8s= %20.10E / %-s ", field, va_arg (argp, double),   	        comment); goto found_it; } 
-  if (!strcmp (mode, "%g"))   { snprintf (string, 200, "%-8s= %20.10G / %-s ", field, va_arg (argp, double),   	        comment); goto found_it; } 
-  if (!strcmp (mode, "%lg"))  { snprintf (string, 200, "%-8s= %20.10G / %-s ", field, va_arg (argp, double),   	        comment); goto found_it; } 
-  if (!strcmp (mode, "%jd"))  { snprintf (string, 200, "%-8s= %20jd / %-s ",   field, va_arg (argp, intmax_t), 	        comment); goto found_it; }
+  if (!strcmp (mode, "%hd"))  { snprintf (string, 200, "%-8s= %20d / %-s ",    field, va_arg (argp, int),      	         comment); goto found_it; } 
+  if (!strcmp (mode, "%f"))   { snprintf (string, 200, "%-8s= %20.10f / %-s ", field, va_arg (argp, double),   	         comment); goto found_it; } 
+  if (!strcmp (mode, "%lf"))  { snprintf (string, 200, "%-8s= %20.10f / %-s ", field, va_arg (argp, double),   	         comment); goto found_it; } 
+  if (!strcmp (mode, "%e"))   { snprintf (string, 200, "%-8s= %20.10E / %-s ", field, va_arg (argp, double),   	         comment); goto found_it; } 
+  if (!strcmp (mode, "%le"))  { snprintf (string, 200, "%-8s= %20.10E / %-s ", field, va_arg (argp, double),   	         comment); goto found_it; } 
+  if (!strcmp (mode, "%g"))   { snprintf (string, 200, "%-8s= %20.10G / %-s ", field, va_arg (argp, double),   	         comment); goto found_it; } 
+  if (!strcmp (mode, "%lg"))  { snprintf (string, 200, "%-8s= %20.10G / %-s ", field, va_arg (argp, double),   	         comment); goto found_it; } 
+  if (!strcmp (mode, "%jd"))  { snprintf (string, 200, "%-8s= %20jd / %-s ",   field, va_arg (argp, intmax_t), 	         comment); goto found_it; }
 
   /* string value.  Quotes must be at least 8 chars apart */
@@ -74,5 +74,5 @@
     char *ptr = va_arg (argp, char *);
     if (!ptr) goto invalid;
-    strncpy (data, ptr, 68);
+    strncpy_nowarn (data, ptr, 68);
     snprintf (string, 200, "%-8s= '%-8s' / %-s ", field, data, comment);
     goto found_it;
@@ -85,5 +85,5 @@
 
 found_it:
-  strncpy (p, string, 80);
+  memcpy (p, string, 80); // do not use strncpy_nowarn: do NOT set last byte to NULL
   va_end (argp);
   return (TRUE);
@@ -134,5 +134,5 @@
     qe += 3;
     qe = MIN (p + 80, qe);
-    strncpy (comment, qe, p + 80 - qe);
+    strncpy_nowarn (comment, qe, p + 80 - qe);
   }
   gfits_pad_ending (comment, 0x20, 82);  /* comment must contain spaces to the end */
@@ -150,5 +150,5 @@
     char *ptr = va_arg (argp, char *);
     if (!ptr) goto invalid;
-    strncpy (data, ptr, 71);
+    strncpy_nowarn (data, ptr, 71);
     snprintf (string, 200, "%-8s %-71s", field, data);
   }  
@@ -163,9 +163,9 @@
     if (qs[-1] == 0x27) qs --;
 
-    strncpy (data, qs, MAX (MIN (qe - qs, 71), 0));
+    strncpy_nowarn (data, qs, MAX (MIN (qe - qs, 71), 0));
 
     char *ptr = va_arg (argp, char *);
     if (!ptr) goto invalid;
-    strncpy (comment, ptr, 80);
+    strncpy_nowarn (comment, ptr, 80);
     gfits_pad_ending (comment, 0x20, 82);  /* comment must contain spaces to the end */
     snprintf (string, 200, "%-8s= %s / %-s", field, data, comment);
@@ -173,5 +173,5 @@
   }
 
-  strncpy (p, string, 80);
+  memcpy (p, string, 80); // do not use strncpy_nowarn: do NOT set last byte to NULL
   va_end (argp);
   return (TRUE);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_print.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_print.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_print.c	(revision 42343)
@@ -78,5 +78,5 @@
 
 found_it:
-  strncpy (p, string, 80);
+  memcpy (p, string, 80); // do not use strncpy_nowarn: do NOT set last byte to NULL
   va_end (argp);
   return (TRUE);
@@ -137,5 +137,5 @@
     if (!ptr) goto invalid;
     bzero (line, 80);
-    strncpy (line, ptr, 71);
+    strncpy_nowarn (line, ptr, 71);
     snprintf (string, 200, "%-8s %-71s", field, line);
   }  
@@ -154,5 +154,5 @@
   if (!strcmp (mode, "%C")) goto invalid;
 
-  strncpy (p, string, 80);
+  memcpy (p, string, 80); // do not use strncpy_nowarn: do NOT set last byte to NULL
   
   va_end (argp);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_scan.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_scan.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libfits/header/F_scan.c	(revision 42343)
@@ -111,5 +111,5 @@
   /* non-data entry (COMMENT, HISTORY) */
   if (!strcmp (mode, "%S")) {
-    strncpy (va_arg (argp, char *), p + 8, FT_HISTORY_LENGTH);
+    strncpy_nowarn (va_arg (argp, char *), p + 8, FT_HISTORY_LENGTH);
     return (TRUE);
   }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_get_T_column.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_get_T_column.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_get_T_column.c	(revision 42343)
@@ -32,6 +32,5 @@
     ALLOCATE (Ivalues, int, table[0].Naxis[1]);
     for (i = 0; i < table[0].Naxis[1]; i++) {
-      strncpy (tmp, &table[0].buffer[i*table[0].Naxis[0] + start], Nchar);
-      tmp[Nchar] = 0;
+      strncpy_nowarn (tmp, &table[0].buffer[i*table[0].Naxis[0] + start], Nchar);
       Ivalues[i] = atof (tmp);
     }
@@ -41,6 +40,5 @@
     ALLOCATE (Dvalues, double, table[0].Naxis[1]);
     for (i = 0; i < table[0].Naxis[1]; i++) {
-      strncpy (tmp, &table[0].buffer[i*table[0].Naxis[0] + start], Nchar);
-      tmp[Nchar] = 0;
+      strncpy_nowarn (tmp, &table[0].buffer[i*table[0].Naxis[0] + start], Nchar);
       Dvalues[i] = atof (tmp);
     }
@@ -53,6 +51,5 @@
     for (i = 0; i < table[0].Naxis[1]; i++) {
       ALLOCATE (Cvalues[i], char, N + 1);
-      strncpy (Cvalues[i], &table[0].buffer[i*table[0].Naxis[0] + start], N);
-      Cvalues[i][N] = 0;
+      strncpy_nowarn (Cvalues[i], &table[0].buffer[i*table[0].Naxis[0] + start], N);
     }
     values[0] = (char *) Cvalues;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_get_T_value.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_get_T_value.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_get_T_value.c	(revision 42343)
@@ -26,6 +26,5 @@
   
   byte = Y*table[0].Naxis[0] + start;
-  strncpy (tmp, &table[0].buffer[byte], Nchar);
-  tmp[Nchar] = 0;
+  strncpy_nowarn (tmp, &table[0].buffer[byte], Nchar);
 
   if (!strcmp (mode, "%d"))  *(int      *) value = (int)      atof (tmp);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_table_column.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_table_column.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libfits/table/F_table_column.c	(revision 42343)
@@ -72,6 +72,5 @@
 
   for (i = 0; i < table[0].Naxis[1]; i++) {
-    strncpy (temp, &table[0].buffer[i*table[0].Naxis[0] + start - 1], width);
-    temp[width] = 0;
+    strncpy_nowarn (temp, &table[0].buffer[i*table[0].Naxis[0] + start - 1], width);
     switch (M) {
     case 0:
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libkapa/src/RotFont.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libkapa/src/RotFont.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libkapa/src/RotFont.c	(revision 42343)
@@ -30,5 +30,5 @@
   currentfont = RotFonts[DEFFONT].font;
   currentscale = 1.0;
-  strncpy (currentname, RotFonts[DEFFONT].name, 63); currentname[63] = 0;
+  strncpy_nowarn (currentname, RotFonts[DEFFONT].name, 63); 
   currentsize = RotFonts[DEFFONT].size;
 }
@@ -79,5 +79,5 @@
     currentsize = size;
     if (name != currentname) {
-      strncpy (currentname, name, 63); currentname[63] = 0;
+      strncpy_nowarn (currentname, name, 63); 
     }
     return (TRUE);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libohana/include/ohana.h
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libohana/include/ohana.h	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libohana/include/ohana.h	(revision 42343)
@@ -296,4 +296,5 @@
 char   *strcreate              PROTO((char *string));
 char   *strncreate             PROTO((char *string, int n));
+char   *strncpy_nowarn         PROTO((char *dest, char *src, size_t n));
 int     strextend              PROTO((char **input, char *format,...)) OHANA_FORMAT(printf, 2, 3);
 int     scan_line              PROTO((FILE *f, char *line)); 
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libohana/src/findexec.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libohana/src/findexec.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libohana/src/findexec.c	(revision 42343)
@@ -291,7 +291,7 @@
       if (e == (char *) NULL) {
 	done = TRUE;
-	strncpy (path, c, strlen(c));
+	strncpy_nowarn (path, c, strlen(c));
       } else {
-	strncpy (path, c, e-c);
+	strncpy_nowarn (path, c, e-c);
 	c = e+1;
 	e = strchr (c, ':');
Index: /branches/eam_branches/ipp-20220316/Ohana/src/libohana/src/string.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/libohana/src/string.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/libohana/src/string.c	(revision 42343)
@@ -42,4 +42,20 @@
   
   return (value);
+}
+
+// gcc (Ubuntu 20.04) complains when strncpy is used to copy a fraction of a buffer,
+// potentially skipping the ending NULL.  To avoid the error, manually copy
+// and (to ensure the buffer ends in a NULL) set the last + 1 byte to NUL: 
+// WARNING : len(dest) must be >= n + 1
+char *strncpy_nowarn (char *dest, char *src, size_t n) {
+
+  size_t i;
+  
+  char *d = dest;
+  char *s = src;
+  for (i = 0; i < n && *s != 0; i++, d++, s++) { *d = *s; }
+  for ( ; i <= n; i++, d++) { *d = 0; }
+  
+  return dest;
 }
 
@@ -125,8 +141,7 @@
   ALLOCATE (out, char, N1 + N2 + N3 + 1);
 
-  strncpy (out, string, N1);
-  strncpy (&out[N1], with, N2);
-  strncpy (&out[N1+N2], ext, N3);
-  out[N1+N2+N3] = 0;
+  strncpy_nowarn (&out[0],     string, N1);
+  strncpy_nowarn (&out[N1],    with,   N2);
+  strncpy_nowarn (&out[N1+N2], ext,    N3);
 
   return out;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/cfhtlog.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/cfhtlog.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/cfhtlog.c	(revision 42343)
@@ -303,6 +303,5 @@
 		           year, month,day,hour,min);
 		    for (j = 0; j < nprobes; j++) {
-		        strncpy(bufstr, data + (14 + probes[j]*9), 9);
-		        bufstr[9] =0;
+		        strncpy_nowarn(bufstr, data + (14 + probes[j]*9), 9);
 		        printf("%s ", bufstr);
 		    }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/fakecmp.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/fakecmp.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/fakecmp.c	(revision 42343)
@@ -81,5 +81,5 @@
     line[80] = 0;
     bzero (keyword, 10);
-    strncpy (keyword, line, 8);
+    strncpy_nowarn (keyword, line, 8);
     
     /* replace existing keywords, unless this is a COMMENT or HISTORY field */
@@ -87,5 +87,5 @@
       p = gfits_header_field (&header, keyword, 1);
       if (p != (char *) NULL) {
-	strncpy (p, line, 80);
+	strncpy_nowarn (p, line, 80);
 	continue;
       }
@@ -106,5 +106,5 @@
 
     /* insert the new line here */
-    strncpy (p, line, 80);
+    strncpy_nowarn (p, line, 80);
   }
 
Index: /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/gtfringetable.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/gtfringetable.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/gtfringetable.c	(revision 42343)
@@ -72,5 +72,5 @@
       N = strlen (p);
 
-    strncpy (line, p, N);
+    strncpy_nowarn (line, p, N);
 
     fprintf (stderr, "%s\n", line);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/mkfringetable.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/mkfringetable.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/misc/src/mkfringetable.c	(revision 42343)
@@ -200,5 +200,5 @@
       N = strlen (p);
 
-    strncpy (line, p, N);
+    strncpy_nowarn (line, p, N);
 
     fprintf (stderr, "%s\n", line);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/mosastro/src/output.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/mosastro/src/output.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/mosastro/src/output.c	(revision 42343)
@@ -17,5 +17,5 @@
 
     bzero (outname, 256);
-    strncpy (outname, chip[i].file, N);
+    strncpy_nowarn (outname, chip[i].file, N);
 
     strcat (outname, ext);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/nightd/src/misc.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/nightd/src/misc.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/nightd/src/misc.c	(revision 42343)
@@ -208,6 +208,5 @@
     Nchar = e - p;
     ALLOCATE (args[N], char, Nchar + 1);
-    strncpy (args[N], p, Nchar);
-    args[N][Nchar] = 0;
+    strncpy_nowarn (args[N], p, Nchar);
     p = e;
     for (; isspace (*p); p++);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/memory.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/memory.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/memory.c	(revision 42343)
@@ -27,4 +27,12 @@
   if (!strcasecmp (argv[1], "checkfree")) {
     ohana_memcheck (1);
+    return (TRUE);
+  }
+  if (!strcasecmp (argv[1], "stats")) {
+    OhanaMemstats memstats = ohana_memstats (0);
+    set_variable ("memory:Ntotal", memstats.Ntotal);
+    set_variable ("memory:Nbytes", memstats.Nbytes);
+    set_variable ("memory:Ngood",  memstats.Ngood);
+    set_variable ("memory:Nbad",   memstats.Nbad);
     return (TRUE);
   }
Index: anches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/test/stackmath.sh
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/test/stackmath.sh	(revision 42342)
+++ 	(revision )
@@ -1,128 +1,0 @@
-
-input tap.sh
-
-macro go
- plan {14 + 14}
- test1
- test2
- done
-end
-
-# test unary scalar ops
-macro test1
- $x = 5;                 ok ($x == 5) "scalar equality"
- $x = abs(-3);           ok ($x == 3) "scalar abs"
- $x = int(5.23);         ok ($x == 5) "scalar int"
- $x = floor(7.1234);     ok ($x == 7) "scalar floor"
- $x = floor(7.9876);     ok ($x == 7) "scalar floor"
- $x = ceil(7.1234);      ok ($x == 8) "scalar ceil"
- $x = ceil(7.9876);      ok ($x == 8) "scalar ceil"
-		         
- $x = exp(1.0);          ok ($x == 2.71828182846) "scalar exp"
- $x = ten(3.0);          ok ($x == 1000) "scalar ten"
- $x = log(10000);        ok ($x == 4) "scalar log"
- $x = ln(2.71828182846); ok ($x == 1) "scalar ln"
- $x = sqrt(9);           ok ($x == 3) "scalar sqrt"
- $x = dsin(30);          ok ($x == 0.5) "scalar dsin"
- $x = sin($M_PI/6);      ok ($x == 0.5) "scalar sin"
-end
-
-# test unary vector ops
-macro test2
- create x -3 3
-
- set y = x;                 ok (y[1] == -2) "vector equality"
- set y = abs(x);            ok (y[1] ==  2) "vector abs"
- 
- set y = ten(x);            ok (y[1] == 0.01) "vector ten"
-       	 		    ok (y[5] == 100) "vector ten"
- set z = log(y);            ok (z[5] == 2) "vector log"
-       	 		    ok (z[1] == -2) "vector ten"
-
- set y = exp(x);            ok (y[4] == 2.71828182846) "vector exp"
-       	 		    ok (y[2] == 0.367879441171) "vector exp"
- set z = ln(y);             ok (z[2] == -1) "vector ln"
-                            ok (z[4] == 1) "vector ln"
- create x 0 26
- set y = sqrt(x);           ok (y[4] == 2) "vector sqrt"
-       	 		    ok (y[9] == 3) "vector sqrt"
-
- create x 0 360 30
- set y = dsin(x);           ok (y[1] == 0.5) "vector dsin"
-                            ok (y[3] == 1.0) "vector dsin"
-end
-
-# here are all defined unary functions
-# SVM =
-# SVM abs    
-# SVM int    
-# SVM floor  
-#     round  
-# SVM ceil   
-#     rint   
-# SVM exp    
-# SVM ten    
-# SVM log    
-# SVM ln     
-# SVM sqrt   
-# SVM erf    
-# SVM sinh   
-# SVM cosh   
-# SVM asinh  
-# SVM acosh  
-# SVM sin    
-# SVM cos    
-# SVM tan    
-# SVM dsin   
-# SVM dcos   
-# SVM dtan   
-# SVM asin   
-# SVM acos   
-# SVM atan   
-# SVM dasin  
-# SVM dacos  
-# SVM datan  
-# SVM lgamma 
-# SVM rnd    
-# SVM drnd   
-# SVM lrnd   
-# SVM mrnd   
-# SVM not    
-# SVM negate
-# SVM isinf  
-# SVM isnan  
-#  VM ramp   
-#  VM xramp  
-#  VM yramp  
-#  VM zramp  
-#  VM zero   
-
-## tests are not reporting an error when using one of the unimplemented functions
-
-# here are all defined binary functions
-
-# V "^"
-# V max     "U"
-# V min     "D"
-# V atan2   "a"
-# V datan2  "d"
-# * <-      "l"
-# * ->      "r"
-# V @       
-# V /       
-# V *       
-# V %       
-# V +       
-# V -       
-# V &       
-# V |       
-# V <       
-# V >       
-# V ==      "E"
-# V !=      "N"
-# V <=      "L"
-# V >=      "G"
-# V >>      "U"
-# V <<      "D"
-# V &&      "A"
-# V ||      "O"
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/test/stackmath.tp
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/test/stackmath.tp	(revision 42343)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/test/stackmath.tp	(revision 42343)
@@ -0,0 +1,128 @@
+
+input ../../test/tap.tp
+
+macro go
+ plan {14 + 14}
+ test1
+ test2
+ done
+end
+
+# test unary scalar ops
+macro test1
+ $x = 5;                 ok ($x == 5) "scalar equality"
+ $x = abs(-3);           ok ($x == 3) "scalar abs"
+ $x = int(5.23);         ok ($x == 5) "scalar int"
+ $x = floor(7.1234);     ok ($x == 7) "scalar floor"
+ $x = floor(7.9876);     ok ($x == 7) "scalar floor"
+ $x = ceil(7.1234);      ok ($x == 8) "scalar ceil"
+ $x = ceil(7.9876);      ok ($x == 8) "scalar ceil"
+		         
+ $x = exp(1.0);          ok ($x == 2.71828182846) "scalar exp"
+ $x = ten(3.0);          ok ($x == 1000) "scalar ten"
+ $x = log(10000);        ok ($x == 4) "scalar log"
+ $x = ln(2.71828182846); ok ($x == 1) "scalar ln"
+ $x = sqrt(9);           ok ($x == 3) "scalar sqrt"
+ $x = dsin(30);          ok ($x == 0.5) "scalar dsin"
+ $x = sin($M_PI/6);      ok ($x == 0.5) "scalar sin"
+end
+
+# test unary vector ops
+macro test2
+ create x -3 3
+
+ set y = x;                 ok (y[1] == -2) "vector equality"
+ set y = abs(x);            ok (y[1] ==  2) "vector abs"
+ 
+ set y = ten(x);            ok (y[1] == 0.01) "vector ten"
+       	 		    ok (y[5] == 100) "vector ten"
+ set z = log(y);            ok (z[5] == 2) "vector log"
+       	 		    ok (z[1] == -2) "vector ten"
+
+ set y = exp(x);            ok (y[4] == 2.71828182846) "vector exp"
+       	 		    ok (y[2] == 0.367879441171) "vector exp"
+ set z = ln(y);             ok (z[2] == -1) "vector ln"
+                            ok (z[4] == 1) "vector ln"
+ create x 0 26
+ set y = sqrt(x);           ok (y[4] == 2) "vector sqrt"
+       	 		    ok (y[9] == 3) "vector sqrt"
+
+ create x 0 360 30
+ set y = dsin(x);           ok (y[1] == 0.5) "vector dsin"
+                            ok (y[3] == 1.0) "vector dsin"
+end
+
+# here are all defined unary functions
+# SVM =
+# SVM abs    
+# SVM int    
+# SVM floor  
+#     round  
+# SVM ceil   
+#     rint   
+# SVM exp    
+# SVM ten    
+# SVM log    
+# SVM ln     
+# SVM sqrt   
+# SVM erf    
+# SVM sinh   
+# SVM cosh   
+# SVM asinh  
+# SVM acosh  
+# SVM sin    
+# SVM cos    
+# SVM tan    
+# SVM dsin   
+# SVM dcos   
+# SVM dtan   
+# SVM asin   
+# SVM acos   
+# SVM atan   
+# SVM dasin  
+# SVM dacos  
+# SVM datan  
+# SVM lgamma 
+# SVM rnd    
+# SVM drnd   
+# SVM lrnd   
+# SVM mrnd   
+# SVM not    
+# SVM negate
+# SVM isinf  
+# SVM isnan  
+#  VM ramp   
+#  VM xramp  
+#  VM yramp  
+#  VM zramp  
+#  VM zero   
+
+## tests are not reporting an error when using one of the unimplemented functions
+
+# here are all defined binary functions
+
+# V "^"
+# V max     "U"
+# V min     "D"
+# V atan2   "a"
+# V datan2  "d"
+# * <-      "l"
+# * ->      "r"
+# V @       
+# V /       
+# V *       
+# V %       
+# V +       
+# V -       
+# V &       
+# V |       
+# V <       
+# V >       
+# V ==      "E"
+# V !=      "N"
+# V <=      "L"
+# V >=      "G"
+# V >>      "U"
+# V <<      "D"
+# V &&      "A"
+# V ||      "O"
Index: anches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/test/tap.sh
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.basic/test/tap.sh	(revision 42342)
+++ 	(revision )
@@ -1,61 +1,0 @@
-
-macro plan
- if ($0 != 2)
-  echo "USAGE: plan (Ntest)"
-  break
- end
-
- $tap_Nplan = $1
- $tap_Npass = 0
- $tap_Nfail = 0
- $tap_Ntest = 0
-end
-
-macro done
- if (not($?tap_Nplan))
-  echo "ERROR: tap tests not planned"
-  break
- end
-
- echo "planned $tap_Nplan tests, ran $tap_Ntest"
- echo "passed $tap_Npass tests, failed $tap_Nfail tests"
-
- if (($tap_Nfail == 0) && ($tap_Ntest == $tap_Nplan) && ($tap_Npass == $tap_Ntest))
-   echo "PASS: all tests run and passed"
-   return 1
- end
-
- if ($tap_Nfail > 0)
-   echo "FAIL: $tap_Nfail tests failed"
- end
-
- if ($tap_Ntest != $tap_Nplan)
-   echo "FAIL: not all tests run"
- end
-
- if ($tap_Ntest != $tap_Npass + $tap_Nfail)
-   echo "FAIL: inconsistent count: $tap_Ntest tests != $tap_Npass pass + $tap_Nfail fail"
- end
-end
-
-macro ok
- if ($0 != 3)
-  echo "USAGE (condition) (label)"
-  break
- end
- 
- if (not($?tap_Nplan))
-  echo "ERROR: tap tests not planned"
-  break
- end
- 
- if ($1)
-  echo "OK: $2"
-  $tap_Npass ++
- else     
-  echo "not OK: $2"
-  $tap_Nfail ++
- end
- $tap_Ntest ++
-end
-
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/read_vectors.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/read_vectors.c	(revision 42343)
@@ -385,6 +385,5 @@
       if (!lineStatus && VERBOSE) {
 	char temp[32];
-	strncpy (temp, c0, 32);
-	temp[31] = 0;
+	strncpy_nowarn (temp, c0, 31);
 	gprint (GP_ERR, "skip line %s\n\n", temp);
       }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/test/histogram.sh
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/test/histogram.sh	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/test/histogram.sh	(revision 42343)
@@ -35,6 +35,9 @@
  local i
 
- list word -x "ps -p $PID -o rss"
- $startmem = $word:1
+ create xhis 0 10 0.1
+ $i = 1
+
+ memory stats
+ $startmem = $memory:Ntotal
 
  for i 0 1000
@@ -42,6 +45,6 @@
  end
   
- list word -x "ps -p $PID -o rss"
- $endmem = $word:1
+ memory stats
+ $endmem = $memory:Ntotal
 
  $PASS = 1
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/test/join.sh
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/test/join.sh	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/test/join.sh	(revision 42343)
@@ -21,65 +21,4 @@
 
  join ID1 ID2 
-
-mana: for i 0 index1[]
->> echo index1[$i] index2[$i]
->> end
-0 2
-2 1
-4 0
-5 3
-mana: join ID1 ID2 -outer
-mana: vectors 
-    N       name      size
-    0        ID1          6 (INT)
-    1       val1          6 (FLT)
-    2        ID2          4 (INT)
-    3        val          4 (FLT)
-    4     index1          6 (INT)
-    5     index2          4 (INT)
-mana: for i 0 index1[]
->> echo index1[$i]
->> end
-2
--1
-1
--1
-0
-3
-mana: echo ID1[2]
-3
-mana: echo ID1[0] ID2[2]
-1 1
-mana: for i 0 index1[]
->> if (index1[$i] == -1) continue
->> $N = index1[$i]
->> echo $i index1[$i] ID1[$i] ID2[$N]
->> end
-0 2 1 1
-2 1 3 3
-4 0 5 5
-5 3 6 6
-mana: for i 0 index2[]
->> if (index2[$i] == -1) continue
->> $N = index2[$i]
->> echo $i index2[$i] ID2[$i] ID1[$N]
->> end
-0 4 5 5
-1 2 3 3
-2 0 1 1
-3 5 6 6
-mana: 
-
- # if ((xvec[1024] != 17) || (yvec[1024] != 100))
- #  $PASS = 0
- #  echo "Value mismatch: xvec[1024] yvec[1024] (should be 17,100)"
- # end
- # 
- # imhist -q buff xvec yvec -region 40 0 25 10 -range 0 10
- # 
- # if ((xvec[1024] != 10) || (yvec[1024] != 100))
- #  $PASS = 0
- #  echo "Value mismatch: xvec[1024] yvec[1024] (should be 10,100)"
- # end
 
 end
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/wd.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/wd.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/wd.c	(revision 42343)
@@ -115,5 +115,5 @@
       Ns = strlen (simple);
       No = 80 - Ns;
-      strncpy (temp_header.buffer, simple, Ns);
+      strncpy_nowarn (temp_header.buffer, simple, Ns);
       memset (&temp_header.buffer[Ns], ' ', No);
     }
@@ -275,25 +275,2 @@
   return (f);
 }
-
-
-///    /* fix up header */
-///    {
-///      static char simple[] = "XTENSION= 'IMAGE  '            / Image extension";
-///      int Ns, No;
-///      Ns = strlen (simple);
-///      No = 80 - Ns;
-///      strncpy (temp_header.buffer, simple, Ns);
-///      memset (&temp_header.buffer[Ns], ' ', No);
-///    }
-///
-///    /* position to end of file to write new extend */
-///    fseeko (f, 0LL, SEEK_END);
-///    nbytes = fwrite (temp_header.buffer, 1, temp_header.datasize, f);
-///    fclose (f);
-///    if (nbytes != temp_header.datasize) {
-///      gprint (GP_ERR, "failed to write file\n");
-///      status = FALSE;
-///      goto done1;
-///    }
-///
-///  }
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/write_vectors.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/write_vectors.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/cmd.data/write_vectors.c	(revision 42343)
@@ -214,5 +214,5 @@
     /* identify type (%NNNNd %NNNNf) */
     for (p2 = p1 + 1; (*p2 == '.') || (*p2 == '-') || (*p2 == '+') || (*p2 == ' ') || isdigit(*p2); p2++);
-    strncpy (fmtlist[j], p0, p2 - p0 + 1);
+    strncpy_nowarn (fmtlist[j], p0, p2 - p0 + 1);
     switch (*p2) {
       case 'e':
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/dvo/aregion.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/dvo/aregion.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/dvo/aregion.c	(revision 42343)
@@ -49,6 +49,5 @@
   fread (buffer, 1, 48*NDecLines[NBigDec], f);
   for (i = 0; !done && (i < NDecLines[NBigDec]); i++) {
-    strncpy (temp, &buffer[i*48], 48);
-    temp[49] = 0;
+    strncpy_nowarn (temp, &buffer[i*48], 48);
     hstgsc_hms_to_deg (&RA0, &RA1, &DEC0, &DEC1, &temp[7]);
     if (RA1 < RA0) RA1 += 360.0;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/dvo/find_regions.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/dvo/find_regions.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/dvo/find_regions.c	(revision 42343)
@@ -100,6 +100,5 @@
     fread (buffer, 48*NDecLines[NBigDec + j], 1, f);
     for (i = 0; (i < NDecLines[NBigDec + j]); i++) {
-      strncpy (temp, &buffer[i*48], 48);
-      temp[49] = 0;
+      strncpy_nowarn (temp, &buffer[i*48], 48);
       hstgsc_hms_to_deg (&RA0, &RA1, &DEC0, &DEC1, &temp[7]);
       if (RA1 < RA0) RA1 += 360.0;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/lib.shell/VectorIO.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/lib.shell/VectorIO.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/lib.shell/VectorIO.c	(revision 42343)
@@ -261,5 +261,5 @@
   memset (endptr, ' ', FT_LINE_LENGTH);
 
-  strncpy (endptr, newline, 80);
+  strncpy_nowarn (endptr, newline, 80);
   endptr += FT_LINE_LENGTH;
 
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/lib.shell/expand_vectors.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/lib.shell/expand_vectors.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/lib.shell/expand_vectors.c	(revision 42343)
@@ -51,5 +51,5 @@
 
   n = L - line;
-  strncpy (newline, line, n);
+  strncpy_nowarn (newline, line, n);
   N = newline + n;
   J = 0;
@@ -256,8 +256,8 @@
 
     n = (int) (w - L);
-    strncpy (N, L, n);
+    strncpy_nowarn (N, L, n);
     N += n;
     n = strlen (strValue);
-    strncpy (N, strValue, n);
+    strncpy_nowarn (N, strValue, n);
     N += n;
     L = q + 1;
@@ -274,6 +274,5 @@
 
   n = strlen (L);
-  strncpy (N, L, n);
-  N[n] = 0;
+  strncpy_nowarn (N, L, n);
   free (line);
   return (newline);
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/test/tap.tp
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/test/tap.tp	(revision 42343)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/test/tap.tp	(revision 42343)
@@ -0,0 +1,61 @@
+
+macro plan
+ if ($0 != 2)
+  echo "USAGE: plan (Ntest)"
+  break
+ end
+
+ $tap_Nplan = $1
+ $tap_Npass = 0
+ $tap_Nfail = 0
+ $tap_Ntest = 0
+end
+
+macro done
+ if (not($?tap_Nplan))
+  echo "ERROR: tap tests not planned"
+  break
+ end
+
+ echo "planned $tap_Nplan tests, ran $tap_Ntest"
+ echo "passed $tap_Npass tests, failed $tap_Nfail tests"
+
+ if (($tap_Nfail == 0) && ($tap_Ntest == $tap_Nplan) && ($tap_Npass == $tap_Ntest))
+   echo "PASS: all tests run and passed"
+   return 1
+ end
+
+ if ($tap_Nfail > 0)
+   echo "FAIL: $tap_Nfail tests failed"
+ end
+
+ if ($tap_Ntest != $tap_Nplan)
+   echo "FAIL: not all tests run"
+ end
+
+ if ($tap_Ntest != $tap_Npass + $tap_Nfail)
+   echo "FAIL: inconsistent count: $tap_Ntest tests != $tap_Npass pass + $tap_Nfail fail"
+ end
+end
+
+macro ok
+ if ($0 != 3)
+  echo "USAGE (condition) (label)"
+  break
+ end
+ 
+ if (not($?tap_Nplan))
+  echo "ERROR: tap tests not planned"
+  break
+ end
+ 
+ if ($1)
+  echo "OK: $2"
+  $tap_Npass ++
+ else     
+  echo "not OK: $2"
+  $tap_Nfail ++
+ end
+ $tap_Ntest ++
+end
+
Index: /branches/eam_branches/ipp-20220316/Ohana/src/opihi/test/tests.sh
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/opihi/test/tests.sh	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/opihi/test/tests.sh	(revision 42343)
@@ -53,5 +53,5 @@
   for Tj 0 $testscripts:n
     if ($VERBOSE > 1)
-      echo " running $testscripts:$Tj"
+      echo " ----- running $testscripts:$Tj -----"
     end
     runtests $testscripts:$Tj      
Index: /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/findexec.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/findexec.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/findexec.c	(revision 42343)
@@ -101,8 +101,8 @@
 	done = TRUE;
 	bzero (path, 256);
-	strncpy (path, c, strlen(c));
+	strncpy_nowarn (path, c, strlen(c));
       } else {
 	bzero (path, 256);
-	strncpy (path, c, e-c);
+	strncpy_nowarn (path, c, e-c);
 	c = e+1;
 	e = strchr (c, ':');
Index: /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/fits_insert.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/fits_insert.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/fits_insert.c	(revision 42343)
@@ -85,5 +85,5 @@
     p = gfits_header_field (&header, "COMMENT", Cnumber);
     if (p != (char *) NULL) {
-      strncpy (p, line, 80);
+      memcpy (p, line, 80); // do not use strncpy_nowarn: do NOT set last byte to NULL
     }
   }
@@ -108,5 +108,5 @@
     line[80] = 0;
     bzero (keyword, 10);
-    strncpy (keyword, line, 8);
+    strncpy_nowarn (keyword, line, 8);
     
     /* replace existing keywords, unless this is a COMMENT or HISTORY field */
@@ -114,5 +114,5 @@
       p = gfits_header_field (&header, keyword, 1);
       if (p != (char *) NULL) {
-	strncpy (p, line, 80);
+	strncpy_nowarn (p, line, 80);
 	continue;
       }
@@ -151,9 +151,9 @@
 	exit (1);
       }
-      strncpy (p+80, "END", 3);
+      memcpy (p+80, "END", 3); // do not use strncpy_nowarn, do NOT set last byte to NULL
       for (i = 3; i < 80; i++) { p[80+i] = ' '; }
     }
     /* insert the new line here */
-    strncpy (p, line, 80);
+    memcpy (p, line, 80); // do not use strncpy_nowarn, do NOT set last byte to NULL
   }
   if (fclose (f)) {
Index: /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/mpcorb_predict.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/mpcorb_predict.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/mpcorb_predict.c	(revision 42343)
@@ -775,5 +775,5 @@
   // set the byte after the range to NULL and scanf the values.  or just use strtod as needed:
 
-  strncpy (planet->ID, line, 7); planet->ID[7] = 0;
+  strncpy_nowarn (planet->ID, line, 7);
 
   char *endptr;
Index: /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/mpcorb_predict_tests.c
===================================================================
--- /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/mpcorb_predict_tests.c	(revision 42342)
+++ /branches/eam_branches/ipp-20220316/Ohana/src/tools/src/mpcorb_predict_tests.c	(revision 42343)
@@ -1059,5 +1059,5 @@
   // set the byte after the range to NULL and scanf the values.  or just use strtod as needed:
 
-  strncpy (planet->ID, line, 7); planet->ID[7] = 0;
+  strncpy_nowarn (planet->ID, line, 7);
 
   MPC_DOUBLE (planet->mean_anomaly, 27, 35);
