pkgsrc/emulators/gens/patches/patch-ag

100 lines
3.4 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$NetBSD: patch-ag,v 1.3 2006/04/28 13:09:38 joerg Exp $
--- src/gens/util/chd.h.orig 2006-04-28 12:32:01.000000000 +0000
+++ src/gens/util/chd.h
@@ -0,0 +1,95 @@
+#ifndef HAD_CHD_H
+
+/*
+ NiH: chd.h,v 1.3 2004/06/25 23:31:08 dillo Exp
+
+ chd.h -- accessing chd files
+ Copyright (C) 2004 Dieter Baron and Thomas Klausner
+
+ This file is part of ckmame, a program to check rom sets for MAME.
+ The authors can be contacted at <nih@giga.or.at>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License, version 2, as
+ published by the Free Software Foundation.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+*/
+
+#include <inttypes.h>
+#include <stdio.h>
+#include <zlib.h>
+
+#define CHD_ERR_NONE 0 /* N no error */
+#define CHD_ERR_OPEN 1 /* S cannot open file */
+#define CHD_ERR_READ 2 /* S read error */
+#define CHD_ERR_NO_CHD 3 /* N not a CHD file */
+#define CHD_ERR_VERSION 4 /* N unsupported version */
+#define CHD_ERR_INVAL 5 /* N invalid argument */
+#define CHD_ERR_SEEK 6 /* S seek error */
+#define CHD_ERR_NOTSUP 7 /* N unsupported chd feature */
+#define CHD_ERR_ZLIB 8 /* Z zlib error */
+#define CHD_ERR_CRC 9 /* N CRC mismatch */
+#define CHD_ERR_NOMEM 10 /* N out of memory */
+
+#define CHD_MAP_TYPE_COMPRESSED 0x01
+#define CHD_MAP_TYPE_UNCOMPRESSED 0x02
+#define CHD_MAP_TYPE_MINI 0x03
+#define CHD_MAP_TYPE_SELF_HUNK 0x04
+#define CHD_MAP_TYPE_PARENT_HUNK 0x05
+#define CHD_MAP_TYPE_MASK 0x0f
+#define CHD_MAP_FL_NOCRC 0x10
+
+#define CHD_COMP_NONE 0x0
+#define CHD_COMP_ZLIB 0x1
+#define CHD_COMP_ZLIB_PLUS 0x2
+
+
+
+struct chd_map_entry {
+ uint64_t offset; /* offse t within the file of the data */
+ uint32_t crc; /* 32-bit CRC of the data */
+ uint16_t length; /* length of the data */
+ uint16_t flags; /* misc flags */
+};
+
+struct chd {
+ FILE *f;
+ char *name;
+ int error;
+
+ uint32_t hdr_length; /* length of header data */
+ uint32_t version; /* drive format version */
+ uint32_t flags; /* flags field */
+ uint32_t compression; /* compression type */
+ uint32_t hunk_len; /* number of bytes per hunk */
+ uint32_t total_hunks; /* total # of hunks represented */
+ uint64_t total_len; /* logical size of the data */
+ uint64_t meta_offset; /* offset in file of first metadata */
+ uint8_t md5[16]; /* MD5 checksum of raw data */
+ uint8_t parent_md5[16]; /* MD5 checksum of parent file */
+ uint8_t sha1[20]; /* SHA1 checksum of raw data */
+ uint8_t parent_sha1[20]; /* SHA1 checksum of parent file */
+
+ struct chd_map_entry *map; /* hunk map */
+ char *buf; /* decompression buffer */
+ z_stream z; /* decompressor */
+ int hno; /* hunk currently in hbuf */
+ char *hbuf; /* hunk data buffer */
+};
+
+
+
+void chd_close(struct chd *);
+struct chd *chd_open(const char *, int *);
+int chd_read_hunk(struct chd *, int, char *);
+int chd_read_range(struct chd *, char *, int, int);
+
+#endif /* chd.h */