Esempio n. 1
0
enum shell_reply
shell_exec_set(struct gnutella_shell *sh, int argc, const char *argv[])
{
	const char *verbose;
	const option_t options[] = {
		{ "v", &verbose },
	};
	property_t prop;
	int parsed;

	shell_check(sh);
	g_assert(argv);
	g_assert(argc > 0);

	parsed = shell_options_parse(sh, argv, options, G_N_ELEMENTS(options));
	if (parsed < 0)
		return REPLY_ERROR;

	argv += parsed;	/* args[0] is first command argument */
	argc -= parsed;	/* counts only command arguments now */

	if (argc < 1) {
		shell_set_msg(sh, _("Property missing"));
		goto error;
	}

	prop = gnet_prop_get_by_name(argv[0]);
	if (prop == NO_PROP) {
		shell_set_msg(sh, _("Unknown property"));
		goto error;
	}

	if (argc < 2) {
		shell_set_msg(sh, _("Value missing"));
		goto error;
	}

	if (gnet_prop_is_internal(prop)) {
		shell_set_msg(sh, _("Property cannot be changed"));
		goto error;
	}

	if (verbose) {
		shell_write_linef(sh, REPLY_READY, _("Previous value was %s"),
			shell_property_to_string(prop));
	}

	gnet_prop_set_from_string(prop,	argv[1]);

	if (verbose) {
		shell_write_linef(sh, REPLY_READY, _("New value is %s"),
			shell_property_to_string(prop));
	}

	shell_set_msg(sh, _("Value found and set"));
	return REPLY_READY;

error:
	return REPLY_ERROR;
}
Esempio n. 2
0
enum shell_reply
shell_exec_print(struct gnutella_shell *sh, int argc, const char *argv[])
{
	property_t prop;

	shell_check(sh);
	g_assert(argv);
	g_assert(argc > 0);

	if (argc < 2) {
		shell_set_msg(sh, _("Property missing"));
		goto error;
	}

	prop = gnet_prop_get_by_name(argv[1]);
	if (prop == NO_PROP) {
		char buf[120];
		str_bprintf(buf, sizeof buf, _("Unknown property \"%s\""), argv[1]);
		shell_set_msg(sh, buf);
		goto error;
	}

	shell_write(sh, _("Value: "));
	shell_write(sh, gnet_prop_to_typed_string(prop));
	shell_write(sh, "\n");

	shell_set_msg(sh, _("Value found and displayed"));
	return REPLY_READY;

error:
	return REPLY_ERROR;
}