/adm/daemons/topuserd.c
 
The top user daemon collates player statistics and
produces a list of the mud's top players, based on their
total skills.  You can include or exclude wizards, and/or
players up to a certain skill total.
WARNING: This program can take a long time to run,
especially if you have a lot of players, so it is best to
run it at a time when you are unlikely to have many people
logged on.

#defines:
  RANK_NUM: Number of players in the list (maximum)
  INCLUDE_WIZS: If defined, include wizards in list
  MIN_SCORE: Minimum total skills for inclusion in list
  OUTPUT_FILE: The name of the file to be listed to

Externally called functions:
  int produce_list():
      This is the main function that does the compiling of the
      list.  It performs the following: checks that the calling
      object has ROOT_UID or is an admin, makes sure there is no
      existing call in progress, and initializes variables etc.,
      checks each player directory, calling scan_dir() for each,
      sorts the list of players, and writes it to OUTPUT_FILE.
  mixed *query_list():
      Returns an array containing the names of all the players
      and their skill totals, sorted in descending order.

Internal functions:
  static int create_shell():
      Creates a user object for the skills to be restored into,
      so they can be queried easily and totalled.
  static int scan_dir(string dir):
      Scans dir for player files, calling process_user() for each.
  static int process_user(string who):
      Checks that file 'who' exists, restores it into body object,
      queries and adds skills, and adds player to list if
      appropriate.
  static int create_list():
      Writes the list to the file in an appropriate format.

Author: Blue@Atmos, 26th August 1993.
