summaryrefslogtreecommitdiffstats
path: root/Mac/Unsupported/GUSI1-mods/GUSI_P.h
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Unsupported/GUSI1-mods/GUSI_P.h')
-rw-r--r--Mac/Unsupported/GUSI1-mods/GUSI_P.h474
1 files changed, 0 insertions, 474 deletions
diff --git a/Mac/Unsupported/GUSI1-mods/GUSI_P.h b/Mac/Unsupported/GUSI1-mods/GUSI_P.h
deleted file mode 100644
index 66ee3a7..0000000
--- a/Mac/Unsupported/GUSI1-mods/GUSI_P.h
+++ /dev/null
@@ -1,474 +0,0 @@
-/*********************************************************************
-Project : GUSI - Grand Unified Socket Interface
-File : GUSI_P.h - Private stuff
-Author : Matthias Neeracher
-Language : MPW C/C++
-
-$Log$
-Revision 1.1 2000/09/12 20:24:46 jack
-Moved to Unsupported.
-
-Revision 1.1 1998/08/18 14:52:33 jack
-Putting Python-specific GUSI modifications under CVS.
-
-Revision 1.3 1994/12/31 01:30:26 neeri
-Reorganize filename dispatching.
-
-Revision 1.2 1994/08/10 00:41:05 neeri
-Sanitized for universal headers.
-
-Revision 1.1 1994/02/25 02:57:01 neeri
-Initial revision
-
-Revision 0.22 1993/07/17 00:00:00 neeri
-GUSIRingBuffer::proc -> defproc
-
-Revision 0.21 1993/07/17 00:00:00 neeri
-GUSIO_MAX_DOMAIN -> AF_MAX
-
-Revision 0.20 1993/06/27 00:00:00 neeri
-Socket::{pre,post}_select
-
-Revision 0.19 1993/06/27 00:00:00 neeri
-Socket::ftruncate
-
-Revision 0.18 1993/02/09 00:00:00 neeri
-Socket::lurking, Socket::lurkdescr
-
-Revision 0.17 1993/01/31 00:00:00 neeri
-GUSIConfiguration::daemon
-
-Revision 0.16 1993/01/17 00:00:00 neeri
-Destructors for Socketdomain
-
-Revision 0.15 1993/01/17 00:00:00 neeri
-SAFESPIN
-
-Revision 0.14 1993/01/03 00:00:00 neeri
-GUSIConfig
-
-Revision 0.13 1992/09/24 00:00:00 neeri
-Include GUSIRsrc_P.h
-
-Revision 0.12 1992/09/13 00:00:00 neeri
-SPINVOID didn't return
-
-Revision 0.11 1992/08/30 00:00:00 neeri
-AppleTalkIdentity()
-
-Revision 0.10 1992/08/03 00:00:00 neeri
-RingBuffer
-
-Revision 0.9 1992/07/30 00:00:00 neeri
-Initializer Features
-
-Revision 0.8 1992/07/26 00:00:00 neeri
-UnixSockets.choose()
-
-Revision 0.7 1992/07/13 00:00:00 neeri
-Make AppleTalkSockets global
-
-Revision 0.6 1992/06/27 00:00:00 neeri
-choose(), hasNewSF
-
-Revision 0.5 1992/06/07 00:00:00 neeri
-Feature
-
-Revision 0.4 1992/05/21 00:00:00 neeri
-Implemented select()
-
-Revision 0.3 1992/04/19 00:00:00 neeri
-C++ rewrite
-
-Revision 0.2 1992/04/18 00:00:00 neeri
-changed read/write/send/recv dispatchers
-
-Revision 0.1 1992/04/18 00:00:00 neeri
-ppc Domain
-
-*********************************************************************/
-
-#ifndef __GUSI_P__
-#define __GUSI_P__
-
-#define __useAppleExts__
-
-#include <GUSI.h>
-#include <GUSIRsrc_P.h>
-#include <TFileSpec.h>
-
-
-#include <sys/errno.h>
-#include <sys/uio.h>
-#include <sys/socket.h>
-
-extern "C" {
-
-#include <stdio.h>
-#include <string.h>
-
-int GUSI_error(int err);
-void * GUSI_error_nil(int err);
-}
-
-#include <Memory.h>
-#include <Gestalt.h>
-#include <Traps.h>
-#include <AppleEvents.h>
-#include <Processes.h>
-#include <MixedMode.h>
-
-#if MSLGUSI
-using namespace std;
-#endif
-
-#if GENERATING68K
-#pragma segment GUSI
-#endif
-
-#define GUSI_MAX_DOMAIN AF_MAX
-#define DEFAULT_BUFFER_SIZE 4096
-
-/*
- * In use and shutdown status.
- */
-#define SOCK_STATUS_USED 0x1 /* Used socket table entry */
-#define SOCK_STATUS_NOREAD 0x2 /* No more reading allowed from socket */
-#define SOCK_STATUS_NOWRITE 0x4 /* No more writing allowed to socket */
-
-/*
- * Socket connection states.
- */
-#define SOCK_STATE_NO_STREAM 0 /* Socket doesn't have a MacTCP stream yet */
-#define SOCK_STATE_UNCONNECTED 1 /* Socket is unconnected. */
-#define SOCK_STATE_LISTENING 2 /* Socket is listening for connection. */
-#define SOCK_STATE_LIS_CON 3 /* Socket is in transition from listen to connected. */
-#define SOCK_STATE_CONNECTING 4 /* Socket is initiating a connection. */
-#define SOCK_STATE_CONNECTED 5 /* Socket is connected. */
-#define SOCK_STATE_CLOSING 6 /* Socket is closing */
-#define SOCK_STATE_LIS_CLOSE 7 /* Socket closed while listening */
-
-#define min(a,b) ( (a) < (b) ? (a) : (b))
-#define max(a,b) ( (a) > (b) ? (a) : (b))
-
-extern GUSISpinFn GUSISpin;
-extern "C" int GUSIDefaultSpin(spin_msg, long);
-extern int GUSICheckAlarm();
-
-#define GUSI_INTERRUPT(mesg,param) (GUSICheckAlarm() || (GUSISpin && (*GUSISpin)(mesg,param)))
-
-/* SPIN returns a -1 on user cancel for fn returning integers */
-#define SPIN(cond,mesg,param) \
- do { \
- if (GUSI_INTERRUPT(mesg,param)) \
- return GUSI_error(EINTR); \
- } while(cond)
-
-/* SPINP returns a NULL on user cancel, for fn returning pointers */
-#define SPINP(cond,mesg,param) \
- do { \
- if (GUSI_INTERRUPT(mesg,param)) { \
- GUSI_error(EINTR); \
- return NULL; \
- } \
- } while(cond)
-
-/* SPINVOID just returns on user cancel, for fn returning void */
-#define SPINVOID(cond,mesg,param) \
- do { \
- if (GUSI_INTERRUPT(mesg,param)) { \
- GUSI_error(EINTR); \
- return; \
- } \
- } while(cond)
-
-/* SAFESPIN doesn't return, you have to check errno */
-#define SAFESPIN(cond,mesg,param) \
- do { \
- if (GUSI_INTERRUPT(mesg,param)) { \
- GUSI_error(EINTR); \
- break; \
- } else \
- errno = 0; \
- } while(cond)
-
-//
-// Library functions are never allowed to clear errno, so we have to save
-//
-class ErrnoSaver {
-public:
- ErrnoSaver() { fSavedErrno = ::errno; ::errno = 0; }
- ~ErrnoSaver() { if (!::errno) ::errno = fSavedErrno; }
-private:
- int fSavedErrno;
-};
-
-#define SAVE_AND_CLEAR_ERRNO ErrnoSaver saveErrno
-
-class SocketTable;
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=mac68k
-#endif
-
-class Socket {
- friend class SocketTable;
-
- short refCount;
-protected:
- Socket();
-public:
- virtual int bind(void * name, int namelen);
- virtual int connect(void * address, int addrlen);
- virtual int listen(int qlen);
- virtual Socket * accept(void * address, int * addrlen);
- virtual int read(void * buffer, int buflen);
- virtual int write(void * buffer, int buflen);
- virtual int recvfrom(void * buffer, int buflen, int flags, void * from, int * fromlen);
- virtual int sendto(void * buffer, int buflen, int flags, void * to, int tolen);
- virtual int getsockname(void * name, int * namelen);
- virtual int getpeername(void * name, int * namelen);
- virtual int getsockopt(int level, int optname, void *optval, int * optlen);
- virtual int setsockopt(int level, int optname, void *optval, int optlen);
- virtual int fcntl(unsigned int cmd, int arg);
- virtual int ioctl(unsigned int request, void *argp);
- virtual int fstat(struct stat * buf);
- virtual long lseek(long offset, int whence);
- virtual int ftruncate(long offset);
- virtual int isatty();
- virtual int shutdown(int how);
- virtual void pre_select(Boolean wantRead, Boolean wantWrite, Boolean wantExcept);
- virtual int select(Boolean * canRead, Boolean * canWrite, Boolean * exception);
- virtual void post_select(Boolean wantRead, Boolean wantWrite, Boolean wantExcept);
- virtual ~Socket();
-
- void operator++() { ++refCount; }
- void operator--() { if (!--refCount) delete this; }
-};
-
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=reset
-#endif
-
-class SocketDomain {
- static SocketDomain * domains[GUSI_MAX_DOMAIN];
- static ProcessSerialNumber process;
-protected:
- SocketDomain(int domain);
- virtual ~SocketDomain();
-public:
- inline static SocketDomain * Domain(int domain);
- static void Ready();
-
- // Optionally override the following
-
- virtual Socket * socket(int type, short protocol);
-
- // Optionally override the following
-
- virtual int socketpair(int type, short protocol, Socket * sockets[]);
-
- // Optionally define the following
-
- virtual int choose(
- int type,
- char * prompt,
- void * constraint,
- int flags,
- void * name,
- int * namelen);
-
- // Never override the following
-
- void DontStrip();
-};
-
-class SocketTable {
- Socket * sockets[GUSI_MAX_FD];
- Boolean needsConsole;
-public:
- SocketTable();
- ~SocketTable();
-
- void InitConsole();
- int Install(Socket * sock, int start = 0);
- int Remove(int fd);
- Socket * operator[](int fd);
-};
-
-struct GUSISuffix {
- char suffix[4];
- OSType suffType;
- OSType suffCreator;
-};
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=mac68k
-#endif
-
-//
-// I learned the hard way not to rely on bit field alignments
-//
-
-struct GUSIConfigRsrc {
- OSType defaultType;
- OSType defaultCreator;
-
- char autoSpin;
- unsigned char flags;
-
- OSType version;
- short numSuffices;
- GUSISuffix suffices[1];
-};
-
-#if PRAGMA_ALIGN_SUPPORTED
-#pragma options align=reset
-#endif
-
-struct GUSIConfiguration {
- OSType defaultType;
- OSType defaultCreator;
-
- char autoSpin;
-
- Boolean noChdir; // Set current directory without chdir()
- Boolean accurStat; // Return # of subdirectories + 2 in st_nlink
- Boolean hasConsole; // Do we have our own console ?
- Boolean noAutoInitGraf; // Never automatically do InitGraf
- Boolean sharedOpen; // Open files with shared permissions
- Boolean sigPipe; // raise SIGPIPE on write to closed socket
- Boolean noAppleEvents; // Don't solicit AppleEvents for MPW tools
- Boolean delayConsole; // Do not open console until needed
-
- OSType version;
- short numSuffices;
- GUSISuffix * suffices;
-
- GUSIConfiguration();
- void GUSILoadConfiguration(Handle config);
-
- void SetDefaultFType(const TFileSpec & name) const;
- void DoAutoSpin() const;
- void AutoInitGraf() const { if (!noAutoInitGraf) DoAutoInitGraf(); }
- void DoAutoInitGraf() const;
- Boolean DelayConsole() const;
-private:
- static Boolean firstTime;
- static short we;
-};
-
-extern GUSIConfiguration GUSIConfig;
-extern SocketTable Sockets;
-
-typedef pascal OSErr (*OSErrInitializer)();
-typedef pascal void (*voidInitializer)();
-
-class Feature {
- Boolean good;
-public:
- Feature(unsigned short trapNum, TrapType tTyp);
- Feature(OSType type, long value);
- Feature(OSType type, long mask, long value);
- Feature(const Feature & precondition, OSErrInitializer init);
- Feature(OSErrInitializer init);
- Feature(const Feature & precondition, voidInitializer init);
- Feature(voidInitializer init);
- Feature(const Feature & cond1, const Feature & cond2);
-
- operator void*() const { return (void *) good; }
-};
-
-extern Feature hasMakeFSSpec;
-extern Feature hasAlias;
-extern Feature hasNewSF;
-extern Feature hasProcessMgr;
-extern Feature hasCRM;
-extern Feature hasCTB;
-extern Feature hasStdNBP;
-extern Feature hasCM;
-extern Feature hasFT;
-extern Feature hasTM;
-extern Feature hasPPC;
-extern Feature hasRevisedTimeMgr;
-
-class ScattGath {
- Handle scratch;
-protected:
- void * buf;
- int len;
- int count;
- const struct iovec * io;
-
- ScattGath(const struct iovec *iov, int cnt);
- virtual ~ScattGath();
-public:
- void * buffer() { return buf; }
- int buflen() { return len; }
- int length(int l) { return len = l; }
- operator void *() { return buf; }
-};
-
-class Scatterer : public ScattGath {
-public:
- Scatterer(const struct iovec *iov, int count);
- virtual ~Scatterer();
-};
-
-class Gatherer : public ScattGath {
-public:
- Gatherer(const struct iovec *iov, int count);
- virtual ~Gatherer();
-};
-
-typedef pascal void (*Deferred)(void *);
-
-class RingBuffer {
- // Valid bytes are between consume and produce
- // Free bytes are between produce and consume
- // bytes between endbuf-spare and endbuf are neither
- Ptr buffer;
- Ptr endbuf;
- Ptr consume;
- Ptr produce;
- u_short free;
- u_short valid;
- u_short spare;
- Boolean lock;
- Deferred defproc;
- void * arg;
-
-public:
- RingBuffer(u_short bufsiz);
- ~RingBuffer();
-
- Ptr Producer(long & len); // Find continuous memory for producer
- Ptr Consumer(long & len); // Find continuous memory for consumer
- void Validate(long len); // Validate this, unallocate rest
- void Invalidate(long len);
- void Produce(Ptr from, long & len);// Allocate, copy & validate
- void Consume(Ptr to, long & len); // Copy & invalidate
-
- long Free() { return free; }
- long Valid() { return valid; }
-
- void Defer() { lock = true; }
- void Undefer() { lock = false; if (defproc) defproc(arg);}
- Boolean Locked() { return lock; }
- void Later(Deferred def, void * ar){ defproc = def; arg = ar; }
-
- operator void *() { return buffer; }
-};
-
-Boolean GUSIInterrupt();
-
-Boolean CopyIconFamily(short srcResFile, short srcID, short dstResFile, short dstID);
-
-pascal OSErr PPCInit_P();
-
-OSErr AppleTalkIdentity(short & net, short & node);
-
-void CopyC2PStr(const char * cstr, StringPtr pstr);
-
-#endif