compiler-init/memfile.c
branchdvander
changeset 26 cddce0804b2a
parent 23 040a84cd0eee
child 2286 34e6e8ca7db2
     1.1 --- a/compiler-init/memfile.c	Sat Jul 15 05:02:38 2006 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,105 +0,0 @@
     1.4 -#include "memfile.h"
     1.5 -#include <string.h>
     1.6 -#include "osdefs.h"
     1.7 -
     1.8 -memfile_t *memfile_creat(const char *name, size_t init)
     1.9 -{
    1.10 -	memfile_t mf;
    1.11 -	memfile_t *pmf;
    1.12 -
    1.13 -	mf.size = init;
    1.14 -	mf.base = (char *)malloc(init);
    1.15 -	mf.usedoffs = 0;
    1.16 -	if (!mf.base)
    1.17 -	{
    1.18 -		return NULL;
    1.19 -	}
    1.20 -
    1.21 -	mf.offs = 0;
    1.22 -	mf._static = 0;
    1.23 -
    1.24 -	pmf = (memfile_t *)malloc(sizeof(memfile_t));
    1.25 -	memcpy(pmf, &mf, sizeof(memfile_t));
    1.26 -
    1.27 -	pmf->name = strdup(name);
    1.28 -
    1.29 -	return pmf;
    1.30 -}
    1.31 -
    1.32 -void memfile_destroy(memfile_t *mf)
    1.33 -{
    1.34 -	if (!mf->_static)
    1.35 -	{
    1.36 -		free(mf->name);
    1.37 -		free(mf->base);
    1.38 -		free(mf);
    1.39 -	}
    1.40 -}
    1.41 -
    1.42 -void memfile_seek(memfile_t *mf, long seek)
    1.43 -{
    1.44 -	mf->offs = seek;
    1.45 -}
    1.46 -
    1.47 -long memfile_tell(memfile_t *mf)
    1.48 -{
    1.49 -	return mf->offs;
    1.50 -}
    1.51 -
    1.52 -size_t memfile_read(memfile_t *mf, void *buffer, size_t maxsize)
    1.53 -{
    1.54 -	if (!maxsize || mf->offs >= mf->usedoffs)
    1.55 -	{
    1.56 -		return 0;
    1.57 -	}
    1.58 -
    1.59 -	if (mf->usedoffs - mf->offs < (long)maxsize)
    1.60 -	{
    1.61 -		maxsize = mf->usedoffs - mf->offs;
    1.62 -		if (!maxsize)
    1.63 -		{
    1.64 -			return 0;
    1.65 -		}
    1.66 -	}
    1.67 -
    1.68 -	memcpy(buffer, mf->base + mf->offs, maxsize);
    1.69 -
    1.70 -	mf->offs += maxsize;
    1.71 -
    1.72 -	return maxsize;
    1.73 -}
    1.74 -
    1.75 -int memfile_write(memfile_t *mf, void *buffer, size_t size)
    1.76 -{
    1.77 -	if (mf->offs + size > mf->size)
    1.78 -	{
    1.79 -		size_t newsize = (mf->size + size) * 2;
    1.80 -		if (mf->_static)
    1.81 -		{
    1.82 -			char *oldbase = mf->base;
    1.83 -			mf->base = (char *)malloc(newsize);
    1.84 -			if (!mf->base)
    1.85 -			{
    1.86 -				return 0;
    1.87 -			}
    1.88 -			memcpy(mf->base, oldbase, mf->size);
    1.89 -		} else {
    1.90 -			mf->base = (char *)realloc(mf->base, newsize);
    1.91 -			if (!mf->base)
    1.92 -			{
    1.93 -				return 0;
    1.94 -			}
    1.95 -		}
    1.96 -		mf->_static = 0;
    1.97 -		mf->size = newsize;
    1.98 -	}
    1.99 -	memcpy(mf->base + mf->offs, buffer, size);
   1.100 -	mf->offs += size;
   1.101 -
   1.102 -	if (mf->offs > mf->usedoffs)
   1.103 -	{
   1.104 -		mf->usedoffs = mf->offs;
   1.105 -	}
   1.106 -
   1.107 -	return 1;
   1.108 -}