ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/ircd-hybrid-7.2/src/s_conf.c
(Generate patch)

Comparing ircd-hybrid-7.2/src/s_conf.c (file contents):
Revision 34 by lusky, Sun Oct 2 21:05:51 2005 UTC vs.
Revision 58 by michael, Mon Oct 3 12:13:38 2005 UTC

# Line 2332 | Line 2332 | expire_tklines(dlink_list *tklist)
2332  
2333   /* oper_privs_as_string()
2334   *
2335 < * inputs        - pointer to client_p or NULL
2335 > * inputs        - pointer to client_p
2336   * output        - pointer to static string showing oper privs
2337   * side effects  - return as string, the oper privs as derived from port
2338   */
2339 <
2340 < static const unsigned int oper_flags_table[] =
2341 <  { 'O', 'R', 'U', 'G', 'N', 'K', 'X', 'D', 'H', 'A' , 0 };
2339 > static const struct oper_privs
2340 > {
2341 >  const unsigned int oprivs;
2342 >  const unsigned int hidden;
2343 >  const unsigned char c;
2344 > } flag_list[] = {
2345 >  { OPER_FLAG_ADMIN,       OPER_FLAG_HIDDEN_ADMIN,  'A' },
2346 >  { OPER_FLAG_REMOTEBAN,   0,                       'B' },
2347 >  { OPER_FLAG_DIE,         0,                       'D' },
2348 >  { OPER_FLAG_GLINE,       0,                       'G' },
2349 >  { OPER_FLAG_REHASH,      0,                       'H' },
2350 >  { OPER_FLAG_K,           0,                       'K' },
2351 >  { OPER_FLAG_OPERWALL,    0,                       'L' },
2352 >  { OPER_FLAG_N,           0,                       'N' },
2353 >  { OPER_FLAG_GLOBAL_KILL, 0,                       'O' },
2354 >  { OPER_FLAG_REMOTE,      0,                       'R' },
2355 >  { OPER_FLAG_OPER_SPY,    0,                       'S' },
2356 >  { OPER_FLAG_UNKLINE,     0,                       'U' },
2357 >  { OPER_FLAG_X,           0,                       'X' },
2358 >  { 0, 0, '\0' }
2359 > };
2360  
2361   char *
2362   oper_privs_as_string(const unsigned int port)
2363   {
2364 <  static char privs_out[12];
2364 >  static char privs_out[16];
2365 >  char *privs_ptr = privs_out;
2366 >  unsigned int i = 0;
2367 >
2368 >  for (; flag_list[i].oprivs; ++i)
2369 >  {
2370 >    if ((port & flag_list[i].oprivs) &&
2371 >        (port & flag_list[i].hidden) == 0)
2372 >      *privs_ptr++ = flag_list[i].c;
2373 >    else
2374 >      *privs_ptr++ = ToLowerTab[flag_list[i].c];
2375 >  }
2376 >
2377 >  *privs_ptr = '\0';
2378  
2348  if (port & OPER_FLAG_HIDDEN_ADMIN)
2349    flags_to_ascii(port & ~OPER_FLAG_ADMIN, oper_flags_table, privs_out, 1);
2350  else
2351    flags_to_ascii(port, oper_flags_table, privs_out, 1);
2379    return privs_out;
2380   }
2381  

Diff Legend

Removed lines
+ Added lines
< Changed lines (old)
> Changed lines (new)