Commit 13710168 authored by Andrew Price's avatar Andrew Price
Browse files

Remove rpc and ipc bits from mwjs

parent 5f0e093c
Loading
Loading
Loading
Loading
Loading
+0 −20
Original line number Diff line number Diff line
@@ -22,10 +22,6 @@ The following symbols are defined in the global scope for ``MWJS`` scripts:

  A string containing the name of the current ``Milliways`` user.

`K_BROADCAST`

  A type specifier to be used in `rpc()` and `ipc()` calls (see below).

BIND TYPES
==========

@@ -36,10 +32,6 @@ The following constants can be used with the `bind` and `unbind` functions (see
  ``bind(K_BIND_EVENT, handler)`` hooks a user-defined function named in the
  string `handler` to be called when certain events occur.

`K_BIND_IPC`

  ``bind(K_BIND_IPC, )`` - To be documented.

`K_BIND_ONOFF`

  ``bind(K_BIND_ONOFF, )`` - To be documented.
@@ -52,10 +44,6 @@ The following constants can be used with the `bind` and `unbind` functions (see

  ``bind(K_BIND_SHUTDOWN, )`` - To be documented.

`K_BIND_RPC`

  ``bind(K_BIND_RPC, )`` - To be documented.

`K_BIND_ALIAS`

  ``bind(K_BIND_ALIAS, )`` - To be documented.
@@ -100,14 +88,6 @@ The following functions are defined in the global scope of ``MWJS`` scripts.
  Note that the wholist is currently not guaranteed to be available on joining
  the talker and so the value returned from `wholist()` could be `undefined`.

`rpc()`

  To be documented.

`ipc()`

  To be documented.

`urlget(url)`

  Takes a URL string, fetches it, and returns the contents of the response.
+1 −66
Original line number Diff line number Diff line
@@ -40,10 +40,8 @@ struct binding {
const struct binding bindings[] = {
	{ K_BIND, 1, &bind_list, "Bind" },
	{ K_BIND_ALIAS, 1, &alias_list, "Alias" },
	{ K_BIND_RPC, 1, &rpc_list, "RPC bind" },
	{ K_BIND_EVENT, 0, &event_list, "Event bind" },
	{ K_BIND_ONOFF, 0, &onoff_list, "Check on/off bind" },
	{ K_BIND_IPC, 0, &ipc_list, "IPC bind" },
	{ K_BIND_FORCE, 0, &force_list, "Force bind" },
	{ K_BIND_SHUTDOWN, 0, &shutdown_list, "Shutdown bind" },
	{ K_BIND_INPUT, 0, &eventin_list, "Input event bind" },
@@ -251,62 +249,6 @@ static duk_ret_t js_wholist(duk_context *cx)
	return 1; /* Array is returned at top of stack */
}

static duk_ret_t js_rpc(duk_context *cx)
{
	const char *username = NULL;
	const char *rpc_type = NULL;
	const char *msg = NULL;
	int broadcast = 0;

	if (duk_is_undefined(cx, -1) ||
	    duk_is_undefined(cx, -2) ||
	    duk_is_undefined(cx, -3)) {
		fprintf(stderr, "mwjs error: rpc() expects 3 arguments\n");
		return DUK_RET_SYNTAX_ERROR;
	}
	if (duk_is_number(cx, -3)) {
		if (duk_get_int(cx, -3) == K_BROADCAST)
			broadcast = 1;
	} else if (duk_is_string(cx, -3)) {
		username = duk_get_string(cx, -3);
	}
	rpc_type = duk_safe_to_string(cx, -2);
	msg = duk_safe_to_string(cx, -1);

	if((!broadcast && username[0] == '\0') || rpc_type[0] == '\0') {
		fprintf(stderr, "Error: javascript rpc(): invalid arguments - [%s] [%s]",
		        (broadcast ? "K_BROADCAST" : username), rpc_type);
		return DUK_RET_ERROR;
	}
	sendrpc(username, rpc_type, msg, broadcast);
	return 0;
}

static duk_ret_t js_ipc(duk_context *cx)
{
	const char *username = NULL;
	const char *msg = NULL;
	int broadcast = 0;

	if (duk_is_undefined(cx, -1) || duk_is_undefined(cx, -2)) {
		fprintf(stderr, "mwjs error: ipc() expects 2 arguments\n");
		return DUK_RET_SYNTAX_ERROR;
	}
	if (duk_is_number(cx, -2)) {
		if (duk_get_int(cx, -2) == K_BROADCAST)
			broadcast = 1;
	} else if (duk_is_string(cx, -2)) {
		username = duk_get_string(cx, -2);
	}
	msg = duk_safe_to_string(cx, -1);
	if (broadcast == 0 && (!username || username[0] == '\0')) {
		fprintf(stderr, "mwjs error: ipc() expects either a username or K_BROADCAST\n");
		return DUK_RET_ERROR;
	}
	sendipc(username, msg, broadcast);
	return 0;
}

struct urlget {
	duk_context *cx;
	duk_idx_t nchunks;
@@ -477,8 +419,7 @@ static duk_ret_t js_bind(duk_context *cx)
	} else if (duk_is_number(cx, -3)) {
		bind_type = duk_get_int_default(cx, -3, -1);
		if (bind_type == K_BIND ||
		    bind_type == K_BIND_ALIAS ||
		    bind_type == K_BIND_RPC) {
		    bind_type == K_BIND_ALIAS) {
			bind_name = duk_get_string(cx, -2);
		} else {
			duk_pop(cx);
@@ -675,7 +616,6 @@ static duk_ret_t js_dbquery(duk_context *cx)
	return 1;
}


int js_isrunning(void)
{
	return (interrupt == 0 && timeout_event != NULL);
@@ -850,14 +790,11 @@ static void define_string(const char *name, const char *value)
static void define_constants(void)
{
	define_number("K_BIND_EVENT", (duk_double_t)K_BIND_EVENT);
	define_number("K_BIND_IPC", (duk_double_t)K_BIND_IPC);
	define_number("K_BIND_ONOFF", (duk_double_t)K_BIND_ONOFF);
	define_number("K_BIND_FORCE", (duk_double_t)K_BIND_FORCE);
	define_number("K_BIND_SHUTDOWN", (duk_double_t)K_BIND_SHUTDOWN);
	define_number("K_BIND_RPC", (duk_double_t)K_BIND_RPC);
	define_number("K_BIND_ALIAS", (duk_double_t)K_BIND_ALIAS);
	define_number("K_BIND_INPUT", (duk_double_t)K_BIND_INPUT);
	define_number("K_BROADCAST", (duk_double_t)K_BROADCAST);
	define_string("whoami", user->record.name);
}

@@ -878,8 +815,6 @@ int setup_js(void)
	define_func("exec", js_mwexec, 1);
	define_func("say", js_say, 1);
	define_func("wholist", js_wholist, 0);
	define_func("rpc", js_rpc, 3);
	define_func("ipc", js_ipc, 2);
	define_func("urlget", js_urlget, 1);
	define_func("beep", js_beep, 1);
	define_func("input", js_input, 1);
+0 −3
Original line number Diff line number Diff line
@@ -15,13 +15,10 @@ enum bindtype {
	K_BIND = 0,
	K_BIND_EVENT,
	K_BIND_ONOFF,
	K_BIND_IPC,
	K_BIND_FORCE,
	K_BIND_SHUTDOWN,
	K_BIND_ALIAS,
	K_BIND_RPC,
	K_BIND_INPUT
};
#define K_BROADCAST 1

#endif /* JS_H */