1e64fe029SMartin Matuska /*-
2e64fe029SMartin Matuska  * Copyright (c) 2003-2007 Tim Kientzle
3e64fe029SMartin Matuska  * All rights reserved.
4e64fe029SMartin Matuska  *
5e64fe029SMartin Matuska  * Redistribution and use in source and binary forms, with or without
6e64fe029SMartin Matuska  * modification, are permitted provided that the following conditions
7e64fe029SMartin Matuska  * are met:
8e64fe029SMartin Matuska  * 1. Redistributions of source code must retain the above copyright
9e64fe029SMartin Matuska  *    notice, this list of conditions and the following disclaimer.
10e64fe029SMartin Matuska  * 2. Redistributions in binary form must reproduce the above copyright
11e64fe029SMartin Matuska  *    notice, this list of conditions and the following disclaimer in the
12e64fe029SMartin Matuska  *    documentation and/or other materials provided with the distribution.
13e64fe029SMartin Matuska  *
14e64fe029SMartin Matuska  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
15e64fe029SMartin Matuska  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16e64fe029SMartin Matuska  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17e64fe029SMartin Matuska  * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
18e64fe029SMartin Matuska  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
19e64fe029SMartin Matuska  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
20e64fe029SMartin Matuska  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
21e64fe029SMartin Matuska  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22e64fe029SMartin Matuska  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23e64fe029SMartin Matuska  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24e64fe029SMartin Matuska  */
25e64fe029SMartin Matuska 
26e64fe029SMartin Matuska /*
27e64fe029SMartin Matuska  * This header is the first thing included in any of the bsdtar
28e64fe029SMartin Matuska  * source files.  As far as possible, platform-specific issues should
29e64fe029SMartin Matuska  * be dealt with here and not within individual source files.
30e64fe029SMartin Matuska  */
31e64fe029SMartin Matuska 
32e64fe029SMartin Matuska #ifndef BSDUNZIP_PLATFORM_H_INCLUDED
33e64fe029SMartin Matuska #define	BSDUNZIP_PLATFORM_H_INCLUDED
34e64fe029SMartin Matuska 
35e64fe029SMartin Matuska #if defined(PLATFORM_CONFIG_H)
36e64fe029SMartin Matuska /* Use hand-built config.h in environments that need it. */
37e64fe029SMartin Matuska #include PLATFORM_CONFIG_H
38e64fe029SMartin Matuska #else
39e64fe029SMartin Matuska /* Not having a config.h of some sort is a serious problem. */
40e64fe029SMartin Matuska #include "config.h"
41e64fe029SMartin Matuska #endif
42e64fe029SMartin Matuska 
43e64fe029SMartin Matuska #ifdef HAVE_LIBARCHIVE
44e64fe029SMartin Matuska /* If we're using the platform libarchive, include system headers. */
45e64fe029SMartin Matuska #include <archive.h>
46e64fe029SMartin Matuska #include <archive_entry.h>
47e64fe029SMartin Matuska #else
48e64fe029SMartin Matuska /* Otherwise, include user headers. */
49e64fe029SMartin Matuska #include "archive.h"
50e64fe029SMartin Matuska #include "archive_entry.h"
51e64fe029SMartin Matuska #endif
52e64fe029SMartin Matuska 
53e64fe029SMartin Matuska /* How to mark functions that don't return. */
54e64fe029SMartin Matuska /* This facilitates use of some newer static code analysis tools. */
55*b9128a37SMartin Matuska #undef __LA_NORETURN
56e64fe029SMartin Matuska #if defined(__GNUC__) && (__GNUC__ > 2 || \
57e64fe029SMartin Matuska                           (__GNUC__ == 2 && __GNUC_MINOR__ >= 5))
58*b9128a37SMartin Matuska #define __LA_NORETURN       __attribute__((__noreturn__))
59*b9128a37SMartin Matuska #elif defined(_MSC_VER)
60*b9128a37SMartin Matuska #define __LA_NORETURN __declspec(noreturn)
61e64fe029SMartin Matuska #else
62*b9128a37SMartin Matuska #define __LA_NORETURN
63e64fe029SMartin Matuska #endif
64e64fe029SMartin Matuska 
65e64fe029SMartin Matuska #endif /* !BSDUNZIP_PLATFORM_H_INCLUDED */
66