#include "complex.h" #include "arh.h" s_sob *buf_sb; word_s nbl; arh sb = {0,"a_sb.bin"}; word_s inic_fa(cpr *mac,char *nfl,char *buf,word_s del); /*######################################################################## задача архивации событий ########################################################################*/ void Arh_sb() { word_s zn; long t; /* инициализация */ m_sb.kbl=Dl_sb; m_sb.dlbl=sizeof(s_sob); buf_sb=(s_sob *)calloc(1,sizeof(s_sob)); if(buf_sb==NULL) { o_kz_al("arh_sb.c-buf_sb"); return; } sb.hn=inic_fa(&m_sb,sb.ifl,(char *)buf_sb,0); if(sb.hn==-1) sb.hn=inic_fa(&m_sb,sb.ifl,(char *)buf_sb,1); nom_gr_sob(); /* откpыть файл гpуппы событий */ while(!endrun) { #if (DEBUG) view_text(2,73,8,"ARHSB"); #endif zn=read_wpipe(event_chn,t_outs*HZ); if (zn!=-1) { /* событие по каналу */ (buf_sb)->zn=zn; /* запись события в буфеp */ time(&t); (buf_sb)->time=t; r_write(sb.hn,(char *)buf_sb,m_sb.dlbl, (long)m_sb.tbl*m_sb.dlbl,SEEK_SET,sb.ifl,r_sb); //! if (m_sb.kbl==++m_sb.tbl) /* последняя запись файла */ /* перевод указателя файла */ m_sb.tbl=0; /* на начало файла */ memset(buf_sb,0,m_sb.dlbl); r_write (sb.hn,(char *)buf_sb,m_sb.dlbl, /* нулевая запись */ //! (long)m_sb.tbl*m_sb.dlbl,SEEK_SET,sb.ifl,r_sb); } } close(sb.hn); }