*** src/m_info.c.orig   Sun Jan 20 17:27:40 2002
--- src/m_info.c        Sun Jan 20 19:13:10 2002
***************
*** 65,71 ****
       * Now send them a list of all our configuration options
       * (mostly from config.h)
       */
!     if (IsAnOper(sptr))
      {
        sendto_one(sptr, form_str(RPL_INFO), me.name, parv[0], "Compile-time configuration options:");
  
--- 65,71 ----
       * Now send them a list of all our configuration options
       * (mostly from config.h)
       */
!     if (IsAnOper(sptr) && MyConnect(sptr))
      {
        sendto_one(sptr, form_str(RPL_INFO), me.name, parv[0], "Compile-time configuration options:");
  
***************
*** 103,109 ****
  #endif
        sendto_one(sptr, form_str(RPL_INFO), me.name, parv[0], "");
  
!     } /* if (IsAnOper(sptr)) */
  
      sendto_one(sptr,
        ":%s %d %s :Birth Date: %s, compile #%s",
--- 103,109 ----
  #endif
        sendto_one(sptr, form_str(RPL_INFO), me.name, parv[0], "");
  
!     } /* if (IsAnOper(sptr) && MyConnect(sptr)) */
  
      sendto_one(sptr,
        ":%s %d %s :Birth Date: %s, compile #%s",
bash-2.05$ ls *.diff
compile-info-oper-only.diff     remote-whois-notice.diff
iline-flag-canflood.diff        umode-p-hide-statsp.diff
bash-2.05$ cat umode-p-hide-statsp.diff
Index: include/client.h
===================================================================
RCS file: /cvsroot/ircd-hybrid-6/include/client.h,v
retrieving revision 1.60
diff -c -r1.60 client.h
*** include/client.h    4 Dec 2001 06:40:30 -0000       1.60
--- include/client.h    21 Jan 2002 03:11:37 -0000
***************
*** 337,342 ****
--- 337,343 ----
  #define FLAGS_INVISIBLE    0x0400 /* makes user invisible */
  #define FLAGS_BOTS         0x0800 /* shows bots */
  #define FLAGS_EXTERNAL     0x1000 /* show servers introduced */
+ #define FLAGS_HIDDENOPER   0x10000
  /* user information flags, only settable by remote mode or local oper */
  #define FLAGS_OPER         0x4000 /* Operator */
  #define FLAGS_LOCOP        0x8000 /* Local operator -- SRB */
***************
*** 387,393 ****
  #define ALL_UMODES   (SEND_UMODES | FLAGS_SERVNOTICE | FLAGS_CCONN | \
                        FLAGS_REJ | FLAGS_SKILL | FLAGS_FULL | FLAGS_SPY | \
                        FLAGS_NCHANGE | FLAGS_OPERWALL | FLAGS_DEBUG | \
!                       FLAGS_BOTS | FLAGS_EXTERNAL | FLAGS_LOCOP )
  
  #ifndef OPER_UMODES
  #define OPER_UMODES  (FLAGS_OPER | FLAGS_WALLOP | FLAGS_SERVNOTICE | \
--- 388,395 ----
  #define ALL_UMODES   (SEND_UMODES | FLAGS_SERVNOTICE | FLAGS_CCONN | \
                        FLAGS_REJ | FLAGS_SKILL | FLAGS_FULL | FLAGS_SPY | \
                        FLAGS_NCHANGE | FLAGS_OPERWALL | FLAGS_DEBUG | \
!                       FLAGS_BOTS | FLAGS_EXTERNAL | FLAGS_LOCOP | \
!                                         FLAGS_HIDDENOPER)
  
  #ifndef OPER_UMODES
  #define OPER_UMODES  (FLAGS_OPER | FLAGS_WALLOP | FLAGS_SERVNOTICE | \
***************
*** 441,447 ****
  #define SendDebugNotice(x)      ((x)->umodes & FLAGS_DEBUG)
  #define SendNickChange(x)       ((x)->umodes & FLAGS_NCHANGE)
  #define SetWallops(x)           ((x)->umodes |= FLAGS_WALLOP)
! 
  
  #ifdef REJECT_HOLD
  #define IsRejectHeld(x)         ((x)->flags & FLAGS_REJECT_HOLD)
--- 443,449 ----
  #define SendDebugNotice(x)      ((x)->umodes & FLAGS_DEBUG)
  #define SendNickChange(x)       ((x)->umodes & FLAGS_NCHANGE)
  #define SetWallops(x)           ((x)->umodes |= FLAGS_WALLOP)
