/* External procedures for the binary demo program */

#include "h00vars.h"            /* defines Pascal I/O structure */

#define namelength 100          /* should agree with binarydemo.p */

movetobyte(filep,cnt)
       register struct iorec   *filep;
       int             cnt;
{
       register FILE   *iop;   /* stdio-style FILE pointer */

       iop = filep->fbuf;
       fseek(iop,(long)cnt,0);
}

bool testeof(filep)
       register struct iorec   *filep;
{
       register char c;
       register FILE *iop; /* stdio-style FILE pointer */

       if (filep->funit & EOFF)
               return(TRUE);
       else { /* check to see if next is EOF */
               iop = filep->fbuf;
               c = getc(iop);
               if (c == EOF)
                       return(TRUE);
               else {
                       ungetc(c,iop);
                       return(FALSE);
                       }
               }
}

bool testreadaccess(fn)
       char  *fn;
{
       register char *p;

       fn[namelength-1] = ' ';
       p = fn;
       while (*p++ != ' ');
       p--;
       *p = '\0';
       if (access(fn,4)==0) {
         *p = ' '; return(TRUE);}
       else {*p = ' '; return(FALSE);}
}

bool testwriteaccess(fn)
       char  *fn;
{
       register char *p;
       int f;

       fn[namelength-1] = ' ';
       p=fn;
       while (*p++ != ' ');
       p--;
       *p = '\0';
       f = creat(fn,0666);   /* we try to create a new file, because
                                simply testing write access with access(fn,2)
                                will fail when the file doesn't exist */
       *p = ' ';
       if (f >= 0) {close(f); return(TRUE);}
       else return(FALSE);
}

int flength(filep)
       register struct iorec   *filep;
{
       register FILE   *iop;   /* stdio-style FILE pointer */
       register long   pos;    /* current file position */
       register int    len;    /* the file length */

       iop = filep->fbuf;
       pos = ftell(iop);
       fseek(iop,0L,2);
       len = ftell(iop);
       fseek(iop,pos,0);
       return(len);
}