[MKISOFS]
[reactos.git] / reactos / sdk / tools / mkisofs / schilytools / include / schily / ccomdefs.h
1 /* @(#)ccomdefs.h 1.12 11/07/21 Copyright 2000-2011 J. Schilling */
2 /*
3 * Various compiler dependant macros.
4 *
5 * Copyright (c) 2000-2011 J. Schilling
6 */
7 /*
8 * The contents of this file are subject to the terms of the
9 * Common Development and Distribution License, Version 1.0 only
10 * (the "License"). You may not use this file except in compliance
11 * with the License.
12 *
13 * See the file CDDL.Schily.txt in this distribution for details.
14 *
15 * When distributing Covered Code, include this CDDL HEADER in each
16 * file and include the License file CDDL.Schily.txt from this distribution.
17 */
18
19 #ifndef _SCHILY_CCOMDEFS_H
20 #define _SCHILY_CCOMDEFS_H
21
22 #ifndef _SCHILY_MCONFIG_H
23 #include <schily/mconfig.h>
24 #endif
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29
30 /*
31 * Compiler-dependent macros to declare that functions take printf-like
32 * or scanf-like arguments. They are defined to nothing for versions of gcc
33 * that are not known to support the features properly (old versions of gcc-2
34 * didn't permit keeping the keywords out of the application namespace).
35 */
36 #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) || \
37 defined(NO_PRINTFLIKE)
38
39 #define __printflike__(fmtarg, firstvararg)
40 #define __printf0like__(fmtarg, firstvararg)
41 #define __scanflike__(fmtarg, firstvararg)
42
43 #else /* We found GCC that supports __attribute__ */
44
45 #define __printflike__(fmtarg, firstvararg) \
46 __attribute__((__format__(__printf__, fmtarg, firstvararg)))
47 #define __printf0like__(fmtarg, firstvararg) \
48 __attribute__((__format__(__printf0__, fmtarg, firstvararg)))
49
50 /*
51 * FreeBSD GCC implements printf0 that allows the format string to
52 * be a NULL pointer.
53 */
54 #if __FreeBSD_cc_version < 300001
55 #undef __printf0like__
56 #define __printf0like__ __printflike__
57 #endif
58
59 #define __scanflike__(fmtarg, firstvararg) \
60 __attribute__((__format__(__scanf__, fmtarg, firstvararg)))
61
62 #endif /* GNUC */
63
64 #if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 2
65 /* GCC-3.3 or more */
66
67 /* CSTYLED */
68 #define UConst __attribute__ ((__used__)) const
69
70 #else /* less than GNUC 3.3 */
71
72 #define UConst const
73
74 #endif /* less than GNUC 3.3 */
75
76 #ifdef __PCC__
77 /*
78 * Hack until pcc supports __attribute__ ((__used__))
79 */
80 #ifdef UConst
81 #undef UConst
82 #define UConst const
83 #endif
84 #endif
85
86 #ifdef __cplusplus
87 }
88 #endif
89
90 #endif /* _SCHILY_CCOMDEFS_H */