#include #include #include "PICA_proto.h" #include "PICA_msgproc.h" //возвращает размер сообщения либо UINT_MAX,если количество прочитанных байт недостаточно для определения размера //либо 0 при ошибочных данных unsigned int PICA_msggetsize(unsigned char *buf,unsigned int nb,struct PICA_msginfo *msgs,unsigned int nmsg) { unsigned int i; if (nb<2) return UINT_MAX; if (buf[0]!=buf[1]) return 0; for (i=0;i=(msgs[i].sz+2)) { unsigned int tail_len=0; int j; #if defined(__BYTE_ORDER__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ for (j=0;j *read_pos) break; if (!PICA_processmsg(buf,uret,arg,msgs,nmsg)) return 0; *read_pos-=uret; memmove(buf,buf+uret,*read_pos);//сдвиг содержимого буфера к началу } return 1; }