diff --git a/NT/tools/rntecl b/NT/tools/rntecl
index 2ee5f0da36eddbd7a717b665226a85acb0e79cc8..91ba7fab219d8554a097ee59baa41e6c81082847 100755
--- a/NT/tools/rntecl
+++ b/NT/tools/rntecl
@@ -1,7 +1,7 @@
 #!/usr/local/bin/pike
 // -*- Pike -*-
 
-// $Id: rntecl,v 1.6 2000/08/17 20:17:53 grubba Exp $
+// $Id: rntecl,v 1.7 2000/08/20 12:37:56 grubba Exp $
 
 // RNTECL, a front-end to Intel ECL with options similar to GCC
 // Written by Fredrik Hubinette & Henrik Grubbström.
@@ -75,6 +75,7 @@ int main(int argc, string *argv)
     ({"verbose",Getopt.NO_ARG, ({"-v"}) }),	
     ({"debug",Getopt.MAY_HAVE_ARG, ({"-g"}) }),
     ({"optimize",Getopt.MAY_HAVE_ARG, ({"-O"}) }),
+    ({"inline", Getopt.MAY_HAVE_ARG, ({"-Q"}) }),
     ({"include",Getopt.HAS_ARG, ({"-I"}) }),
     ({"link",Getopt.HAS_ARG, ({"-l"}) }),
     ({"share",Getopt.MAY_HAVE_ARG, ({"-s"}) }),
@@ -148,6 +149,12 @@ int main(int argc, string *argv)
 	      break;
 	  }
 	  break;
+
+        case "inline":
+	  if (option[1] == "ip") {
+	    cflags+=({"-Qip"});
+	  }
+	  break;
 	  
 	case "include":
 	  // Avoid searching 'local' include dirs.
@@ -191,7 +198,10 @@ int main(int argc, string *argv)
 	  // recognized should generate warning/error messages.
 	  switch(option[1])
 	  {
-	    case "all": cflags+=({"-W4"}); break;
+	  case "all": case "4":
+	    cflags+=({"-W4"}); break;
+	    // Not supported, but in the manual...
+	    // case "X": cflags+=({"-WX"}); break;
 	    default: cflags+=({"-W3"}); break;
 	  }
 	  break;
@@ -287,29 +297,46 @@ int main(int argc, string *argv)
 
 
   int ret;
-  if(verbose && target!="-")
-  { 
-    ret=do_cmd(cmd);
-  }else{
-    int first_line=1;
-    // ecl.exe echoes the file name of the file we are compiling
-    // first, we need to get rid of that to make configure behave 
-    ret=silent_do_cmd(cmd, lambda(string line) 
+  int first_line=1;
+  int prototype_error=0;
+  string trailer = "";
+  // ecl.exe echoes the file name of the file we are compiling
+  // first, we need to get rid of that to make configure behave.
+  // We also convert warning 147 into an error.
+  ret = silent_do_cmd(cmd,
+		      lambda(string output) 
 		      {
+			trailer += output;
+			array(string) lines = trailer/"\n";
+			if (sizeof(lines) < 2) return;
 			if(first_line)
 			{
-			  array x=line/"\n";
-			  if(sizeof(x)>1)
-			  {
-			    line=x[1..]*"\n";
-			    first_line=0;
-			  }else{
-			    return;
+			  if (verbose && (target != "-")) {
+			    write(lines[0]+"\n");
+			  }
+			  lines = lines[1..];
+			  first_line = 0;
+			}
+			trailer = lines[-1];
+			lines = lines[..sizeof(lines)-2];
+			for(int i; i < sizeof(lines); i++) {
+			  // Warning 147 is prototype mismatch.
+			  // for some reason this isn't an error.
+			  // We make it an error...
+			  if (search(lines[i], "warning #147:") != -1) {
+			    prototype_error = 1;
+			    lines[i] = replace(lines[i],
+					       "warning #147:",
+					       "error #147:");
 			  }
 			}
-			write(line);
-		      },1);
+			write(lines*"\n" + "\n");
+		      }, 1);
+  if (sizeof(trailer)) {
+    // Shouldn't happen, but...
+    write(trailer);
   }
+  ret = ret || prototype_error;
 
   if(ret)
   {