Removed THINK_C support.
diff --git a/Mac/Compat/getwd.c b/Mac/Compat/getwd.c
index a58fb6a..27f68a2 100644
--- a/Mac/Compat/getwd.c
+++ b/Mac/Compat/getwd.c
@@ -37,15 +37,9 @@
 {
 	/* Universal parameter block. */
 	union {
-#ifdef THINK_C
-		HFileInfo f;
-		DirInfo d;
-		WDPBRec w;
-#else /* MPW */
 		struct HFileInfo f;
 		struct DirInfo d;
 		struct WDPBRec w;
-#endif
 	} pb;
 	char buf[MAXPATH]; /* Buffer to store the name components */
 	char *ecwd, *ebuf; /* Pointers to end of used part of cwd and buf */
diff --git a/Mac/Include/config.h b/Mac/Include/config.h
index 0c78ee5..5214168 100644
--- a/Mac/Include/config.h
+++ b/Mac/Include/config.h
@@ -31,16 +31,11 @@
 
 #define USE_STACKCHECK
 
-/* Define if on Macintosh (THINK_C, MPW or __MWERKS__ should also be defined) */
+/* Define if on Macintosh (MPW or __MWERKS__ should also be defined) */
 #ifndef macintosh
 #define macintosh
 #endif
 
-/* Define if you have the fopenRF function. */
-#ifdef THINK_C
-#define HAVE_FOPENRF
-#endif
-
 /* Define to case-check imported modules (why is this here?) */
 #define CHECK_IMPORT_CASE
 
diff --git a/Mac/Include/macbuildno.h b/Mac/Include/macbuildno.h
index e97aa4b..f84c3c6 100644
--- a/Mac/Include/macbuildno.h
+++ b/Mac/Include/macbuildno.h
@@ -1 +1 @@
-#define BUILD 43
+#define BUILD 54
diff --git a/Mac/Include/macdefs.h b/Mac/Include/macdefs.h
index 0a4a6f7..9cc3ae1 100644
--- a/Mac/Include/macdefs.h
+++ b/Mac/Include/macdefs.h
@@ -7,10 +7,6 @@
 #include <Files.h>
 #include <OSUtils.h>
 
-#ifdef THINK_C
-#include <pascal.h>
-#endif
-
 #include <errno.h>
 #include <string.h>
 #ifdef __MWERKS__
diff --git a/Mac/Modules/ctl/Ctlmodule.c b/Mac/Modules/ctl/Ctlmodule.c
index 37f8c5a..20e09cc 100644
--- a/Mac/Modules/ctl/Ctlmodule.c
+++ b/Mac/Modules/ctl/Ctlmodule.c
@@ -57,10 +57,6 @@
 extern PyObject *QdRGB_New(RGBColorPtr);
 extern QdRGB_Convert(PyObject *, RGBColorPtr);
 
-#ifdef THINK_C
-#define  ControlActionUPP ProcPtr
-#endif
-
 /*
 ** Parse/generate ControlFontStyleRec records
 */
diff --git a/Mac/Modules/ctl/ctlsupport.py b/Mac/Modules/ctl/ctlsupport.py
index a8c2d64..912514a 100644
--- a/Mac/Modules/ctl/ctlsupport.py
+++ b/Mac/Modules/ctl/ctlsupport.py
@@ -57,10 +57,6 @@
 extern PyObject *QdRGB_New(RGBColorPtr);
 extern QdRGB_Convert(PyObject *, RGBColorPtr);
 
-#ifdef THINK_C
-#define  ControlActionUPP ProcPtr
-#endif
-
 /*
 ** Parse/generate ControlFontStyleRec records
 */
diff --git a/Mac/Python/macglue.c b/Mac/Python/macglue.c
index e79a64a..1f5ce0e 100644
--- a/Mac/Python/macglue.c
+++ b/Mac/Python/macglue.c
@@ -61,9 +61,6 @@
 #include <Fonts.h>
 #include <Menus.h>
 #include <TextUtils.h>
-#ifdef THINK_C
-#include <OSEvents.h> /* For EvQElPtr */
-#endif
 #ifdef __MWERKS__
 #include <SIOUX.h>
 #endif
diff --git a/Mac/Python/macmain.c b/Mac/Python/macmain.c
index 90d0093..e773fd7 100644
--- a/Mac/Python/macmain.c
+++ b/Mac/Python/macmain.c
@@ -50,10 +50,6 @@
 #endif
 #include <unistd.h>
 
-#ifdef THINK_C
-#include <console.h>
-#endif
-
 #define STARTUP "PythonStartup"
 
 extern int Py_DebugFlag; /* For parser.c, declared in pythonrun.c */
@@ -89,9 +85,6 @@
 static void
 init_mac_world()
 {
-#ifdef THINK_C
-	printf("\n");
-#else
 #ifndef TARGET_API_MAC_CARBON
 	/* These aren't needed for carbon */
 	MaxApplZone();
@@ -104,7 +97,6 @@
 #endif
 	InitCursor();
 	init_appearance();
-#endif
 }
 
 /*
@@ -541,9 +533,6 @@
 	else
 		SIOUXSettings.autocloseonquit = 1;
 #endif /* USE_SIOUX */
-#ifdef THINK_C
-	console_options.pause_atexit = keep;
-#endif
 
 	exit(status);
 }
