
query_mud_port()
****************


DEPRECATED
==========


SYNOPSIS
========

   int query_mud_port(void)
   int query_mud_port(object user)
   int query_mud_port(int num)


DESCRIPTION
===========

   Returns the port number the parser uses for user connections.

   If no argument is given, the port for this_player() is
   returned. If this_player() is not existing or not interactive,
   the first port number open for connections is returned.

   If an user object is given, the port used for its connection
   is returned.
   If a positive number is given, the <num>th port number the
   parser uses for connections is returned (given that there are
   that many ports).
   If -1 is given, the number of ports open for connections is
   returned.


SEE ALSO
========

   query_udp_port(E)
