Commit ab57c7dc authored by Just van Rossum's avatar Just van Rossum

Moved macfsn hackery from macmain.c to macfsmodule.c so it loads

on demand instead of at startup.
parent e2ec3ebc
...@@ -39,6 +39,9 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ...@@ -39,6 +39,9 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "getapplbycreator.h" #include "getapplbycreator.h"
#include "pythonresources.h"
extern PyMac_PrefRecord PyMac_options;
#ifdef USE_TOOLBOX_OBJECT_GLUE #ifdef USE_TOOLBOX_OBJECT_GLUE
extern int _PyMac_GetFSSpec(PyObject *, FSSpec *); extern int _PyMac_GetFSSpec(PyObject *, FSSpec *);
extern PyObject *_PyMac_BuildFSSpec(FSSpec *); extern PyObject *_PyMac_BuildFSSpec(FSSpec *);
...@@ -1206,6 +1209,33 @@ PyObject *PyMac_BuildFSSpec(FSSpec *v) ...@@ -1206,6 +1209,33 @@ PyObject *PyMac_BuildFSSpec(FSSpec *v)
return (PyObject *)newmfssobject(v); return (PyObject *)newmfssobject(v);
} }
/*
** Import the macfsn module, which will override the Standard File
** calls in the macfs builtin module by Navigation Services versions,
** if available on this machine.
*/
static void
PyMac_InstallNavServicesForSF(void)
{
if ( !PyMac_options.nonavservice ) {
PyObject *m = PyImport_ImportModule("macfsn");
if ( m == NULL ) {
PySys_WriteStderr("'import macfsn' failed; ");
if (Py_VerboseFlag) {
PySys_WriteStderr("traceback:\n");
PyErr_Print();
}
else {
PySys_WriteStderr("use -v for traceback\n");
}
PyErr_Clear();
}
}
}
/* Initialization function for the module (*must* be called initmacfs) */ /* Initialization function for the module (*must* be called initmacfs) */
void void
...@@ -1235,5 +1265,6 @@ initmacfs(void) ...@@ -1235,5 +1265,6 @@ initmacfs(void)
Mfsitype.ob_type = &PyType_Type; Mfsitype.ob_type = &PyType_Type;
Py_INCREF(&Mfsitype); Py_INCREF(&Mfsitype);
PyDict_SetItemString(d, "FInfoType", (PyObject *)&Mfsitype); PyDict_SetItemString(d, "FInfoType", (PyObject *)&Mfsitype);
/* XXXX Add constants here */
PyMac_InstallNavServicesForSF();
} }
...@@ -392,31 +392,6 @@ run_inspect(void) ...@@ -392,31 +392,6 @@ run_inspect(void)
return sts; return sts;
} }
/*
** Import the macfsn module, which will override the Standard File
** calls in the macfs builtin module by Navigation Services versions,
** if available on this machine.
*/
static void
PyMac_InstallNavServicesForSF(void)
{
if ( !PyMac_options.nonavservice ) {
PyObject *m = PyImport_ImportModule("macfsn");
if ( m == NULL ) {
PySys_WriteStderr("'import macfsn' failed; ");
if (Py_VerboseFlag) {
PySys_WriteStderr("traceback:\n");
PyErr_Print();
}
else {
PySys_WriteStderr("use -v for traceback\n");
}
PyErr_Clear();
}
}
}
#ifdef USE_MAC_APPLET_SUPPORT #ifdef USE_MAC_APPLET_SUPPORT
/* Applet support */ /* Applet support */
...@@ -464,7 +439,6 @@ PyMac_InitApplet(void) ...@@ -464,7 +439,6 @@ PyMac_InitApplet(void)
init_common(&argc, &argv, 0); init_common(&argc, &argv, 0);
Py_Initialize(); Py_Initialize();
PyMac_InstallNavServicesForSF();
PySys_SetArgv(argc, argv); PySys_SetArgv(argc, argv);
err = run_main_resource(); err = run_main_resource();
...@@ -488,7 +462,6 @@ PyMac_Initialize(void) ...@@ -488,7 +462,6 @@ PyMac_Initialize(void)
init_common(&argc, &argv, 1); init_common(&argc, &argv, 1);
Py_Initialize(); Py_Initialize();
PyMac_InstallNavServicesForSF();
PySys_SetArgv(argc, argv); PySys_SetArgv(argc, argv);
} }
...@@ -675,8 +648,6 @@ Py_Main(int argc, char **argv, char *filename) ...@@ -675,8 +648,6 @@ Py_Main(int argc, char **argv, char *filename)
PyUnicode_SetDefaultEncoding(PyMac_getscript()); PyUnicode_SetDefaultEncoding(PyMac_getscript());
PyMac_InstallNavServicesForSF();
PySys_SetArgv(argc, argv); PySys_SetArgv(argc, argv);
if (filename == NULL && isatty((int)fileno(fp))) { if (filename == NULL && isatty((int)fileno(fp))) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment