#include "main.h"
#include "support.h"
typedef struct StreamData
{
FILE* fp;
char* name;
char* mode;
} StreamData;
static StreamData*
createStreamData(const char* name, const char* mode)
{
StreamData *streamData = (StreamData *)calloc(1, sizeof(StreamData));
streamData->fp = NULL;
streamData->name = strdup(name);
streamData->mode = strdup(mode);
return streamData;
}
static void
deleteStreamData(StreamData *streamData)
{
free(streamData->name);
free(streamData->mode);
free(streamData);
}
{
StreamData *streamData = (StreamData *)user;
streamData->fp = fopen(streamData->name, streamData->mode);
}
{
StreamData *streamData = (StreamData *)user;
fclose(streamData->fp);
streamData->fp = NULL;
}
{
StreamData *streamData = (StreamData *)user;
return (
lt_uint32)fread(buf, 1, len, streamData->fp);
}
{
StreamData *streamData = (StreamData *)user;
return (
lt_uint32)fwrite(buf, 1, len, streamData->fp);
}
{
StreamData *streamData = (StreamData *)user;
int mydir = 0;
switch (dir)
{
};
return fseek(streamData->fp, (long)pos, mydir) ?
}
static lt_int64 myTell(void *user)
{
StreamData *streamData = (StreamData *)user;
return ftell(streamData->fp);
}
{
StreamData *streamData = (StreamData *)user;
return feof(streamData->fp) != 0;
}
{
StreamData *streamData = (StreamData *)user;
return streamData->fp != NULL;
}
static void *myDuplicate(void *user)
{
StreamData *streamData = (StreamData *)user;
return createStreamData(streamData->name, streamData->mode);
}
{
StreamData *streamData = createStreamData(INPUT_PATH("meg.hdr"), "r");
myRead, myWrite,
mySeek, myTell,
myIsEOF, myIsOpen,
myDuplicate,
streamData);
TEST_BOOL(stream != NULL);
TEST_BOOL(streamData->fp!=NULL);
TEST_BOOL(strncmp((char*)buf, "NROWS", 5) == 0);
TEST_BOOL(strncmp((char*)buf, "80", 2)==0);
{
TEST_BOOL(strncmp((char*)buf, "NROWS", 5)==0);
}
}