*** include/ircd.h.orig	Sun Jan  6 01:28:57 2002
--- include/ircd.h	Sat Jan  5 22:28:21 2002
***************
*** 32,37 ****
--- 32,39 ----
  #define INCLUDED_sys_types_h
  #endif
  
+ #define IRCD_BUFSIZE	512
+ 
  struct Client;
  
  struct SetOptions
***************
*** 66,71 ****
--- 68,75 ----
    int spam_num;
    int spam_time;
  #endif
+ 
+   char operstring[IRCD_BUFSIZE+1];
  };
  
  struct Counter {
***************
*** 107,113 ****
  #define SPLITDELAY GlobalSetOptions.server_split_recovery_time
  #define SPLITNUM   GlobalSetOptions.split_smallnet_size
  #define SPLITUSERS GlobalSetOptions.split_smallnet_users
- 
  
  extern char*          debugmode;
  extern int            debuglevel;
--- 111,116 ----
*** include/s_conf.h.orig	Sun Jan  6 01:28:57 2002
--- include/s_conf.h	Sat Jan  5 22:26:01 2002
***************
*** 80,85 ****
--- 80,86 ----
  #define CONF_ME                 0x0040
  #define CONF_KILL               0x0080
  #define CONF_ADMIN              0x0100
+ #define CONF_SET				0x0200
  /*
   * R_LINES are no more
   * -wnder
*** src/ircd.c.orig	Sun Jan  6 01:28:57 2002
--- src/ircd.c	Sat Jan  5 22:16:42 2002
***************
*** 568,573 ****
--- 568,576 ----
    NOISYHTM = NOISY_HTM;
    GlobalSetOptions.autoconn = 1;
  
+   /* wheeeee? -gnp */
+   strcpy(GlobalSetOptions.operstring, "is an IRC Operator");
+ 
  #ifdef FLUD
    FLUDNUM = FLUD_NUM;
    FLUDTIME = FLUD_TIME;
*** src/m_set.c.orig	Sun Jan  6 01:28:57 2002
--- src/m_set.c	Sat Jan  5 22:29:54 2002
***************
*** 132,138 ****
  #define TOKEN_SPAMNUM 11
  #define TOKEN_SPAMTIME 12
  #define TOKEN_LOG 13
! #define TOKEN_BAD 14
  
  static char *set_token_table[] = {
    "MAX",
--- 132,139 ----
  #define TOKEN_SPAMNUM 11
  #define TOKEN_SPAMTIME 12
  #define TOKEN_LOG 13
! #define TOKEN_OPERSTRING 14
! #define TOKEN_BAD 15
  
  static char *set_token_table[] = {
    "MAX",
***************
*** 149,154 ****
--- 150,156 ----
    "SPAMNUM",
    "SPAMTIME",
    "LOG",
+   "OPERSTRING",
    NULL
  };
  
***************
*** 578,584 ****
              }
            return 0;
            break;
! 
          default:
          case TOKEN_BAD:
            break;
--- 580,599 ----
              }
            return 0;
            break;
! 		case TOKEN_OPERSTRING:
! 		  if (parc > 2)
! 		  {
! 		    strncpy_irc(GlobalSetOptions.operstring, parv[2], IRCD_BUFSIZE);
! 			sendto_realops("%s has changed OPERSTRING to %s",
! 						   parv[0], parv[2]);
! 		  }
! 		  else
! 		  {
! 			sendto_one(sptr, ":%s NOTICE %s :*** Notice -- OPERSTRING is currently %s",
! 					   me.name, parv[0], GlobalSetOptions.operstring);
! 		  }
! 		  return 0;
! 		  break;
          default:
          case TOKEN_BAD:
            break;
*** src/m_whois.c.orig	Sun Jan  6 01:28:57 2002
--- src/m_whois.c	Sat Jan  5 21:45:30 2002
***************
*** 282,288 ****
  
            if (IsAnOper(acptr))
              sendto_one(sptr, form_str(RPL_WHOISOPERATOR),
!                        me.name, parv[0], name);
  #ifdef WHOIS_NOTICE
            if ((MyOper(acptr)) && ((acptr)->umodes & FLAGS_SPY) &&
                (MyConnect(sptr)) && (IsPerson(sptr)) && (acptr != sptr))
--- 282,288 ----
  
            if (IsAnOper(acptr))
              sendto_one(sptr, form_str(RPL_WHOISOPERATOR),
!                        me.name, parv[0], name, GlobalSetOptions.operstring);
  #ifdef WHOIS_NOTICE
            if ((MyOper(acptr)) && ((acptr)->umodes & FLAGS_SPY) &&
                (MyConnect(sptr)) && (IsPerson(sptr)) && (acptr != sptr))
