summaryrefslogtreecommitdiffstats
path: root/scmfig.h
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:26 -0800
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:26 -0800
commitdeda2c0fd8689349fea2a900199a76ff7ecb319e (patch)
treec9726d54a0806a9b0c75e6c82db8692aea0053cf /scmfig.h
parent3278b75942bdbe706f7a0fba87729bb1e935b68b (diff)
downloadscm-deda2c0fd8689349fea2a900199a76ff7ecb319e.tar.gz
scm-deda2c0fd8689349fea2a900199a76ff7ecb319e.zip
Import Upstream version 5d6upstream/5d6
Diffstat (limited to 'scmfig.h')
-rw-r--r--scmfig.h111
1 files changed, 78 insertions, 33 deletions
diff --git a/scmfig.h b/scmfig.h
index 99d4f21..a87e928 100644
--- a/scmfig.h
+++ b/scmfig.h
@@ -15,26 +15,26 @@
* the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111, USA.
*
* As a special exception, the Free Software Foundation gives permission
- * for additional uses of the text contained in its release of GUILE.
+ * for additional uses of the text contained in its release of SCM.
*
- * The exception is that, if you link the GUILE library with other files
+ * The exception is that, if you link the SCM library with other files
* to produce an executable, this does not by itself cause the
* resulting executable to be covered by the GNU General Public License.
* Your use of that executable is in no way restricted on account of
- * linking the GUILE library code into it.
+ * linking the SCM library code into it.
*
* This exception does not however invalidate any other reasons why
* the executable file might be covered by the GNU General Public License.
*
* This exception applies only to the code released by the
- * Free Software Foundation under the name GUILE. If you copy
+ * Free Software Foundation under the name SCM. If you copy
* code from other Free Software Foundation releases into a copy of
- * GUILE, as the General Public License permits, the exception does
+ * SCM, as the General Public License permits, the exception does
* not apply to the code that you add in this way. To avoid misleading
* anyone as to the status of such modified files, you must delete
* this exception notice from them.
*
- * If you write modifications of your own for GUILE, it is your choice
+ * If you write modifications of your own for SCM, it is your choice
* whether to permit this exception to apply to your modifications.
* If you do not wish that, delete this exception notice.
*/
@@ -47,7 +47,9 @@
# define strchr index
# define strrchr rindex
#else
-# include <string.h>
+# ifndef PLAN9
+# include <string.h>
+# endif
#endif
#include "scmflags.h" /* user specified, system independent flags */
@@ -106,7 +108,7 @@ rgx.c init_rgx(); regcomp and regexec. */
# define CDR_DOUBLES
# endif
-# ifdef _UNICOS /* doubles are no better than singles on Cray. */
+# ifdef _UNICOS /* doubles are no better than singles on Cray. */
# define SINGLESONLY
# endif
@@ -211,7 +213,7 @@ rgx.c init_rgx(); regcomp and regexec. */
#endif
/* added by Denys Duchier */
#ifndef SVR4
-# ifdef __svr4__
+# ifdef __SVR4
# define SVR4
# endif
#endif
@@ -262,6 +264,7 @@ rgx.c init_rgx(); regcomp and regexec. */
#endif
#ifdef _WIN32
# define MSDOS
+# define LACK_SBRK
# define LACK_TIMES
#endif
#ifdef _MSDOS
@@ -297,13 +300,17 @@ rgx.c init_rgx(); regcomp and regexec. */
# define STDC_HEADERS
# define USE_ANSI_PROTOTYPES
# define HAVE_SYS_TIME_H
-# define __svr4__
+# define __SVR4
#endif
-#ifdef __svr4__
+#ifdef __SVR4
# define HAVE_SELECT
#endif
+#ifdef PLAN9
+# define STDC_HEADERS
+#endif
+
#ifdef hpux
# define LACK_E_IDs
#endif
@@ -312,6 +319,7 @@ rgx.c init_rgx(); regcomp and regexec. */
#ifdef __IBMC__
# define STDC_HEADERS
# define LACK_TIMES
+# define LACK_SBRK
#endif
#ifdef __CYGWIN32__
@@ -321,7 +329,7 @@ rgx.c init_rgx(); regcomp and regexec. */
# undef MSDOS
#endif
-#ifdef __amigados__
+#ifdef __amigaos__
# define HAVE_SELECT
# define HAVE_SYS_TIME_H
# define LACK_SBRK
@@ -409,26 +417,26 @@ rgx.c init_rgx(); regcomp and regexec. */
# define ALLOW_INTS_EGC /**/
#else
# ifdef CAREFUL_INTS
-typedef struct {char *fname; long linum;} ints_infot;
+typedef struct {char *fname; int linum;} ints_infot;
extern ints_infot *ints_info;
# define VERIFY_INTS(s1, s2) {if (!ints_disabled)\
- ints_warn(s1, s2, __FILE__,__LINE__); }
+ ints_warn(s1, s2, __FILE__, __LINE__); }
# define DEFER_INTS \
{static ints_infot info = {__FILE__, __LINE__};\
FENCE;if (1==ints_disabled) ints_viol(&info, 1);\
- else {ints_info = &info; ints_disabled = 1;FENCE;}}
+ else {ints_info = &info; ints_disabled = 1;FENCE;}}
# define ALLOW_INTS \
{static ints_infot info = {__FILE__, __LINE__};\
FENCE;if (1!=ints_disabled) ints_viol(&info, 0);\
- else {ints_info = &info; ints_disabled = 0;FENCE;CHECK_INTS}}
+ else {ints_info = &info; ints_disabled = 0;FENCE;CHECK_INTS}}
# define DEFER_INTS_EGC \
{static ints_infot info = {__FILE__, __LINE__};\
FENCE;if (1==ints_disabled) ints_viol(&info, 1);\
- else {ints_info = &info; ints_disabled = 2;FENCE;}}
+ else {ints_info = &info; ints_disabled = 2;FENCE;}}
# define ALLOW_INTS_EGC \
{static ints_infot info = {__FILE__, __LINE__};\
FENCE;if (1==ints_disabled) ints_viol(&info, 0);\
- else {ints_info = &info; ints_disabled = 0;FENCE;CHECK_INTS}}
+ else {ints_info = &info; ints_disabled = 0;FENCE;CHECK_INTS}}
# else
# define VERIFY_INTS(s1, s2) /**/
# define DEFER_INTS {FENCE;ints_disabled = 1;FENCE;}
@@ -462,8 +470,14 @@ extern ints_infot *ints_info;
# define PTR2SCM(x) (((SCM)(x)) << 3)
# define POINTERS_MUNGED
#else
-# define SCM2PTR(x) (x)
-# define PTR2SCM(x) ((SCM)(x))
+# ifdef TEST_SCM2PTR
+# define SCM2PTR(x) ((x) ^ 0xf0L)
+# define PTR2SCM(x) (((SCM)(x)) ^ 0xf0L)
+# define POINTERS_MUNGED
+# else
+# define SCM2PTR(x) (x)
+# define PTR2SCM(x) ((SCM)(x))
+# endif
#endif
/* FIXABLE is non-null if its long argument can be encoded in an INUM. */
@@ -576,7 +590,9 @@ extern ints_infot *ints_info;
#ifdef FLOATS
# ifdef STDC_HEADERS
# ifndef macintosh
-# include <float.h>
+# ifndef PLAN9
+# include <float.h>
+# endif
# endif
# endif
# ifdef DBL_MAX_10_EXP
@@ -597,12 +613,19 @@ extern ints_infot *ints_info;
# endif
#endif
-/* Only some machines have pipes */
+#ifdef unix
+# define HAVE_UNIX
+#endif
+#ifdef __unix__
+# define HAVE_UNIX
+#endif
#ifdef _IBMR2
-# define unix
+# define HAVE_UNIX
# define STDC_HEADERS
#endif
-#ifdef unix
+
+/* Only some machines have pipes */
+#ifdef HAVE_UNIX
/* DJGPP (gcc for i386) defines unix! */
# define HAVE_PIPE
#endif
@@ -644,12 +667,20 @@ typedef SCM *SCMPTR;
# endif
#endif
+#define PTR_GT(x, y) PTR_LT(y, x)
+#define PTR_LE(x, y) (!PTR_GT(x, y))
+#define PTR_GE(x, y) (!PTR_LT(x, y))
+
#ifdef STDC_HEADERS
-# include <stdlib.h>
-# ifdef AMIGA
-# include <stddef.h>
+# ifdef PLAN9
+# define sizet long
+# else
+# include <stdlib.h>
+# ifdef AMIGA
+# include <stddef.h>
+# endif
+# define sizet size_t
# endif
-# define sizet size_t
#else
# ifdef _SIZE_T
# define sizet size_t
@@ -665,7 +696,9 @@ typedef SCM *SCMPTR;
/* On VMS, GNU C's errno.h contains a special hack to get link attributes
for errno correct for linking with libc. */
-#include <errno.h>
+#ifndef PLAN9
+# include <errno.h>
+#endif
/* SYSCALL retries system calls that have been interrupted (EINTR) */
#ifdef vms
@@ -691,15 +724,19 @@ typedef SCM *SCMPTR;
#define SYSCALL(line) do{errno = 0;line}while(SCM_INTERRUPTED(errno))
#ifdef EMFILE
-# define SCM_NEED_FDS(errno) (EMFILE==errno || ENFILE==errno)
+# ifdef ENFILE
+# define SCM_NEED_FDS(errno) (EMFILE==errno || ENFILE==errno)
+# else
+# define SCM_NEED_FDS(errno) (EMFILE==errno)
+# endif
#else
# define SCM_NEED_FDS(errno) (0)
#endif
#define SCM_OPENCALL(line) {int gcs = 0;\
- while (!0) {errno = 0; if (line) break;\
- if (0==gcs++ && SCM_NEED_FDS(errno)) \
- gc_for_open_files();\
+ while (!0) {errno = 0; if (line) break;\
+ if (0==gcs++ && SCM_NEED_FDS(errno)) \
+ gc_for_open_files();\
else if (!SCM_INTERRUPTED(errno)) break;}}
#ifndef MSDOS
@@ -751,4 +788,12 @@ typedef SCM *SCMPTR;
# define VOLATILE /**/
#endif
+#ifdef _MSC_VER
+ // Disable annoying warnings for:
+# pragma warning (disable: 4102) // unreferenced label
+# pragma warning (disable: 4018) // signed/unsigned mismatch
+# pragma warning (disable: 4101) // unreferenced variables
+# pragma warning (disable: 4244) // conversion from unsigned long to unsigned short
+#endif
+
/* end of automatic C pre-processor definitions */