]> granicus.if.org Git - python/commitdiff
Allow .pyc files as applets as well as .py files. .py files have
authorJack Jansen <jack.jansen@cwi.nl>
Fri, 29 Mar 2002 14:43:50 +0000 (14:43 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Fri, 29 Mar 2002 14:43:50 +0000 (14:43 +0000)
priority, for safety reasons.

Mac/Python/macmain.c

index 02d0a82a0d11181ae3465e13fb602ab4574415fd..cb6b3312416e82c897077fa2fb1c784dd2d9584a 100644 (file)
@@ -476,7 +476,8 @@ PyMac_Initialize(void)
 #if TARGET_API_MAC_OSX /* Really: TARGET_API_MAC_CARBON */
 
 static int
-locateResourcePy(char * resourceName, char * resourceURLCStr, int length) {
+locateResourcePy(CFStringRef resourceType, char *resourceName, char *resourceURLCStr, int length)
+{
     CFBundleRef mainBundle = NULL;
     CFURLRef URL, absoluteURL;
     CFStringRef filenameString, filepathString, rsrcString;
@@ -500,7 +501,7 @@ locateResourcePy(char * resourceName, char * resourceURLCStr, int length) {
 
            /* Look for py files in the main bundle by type */
            arrayRef = CFBundleCopyResourceURLsOfType( mainBundle, 
-                   CFSTR("py")
+                   resourceType
                   NULL );
 
            /* See if there are any filename matches */
@@ -541,18 +542,22 @@ main(int argc, char **argv)
        /* First we see whether we have __rawmain__.py and run that if it
        ** is there
        */
-       if (locateResourcePy("__rawmain__.py", scriptpath, 1024)) {
+       if (locateResourcePy(CFSTR("py"), "__rawmain__.py", scriptpath, 1024)) {
                /* If we have a raw main we don't do AppleEvent processing.
                ** Notice that this also means we keep the -psn.... argv[1]
                ** value intact. Not sure whether that is important to someone,
                ** but you never know...
                */
                script = scriptpath;
+       } else if (locateResourcePy(CFSTR("pyc"), "__rawmain__.pyc", scriptpath, 1024)) {
+               script = scriptpath;
        } else {
                /* Otherwise we look for __main__.py. Whether that is
                ** found or not we also process AppleEvent arguments.
                */
-               if (locateResourcePy("__main__.py", scriptpath, 1024))
+               if (locateResourcePy(CFSTR("py"), "__main__.py", scriptpath, 1024))
+                       script = scriptpath;
+               else if (locateResourcePy(CFSTR("pyc"), "__main__.pyc", scriptpath, 1024))
                        script = scriptpath;
                        
                init_common(&argc, &argv, 0);