***************
*** 425,431 ****
  
            if (IsAnOper(acptr))
              sendto_one(sptr, form_str(RPL_WHOISOPERATOR),
!                        me.name, parv[0], name);
  #ifdef WHOIS_NOTICE
            if ((MyOper(acptr)) && ((acptr)->umodes & FLAGS_SPY) &&
                (MyConnect(sptr)) && (IsPerson(sptr)) && (acptr != sptr))
--- 425,431 ----
  
            if (IsAnOper(acptr))
              sendto_one(sptr, form_str(RPL_WHOISOPERATOR),
!                        me.name, parv[0], name, GlobalSetOptions.operstring);
  #ifdef WHOIS_NOTICE
            if ((MyOper(acptr)) && ((acptr)->umodes & FLAGS_SPY) &&
                (MyConnect(sptr)) && (IsPerson(sptr)) && (acptr != sptr))
*** src/messages.tab.orig	Sun Jan  6 01:28:57 2002
--- src/messages.tab	Sat Jan  5 21:43:31 2002
***************
*** 340,346 ****
  /* 310 */       NULL,
  /* 311 RPL_WHOISUSER, */        ":%s 311 %s %s %s %s * :%s",
  /* 312 RPL_WHOISSERVER, */      ":%s 312 %s %s %s :%s",
! /* 313 RPL_WHOISOPERATOR, */    ":%s 313 %s %s :is an IRC Operator",
  /* 314 RPL_WHOWASUSER, */       ":%s 314 %s %s %s %s * :%s",
  /* 315 RPL_ENDOFWHO, */         ":%s 315 %s %s :End of /WHO list.",
  /* 316 RPL_WHOISCHANOP, */      NULL,
--- 340,346 ----
  /* 310 */       NULL,
  /* 311 RPL_WHOISUSER, */        ":%s 311 %s %s %s %s * :%s",
  /* 312 RPL_WHOISSERVER, */      ":%s 312 %s %s %s :%s",
! /* 313 RPL_WHOISOPERATOR, */    ":%s 313 %s %s :%s",
  /* 314 RPL_WHOWASUSER, */       ":%s 314 %s %s %s %s * :%s",
  /* 315 RPL_ENDOFWHO, */         ":%s 315 %s %s :End of /WHO list.",
  /* 316 RPL_WHOISCHANOP, */      NULL,
*** src/messages_cust.tab.orig	Sun Jan  6 01:28:57 2002
--- src/messages_cust.tab	Sat Jan  5 21:43:58 2002
***************
*** 341,347 ****
  /* 310 */       NULL,
  /* 311 RPL_WHOISUSER, */        ":%s 311 %s %s %s %s * :%s",
  /* 312 RPL_WHOISSERVER, */      ":%s 312 %s %s %s :%s",
! /* 313 RPL_WHOISOPERATOR, */    ":%s 313 %s %s :is a Smurf Target (IRC Operator)",
  /* 314 RPL_WHOWASUSER, */       ":%s 314 %s %s %s %s * :%s",
  /* 315 RPL_ENDOFWHO, */         ":%s 315 %s %s :End of /WHO list.",
  /* 316 RPL_WHOISCHANOP, */      NULL,
--- 341,347 ----
  /* 310 */       NULL,
  /* 311 RPL_WHOISUSER, */        ":%s 311 %s %s %s %s * :%s",
  /* 312 RPL_WHOISSERVER, */      ":%s 312 %s %s %s :%s",
! /* 313 RPL_WHOISOPERATOR, */    ":%s 313 %s %s :%s",
  /* 314 RPL_WHOWASUSER, */       ":%s 314 %s %s %s %s * :%s",
  /* 315 RPL_ENDOFWHO, */         ":%s 315 %s %s :End of /WHO list.",
  /* 316 RPL_WHOISCHANOP, */      NULL,
*** src/s_conf.c.orig	Sun Jan  6 01:28:57 2002
--- src/s_conf.c	Sat Jan  5 22:32:24 2002
***************
*** 2094,2099 ****
--- 2094,2104 ----
            aconf->status = CONF_QUARANTINED_NICK;
            break;
  
+ 		case 'S': /* settable stuff */
+ 		case 's':
+ 		  aconf->status = CONF_SET;
+ 		  break;
+ 
          case 'U': /* Uphost, ie. host where client reading */
          case 'u': /* this should connect.                  */
            aconf->status = CONF_ULINE;
***************
*** 2386,2391 ****
--- 2391,2401 ----
              }
            }
          }
+ 	  else if (aconf->status == CONF_SET)
+ 	  {
+ 		dontadd = 1;
+ 		strncpy_irc(GlobalSetOptions.operstring, aconf->host, IRCD_BUFSIZE);
+ 	  }
        else if (aconf->host && (aconf->status & CONF_CLIENT))
          {
            char *p;