diff --git a/Mac/think/fopenRF.c b/Mac/think/fopenRF.c
deleted file mode 100644
index 04f192e..0000000
--- a/Mac/think/fopenRF.c
+++ /dev/null
@@ -1,336 +0,0 @@
-
-/*
- *  fopen.c
- *
- *  Copyright (c) 1991 Symantec Corporation.  All rights reserved.
- *
- */
-
-#include <MacHeaders>
-
-#include "stdio.h"
-#include "errno.h"
-#include "string.h"
-#include "ansi_private.h"
-
-extern long _ftype, _fcreator;
-
-#define fcbVPtr(fcb)		(* (VCB **) (fcb + 20))
-#define fcbDirID(fcb)		(* (long *) (fcb + 58))
-#define fcbCName(fcb)		(fcb + 62)
-
-static void setfiletype(StringPtr, int);
-static void stdio_exit(void);
-static int fileio(FILE *, int);
-static int close(FILE *);
-static void replace(unsigned char *, size_t, int, int);
-
-FILE *freopenRF();
-FILE *__openRF();
-
-FILE *
-fopenRF(const char *filename, const char *mode)
-{
-	return(freopenRF(filename, mode, __getfile()));
-}
-
-
-FILE *
-freopenRF(const char *filename, const char *mode, FILE *fp)
-{
-	int omode, oflag;
-	
-		/*  interpret "rwa"  */
-	
-	if (mode[0] == 'r') {
-		omode = fsRdPerm;
-		oflag = 0;
-	}
-	else if (mode[0] == 'w') {
-		omode = fsWrPerm;
-		oflag = F_CREAT+F_TRUNC;
-	}
-	else if (mode[0] == 'a') {
-		omode = fsWrPerm;
-		oflag = F_CREAT+F_APPEND;
-	}
-	else {
-		errno = EINVAL;
-		return(NULL);
-	}
-		
-		/*  interpret "b+"  */
-		
-	if (mode[1] == 'b') {
-		oflag |= F_BINARY;
-		if (mode[2] == '+')
-			omode = fsRdWrPerm;
-	}
-	else if (mode[1] == '+') {
-		omode = fsRdWrPerm;
-		if (mode[2] == 'b')
-			oflag |= F_BINARY;
-	}
-	
-		/*  open the file  */
-		
-	return(__openRF(filename, omode, oflag, fp));
-}
-
-
-FILE *
-__openRF(const char *filename, int omode, int oflag, FILE *fp)
-{
-	IOParam pb;
-	char pname[FILENAME_MAX];
-
-	if (fp == NULL)
-		return(NULL);
-	fclose(fp);
-	
-		/*  set up pb  */
-	
-	pb.ioNamePtr = __c2p(filename, pname);
-	pb.ioVRefNum = 0;
-	pb.ioVersNum = 0;
-	pb.ioPermssn = omode;
-	pb.ioMisc = 0;
-
-		/*  create file  */
-
-	if (oflag & F_CREAT) {
-		PBCreateSync((ParmBlkPtr)&pb);
-		if (pb.ioResult == noErr)
-			oflag &= ~F_TRUNC;
-		else if (pb.ioResult == dupFNErr && !(oflag & F_EXCL))
-			oflag &= ~F_CREAT;
-		else {
-			errno = pb.ioResult;
-			return(NULL);
-		}
-	}
-	
-		/*  open file  */
-		
-	PBOpenRFSync((ParmBlkPtr)&pb);
-	if (pb.ioResult) {
-		errno = pb.ioResult;
-		if (oflag & F_CREAT)
-			PBDeleteSync((ParmBlkPtr)&pb);
-		return(NULL);
-	}
-	fp->refnum = pb.ioRefNum;
-	
-		/*  get/set file length  */
-		
-	if (oflag & F_TRUNC)
-		PBSetEOFSync((ParmBlkPtr)&pb);
-	else if (!(oflag & F_CREAT))
-		PBGetEOFSync((ParmBlkPtr)&pb);
-	fp->len = (fpos_t) pb.ioMisc;
-		
-		/*  initialize rest of FILE structure  */
-		
-	if (oflag & F_APPEND) {
-		fp->append = 1;
-		fp->pos = fp->len;
-	}
-	if (oflag & F_BINARY)
-		fp->binary = 1;
-	setvbuf(fp, NULL, _IOFBF, BUFSIZ);
-	fp->proc = fileio;
-
-		/*  set file type  */
-
-	if (oflag & (F_CREAT|F_TRUNC))
-		setfiletype(pb.ioNamePtr, oflag);
-		
-		/*  done  */
-		
-	__atexit_stdio(stdio_exit);
-	return(fp);
-}
-
-
-/*
- *  setfiletype - set type/creator of new file
- *
- */
-
-static void
-setfiletype(StringPtr name, int oflag)
-{
-	FileParam pb;
-	
-	pb.ioNamePtr = name;
-	pb.ioVRefNum = 0;
-	pb.ioFVersNum = 0;
-	pb.ioFDirIndex = 0;
-	if (PBGetFInfoSync((ParmBlkPtr)&pb) == noErr) {
-		if (oflag & F_BINARY)
-			pb.ioFlFndrInfo.fdType = _ftype;
-		else
-			pb.ioFlFndrInfo.fdType = 'TEXT';
-		pb.ioFlFndrInfo.fdCreator = _fcreator;
-		PBSetFInfoSync((ParmBlkPtr)&pb);
-	}
-}
-
-
-/*
- *  stdio_exit - stdio shutdown routine
- *
- */
-
-static void
-stdio_exit(void)
-{
-	register FILE *fp;
-	int n;
-	
-	for (fp = &__file[0], n = FOPEN_MAX; n--; fp++)
-		fclose(fp);
-}
-
-
-/*
- *  fileio - I/O handler proc for files and devices
- *
- */
-
-static int
-fileio(FILE *fp, int i)
-{
-	IOParam pb;
-	
-	pb.ioRefNum = fp->refnum;
-	switch (i) {
-	
-				/*  read  */
-			
-		case 0:
-			pb.ioBuffer = (Ptr) fp->ptr;
-			pb.ioReqCount = fp->cnt;
-			pb.ioPosMode = fp->refnum > 0 ? fsFromStart : fsAtMark;
-			pb.ioPosOffset = fp->pos - fp->cnt;
-			PBReadSync((ParmBlkPtr)&pb);
-			if (pb.ioResult == eofErr) {
-				fp->pos = pb.ioPosOffset;
-				if (fp->cnt = pb.ioActCount)
-					pb.ioResult = 0;
-				else {
-					fp->eof = 1;
-					return(EOF);
-				}
-			}
-			if (!pb.ioResult && !fp->binary)
-				replace(fp->ptr, fp->cnt, '\r', '\n');
-			break;
-			
-				/*  write  */
-
-		case 1:
-			pb.ioBuffer = (Ptr) fp->ptr;
-			pb.ioReqCount = fp->cnt;
-			pb.ioPosMode = fp->refnum > 0 ? fsFromStart : fsAtMark;
-			if ((pb.ioPosOffset = fp->pos - fp->cnt) > fp->len) {
-				pb.ioMisc = (Ptr) pb.ioPosOffset;
-				if (PBSetEOFSync((ParmBlkPtr)&pb) != noErr)
-					break;
-			}
-			if (!fp->binary)
-				replace(fp->ptr, fp->cnt, '\n', '\r');
-			PBWriteSync((ParmBlkPtr)&pb);
-			if (!pb.ioResult && pb.ioPosOffset > fp->len)
-				fp->len = pb.ioPosOffset;
-			break;
-			
-				/*  close  */
-
-		case 2:
-			pb.ioResult = close(fp);
-			break;
-	}
-	
-		/*  done  */
-		
-	if (pb.ioResult) {
-		if (i < 2) {
-			fp->pos -= fp->cnt;
-			fp->cnt = 0;
-		}
-		fp->err = 1;
-		errno = pb.ioResult;
-		return(EOF);
-	}
-	return(0);
-}
-
-
-static int
-close(FILE *fp)
-{
-	HFileParam pb;
-	Str255 buf;
-	register char *fcb = FCBSPtr + fp->refnum;
-	VCB *vcb = fcbVPtr(fcb);
-	register char *s;
-	enum { none, MFS, HFS } del = none;
-	
-	pb.ioVRefNum = vcb->vcbVRefNum;
-	if (fp->remove) {
-		pb.ioNamePtr = buf;
-		pb.ioFVersNum = 0;
-	
-			/*  close temporary file - HFS  */
-			
-		if (vcb->vcbSigWord == 0x4244) {
-			pb.ioDirID = fcbDirID(fcb);
-			s = fcbCName(fcb);
-			memcpy(buf, s, Length(s) + 1);
-			del = HFS;
-		}
-		
-			/*  close temporary file - MFS  */
-			
-		else if (vcb->vcbSigWord == 0xD2D7) {
-			for (pb.ioFDirIndex = 1; PBGetFInfoSync((ParmBlkPtr)&pb) == noErr; pb.ioFDirIndex++) {
-				if (pb.ioFRefNum == fp->refnum) {
-					del = MFS;
-					break;
-				}
-			}
-		}
-	}
-	
-		/*  close file and flush volume buffer  */
-	
-	pb.ioFRefNum = fp->refnum;
-	if (PBCloseSync((ParmBlkPtr)&pb) == noErr) {
-		if (del == MFS)
-			PBDeleteSync((ParmBlkPtr)&pb);
-		else if (del == HFS)
-			PBHDeleteSync((HParmBlkPtr)&pb);
-		pb.ioNamePtr = 0;
-		PBFlushVolSync((ParmBlkPtr)&pb);
-	}
-	return(pb.ioResult);
-}
-
-
-/*
- *  replace - routine for doing CR/LF conversion
- *
- */
-
-static void
-replace(register unsigned char *s, register size_t n, register int c1, register int c2)
-{
-#pragma options(honor_register)
-	register unsigned char *t;
-	
-	for (; n && (t = memchr(s, c1, n)); s = t) {
-		*t++ = c2;
-		n -= t - s;
-	}
-}
diff --git a/Mac/think/macconsole/macconsole.c b/Mac/think/macconsole/macconsole.c
deleted file mode 100644
index 44530b5..0000000
--- a/Mac/think/macconsole/macconsole.c
+++ /dev/null
@@ -1,437 +0,0 @@
-/***********************************************************
-Copyright 1991, 1992, 1993, 1994 by Stichting Mathematisch Centrum,
-Amsterdam, The Netherlands.
-
-                        All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its 
-documentation for any purpose and without fee is hereby granted, 
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in 
-supporting documentation, and that the names of Stichting Mathematisch
-Centrum or CWI not be used in advertising or publicity pertaining to
-distribution of the software without specific, written prior permission.
-
-STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
-THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
-FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
-WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
-ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
-OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-******************************************************************/
-
-/* 
-** Written by Jack Jansen, October 1994, initially only to allow him to
-** test the ctb module:-)
-*/
-
-#include "allobjects.h"
-#include "modsupport.h"		/* For getargs() etc. */
-#include "structmember.h"
-
-#include <console.h>
-
-static object *ErrorObject;
-
-#define OFF(x) offsetof(struct __copt, x)
-
-static struct memberlist copt_memberlist[] = {
-	{"top", T_SHORT, OFF(top)},
-	{"left", T_SHORT, OFF(left)},
-	{"title", T_PSTRING, OFF(title)},
-	{"procID", T_SHORT, OFF(procID), RO},
-	{"txFont", T_SHORT, OFF(txFont)},
-	{"txSize", T_SHORT, OFF(txSize)},
-	{"txFace", T_SHORT, OFF(txFace)},
-	{"nrows", T_SHORT, OFF(nrows)},
-	{"ncols", T_SHORT, OFF(ncols)},
-	{"pause_atexit", T_SHORT, OFF(pause_atexit)},
-	{NULL}
-};
-
-static unsigned char mytitle[256];
-typedef struct {
-	OB_HEAD
-} coptobject;
-
-staticforward typeobject Xxotype;
-
-#define is_coptobject(v)		((v)->ob_type == &Xxotype)
-
-static coptobject *
-newcoptobject()
-{
-	coptobject *self;
-	self = NEWOBJ(coptobject, &Xxotype);
-	return self;
-}
-
-/* Xxo methods */
-
-static void
-copt_dealloc(self)
-	coptobject *self;
-{
-	DEL(self);
-}
-
-static object *
-copt_getattr(self, name)
-	coptobject *self;
-	char *name;
-{
-	return getmember((char *)&console_options, copt_memberlist, name);
-}
-
-static int
-copt_setattr(self, name, v)
-	coptobject *self;
-	char *name;
-	object *v;
-{
-	char *str;
-	int len;
-	
-	if ( strcmp(name, "title") == 0 ) {
-		if ( !v || !is_stringobject(v)) {
-			err_setstr(ErrorObject, "title must be a string");
-			return -1;
-		}
-		str = getstringvalue(v);
-		len = strlen(str);
-		mytitle[0] = (unsigned char)len;
-		strncpy((char *)mytitle+1, str, mytitle[0]);
-		console_options.title = mytitle;
-		return 0;
-	}
-	return setmember((char *)&console_options, copt_memberlist, name, v);
-}
-
-static typeobject Xxotype = {
-	OB_HEAD_INIT(&Typetype)
-	0,			/*ob_size*/
-	"console options",			/*tp_name*/
-	sizeof(coptobject),	/*tp_basicsize*/
-	0,			/*tp_itemsize*/
-	/* methods */
-	(destructor)copt_dealloc, /*tp_dealloc*/
-	0,			/*tp_print*/
-	(getattrfunc)copt_getattr, /*tp_getattr*/
-	(setattrfunc)copt_setattr, /*tp_setattr*/
-	0,			/*tp_compare*/
-	0,			/*tp_repr*/
-	0,			/*tp_as_number*/
-	0,			/*tp_as_sequence*/
-	0,			/*tp_as_mapping*/
-	0,			/*tp_hash*/
-};
-
-/* ------------------------------------------- */
-
-typedef struct {
-	OB_HEAD
-	FILE *fp;
-	object *file;
-} cons_object;
-
-staticforward typeobject constype;
-
-#define is_cons_object(v)		((v)->ob_type == &constype)
-
-static cons_object *
-newcons_object(fp, file)
-	FILE *fp;
-	object *file;
-{
-	cons_object *self;
-	self = NEWOBJ(cons_object, &constype);
-	if (self == NULL)
-		return NULL;
-	self->fp = fp;
-	self->file = file;
-	return self;
-}
-
-/* cons methods */
-
-static void
-cons_dealloc(self)
-	cons_object *self;
-{
-	DECREF(self->file);
-	DEL(self);
-}
-
-static object *
-cons_setmode(self, args)
-	cons_object *self;
-	object *args;
-{
-	int mode;
-	
-	if (!getargs(args, "i", &mode))
-		return NULL;
-	csetmode(mode, self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_cleos(self, args)
-	cons_object *self;
-	object *args;
-{
-	if (!getnoarg(args))
-		return NULL;
-	ccleos(self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_cleol(self, args)
-	cons_object *self;
-	object *args;
-{
-	if (!getnoarg(args))
-		return NULL;
-	ccleol(self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_show(self, args)
-	cons_object *self;
-	object *args;
-{
-	if (!getnoarg(args))
-		return NULL;
-	cshow(self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_hide(self, args)
-	cons_object *self;
-	object *args;
-{
-	if (!getnoarg(args))
-		return NULL;
-	chide(self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_echo2printer(self, args)
-	cons_object *self;
-	object *args;
-{
-	if (!getnoarg(args))
-		return NULL;
-	cecho2printer(self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_gotoxy(self, args)
-	cons_object *self;
-	object *args;
-{
-	int x, y;
-	
-	if (!getargs(args, "(ii)", &x, &y))
-		return NULL;
-	cgotoxy(x, y, self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_getxy(self, args)
-	cons_object *self;
-	object *args;
-{
-	int x, y;
-	
-	if (!getnoarg(args))
-		return NULL;
-	cgetxy(&x, &y, self->fp);
-	return mkvalue("(ii)", x, y);
-}
-
-static object *
-cons_settabs(self, args)
-	cons_object *self;
-	object *args;
-{
-	int arg;
-	
-	if (!getargs(args, "i", &arg))
-		return NULL;
-	csettabs(arg, self->fp);
-	INCREF(None);
-	return None;
-}
-
-static object *
-cons_inverse(self, args)
-	cons_object *self;
-	object *args;
-{
-	int arg;
-	
-	if (!getargs(args, "i", &arg))
-		return NULL;
-	cinverse(arg, self->fp);
-	INCREF(None);
-	return None;
-}
-
-static struct methodlist cons_methods[] = {
-	{"setmode",	(method)cons_setmode},
-	{"gotoxy", 	(method)cons_gotoxy},
-	{"getxy",	(method)cons_getxy},
-	{"cleos",	(method)cons_cleos},
-	{"cleol",	(method)cons_cleol},
-	{"settabs",	(method)cons_settabs},
-	{"inverse",	(method)cons_inverse},
-	{"show",	(method)cons_show},
-	{"hide",	(method)cons_hide},
-	{"echo2printer",	(method)cons_echo2printer},
-	{NULL,		NULL}		/* sentinel */
-};
-
-static object *
-cons_getattr(self, name)
-	cons_object *self;
-	char *name;
-{
-	if ( strcmp(name, "file") == 0 ) {
-		INCREF(self->file);
-		return self->file;
-	}
-	return findmethod(cons_methods, (object *)self, name);
-}
-
-static typeobject constype = {
-	OB_HEAD_INIT(&Typetype)
-	0,			/*ob_size*/
-	"cons",			/*tp_name*/
-	sizeof(cons_object),	/*tp_basicsize*/
-	0,			/*tp_itemsize*/
-	/* methods */
-	(destructor)cons_dealloc, /*tp_dealloc*/
-	0,			/*tp_print*/
-	(getattrfunc)cons_getattr,			/*tp_getattr*/
-	0,			/*tp_setattr*/
-	0,			/*tp_compare*/
-	0,			/*tp_repr*/
-	0,			/*tp_as_number*/
-	0,			/*tp_as_sequence*/
-	0,			/*tp_as_mapping*/
-	0,			/*tp_hash*/
-};
-/* --------------------------------------------------------------------- */
-
-/* Return a new console */
-
-static object *
-maccons_copen(self, args)
-	object *self; /* Not used */
-	object *args;
-{
-	FILE *fp;
-	object *file;
-	cons_object *rv;
-	char *name;
-	unsigned char nbuf[256];
-	int len;
-	
-	name = NULL;
-	if (!getnoarg(args))
-		return NULL;
-	if ( (fp=fopenc()) == NULL ) {
-		err_errno(ErrorObject);
-		return NULL;
-	}
-	if ( (file=newopenfileobject(fp, "<a console>", "r+", fclose)) == NULL)
-		return NULL;
-	rv = newcons_object(fp, file);
-	if ( rv == NULL ) {
-		fclose(fp);
-	    return NULL;
-	}
-	return (object *)rv;
-}
-
-/* Return an open file as a console */
-
-static object *
-maccons_fopen(self, args)
-	object *self; /* Not used */
-	object *args;
-{
-	cons_object *rv;
-	object *file;
-	FILE *fp;
-	
-	if (!newgetargs(args, "O", &file))
-		return NULL;
-	if ( !is_fileobject(file) ) {
-		err_badarg();
-		return NULL;
-	}
-	fp = getfilefile(file);
-	if ( !isatty(fileno(fp)) ) {
-		err_setstr(ErrorObject, "File is not a console");
-		return NULL;
-	}
-	rv = newcons_object(fp, file);
-	if ( rv == NULL ) {
-	    return NULL;
-	}
-	INCREF(file);
-	return (object *)rv;
-}
-
-/* List of functions defined in the module */
-
-static struct methodlist maccons_methods[] = {
-	{"fopen",		(method)maccons_fopen, 1},
-	{"copen",		(method)maccons_copen, 0},
-	{NULL,		NULL}		/* sentinel */
-};
-
-
-/* Initialization function for the module (*must* be called initmacconsole) */
-
-void
-initmacconsole()
-{
-	object *m, *d, *o;
-
-	/* Create the module and add the functions */
-	m = initmodule("macconsole", maccons_methods);
-
-	/* Add some symbolic constants to the module */
-#define INTATTR(name, value) o = newintobject(value); dictinsert(d, name, o);
-	d = getmoduledict(m);
-	ErrorObject = newstringobject("macconsole.error");
-	dictinsert(d, "error", ErrorObject);
-	o = (object *)newcoptobject();
-	dictinsert(d, "options", o);
-	INTATTR("C_RAW", C_RAW);
-	INTATTR("C_CBREAK", C_CBREAK);
-	INTATTR("C_ECHO", C_ECHO);
-	INTATTR("C_NOECHO", C_NOECHO);
-
-	/* Check for errors */
-	if (err_occurred())
-		fatal("can't initialize module macconsole");
-}