1 /* ISC license. */
2 
3 #include <sys/uio.h>
4 #include <skalibs/textmessage.h>
5 
textmessage_handle(textmessage_receiver_t * tr,textmessage_handler_func_t_ref f,void * p)6 int textmessage_handle (textmessage_receiver_t *tr, textmessage_handler_func_t_ref f, void *p)
7 {
8   unsigned int count = 0 ;
9   while (count < TEXTMESSAGE_MAXREADS || textmessage_receiver_hasmsginbuf(tr))
10   {
11     struct iovec v ;
12     int r = textmessage_receive(tr, &v) ;
13     if (r < 0) return -1 ;
14     if (!r) break ;
15     r = (*f)(&v, p) ;
16     if (r <= 0) return r-2 ;
17     count++ ;
18   }
19   return (int)count ;
20 }
21