view src/dmpack.h @ 2479:c1cae47cd410

Rename DMPackEntry::length to csize (compressed size).
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 27 Apr 2020 21:33:29 +0300
parents 0115b3dd9064
children 9807ae37ad69
line wrap: on
line source

/*
 * DMLib
 * -- PACK-file routines
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2011-2015 Tecnic Software productions (TNSP)
 */
#ifndef DMPACK_H
#define DMPACK_H
#include "dmlib.h"


#define	DPACK_IDENT     "TNSPDPCK"      // Magic ident
#define	DPACK_VERSION   (0x0200)        // Version


typedef struct _DMPackEntry
{
    char    filename[DMRES_NAME_LEN + 1]; // +1 for NUL byte
    Uint64  offset;            // Offset in pack file
    Uint32  csize;             // Compressed data size
    Uint32  size;              // Size of UNCOMPRESSED data
    Uint32  flags;             // Stored flags, see DMF_* in dmres.h

    Uint32  privFlags;  // PrivFlags are not stored
    struct _DMPackEntry *next, *prev;
} DMPackEntry;


typedef struct
{
    DMPackEntry *entries;
    char *  filename;          // Filename & path
    FILE *  file;              // File
} DMPackFile;


typedef struct
{
    char    ident[8];          // Magic identifier
    Uint16  version;           // Version
    Uint32  dirEntries;        // Number of entries
    Uint64  dirOffset;         // Offset of the directory
} DMPackFileHeader;


DMPackEntry *  dmPackEntryNew();
void           dmPackEntryFree(DMPackEntry *);
void           dmPackEntryInsert(DMPackEntry **, DMPackEntry *);
void           dmPackEntryDelete(DMPackEntry **, DMPackEntry *);

DMPackEntry *  dmPackFind(DMPackEntry *list, const char *filename);

int            dmPackOpen(const char *, DMPackFile **, BOOL);
int            dmPackClose(DMPackFile *);
int            dmPackRead(DMPackFile *, const char *, Uint8 **, size_t *);


#endif // DMPACK_H