1 /* -*- mode: hugs-c; -*- */
2 /*---------------------------------------------------------------------------
3 * Interrupting execution (signals, allowBreak):
4 *-------------------------------------------------------------------------*/
6 extern Bool breakOn Args((Bool));
8 extern Bool broken; /* indicates interrupt received */
10 #ifndef SIGBREAK /* Sigh, not defined in cygwin32 beta release 16 */
14 /* allowBreak: call to allow user to interrupt computation
15 * ctrlbrk: set control break handler
20 # define allowBreak() kbhit()
21 #else /* !HUGS_FOR_WINDOWS */
22 # define ctrlbrk(bh) signal(SIGINT,bh); signal(SIGBREAK,bh)
23 # define allowBreak() if (broken) { broken=FALSE; sigRaise(breakHandler); }
24 #endif /* !HUGS_FOR_WINDOWS */
26 /*---------------------------------------------------------------------------
27 * Environment variables and the registry
28 *-------------------------------------------------------------------------*/
30 /* On Win32 we can use the registry to supplement info in environment
33 #define USE_REGISTRY (HAVE_WINDOWS_H && !__MSDOS__)
36 Bool writeRegString Args((String var, String val));
37 String readRegString Args((String var, String def));
38 Int readRegInt Args((String var, Int def));
39 Bool writeRegInt Args((String var, Int val));
42 /*---------------------------------------------------------------------------
44 *-------------------------------------------------------------------------*/
47 # include <sys/types.h>
49 #elif !HUGS_FOR_WINDOWS
50 extern int chdir Args((const char*));
56 extern int system Args((const char *));
57 extern double atof Args((const char *));
58 extern void exit Args((int));
61 #ifndef FILENAME_MAX /* should already be defined in an ANSI compiler*/
62 #define FILENAME_MAX 256
64 #if FILENAME_MAX < 256
66 #define FILENAME_MAX 256
70 /* Hack, hack: if you have dos.h, you probably have a DOS filesystem */
71 #define DOS_FILENAMES HAVE_DOS_H
72 /* ToDo: can we replace this with a feature test? */
73 #define MAC_FILENAMES SYMANTEC_C
75 #define CASE_INSENSITIVE_FILENAMES (DOS_FILENAMES | RISCOS)
77 #if CASE_INSENSITIVE_FILENAMES
79 # define filenamecmp(s1,s2) strcasecmp(s1,s2)
81 # define filenamecmp(s1,s2) _stricmp(s1,s2)
83 # define filenamecmp(s1,s2) stricmp(s1,s2)
85 # define filenamecmp(s1,s2) strcmpi(s1,s2)
88 # define filenamecmp(s1,s2) strcmp(s1,s2)
91 /*---------------------------------------------------------------------------
92 * Pipe-related operations:
94 * On Windows, many standard Unix names acquire a leading underscore.
95 * Irritating, but easy to work around.
96 *-------------------------------------------------------------------------*/
98 #if !defined(HAVE_POPEN) && defined(HAVE__POPEN)
99 #define popen(x,y) _popen(x,y)
101 #if !defined(HAVE_PCLOSE) && defined(HAVE__PCLOSE)
102 #define pclose(x) _pclose(x)
105 /*---------------------------------------------------------------------------
107 *-------------------------------------------------------------------------*/
109 #define bitArraySize(n) ((n)/bitsPerWord + 1)
110 #define placeInSet(n) ((-(n)-1)>>wordShift)
111 #define maskInSet(n) (1<<((-(n)-1)&wordMask))
113 /*---------------------------------------------------------------------------
114 * Function prototypes for code in machdep.c
115 *-------------------------------------------------------------------------*/
118 typedef struct { unsigned hi, lo; } Time;
119 #define timeChanged(now,thn) (now.hi!=thn.hi || now.lo!=thn.lo)
120 #define timeSet(var,tm) var.hi = tm.hi; var.lo = tm.lo
123 #define timeChanged(now,thn) (now!=thn)
124 #define timeSet(var,tm) var = tm
127 extern Void getFileInfo Args((String, Time *, Long *));
128 extern int pathCmp Args((String, String));
129 extern String substPath Args((String,String));
130 extern Bool startEdit Args((Int,String));
132 extern String findPathname Args((String,String));
133 extern String findMPathname Args((String,String));
135 extern Int shellEsc Args((String));
136 extern Int getTerminalWidth Args((Void));
137 extern Void normalTerminal Args((Void));
138 extern Void noechoTerminal Args((Void));
139 extern Int readTerminalChar Args((Void));
140 extern Void gcStarted Args((Void));
141 extern Void gcScanning Args((Void));
142 extern Void gcRecovered Args((Int));
143 extern Void gcCStack Args((Void));
145 /*-------------------------------------------------------------------------*/