X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcutil.c;fp=lib%2Fsilcutil%2Fsilcutil.c;h=e3778bb7b2f8b78ef25112a90f46ccac7cb0a73b;hb=57fe1d5d88e8687ac876aa3725028bd3343f5067;hp=4ac00f38363803b05857ee774b61ef0a8cb3af86;hpb=ed3133837d3466b1d9eb15278677d82971bbd35f;p=silc.git diff --git a/lib/silcutil/silcutil.c b/lib/silcutil/silcutil.c index 4ac00f38..e3778bb7 100644 --- a/lib/silcutil/silcutil.c +++ b/lib/silcutil/silcutil.c @@ -900,3 +900,25 @@ char *silc_get_input(const char *prompt, bool echo_off) return NULL; #endif /* SILC_UNIX */ } + +/* Return mode list */ + +bool silc_get_mode_list(SilcBuffer mode_list, SilcUInt32 mode_list_count, + SilcUInt32 **list) +{ + int i; + + if (mode_list->len / 4 != mode_list_count) + return FALSE; + + *list = silc_calloc(mode_list_count, sizeof(**list)); + + for (i = 0; i < mode_list_count; i++) { + SILC_GET32_MSB((*list)[i], mode_list->data); + silc_buffer_pull(mode_list, 4); + } + + silc_buffer_push(mode_list, mode_list->data - mode_list->head); + + return TRUE; +}