Synchronet now requires the libarchive development package (e.g. libarchive-dev on Debian-based Linux distros, libarchive.org for more info) to build successfully.

xpmap.h 1.6 KB
Newer Older
1 2 3 4 5 6
/* mmap() style cross-platform development wrappers */

/****************************************************************************
 * @format.tab-size 4		(Plain Text/Source Code File Header)			*
 * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
 *																			*
7
 * Copyright Rob Swindell - http://www.synchro.net/copyright.html			*
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
 *																			*
 * This library is free software; you can redistribute it and/or			*
 * modify it under the terms of the GNU Lesser General Public License		*
 * as published by the Free Software Foundation; either version 2			*
 * of the License, or (at your option) any later version.					*
 * See the GNU Lesser General Public License for more details: lgpl.txt or	*
 * http://www.fsf.org/copyleft/lesser.html									*
 *																			*
 * For Synchronet coding style and modification guidelines, see				*
 * http://www.synchro.net/source.html										*
 *																			*
 * Note: If this box doesn't appear square, then you need to fix your tabs.	*
 ****************************************************************************/

#ifndef _XPMAP_H
#define _XPMAP_H

#include "gen_defs.h"
deuce's avatar
deuce committed
26
#include "wrapdll.h"
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56

enum xpmap_type {
	XPMAP_READ,
	XPMAP_WRITE,
	XPMAP_COPY
};

#if defined(__unix__)

#include <sys/mman.h>
struct xpmapping {
	void	*addr;
	int		fd;
	size_t	size;
};

#elif defined(_WIN32)

struct xpmapping {
	void		*addr;
	HANDLE		fd;
	HANDLE		md;
	uint64_t	size;
};

#else

	#error "Need mmap wrappers."

#endif
57

58 59
DLLEXPORT struct xpmapping* xpmap(const char *filename, enum xpmap_type type);
DLLEXPORT void xpunmap(struct xpmapping *map);
60 61

#endif