diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1996-11-09 18:45:18 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1996-11-09 18:45:18 (GMT) |
commit | 26ee1260a20dba4ed89165e187c8db74b8de82a8 (patch) | |
tree | a49f5d0727018fd628e5f679628d549fbc2f2fae /Mac/Python/macgetargv.c | |
parent | 8096daad4f835fbb8261ebd4dddc61b53cc93779 (diff) | |
download | cpython-26ee1260a20dba4ed89165e187c8db74b8de82a8.zip cpython-26ee1260a20dba4ed89165e187c8db74b8de82a8.tar.gz cpython-26ee1260a20dba4ed89165e187c8db74b8de82a8.tar.bz2 |
Got rid of nfullpath in favor of PyMac_GetFullPath (which was pretty
much identical anyway).
Initialize PyMac_ApplicationPath and PyMac_ApplicationFSSpec to point
to the current application.
Diffstat (limited to 'Mac/Python/macgetargv.c')
-rw-r--r-- | Mac/Python/macgetargv.c | 45 |
1 files changed, 22 insertions, 23 deletions
diff --git a/Mac/Python/macgetargv.c b/Mac/Python/macgetargv.c index e0ecb8e..c1d1e3e 100644 --- a/Mac/Python/macgetargv.c +++ b/Mac/Python/macgetargv.c @@ -46,6 +46,9 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. #include <Dialogs.h> #include <Windows.h> +#include "Python.h" +#include "macglue.h" + #ifdef GENERATINGCFM /* Defined to 0 or 1 in Universal headers */ #define HAVE_UNIVERSAL_HEADERS #endif @@ -61,6 +64,9 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. static int arg_count; static char *arg_vector[256]; +FSSpec PyMac_ApplicationFSSpec; +char PyMac_ApplicationPath[256]; +static int applocation_inited; /* Duplicate a string to the heap. We also export this since it isn't standard ** and others use it @@ -75,20 +81,27 @@ strdup(char *src) return dst; } -/* Return FSSpec of current application */ +/* Initialize FSSpec and full name of current application */ OSErr -PyMac_process_location(FSSpec *applicationSpec) +PyMac_init_process_location() { ProcessSerialNumber currentPSN; ProcessInfoRec info; + OSErr err; + if ( applocation_inited ) return 0; currentPSN.highLongOfPSN = 0; currentPSN.lowLongOfPSN = kCurrentProcess; info.processInfoLength = sizeof(ProcessInfoRec); info.processName = NULL; - info.processAppSpec = applicationSpec; - return GetProcessInformation(¤tPSN, &info); + info.processAppSpec = &PyMac_ApplicationFSSpec; + if ( err=GetProcessInformation(¤tPSN, &info)) + return err; + if ( err=PyMac_GetFullPath(&PyMac_ApplicationFSSpec, PyMac_ApplicationPath) ) + return err; + applocation_inited = 1; + return 0; } /* Given an FSSpec, return the FSSpec of the parent folder */ @@ -114,8 +127,8 @@ get_folder_parent (FSSpec * fss, FSSpec * parent) /* Given an FSSpec return a full, colon-separated pathname */ -static OSErr -get_full_path (FSSpec *fss, char *buf) +OSErr +PyMac_GetFullPath (FSSpec *fss, char *buf) { short err; FSSpec fss_parent, fss_current; @@ -146,21 +159,6 @@ get_full_path (FSSpec *fss, char *buf) return 0; } -/* Return the full program name */ - -static char * -get_application_name() -{ - static char appname[256]; - FSSpec appspec; - - if (PyMac_process_location(&appspec)) - return NULL; - if (get_full_path(&appspec, appname)) - return NULL; - return appname; -} - /* Check that there aren't any args remaining in the event */ static OSErr @@ -230,7 +228,7 @@ handle_open_doc(AppleEvent *theAppleEvent, AppleEvent *reply, long refCon) &keywd, &rttype, &fss, sizeof(fss), &size); if (err) break; - get_full_path(&fss, path); + PyMac_GetFullPath(&fss, path); arg_vector[arg_count++] = strdup(path); } return err; @@ -301,7 +299,8 @@ PyMac_GetArgv(pargv, noevents) { arg_count = 0; - arg_vector[arg_count++] = strdup(get_application_name()); + (void)PyMac_init_process_location(); + arg_vector[arg_count++] = strdup(PyMac_ApplicationPath); if( !noevents ) { set_ae_handlers(); |