view src/dmpack.h @ 2634:f3c7115cbf85 default tip

Fix verbose build echos.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 29 Feb 2024 21:47:31 +0200
parents 9807ae37ad69
children
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