blob: df292fa5544b534068a9c552e9e4d1280926d651 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/*
* Generated with the GUSIConfig application and then hand-modified by jack.
*/
#define GUSI_SOURCE
#include <GUSIConfig.h>
#include <sys/cdefs.h>
#include <Resources.h>
#include "Python.h"
#include "macglue.h"
#include "pythonresources.h"
static void
PyMac_GUSISpin(bool wait)
{
static Boolean inForeground = true;
int maxsleep = 6; /* 6 ticks is "normal" sleeptime */
if (PyMac_ConsoleIsDead) return;
if ( !wait )
maxsleep = 0;
PyMac_DoYield(maxsleep, 0); /* XXXX or is it safe to call python here? */
}
/* Declarations of Socket Factories */
__BEGIN_DECLS
void GUSIwithInetSockets();
void GUSIwithLocalSockets();
void GUSIwithMTInetSockets();
void GUSIwithMTTcpSockets();
void GUSIwithMTUdpSockets();
void GUSIwithOTInetSockets();
void GUSIwithOTTcpSockets();
void GUSIwithOTUdpSockets();
void GUSIwithPPCSockets();
void GUSISetupFactories();
__END_DECLS
/* Configure Socket Factories */
void GUSISetupFactories()
{
#ifdef GUSISetupFactories_BeginHook
GUSISetupFactories_BeginHook
#endif
#if 1 || TARGET_API_MAC_CARBON
GUSIwithInetSockets();
#else
GUSIwithMTInetSockets();
#endif
#ifdef GUSISetupFactories_EndHook
GUSISetupFactories_EndHook
#endif
}
/* Declarations of File Devices */
__BEGIN_DECLS
void GUSIwithDConSockets();
void GUSIwithNullSockets();
void GUSISetupDevices();
__END_DECLS
/* Configure File Devices */
void GUSISetupDevices()
{
#ifdef GUSISetupDevices_BeginHook
GUSISetupDevices_BeginHook
#endif
#ifdef GUSISetupDevices_EndHook
GUSISetupDevices_EndHook
#endif
}
#ifndef __cplusplus
#error GUSISetupConfig() needs to be written in C++
#endif
GUSIConfiguration::FileSuffix sSuffices[] = {
"", '????', '????'
};
extern "C" void GUSISetupConfig()
{
Handle h;
short oldrh, prefrh = -1;
short resource_id = GUSIConfiguration::kNoResource;
oldrh = CurResFile();
/* Try override from the application resource fork */
UseResFile(PyMac_AppRefNum);
h = Get1Resource('GU\267I', GUSIOPTIONSOVERRIDE_ID);
if ( h ) {
resource_id = GUSIOPTIONSOVERRIDE_ID;
} else {
/* Next try normal resource from preference file */
prefrh = PyMac_OpenPrefFile();
h = Get1Resource('GU\267I', GUSIOPTIONS_ID);
if ( h ) {
resource_id = GUSIOPTIONS_ID;
} else {
/* Finally try normal resource from application */
if ( prefrh != -1 ) {
CloseResFile(prefrh);
prefrh = -1;
}
resource_id = GUSIOPTIONS_ID;
}
}
/* Now we have the right resource file topmost and the id. Init GUSI. */
GUSIConfiguration * config =
GUSIConfiguration::CreateInstance(resource_id);
/* Finally restore the old resource file */
if ( prefrh != -1) CloseResFile(prefrh);
UseResFile(oldrh);
config->ConfigureDefaultTypeCreator('TEXT', 'R*ch');
#if 0
config->ConfigureSuffices(
sizeof(sSuffices)/sizeof(GUSIConfiguration::FileSuffix)-1, sSuffices);
#endif
config->ConfigureAutoInitGraf(false);
config->ConfigureAutoSpin(false);
config->ConfigureHandleAppleEvents(false);
config->ConfigureSigInt(false);
config->ConfigureSigPipe(true);
GUSISetHook(GUSI_SpinHook, (GUSIHook)PyMac_GUSISpin);
}
/**************** END GUSI CONFIGURATION *************************/
|