annotate Mac/Modules/ctbmodule.c @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 75aa5246b2f6
children 44bdf0b56c0b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2026
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
1 /***********************************************************
2416
75aa5246b2f6 ported to MPW/SC
Guido van Rossum <guido@python.org>
parents: 2026
diff changeset
2 Copyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
75aa5246b2f6 ported to MPW/SC
Guido van Rossum <guido@python.org>
parents: 2026
diff changeset
3 The Netherlands.
2026
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
4
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
5 All Rights Reserved
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
6
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
7 Permission to use, copy, modify, and distribute this software and its
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
8 documentation for any purpose and without fee is hereby granted,
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
9 provided that the above copyright notice appear in all copies and that
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
10 both that copyright notice and this permission notice appear in
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
11 supporting documentation, and that the names of Stichting Mathematisch
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
12 Centrum or CWI not be used in advertising or publicity pertaining to
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
13 distribution of the software without specific, written prior permission.
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
14
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
15 STICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
16 THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
17 FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
18 FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
19 WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
20 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
21 OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
22
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
23 ******************************************************************/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
24
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
25 /* Note: This file is partially converted to the new naming standard */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
26 /* ctbcm objects */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
27
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
28
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
29 #include "allobjects.h"
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
30
2416
75aa5246b2f6 ported to MPW/SC
Guido van Rossum <guido@python.org>
parents: 2026
diff changeset
31 #include "macglue.h"
75aa5246b2f6 ported to MPW/SC
Guido van Rossum <guido@python.org>
parents: 2026
diff changeset
32
2026
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33 #include <CommResources.h>
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
34 #include <Connections.h>
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
35 #include <ToolUtils.h>
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 #include <OSUtils.h>
2416
75aa5246b2f6 ported to MPW/SC
Guido van Rossum <guido@python.org>
parents: 2026
diff changeset
37
75aa5246b2f6 ported to MPW/SC
Guido van Rossum <guido@python.org>
parents: 2026
diff changeset
38 #ifndef HAVE_UNIVERSAL_HEADERS
2026
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
39 #define ConnectionCompletionUPP ProcPtr
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40 #define ConnectionChooseIdleUPP ProcPtr
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
41 #define NewConnectionCompletionProc(x) (x)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
42 #define NewConnectionChooseIdleProc(x) (x)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
43 #endif
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
44
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
45 #define _UnimplementedToolTrap 0xA89F
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
46 #define _CommToolboxTrap 0x8B
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 #define _UnimplementedOSTrap 0x9F
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
48
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
49 extern object *PyErr_Mac(object *,int);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51 static object *ErrorObject;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
52
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53 typedef struct {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54 OB_HEAD
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 ConnHandle hdl; /* The handle to the connection */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 object *callback; /* Python callback routine */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
57 int has_callback; /* True if callback not None */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58 int err; /* Error to pass to the callback */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59 } ctbcmobject;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61 staticforward typeobject ctbcmtype;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
62
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63 #define is_ctbcmobject(v) ((v)->ob_type == &ctbcmtype)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
64
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
65 static
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
66 TrapAvailable(short tNumber, TrapType tType)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
67 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
68 short unImplemented;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
69
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
70 if (tType == OSTrap)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
71 unImplemented = _UnimplementedOSTrap;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
72 else
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
73 unImplemented = _UnimplementedToolTrap;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
74
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
75 return NGetTrapAddress(tNumber, tType) != NGetTrapAddress(unImplemented, tType);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
76 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
77
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
78 static
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
79 initialize_ctb()
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
80 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
81 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
82 static initialized = -1;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
83
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
84 if ( initialized >= 0 )
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
85 return initialized;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
86 initialized = 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
87
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
88 if ( !TrapAvailable(_CommToolboxTrap, OSTrap) ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
89 err_setstr(ErrorObject, "CTB not available");
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
90 return 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
91 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
92 if ( (err=InitCTBUtilities()) ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
93 PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
94 return 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
95 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
96 if ( (err=InitCRM()) ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
97 PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
98 return 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
99 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
100 if ( (err=InitCM()) ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
101 PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
102 return 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
103 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
104 initialized = 1;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
105 return 1;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
106 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
107
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
108 static int
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
109 ctbcm_pycallback(arg)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
110 void *arg;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
111 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
112 ctbcmobject *self = (ctbcmobject *)arg;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
113 object *args, *rv;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
114
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
115 if ( !self->has_callback ) /* It could have been removed in the meantime */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
116 return 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
117 args = mkvalue("(i)", self->err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
118 rv = call_object(self->callback, args);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
119 DECREF(args);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
120 if( rv == NULL )
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
121 return -1;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
122 DECREF(rv);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
123 return 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
124 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
125
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
126 /*DBG*/int ncallback;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
127 static pascal void
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
128 ctbcm_ctbcallback(hconn)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
129 ConnHandle hconn;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
130 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
131 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
132
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
133 /* XXXX Do I have to do the A5 mumbo-jumbo? */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
134 ncallback++; /*DBG*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
135 self = (ctbcmobject *)CMGetUserData(hconn);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
136 self->err = (int)((*hconn)->errCode);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
137 Py_AddPendingCall(ctbcm_pycallback, (void *)self);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
138 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
139
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
140 static ctbcmobject *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
141 newctbcmobject(arg)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
142 object *arg;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
143 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
144 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
145 self = NEWOBJ(ctbcmobject, &ctbcmtype);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
146 if (self == NULL)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
147 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
148 self->hdl = NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
149 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
150 self->callback = None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
151 self->has_callback = 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
152 return self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
153 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
154
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
155 /* ctbcm methods */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
156
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
157 static void
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
158 ctbcm_dealloc(self)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
159 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
160 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
161 if ( self->hdl ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
162 (void)CMClose(self->hdl, 0, (ConnectionCompletionUPP)0, 0, 1);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
163 /*XXXX Is this safe? */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
164 CMDispose(self->hdl);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
165 self->hdl = NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
166 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
167 DEL(self);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
168 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
169
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
170 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
171 ctbcm_open(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
172 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
173 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
174 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
175 long timeout;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
176 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
177 ConnectionCompletionUPP cb_upp = NewConnectionCompletionProc(ctbcm_ctbcallback);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
178
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
179 if (!getargs(args, "l", &timeout))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
180 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
181 if ( (err=CMOpen(self->hdl, self->has_callback, cb_upp, timeout)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
182 return PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
183 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
184 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
185 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
186
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
187 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
188 ctbcm_listen(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
189 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
190 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
191 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
192 long timeout;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
193 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
194 ConnectionCompletionUPP cb_upp = NewConnectionCompletionProc(ctbcm_ctbcallback);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
195
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
196 if (!getargs(args, "l", &timeout))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
197 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
198 if ( (err=CMListen(self->hdl,self->has_callback, cb_upp, timeout)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
199 return PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
200 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
201 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
202 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
203
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
204 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
205 ctbcm_accept(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
206 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
207 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
208 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
209 int accept;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
210 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
211
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
212 if (!getargs(args, "i", &accept))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
213 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
214 if ( (err=CMAccept(self->hdl, accept)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
215 return PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
216 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
217 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
218 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
219
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
220 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
221 ctbcm_close(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
222 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
223 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
224 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
225 int now;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
226 long timeout;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
227 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
228 ConnectionCompletionUPP cb_upp = NewConnectionCompletionProc(ctbcm_ctbcallback);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
229
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
230 if (!getargs(args, "(li)", &timeout, &now))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
231 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
232 if ( (err=CMClose(self->hdl, self->has_callback, cb_upp, timeout, now)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
233 return PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
234 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
235 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
236 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
237
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
238 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
239 ctbcm_read(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
240 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
241 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
242 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
243 long timeout, len;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
244 int chan;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
245 CMFlags flags;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
246 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
247 object *rv;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
248 ConnectionCompletionUPP cb_upp = NewConnectionCompletionProc(ctbcm_ctbcallback);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
249
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
250 if (!getargs(args, "(lil)", &len, &chan, &timeout))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
251 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
252 if ((rv=newsizedstringobject(NULL, len)) == NULL)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
253 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
254 if ((err=CMRead(self->hdl, (Ptr)getstringvalue(rv), &len, (CMChannel)chan,
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
255 self->has_callback, cb_upp, timeout, &flags)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
256 return PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
257 resizestring(&rv, len);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
258 return mkvalue("(Oi)", rv, (int)flags);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
259 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
260
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
261 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
262 ctbcm_write(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
263 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
264 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
265 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
266 long timeout, len;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
267 int chan, ilen, flags;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
268 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
269 char *buf;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
270 ConnectionCompletionUPP cb_upp = NewConnectionCompletionProc(ctbcm_ctbcallback);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
271
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
272 if (!getargs(args, "(s#ili)", &buf, &ilen, &chan, &timeout, &flags))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
273 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
274 len = ilen;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
275 if ((err=CMWrite(self->hdl, (Ptr)buf, &len, (CMChannel)chan,
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
276 self->has_callback, cb_upp, timeout, (CMFlags)flags)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
277 return PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
278 return newintobject((int)len);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
279 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
280
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
281 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
282 ctbcm_status(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
283 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
284 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
285 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
286 CMBufferSizes sizes;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
287 CMStatFlags flags;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
288 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
289 object *rv;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
290
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
291 if (!getnoarg(args))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
292 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
293 if ((err=CMStatus(self->hdl, sizes, &flags)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
294 return PyErr_Mac(ErrorObject, (int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
295 rv = mkvalue("(llllll)", sizes[0], sizes[1], sizes[2], sizes[3], sizes[4], sizes[5]);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
296 if ( rv == NULL )
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
297 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
298 return mkvalue("(Ol)", rv, (long)flags);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
299 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
300
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
301 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
302 ctbcm_getconfig(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
303 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
304 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
305 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
306 char *rv;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
307
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
308 if (!getnoarg(args))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
309 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
310 if ((rv=(char *)CMGetConfig(self->hdl)) == NULL ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
311 err_setstr(ErrorObject, "CMGetConfig failed");
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
312 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
313 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
314 return newstringobject(rv);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
315 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
316
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
317 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
318 ctbcm_setconfig(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
319 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
320 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
321 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
322 char *cfg;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
323 OSErr err;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
324
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
325 if (!getargs(args, "s", &cfg))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
326 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
327 if ((err=CMSetConfig(self->hdl, (Ptr)cfg)) < 0)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
328 return PyErr_Mac(ErrorObject, err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
329 return newintobject((int)err);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
330 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
331
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
332 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
333 ctbcm_choose(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
334 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
335 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
336 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
337 int rv;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
338 Point pt;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
339
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
340 if (!getnoarg(args))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
341 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
342 pt.v = 40;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
343 pt.h = 40;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
344 rv=CMChoose(&self->hdl, pt, (ConnectionChooseIdleUPP)0);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
345 return newintobject(rv);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
346 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
347
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
348 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
349 ctbcm_idle(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
350 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
351 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
352 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
353 if (!getnoarg(args))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
354 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
355 CMIdle(self->hdl);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
356 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
357 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
358 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
359
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
360 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
361 ctbcm_abort(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
362 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
363 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
364 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
365 if (!getnoarg(args))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
366 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
367 CMAbort(self->hdl);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
368 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
369 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
370 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
371
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
372 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
373 ctbcm_reset(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
374 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
375 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
376 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
377 if (!getnoarg(args))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
378 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
379 CMReset(self->hdl);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
380 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
381 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
382 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
383
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
384 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
385 ctbcm_break(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
386 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
387 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
388 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
389 long duration;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
390 ConnectionCompletionUPP cb_upp = NewConnectionCompletionProc(ctbcm_ctbcallback);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
391
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
392 if (!getargs(args, "l", &duration))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
393 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
394 CMBreak(self->hdl, duration,self->has_callback, cb_upp);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
395 INCREF(None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
396 return None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
397 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
398
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
399 static struct methodlist ctbcm_methods[] = {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
400 {"Open", (method)ctbcm_open},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
401 {"Close", (method)ctbcm_close},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
402 {"Read", (method)ctbcm_read},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
403 {"Write", (method)ctbcm_write},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
404 {"Status", (method)ctbcm_status},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
405 {"GetConfig", (method)ctbcm_getconfig},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
406 {"SetConfig", (method)ctbcm_setconfig},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
407 {"Choose", (method)ctbcm_choose},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
408 {"Idle", (method)ctbcm_idle},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
409 {"Listen", (method)ctbcm_listen},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
410 {"Accept", (method)ctbcm_accept},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
411 {"Abort", (method)ctbcm_abort},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
412 {"Reset", (method)ctbcm_reset},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
413 {"Break", (method)ctbcm_break},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
414 {NULL, NULL} /* sentinel */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
415 };
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
416
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
417 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
418 ctbcm_getattr(self, name)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
419 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
420 char *name;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
421 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
422 if ( strcmp(name, "callback") == 0 ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
423 INCREF(self->callback);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
424 return self->callback;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
425 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
426 return findmethod(ctbcm_methods, (object *)self, name);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
427 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
428
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
429 static int
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
430 ctbcm_setattr(self, name, v)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
431 ctbcmobject *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
432 char *name;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
433 object *v;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
434 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
435 if ( strcmp(name, "callback") != 0 ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
436 err_setstr(AttributeError, "ctbcm objects have callback attr only");
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
437 return -1;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
438 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
439 if ( v == NULL ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
440 v = None;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
441 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
442 INCREF(v); /* XXXX Must I do this? */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
443 self->callback = v;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
444 self->has_callback = (v != None);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
445 return 0;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
446 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
447
2416
75aa5246b2f6 ported to MPW/SC
Guido van Rossum <guido@python.org>
parents: 2026
diff changeset
448 statichere typeobject ctbcmtype = {
2026
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
449 OB_HEAD_INIT(&Typetype)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
450 0, /*ob_size*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
451 "ctbcm", /*tp_name*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
452 sizeof(ctbcmobject), /*tp_basicsize*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
453 0, /*tp_itemsize*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
454 /* methods */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
455 (destructor)ctbcm_dealloc, /*tp_dealloc*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
456 0, /*tp_print*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
457 (getattrfunc)ctbcm_getattr, /*tp_getattr*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
458 (setattrfunc)ctbcm_setattr, /*tp_setattr*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
459 0, /*tp_compare*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
460 0, /*tp_repr*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
461 0, /*tp_as_number*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
462 0, /*tp_as_sequence*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
463 0, /*tp_as_mapping*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
464 0, /*tp_hash*/
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
465 };
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
466 /* --------------------------------------------------------------------- */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
467
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
468 /* Function of no arguments returning new ctbcm object */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
469
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
470 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
471 ctb_cmnew(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
472 object *self; /* Not used */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
473 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
474 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
475 int strlen;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
476 object *sizes_obj;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
477 char *c_str;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
478 unsigned char p_str[255];
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
479 CMBufferSizes sizes;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
480 short procid;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
481 ConnHandle hdl;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
482 ctbcmobject *rv;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
483
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
484 if (!getargs(args, "(s#O)", &c_str, &strlen, &sizes_obj))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
485 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
486 strncpy((char *)p_str+1, c_str, strlen);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
487 p_str[0] = strlen;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
488 if (!initialize_ctb())
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
489 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
490 if ( sizes_obj == None ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
491 memset(sizes, '\0', sizeof sizes);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
492 } else {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
493 if ( !getargs(sizes_obj, "(llllll)", &sizes[0], &sizes[1], &sizes[2],
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
494 &sizes[3], &sizes[4], &sizes[5]))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
495 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
496 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
497 if ( (procid=CMGetProcID(p_str)) < 0 )
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
498 return PyErr_Mac(ErrorObject, procid);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
499 hdl = CMNew(procid, cmNoMenus|cmQuiet, sizes, 0, 0);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
500 if ( hdl == NULL ) {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
501 err_setstr(ErrorObject, "CMNew failed");
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
502 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
503 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
504 rv = newctbcmobject(args);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
505 if ( rv == NULL )
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
506 return NULL; /* XXXX Should dispose of hdl */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
507 rv->hdl = hdl;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
508 CMSetUserData(hdl, (long)rv);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
509 return (object *)rv;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
510 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
511
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
512 static object *
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
513 ctb_available(self, args)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
514 object *self;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
515 object *args;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
516 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
517 int ok;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
518
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
519 if (!getnoarg(args))
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
520 return NULL;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
521 ok = initialize_ctb();
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
522 err_clear();
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
523 return newintobject(ok);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
524 }
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
525
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
526 /* List of functions defined in the module */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
527
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
528 static struct methodlist ctb_methods[] = {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
529 {"CMNew", ctb_cmnew},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
530 {"available", ctb_available},
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
531 {NULL, NULL} /* sentinel */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
532 };
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
533
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
534
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
535 /* Initialization function for the module (*must* be called initctb) */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
536
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
537 void
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
538 initctb()
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
539 {
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
540 object *m, *d, *o;
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
541
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
542 /* Create the module and add the functions */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
543 m = initmodule("ctb", ctb_methods);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
544
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
545 /* Add some symbolic constants to the module */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
546 d = getmoduledict(m);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
547
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
548 #define CMCONST(name, value) o = newintobject(value); dictinsert(d, name, o)
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
549
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
550 CMCONST("cmData", 1);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
551 CMCONST("cmCntl", 2);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
552 CMCONST("cmAttn", 3);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
553
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
554 CMCONST("cmFlagsEOM", 1);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
555
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
556 CMCONST("chooseDisaster", -2);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
557 CMCONST("chooseFailed", -1);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
558 CMCONST("chooseAborted", 0);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
559 CMCONST("chooseOKMinor", 1);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
560 CMCONST("chooseOKMajor", 2);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
561 CMCONST("chooseCancel", 3);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
562
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
563 CMCONST("cmStatusOpening", 1);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
564 CMCONST("cmStatusOpen", 2);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
565 CMCONST("cmStatusClosing", 4);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
566 CMCONST("cmStatusDataAvail", 8);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
567 CMCONST("cmStatusCntlAvail", 0x10);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
568 CMCONST("cmStatusAttnAvail", 0x20);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
569 CMCONST("cmStatusDRPend", 0x40);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
570 CMCONST("cmStatusDWPend", 0x80);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
571 CMCONST("cmStatusCWPend", 0x100);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
572 CMCONST("cmStatusCWPend", 0x200);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
573 CMCONST("cmStatusARPend", 0x400);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
574 CMCONST("cmStatusAWPend", 0x800);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
575 CMCONST("cmStatusBreakPending", 0x1000);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
576 CMCONST("cmStatusListenPend", 0x2000);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
577 CMCONST("cmStatusIncomingCallPresent", 0x4000);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
578
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
579 ErrorObject = newstringobject("ctb.error");
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
580 dictinsert(d, "error", ErrorObject);
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
581
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
582 /* Check for errors */
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
583 if (err_occurred())
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
584 fatal("can't initialize module ctb");
97d614b24c08 Interface to Mac Communications Toolbox (only Connection Manager for
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
585 }