query_mud_port

deprecated
/* This sefun is to provide a replacement for the efun query_mud_port().
 * Feel free to add it to your mudlibs, if you have much code relying on that.
 */

#if ! __EFUN_DEFINED__(query_mud_port)

#include <interactive_info.h>
#include <driver_info.h>

int query_mud_port(varargs int*|object* args)
{
    if(!sizeof(args) && efun::this_player() && efun::interactive(this_player()))
        return efun::interactive_info(this_player(), II_MUD_PORT);

    if(sizeof(args) > 1)
        raise_error("Too many arguments to query_mud_port\n");

    if(sizeof(args) && efun::objectp(args[0]) && efun::interactive(args[0]))
        return efun::interactive_info(args[0], II_MUD_PORT);

    if(sizeof(args) && intp(args[0]))
    {
        int* ports = efun::driver_info(DI_MUD_PORTS);
        if(args[0] < -1 || args[0] >= sizeof(ports))
            raise_error(efun::sprintf("Bad arg 1 to query_mud_port(): value %d out of range.\n", args[0]));
        else if(args[0] == -1)
            return sizeof(ports);
        else
            return ports[args[0]];
    }

    return efun::driver_info(DI_MUD_PORTS)[0];
}

#endif