#include "complex.h"
#include "arh.h"

word_s f_o(word_s uf,char *nfl,cpr *mac,char *buf);
/*------------------------------------------------------------------------*/
     /*    ¨­¨æ¨ «¨§ æ¨ï ä ©«   */
/*------------------------------------------------------------------------*/

 word_s inic_fa(cpr *mac,char *nfl,char *buf,word_s del)
 {
        word_s kz,uf;
        long tz;
                                                                           /* ®âªpë⨥ ä ©«   p娢  */
          uf=sopen(nfl,O_BINARY | O_RDWR, SH_DENYNO, S_IREAD | S_IWRITE );
          if (uf==-1 || del)                    /* á®§¤ ­¨¥ ¨ ®ç¨á⪠ ä ©«  */
                 uf=f_o(uf,nfl,mac,buf);
          else       {                     /* ä ©« 㦥 áãé¥áâ¢ã¥â */
                 mac->tbl=-1;

                 do {                  /* ¯®¨áª ­ã«¥¢®© § ¯¨á¨ */
                          kz=read (uf,(char *)&tz,sizeof(long));
                          o_kz_f(kz,nfl);
                          kz=lseek(uf,(long)(mac->dlbl-sizeof(long)),SEEK_CUR);
                          o_kz_f(kz,nfl);
                          mac->tbl++;
                          }  while (memcmp(buf,&tz,sizeof(long))!=0 && mac->tbl!=mac->kbl);

                 if (mac->tbl==mac->kbl) return(-1);
/*         kz=lseek(uf,(long)mac->tbl*mac->dlbl,SEEK_SET);
                 o_kz_f(kz,nfl);
*/
          }
    return(uf);
 }

word_s f_o(word_s uf,char *nfl,cpr *mac,char *buf)
{
 word_s kz,i;

 uf=sopen(nfl,O_BINARY | O_RDWR | O_CREAT,SH_DENYNO, S_IREAD | S_IWRITE);
 o_kz_f(uf,nfl);
 if (uf!=-1){
   for (i=0;i<mac->kbl;i++)
   {
         kz=write(uf,buf,mac->dlbl);
         o_kz_f(kz,nfl);
   }
   mac->tbl=0;
   kz=lseek(uf,0L,SEEK_SET);
   o_kz_f(kz,nfl);
   close(uf);
   uf=sopen(nfl,O_BINARY | O_RDWR ,SH_DENYNO, S_IREAD | S_IWRITE );

 }
 return(uf);
}