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; }
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; }