! #define IsHiddenOper(x)                       ((x)->umodes & FLAGS_HIDDENOPER)
  
  #ifdef REJECT_HOLD
  #define IsRejectHeld(x)         ((x)->flags & FLAGS_REJECT_HOLD)
Index: src/s_user.c
===================================================================
RCS file: /cvsroot/ircd-hybrid-6/src/s_user.c,v
retrieving revision 1.247
diff -c -r1.247 s_user.c
*** src/s_user.c        14 Jan 2002 20:29:49 -0000      1.247
--- src/s_user.c        21 Jan 2002 03:11:39 -0000
***************
*** 84,89 ****
--- 84,90 ----
    {FLAGS_NCHANGE, 'n'},
    {FLAGS_OPER, 'o'},
    {FLAGS_LOCOP, 'O'},
+   {FLAGS_HIDDENOPER, 'p'},
    {FLAGS_REJ, 'r'},
    {FLAGS_SERVNOTICE, 's'},
    {FLAGS_WALLOP, 'w'},
***************
*** 145,151 ****
    0,            /* m */
    FLAGS_NCHANGE, /* n */
    FLAGS_OPER,   /* o */
!   0,            /* p */
    0,            /* q */
    FLAGS_REJ,    /* r */
    FLAGS_SERVNOTICE, /* s */
--- 146,152 ----
    0,            /* m */
    FLAGS_NCHANGE, /* n */
    FLAGS_OPER,   /* o */
!   FLAGS_HIDDENOPER, /* p */
    0,            /* q */
    FLAGS_REJ,    /* r */
    FLAGS_SERVNOTICE, /* s */
***************
*** 186,213 ****
  
    for(cptr2 = oper_cptr_list; cptr2; cptr2 = cptr2->next_oper_client)
      {
!       ++j;
!       if (MyClient(cptr) && IsAnOper(cptr))
!         {
!           sendto_one(cptr, ":%s %d %s :[%c][%s] %s (%s@%s) Idle: %d",
                       me.name, RPL_STATSDEBUG, cptr->name,
                       IsOper(cptr2) ? 'O' : 'o',
!                      oper_privs_as_string(cptr2,
!                                           cptr2->confs->value.aconf->port),
!                      cptr2->name,
!                      cptr2->username, cptr2->host,
                       CurrentTime - cptr2->user->last);
!         }
!       else
!         {
            sendto_one(cptr, ":%s %d %s :[%c] %s (%s@%s) Idle: %d",
                       me.name, RPL_STATSDEBUG, cptr->name,
                       IsOper(cptr2) ? 'O' : 'o',
!                      cptr2->name,
!                      cptr2->username, cptr2->host,
                       CurrentTime - cptr2->user->last);
!         }
!     }
  
    sendto_one(cptr, ":%s %d %s :%d OPER%s", me.name, RPL_STATSDEBUG,
               cptr->name, j, (j==1) ? "" : "s");
--- 187,226 ----
  
    for(cptr2 = oper_cptr_list; cptr2; cptr2 = cptr2->next_oper_client)
      {
!         if (IsAnOper(cptr))
!         {
!               if (MyClient(cptr))
!               {
!                 sendto_one(cptr, ":%s %d %s :[%c][%s] %s (%s@%s) Idle: %d",
!                                        me.name, RPL_STATSDEBUG, cptr->name,
!                                        IsOper(cptr2) ? 'O' : 'o',
!                                        oper_privs_as_string(cptr2, cptr2->confs->value.aconf->port),
!                                        cptr2->name, cptr2->username, cptr2->host,
!                                        CurrentTime - cptr2->user->last);
!               }
!               else
!               {
!           sendto_one(cptr, ":%s %d %s :[%c] %s (%s@%s) Idle: %d",
                       me.name, RPL_STATSDEBUG, cptr->name,
                       IsOper(cptr2) ? 'O' : 'o',
!                      cptr2->name, cptr2->username, cptr2->host,
                       CurrentTime - cptr2->user->last);
!               }
!               j++;
!         }
!         else
!         {
!               if (!IsHiddenOper(cptr2))
!               {
            sendto_one(cptr, ":%s %d %s :[%c] %s (%s@%s) Idle: %d",
                       me.name, RPL_STATSDEBUG, cptr->name,
                       IsOper(cptr2) ? 'O' : 'o',
!                      cptr2->name, cptr2->username, cptr2->host,
                       CurrentTime - cptr2->user->last);
!                 j++;
!               }
!         }
!       }
  
    sendto_one(cptr, ":%s %d %s :%d OPER%s", me.name, RPL_STATSDEBUG,
               cptr->name, j, (j==1) ? "" : "s");
