diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:26 -0800 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2017-02-20 00:05:26 -0800 |
commit | deda2c0fd8689349fea2a900199a76ff7ecb319e (patch) | |
tree | c9726d54a0806a9b0c75e6c82db8692aea0053cf /scmfig.h | |
parent | 3278b75942bdbe706f7a0fba87729bb1e935b68b (diff) | |
download | scm-deda2c0fd8689349fea2a900199a76ff7ecb319e.tar.gz scm-deda2c0fd8689349fea2a900199a76ff7ecb319e.zip |
Import Upstream version 5d6upstream/5d6
Diffstat (limited to 'scmfig.h')
-rw-r--r-- | scmfig.h | 111 |
1 files changed, 78 insertions, 33 deletions
@@ -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 */ |