diff -ruN -x configure -x *~ -x ircd-hybrid-6rc7.orig -x *.rej ircd-hybrid-6rc7.orig/src/m_unkline.c ircd-hybrid-6rc7/src/m_unkline.c
--- ircd-hybrid-6rc7.orig/src/m_unkline.c	Sat Nov 18 11:11:12 2000
+++ ircd-hybrid-6rc7/src/m_unkline.c	Sun Dec 31 06:27:31 2000
@@ -87,14 +87,14 @@
       return -1;
     }
 
-  if (!IsAnOper(sptr))  
+  if (!IsPrivileged(sptr))  
     {
       sendto_one(sptr, form_str(ERR_NOPRIVILEGES), me.name, 
                  parv[0]);
       return 0;
     }
 
-  if (!IsSetOperUnkline(sptr))
+  if (!IsServer(cptr) && !IsSetOperUnkline(sptr))
     {
       sendto_one(sptr,":%s NOTICE %s :You have no U flag",me.name,parv[0]);
       return 0;
@@ -102,11 +102,14 @@
 
   if ( parc < 2 )
     {
-      sendto_one(sptr, form_str(ERR_NEEDMOREPARAMS),
-                 me.name, parv[0], "UNKLINE");
+      if (!IsServer(cptr))
+        sendto_one(sptr, form_str(ERR_NEEDMOREPARAMS),
+                   me.name, parv[0], "UNKLINE");
       return 0;
     }
 
+  sendto_serv_butone(sptr, ":%s UNKLINE %s", parv[0], parv[1]);
+
   if ( (host = strchr(parv[1], '@')) || *parv[1] == '*' )
     {
       /* Explicit user@host mask given */
@@ -124,23 +127,26 @@
     }
   else
     {
-      sendto_one(sptr, ":%s NOTICE %s :Invalid parameters",
-                 me.name, parv[0]);
+      if (!IsServer(cptr))
+        sendto_one(sptr, ":%s NOTICE %s :Invalid parameters",
+                   me.name, parv[0]);
       return 0;
     }
 
   if( (user[0] == '*') && (user[1] == '\0')
       && (host[0] == '*') && (host[1] == '\0') )
     {
-      sendto_one(sptr, ":%s NOTICE %s :Cannot UNK-Line everyone",
-                 me.name, parv[0]);
+      if (!IsServer(cptr))
+        sendto_one(sptr, ":%s NOTICE %s :Cannot UNK-Line everyone",
+                   me.name, parv[0]);
       return 0;
     }
 
   if(remove_tkline_match(host,user))
     {
-      sendto_one(sptr, ":%s NOTICE %s :Un-klined [%s@%s] from temporary k-lines",
-                 me.name, parv[0],user, host);
+      if (!IsServer(cptr))
+        sendto_one(sptr, ":%s NOTICE %s :Un-klined [%s@%s] from temporary k-lines",
+                   me.name, parv[0],user, host);
       sendto_ops("%s has removed the temporary K-Line for: [%s@%s]",
                  parv[0], user, host );
 
@@ -153,16 +159,18 @@
 
   if( (in = fbopen(filename, "r")) == 0)
     {
-      sendto_one(sptr, ":%s NOTICE %s :Cannot open %s",
-        me.name,parv[0],filename);
+      if (!IsServer(cptr))
+        sendto_one(sptr, ":%s NOTICE %s :Cannot open %s",
+                   me.name,parv[0],filename);
       return 0;
     }
 
   oldumask = umask(0);                  /* ircd is normally too paranoid */
   if( (out = fbopen(temppath, "w")) == 0)
     {
-      sendto_one(sptr, ":%s NOTICE %s :Cannot open %s",
-        me.name,parv[0],temppath);
+      if (!IsServer(cptr))
+        sendto_one(sptr, ":%s NOTICE %s :Cannot open %s",
+                   me.name,parv[0],temppath);
       fbclose(in);
       umask(oldumask);                  /* Restore the old umask */
       return 0;
@@ -193,11 +201,13 @@
           p = strchr(found_host,':');
           if(p == (char *)NULL)
             {
+	      if (!IsServer(cptr)) {		 
               sendto_one(sptr, ":%s NOTICE %s :K-Line file corrupted",
                          me.name, parv[0]);
               sendto_one(sptr, ":%s NOTICE %s :Couldn't find host",
                          me.name, parv[0]);
               log(L_ERROR, "K-Line file corrupted (couldn't find host)");
+	      }
               if(!error_on_write)
                 error_on_write = flush_write(sptr, out, buf, temppath);
               continue;         /* This K line is corrupted ignore */
@@ -209,11 +219,13 @@
           p = strchr(found_comment,':');
           if(p == (char *)NULL)
             {
+	      if (!IsServer(cptr)) { 
               sendto_one(sptr, ":%s NOTICE %s :K-Line file corrupted",
                          me.name, parv[0]);
               sendto_one(sptr, ":%s NOTICE %s :Couldn't find comment",
                          me.name, parv[0]);
               log(L_ERROR, "K-Line file corrupted (couldn't find comment)");
+	      }
               if(!error_on_write)
                 error_on_write = flush_write(sptr, out, buf, temppath);
               continue;         /* This K line is corrupted ignore */
@@ -315,18 +327,21 @@
     }
   else
     {
-      sendto_one(sptr,":%s NOTICE %s :Couldn't write temp kline file, aborted",
+       if (!IsServer(cptr))
+         sendto_one(sptr,":%s NOTICE %s :Couldn't write temp kline file, aborted",
         me.name,parv[0]);
       return -1;
     }
 
   if(!pairme)
     {
-      sendto_one(sptr, ":%s NOTICE %s :No K-Line for %s@%s",
+      if (!IsServer(cptr))
+        sendto_one(sptr, ":%s NOTICE %s :No K-Line for %s@%s",
                  me.name, parv[0],user,host);
       return 0;
     }
-  sendto_one(sptr, ":%s NOTICE %s :K-Line for [%s@%s] is removed", 
+  if (!IsServer(cptr))
+    sendto_one(sptr, ":%s NOTICE %s :K-Line for [%s@%s] is removed", 
              me.name, parv[0], user,host);
   sendto_realops("%s has removed the K-Line for: [%s@%s]",
              parv[0], user, host);
