Mercurial > cpython-lru_cache-weakref
diff Mac/Python/macglue.c @ 2312:40aec48cd1e2 legacy-trunk
Added PyMac_GetPythonDir routine which obtains python home directory
from an alias resource (or from the user). Note: this uses a dialog
resource so there's an accompanying change in the resource file.
| author | Jack Jansen <jack.jansen@cwi.nl> |
|---|---|
| date | Mon, 13 Feb 1995 11:33:28 +0000 |
| parents | 66d6d13df4f8 |
| children | faaece7ccd6e |
line wrap: on
line diff
--- a/Mac/Python/macglue.c Mon Feb 13 11:31:51 1995 +0000 +++ b/Mac/Python/macglue.c Mon Feb 13 11:33:28 1995 +0000 @@ -27,6 +27,8 @@ #include <OSUtils.h> /* for Set(Current)A5 */ #include <Files.h> +#include <Aliases.h> +#include <StandardFile.h> #include <Resources.h> #include <Memory.h> #include <Events.h> @@ -40,6 +42,11 @@ #include <signal.h> +#define NOPYTHON_ALERT 128 +#define YES_ITEM 1 +#define NO_ITEM 2 +#define CURWD_ITEM 3 + #ifdef __MWERKS__ /* ** With MW we can pass the event off to the console window, so @@ -359,6 +366,74 @@ return intrpeek(); } +/* +** Return the name of the Python directory +*/ +char * +PyMac_GetPythonDir() +{ + int item; + static char name[256]; + AliasHandle handle; + FSSpec dirspec; + int ok = 0, exists = 0; + Boolean modified = 0; + StandardFileReply sfreply; + + handle = (AliasHandle)GetResource('alis', 128); + if ( handle ) { + if ( ResolveAlias(NULL, handle, &dirspec, &modified) == noErr ) + ok = 1; + exists = 1; + } + if ( !ok ) { + item = Alert(NOPYTHON_ALERT, NULL); + if ( item == YES_ITEM ) { + StandardGetFile(NULL, 0, NULL, &sfreply); + if ( sfreply.sfGood ) { + if ( sfreply.sfIsFolder ) { + dirspec = sfreply.sfFile; + ok = 1; + modified = 1; + } else { + /* User selected a file. Use folder containing it */ + if (FSMakeFSSpec(sfreply.sfFile.vRefNum, + sfreply.sfFile.parID, "\p", &dirspec) == 0) { + ok = 1; + modified = 1; + } + } + } + } else if ( item == CURWD_ITEM ) { + if ( getwd(name) ) { + if ( FSMakeFSSpec(0, 0, Pstring(name), &dirspec) == 0 ) { + ok = 1; + modified = 1; + } + } + } + } + if ( ok && modified ) { + if ( !exists ) { + if (NewAlias(NULL, &dirspec, &handle) == 0 ) + AddResource((Handle)handle, 'alis', 128, "\p"); + } else { + ChangedResource((Handle)handle); + } + UpdateResFile(CurResFile()); + } + if ( ok ) { + ok = (nfullpath(&dirspec, name) == 0); + if ( ok ) strcat(name, ":"); + } + if ( !ok ) { + /* If all fails, we return the current directory */ + name[0] = 0; + (void)getwd(name); + } + return name; +} + /* Convert a 4-char string object argument to an OSType value */ int
