X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcnotify.c;h=210a3e1fb7d1ca198e3114fef725d266256b740b;hb=622dbba14878964ca76301bdf9c8f59f3312fbc7;hp=e3c8169dafb35166cdb7f1dad098faf1c38eb149;hpb=bb8673d141d95f7b3f8fbd623fef0872baf32cd1;p=silc.git diff --git a/lib/silccore/silcnotify.c b/lib/silccore/silcnotify.c index e3c8169d..210a3e1f 100644 --- a/lib/silccore/silcnotify.c +++ b/lib/silccore/silcnotify.c @@ -135,6 +135,35 @@ SilcBuffer silc_notify_payload_encode(SilcNotifyType type, unsigned int argc, return buffer; } +/* Same as above but takes argument from the `args' Argument Payload. */ + +SilcBuffer silc_notify_payload_encode_args(SilcNotifyType type, + unsigned int argc, + SilcBuffer args) +{ + SilcBuffer buffer; + int len; + + len = 5 + (args ? args->len : 0); + buffer = silc_buffer_alloc(len); + silc_buffer_pull_tail(buffer, SILC_BUFFER_END(buffer)); + silc_buffer_format(buffer, + SILC_STR_UI_SHORT(type), + SILC_STR_UI_SHORT(len), + SILC_STR_UI_CHAR(argc), + SILC_STR_END); + + if (args) { + silc_buffer_pull(buffer, 5); + silc_buffer_format(buffer, + SILC_STR_UI_XNSTRING(args->data, args->len), + SILC_STR_END); + silc_buffer_push(buffer, 5); + } + + return buffer; +} + /* Free's notify payload */ void silc_notify_payload_free(SilcNotifyPayload payload)