diff options
author | stanton <stanton> | 1999-04-16 00:46:29 (GMT) |
---|---|---|
committer | stanton <stanton> | 1999-04-16 00:46:29 (GMT) |
commit | 97464e6cba8eb0008cf2727c15718671992b913f (patch) | |
tree | ce9959f2747257d98d52ec8d18bf3b0de99b9535 /mac/tclMacPort.h | |
parent | a8c96ddb94d1483a9de5e340b740cb74ef6cafa7 (diff) | |
download | tcl-97464e6cba8eb0008cf2727c15718671992b913f.zip tcl-97464e6cba8eb0008cf2727c15718671992b913f.tar.gz tcl-97464e6cba8eb0008cf2727c15718671992b913f.tar.bz2 |
merged tcl 8.1 branch back into the main trunk
Diffstat (limited to 'mac/tclMacPort.h')
-rw-r--r-- | mac/tclMacPort.h | 236 |
1 files changed, 138 insertions, 98 deletions
diff --git a/mac/tclMacPort.h b/mac/tclMacPort.h index 558fecd..7be4938 100644 --- a/mac/tclMacPort.h +++ b/mac/tclMacPort.h @@ -10,20 +10,27 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclMacPort.h,v 1.7 1999/03/11 00:19:24 stanton Exp $ + * RCS: @(#) $Id: tclMacPort.h,v 1.8 1999/04/16 00:47:21 stanton Exp $ */ + #ifndef _MACPORT #define _MACPORT -#ifndef _TCL -#include "tcl.h" +#ifndef _TCLINT +# include "tclInt.h" #endif +/* + *--------------------------------------------------------------------------- + * The following sets of #includes and #ifdefs are required to get Tcl to + * compile on the macintosh. + *--------------------------------------------------------------------------- + */ + #include "tclErrno.h" #include <float.h> -/* Includes */ #ifdef THINK_C /* * The Symantic C code has not been tested @@ -41,64 +48,85 @@ #elif defined(__MWERKS__) # include <time.h> # include <unistd.h> + /* * The following definitions are usually found if fcntl.h. * However, MetroWerks has screwed that file up a couple of times * and all we need are the defines. */ -#define O_RDWR 0x0 /* open the file in read/write mode */ -#define O_RDONLY 0x1 /* open the file in read only mode */ -#define O_WRONLY 0x2 /* open the file in write only mode */ -#define O_APPEND 0x0100 /* open the file in append mode */ -#define O_CREAT 0x0200 /* create the file if it doesn't exist */ -#define O_EXCL 0x0400 /* if the file exists don't create it again */ -#define O_TRUNC 0x0800 /* truncate the file after opening it */ + +# define O_RDWR 0x0 /* open the file in read/write mode */ +# define O_RDONLY 0x1 /* open the file in read only mode */ +# define O_WRONLY 0x2 /* open the file in write only mode */ +# define O_APPEND 0x0100 /* open the file in append mode */ +# define O_CREAT 0x0200 /* create the file if it doesn't exist */ +# define O_EXCL 0x0400 /* if the file exists don't create it again */ +# define O_TRUNC 0x0800 /* truncate the file after opening it */ /* * MetroWerks stat.h file is rather weak. The defines * after the include are needed to fill in the missing * defines. */ + # include <stat.h> # ifndef S_IFIFO -# define S_IFIFO 0x0100 +# define S_IFIFO 0x0100 # endif # ifndef S_IFBLK -# define S_IFBLK 0x0600 +# define S_IFBLK 0x0600 # endif # ifndef S_ISLNK -# define S_ISLNK(m) (((m)&(S_IFMT)) == (S_IFLNK)) +# define S_ISLNK(m) (((m)&(S_IFMT)) == (S_IFLNK)) # endif # ifndef S_ISSOCK -# define S_ISSOCK(m) (((m)&(S_IFMT)) == (S_IFSOCK)) +# define S_ISSOCK(m) (((m)&(S_IFMT)) == (S_IFSOCK)) # endif # ifndef S_IRWXU -# define S_IRWXU 00007 /* read, write, execute: owner */ -# define S_IRUSR 00004 /* read permission: owner */ -# define S_IWUSR 00002 /* write permission: owner */ -# define S_IXUSR 00001 /* execute permission: owner */ -# define S_IRWXG 00007 /* read, write, execute: group */ -# define S_IRGRP 00004 /* read permission: group */ -# define S_IWGRP 00002 /* write permission: group */ -# define S_IXGRP 00001 /* execute permission: group */ -# define S_IRWXO 00007 /* read, write, execute: other */ -# define S_IROTH 00004 /* read permission: other */ -# define S_IWOTH 00002 /* write permission: other */ -# define S_IXOTH 00001 /* execute permission: other */ +# define S_IRWXU 00007 /* read, write, execute: owner */ +# define S_IRUSR 00004 /* read permission: owner */ +# define S_IWUSR 00002 /* write permission: owner */ +# define S_IXUSR 00001 /* execute permission: owner */ +# define S_IRWXG 00007 /* read, write, execute: group */ +# define S_IRGRP 00004 /* read permission: group */ +# define S_IWGRP 00002 /* write permission: group */ +# define S_IXGRP 00001 /* execute permission: group */ +# define S_IRWXO 00007 /* read, write, execute: other */ +# define S_IROTH 00004 /* read permission: other */ +# define S_IWOTH 00002 /* write permission: other */ +# define S_IXOTH 00001 /* execute permission: other */ # endif -# define isatty(arg) 1 +# define isatty(arg) 1 /* * Defines used by access function. This function is provided * by Mac Tcl as the function TclpAccess. */ -# define F_OK 0 /* test for existence of file */ -# define X_OK 0x01 /* test for execute or search permission */ -# define W_OK 0x02 /* test for write permission */ -# define R_OK 0x04 /* test for read permission */ +# define F_OK 0 /* test for existence of file */ +# define X_OK 0x01 /* test for execute or search permission */ +# define W_OK 0x02 /* test for write permission */ +# define R_OK 0x04 /* test for read permission */ + +#endif /* __MWERKS__ */ + +/* + * Many signals are not supported on the Mac and are thus not defined in + * <signal.h>. They are defined here so that Tcl will compile with less + * modification. + */ +#ifndef SIGQUIT +#define SIGQUIT 300 +#endif + +#ifndef SIGPIPE +#define SIGPIPE 13 +#endif + +#ifndef SIGHUP +#define SIGHUP 100 #endif /* @@ -107,16 +135,29 @@ * be defined in sys/wait.h on UNIX systems. */ -#define WNOHANG 1 -#define WIFSTOPPED(stat) (1) -#define WIFSIGNALED(stat) (1) -#define WIFEXITED(stat) (1) -#define WIFSTOPSIG(stat) (1) -#define WIFTERMSIG(stat) (1) -#define WIFEXITSTATUS(stat) (1) -#define WEXITSTATUS(stat) (1) -#define WTERMSIG(status) (1) -#define WSTOPSIG(status) (1) +#define WAIT_STATUS_TYPE int +#define WNOHANG 1 +#define WIFSTOPPED(stat) (1) +#define WIFSIGNALED(stat) (1) +#define WIFEXITED(stat) (1) +#define WIFSTOPSIG(stat) (1) +#define WIFTERMSIG(stat) (1) +#define WIFEXITSTATUS(stat) (1) +#define WEXITSTATUS(stat) (1) +#define WTERMSIG(status) (1) +#define WSTOPSIG(status) (1) + +/* + * Make sure that MAXPATHLEN is defined. + */ + +#ifndef MAXPATHLEN +# ifdef PATH_MAX +# define MAXPATHLEN PATH_MAX +# else +# define MAXPATHLEN 2048 +# endif +#endif /* * Define "NBBY" (number of bits per byte) if it's not already defined. @@ -136,57 +177,57 @@ # define getpid() -1 #endif -#define NO_SYS_ERRLIST -#define WAIT_STATUS_TYPE int - /* - * Make sure that MAXPATHLEN is defined. + * Variables provided by the C library. */ - -#ifndef MAXPATHLEN -# ifdef PATH_MAX -# define MAXPATHLEN PATH_MAX -# else -# define MAXPATHLEN 2048 -# endif -#endif + +extern char **environ; /* - * The following functions are declared in tclInt.h but don't do anything - * on Macintosh systems. + *--------------------------------------------------------------------------- + * The following macros and declarations represent the interface between + * generic and mac-specific parts of Tcl. Some of the macros may override + * functions declared in tclInt.h. + *--------------------------------------------------------------------------- */ -#define TclSetSystemEnv(a,b) - /* - * Many signals are not supported on the Mac and are thus not defined in - * <signal.h>. They are defined here so that Tcl will compile with less - * modification. - */ - -#ifndef SIGQUIT -#define SIGQUIT 300 -#endif - -#ifndef SIGPIPE -#define SIGPIPE 13 -#endif - -#ifndef SIGHUP -#define SIGHUP 100 -#endif + * The default platform eol translation on Mac is TCL_TRANSLATE_CR: + */ -extern char **environ; +#define TCL_PLATFORM_TRANSLATION TCL_TRANSLATE_CR /* - * Prototypes needed for compatability + * Declare dynamic loading extension macro. */ -EXTERN int strncasecmp _ANSI_ARGS_((CONST char *s1, - CONST char *s2, size_t n)); +#define TCL_SHLIB_EXT ".shlb" +/* + * The following define is bogus and needs to be fixed. It claims that + * struct tm has the timezone string in it, which is not true. However, + * the code that works around this fact does not compile on the Mac, since + * it relies on the fact that time.h has a "timezone" variable, which the + * Metrowerks time.h does not have... + * + * The Mac timezone stuff never worked (clock format 0 -format %Z returns "Z") + * so this just keeps the status quo. The real answer is to not use the + * MSL strftime, and provide the needed compat functions... + * + */ + +#define HAVE_TM_ZONE + +/* + * The following macros have trivial definitions, allowing generic code to + * address platform-specific issues. + */ + +#define TclpAsyncMark(async) +#define TclpGetPid(pid) ((unsigned long) (pid)) +#define TclpGetUserHome(n, b) (NULL) +#define TclSetSystemEnv(a,b) #define tzset() -#define TclpGetPid(pid) ((unsigned long) (pid)) /* * The following defines replace the Macintosh version of the POSIX @@ -202,12 +243,11 @@ EXTERN int strncasecmp _ANSI_ARGS_((CONST char *s1, #endif /* - * Defines for Tcl internal commands that aren't really needed on - * the Macintosh. They all act as no-ops. + * Prototypes needed for compatability */ -#define TclCreateCommandChannel(out, in, err, num, pidPtr) NULL -#define TclClosePipeFile(x) -#define TclpAsyncMark(async) + +EXTERN int strncasecmp _ANSI_ARGS_((CONST char *s1, + CONST char *s2, size_t n)); /* * These definitions force putenv & company to use the version @@ -223,21 +263,21 @@ void TclUnsetEnv(CONST char *name); #endif /* - * The default platform eol translation on Mac is TCL_TRANSLATE_CR: - */ - -#define TCL_PLATFORM_TRANSLATION TCL_TRANSLATE_CR - -/* - * Declare dynamic loading extension macro. - */ - -#define TCL_SHLIB_EXT ".shlb" - -/* - * TclpFinalize is a noop on the Mac. + * Platform specific mutex definition used by memory allocators. + * These are all no-ops on the Macintosh, since the threads are + * all cooperative. */ -#define TclpFinalize() +#ifdef TCL_THREADS +typedef int TclpMutex; +#define TclpMutexInit(a) +#define TclpMutexLock(a) +#define TclpMutexUnlock(a) +#else +typedef int TclpMutex; +#define TclpMutexInit(a) +#define TclpMutexLock(a) +#define TclpMutexUnlock(a) +#endif /* TCL_THREADS */ #endif /* _MACPORT */ |