home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Source Code 1992 March
/
Source_Code_CD-ROM_Walnut_Creek_March_1992.iso
/
usenet
/
altsrcs
/
3
/
3600
/
io.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-07-10
|
1KB
|
60 lines
/*$Source: /usr/home/dhesi/booz/RCS/io.c,v $*/
/*$Id: io.c,v 1.8 91/07/08 12:06:55 dhesi Exp $*/
/***********************************************************
Input/output for lzh decoding.
Adapted from "ar" archiver written by Haruhiko Okumura.
***********************************************************/
#include "booz.h"
#include "zoo.h"
#include "ar.h"
#include "lzh.h"
extern FILE *arcfile;
t_uint16 bitbuf;
static uint subbitbuf;
static int bitcount;
int fillbuf(n) /* Shift bitbuf n bits left, read n bits */
int n;
{
bitbuf <<= n;
while (n > bitcount) {
bitbuf |= subbitbuf << (n -= bitcount);
if (feof(arcfile))
subbitbuf = 0;
else
subbitbuf = (uchar) getc(arcfile);
bitcount = CHAR_BIT;
}
bitbuf |= subbitbuf >> (bitcount -= n);
}
uint getbits(n)
int n;
{
uint x;
x = bitbuf >> (BITBUFSIZ - n); fillbuf(n);
return x;
}
int fwrite_crc(p, n, f)
uchar *p;
int n;
FILE *f;
{
if (f != NULL) {
if (fwrite((char *) p, 1, n, f) < n)
prterror('f', "disk full", (char *)0, (char *)0);
}
addbfcrc((char *) p, (unsigned) n);
}
int init_getbits()
{
bitbuf = 0; subbitbuf = 0; bitcount = 0;
fillbuf(BITBUFSIZ);
}