Subversion Repositories freemyipod

Rev

Rev 445 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
 * Helper functions to handle compression via zlib
 *
 * Copyright (C) 2007-2008 Julian Brown
 * Copyright (C) 2008 Mike Frysinger
 *
 * Licensed under the GPL-2 or later.
 */

#ifndef __ELF2FLT_COMPRESS_H__
#define __ELF2FLT_COMPRESS_H__

//#include <zlib.h>

typedef enum
{
  INVALID,
  UNCOMPRESSED,
  COMPRESSED
} stream_type;

/* Tagged union holding either a regular FILE* handle or a zlib gzFile
   handle.  */
typedef struct
{
  stream_type type;
  const char *mode;
  FILE *filep;
  char* buffer;
  int bufsize;
  int bufused;
//  union
//    {
//      FILE *filep;
//      gzFile gzfilep;
//    } u;
} stream;

int fopen_stream_u(stream *fp, const char *path, const char *mode);
size_t fread_stream(void *ptr, size_t size, size_t nmemb, stream *str);
size_t fwrite_stream(const void *ptr, size_t size, size_t nmemb, stream *str);
int fclose_stream(stream *str);
int ferror_stream(stream *str);
int fseek_stream(stream *str, long offset, int whence);
void reopen_stream_compressed(stream *str);
void transfer(stream *ifp, stream *ofp, int count);

#endif