summaryrefslogtreecommitdiffstats
path: root/Mac/GUSI-mods/into-src/GUSISIOUX.cp
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/GUSI-mods/into-src/GUSISIOUX.cp')
-rw-r--r--Mac/GUSI-mods/into-src/GUSISIOUX.cp246
1 files changed, 0 insertions, 246 deletions
diff --git a/Mac/GUSI-mods/into-src/GUSISIOUX.cp b/Mac/GUSI-mods/into-src/GUSISIOUX.cp
deleted file mode 100644
index 24b98b0..0000000
--- a/Mac/GUSI-mods/into-src/GUSISIOUX.cp
+++ /dev/null
@@ -1,246 +0,0 @@
-/*********************************************************************
-Project : GUSI - Grand unified socket interface
-File : GUSISIOUX.cp - Interface to Metrowerks SIOUX library
-Author : Matthias Neeracher
-Language : MPW C/C++
-
-$Log$
-Revision 1.1 1998/08/18 14:52:38 jack
-Putting Python-specific GUSI modifications under CVS.
-
-*********************************************************************/
-
-#include <GUSIFile_P.h>
-#include <ioctl.h>
-#include <console.h>
-
-#include <Events.h>
-#include <LowMem.h>
-
-/************************ SIOUXSocket members ************************/
-
-/* This declaration lies about the return type */
-extern "C" void SIOUXHandleOneEvent(EventRecord *userevent);
-
-GUSIEvtHandler GUSISIOUXEvents[] = {
- SIOUXHandleOneEvent, // nullEvent
-
- SIOUXHandleOneEvent, // mouseDown
- SIOUXHandleOneEvent, // mouseUp
- nil, // keyDown
- nil,
-
- nil, // autoKey
- SIOUXHandleOneEvent, // updateEvt
- SIOUXHandleOneEvent, // diskEvt
- SIOUXHandleOneEvent, // activateEvt
-
- nil,
- nil,
- nil,
- nil,
-
- nil,
- nil,
- SIOUXHandleOneEvent, // osEvt
- nil,
-
- nil,
- nil,
- nil,
- nil,
-
- nil,
- nil,
- nil,
-};
-
-/************************ Declaration of SIOUXSocket ************************/
-
-class SIOUXSocket : public Socket {
- friend class SIOUXSocketDomain;
-
- SIOUXSocket();
-
- virtual ~SIOUXSocket();
-protected:
- int initialized;
- void DoInitialize(void);
-public:
- virtual int read(void * buffer, int buflen);
- virtual int write(void * buffer, int buflen);
- virtual int select(Boolean * canRead, Boolean * canWrite, Boolean * exception);
- virtual int ioctl(unsigned int request, void *argp);
- virtual int isatty();
-};
-
-class SIOUXSocketDomain : public FileSocketDomain {
- SIOUXSocket * singleton;
-public:
- SIOUXSocketDomain() : FileSocketDomain(AF_UNSPEC, true, false), singleton(nil) { }
-
- virtual Boolean Yours(const GUSIFileRef & ref, Request request);
- virtual Socket * open(const GUSIFileRef & ref, int oflag);
-};
-
-#if GENERATING68K
-#pragma segment SIOUX
-#endif
-
-/************************ SIOUXSocket members ************************/
-
-void SIOUXSocket::DoInitialize()
-{
- if ( initialized ) return;
- initialized++;
- InstallConsole(0);
- GUSISetEvents(GUSISIOUXEvents);
-}
-
-SIOUXSocket::SIOUXSocket()
-{
- initialized = 0;
- if ( !GUSIConfig.DelayConsole() )
- DoInitialize();
-}
-
-SIOUXSocket::~SIOUXSocket()
-{
- RemoveConsole();
-}
-
-int SIOUXSocket::ioctl(unsigned int request, void *)
-{
- if ( !initialized) DoInitialize();
- switch (request) {
- case FIOINTERACTIVE:
- return 0;
- default:
- return GUSI_error(EOPNOTSUPP);
- }
-}
-
-int SIOUXSocket::read(void * buffer, int buflen)
-{
- if ( !initialized) DoInitialize();
- fflush(stdout);
-
- return ReadCharsFromConsole((char *) buffer, buflen);
-}
-
-int SIOUXSocket::write(void * buffer, int buflen)
-{
- if ( !initialized) DoInitialize();
- return WriteCharsToConsole((char *) buffer, buflen);
-}
-
-static Boolean input_pending()
-{
- QHdrPtr eventQueue = LMGetEventQueue();
- EvQElPtr element = (EvQElPtr)eventQueue->qHead;
-
- // now, count the number of pending keyDown events.
- while (element != nil) {
- if (element->evtQWhat == keyDown || element->evtQWhat == autoKey)
- return true;
- element = (EvQElPtr)element->qLink;
- }
-
- return false;
-}
-
-int SIOUXSocket::select(Boolean * canRead, Boolean * canWrite, Boolean * exception)
-{
- int goodies = 0;
-
- if ( !initialized) DoInitialize();
- fflush(stdout);
-
- if (canRead)
- if (*canRead = input_pending())
- ++goodies;
-
- if (canWrite) {
- *canWrite = true;
- ++goodies;
- }
-
- if (exception)
- *exception = false;
-
- return goodies;
-}
-
-int SIOUXSocket::isatty()
-{
- return 1;
-}
-
-/********************* SIOUXSocketDomain members **********************/
-
-#ifdef MSLGUSI
-#ifndef SFIOGUSI
- extern void GUSISetupMSLSIOUX();
-#endif
-#endif
-
-extern "C" void GUSIwithSIOUXSockets()
-{
- static SIOUXSocketDomain SIOUXSockets;
- SIOUXSockets.DontStrip();
-#ifdef MSLGUSI
-#ifndef SFIOGUSI
- GUSISetupMSLSIOUX();
-#endif
-#endif
-}
-
-Boolean SIOUXSocketDomain::Yours(const GUSIFileRef & ref, FileSocketDomain::Request request)
-{
- if (ref.spec || (request != willOpen && request != willStat))
- return false;
-
- switch (ref.name[4] | 0x20) {
- case 's':
- if ((ref.name[5] | 0x20) != 't' || (ref.name[6] | 0x20) != 'd')
- return false;
- switch (ref.name[7] | 0x20) {
- case 'i':
- if ((ref.name[8] | 0x20) != 'n' || ref.name[9])
- return false;
- return true;
- case 'o':
- if ((ref.name[8] | 0x20) != 'u' || (ref.name[9] | 0x20) != 't' || ref.name[10])
- return false;
- return true;
- case 'e':
- if ((ref.name[8] | 0x20) != 'r' || (ref.name[9] | 0x20) != 'r' || ref.name[10])
- return false;
- return true;
- default:
- return false;
- }
- case 'c':
- if ( (ref.name[5] | 0x20) != 'o' || (ref.name[6] | 0x20) != 'n'
- || (ref.name[7] | 0x20) != 's' || (ref.name[8] | 0x20) != 'o'
- || (ref.name[9] | 0x20) != 'l' || (ref.name[10] | 0x20) != 'e')
- return false;
- switch (ref.name[11]) {
- case 0:
- return true;
- default:
- return false;
- }
- default:
- return false;
- }
-}
-
-Socket * SIOUXSocketDomain::open(const GUSIFileRef &, int)
-{
- if (!singleton)
- singleton = new SIOUXSocket();
- ++*singleton;
-
- return singleton;
-}