diff --git a/NT/tools/lib.pike b/NT/tools/lib.pike
index b98555988cec1065cda191e48d9e19b0dbc021f3..46a5d26dcb6b06a1aee51eba81e24a1d59f57456 100644
--- a/NT/tools/lib.pike
+++ b/NT/tools/lib.pike
@@ -12,6 +12,16 @@ void exece(string cmd, array(string) args)
 string fixpath(string s)
 {
   string mnt=getenv("NTMOUNT");
+  array st;
+
+  while ((st = file_stat(s, 1)) && (st[1] == -3)) {
+    string new_s = readlink(s);
+    if (new_s == s) {
+      werror(sprintf("%O is a symlink to itself!\n", s));
+      exit(1);
+    }
+    s = new_s;
+  }
   if(mnt && strlen(mnt)) s=replace(s,mnt,"");
   return replace(s,"/","\\");
 }
@@ -366,7 +376,6 @@ string getntenv(string var)
 
 int do_cmd(string *cmd, mixed|void filter)
 {
-  werror("DOING "+cmd*" "+"\n");
   return silent_do_cmd(cmd,filter);
 }