/* SYNTAX: STATUSBAR INFO <statusbar> */ static void cmd_statusbar_info(const char *data) { void *free_arg; char *name; if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_STRIP_TRAILING_WS, &name)) return; if (*name == '\0') { cmd_param_error(CMDERR_NOT_ENOUGH_PARAMS); } /* print statusbar info */ cmd_statusbar_print_info(name); cmd_params_free(free_arg); return; }
static void cmd_statusbar(const char *data) { CONFIG_NODE *node; char *name, *cmd, *params, *signal; void *free_arg; if (!cmd_get_params(data, &free_arg, 3 | PARAM_FLAG_GETREST, &name, &cmd, ¶ms)) return; if (*name == '\0') { /* list all statusbars */ cmd_statusbar_list(); cmd_params_free(free_arg); return; } if (*cmd == '\0') { /* print statusbar info */ cmd_statusbar_print_info(name); cmd_params_free(free_arg); return; } /* lookup/create the statusbar node */ node = iconfig_node_traverse("statusbar", TRUE); node = config_node_section(node, active_statusbar_group->name, NODE_TYPE_BLOCK); node = config_node_section(node, name, NODE_TYPE_BLOCK); /* call the subcommand */ signal = g_strconcat("command statusbar ", cmd, NULL); g_strdown(signal); if (!signal_emit(signal, 4, params, NULL, NULL, node)) { printformat(NULL, NULL, MSGLEVEL_CLIENTERROR, TXT_STATUSBAR_UNKNOWN_COMMAND, cmd); } else { read_statusbar_config(); } g_free(signal); cmd_params_free(free_arg); }