mirror of
https://github.com/irssi/irssi.git
synced 2025-02-02 15:08:01 -05:00
Add Irssi::command_parse_options function to parse options for a command which
have been set with Irssi::command_set_options. git-svn-id: file:///var/www/svn.irssi.org/SVN/irssi/trunk@4896 dbcabf3a-b0e7-0310-adc4-f8d773084564
This commit is contained in:
parent
f4e9745c9f
commit
f0647439a9
@ -351,6 +351,20 @@ command_runsub(cmd, data, server, item)
|
||||
command_unbind(cmd, func)
|
||||
Unbind command `cmd' from function 'func.
|
||||
|
||||
command_set_options(cmd, data)
|
||||
Set options for command `cmd' to `data'. `data' is a string of
|
||||
space separated words which specify the options. Each word can be
|
||||
optionally prefixed with one of the following character:
|
||||
|
||||
'-': optional argument
|
||||
'+': argument required
|
||||
'@': optional numeric argument
|
||||
|
||||
command_parse_options(cmd, data)
|
||||
Parse options for command `cmd' in `data'. It returns a reference to
|
||||
an hash table with the options and a string with the remaining part
|
||||
of `data'. On error it returns the undefined value.
|
||||
|
||||
|
||||
*** Windows
|
||||
|
||||
|
@ -57,6 +57,14 @@ static void handle_command_bind(int priority, int items, SV *p0, SV *p1, SV *p2)
|
||||
}
|
||||
}
|
||||
|
||||
static void add_tuple(gpointer key_, gpointer value_, gpointer user_data)
|
||||
{
|
||||
HV *hash = user_data;
|
||||
char *key = key_;
|
||||
char *value = value_;
|
||||
hv_store(hash, key, strlen(key), new_pv(value), 0);
|
||||
}
|
||||
|
||||
MODULE = Irssi::Core PACKAGE = Irssi
|
||||
PROTOTYPES: ENABLE
|
||||
|
||||
@ -552,6 +560,28 @@ command_set_options(cmd, options)
|
||||
char *cmd
|
||||
char *options
|
||||
|
||||
void
|
||||
command_parse_options(cmd, data)
|
||||
char *cmd
|
||||
char *data
|
||||
PREINIT:
|
||||
HV *hash;
|
||||
GHashTable *optlist;
|
||||
void *free_arg;
|
||||
char *ptr;
|
||||
PPCODE:
|
||||
if (cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS | PARAM_FLAG_GETREST,
|
||||
cmd, &optlist, &ptr)) {
|
||||
hash = newHV();
|
||||
g_hash_table_foreach(optlist, add_tuple, hash);
|
||||
XPUSHs(sv_2mortal(newRV_noinc((SV*)hash)));
|
||||
XPUSHs(sv_2mortal(new_pv(ptr)));
|
||||
cmd_params_free(free_arg);
|
||||
} else {
|
||||
XPUSHs(&PL_sv_undef);
|
||||
XPUSHs(&PL_sv_undef);
|
||||
}
|
||||
|
||||
void
|
||||
pidwait_add(pid)
|
||||
int pid
|
||||
|
Loading…
x
Reference in New Issue
Block a user