]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
completely redone
authorGuido van Rossum <guido@python.org>
Fri, 17 Feb 1995 14:28:39 +0000 (14:28 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 17 Feb 1995 14:28:39 +0000 (14:28 +0000)
Mac/MPW/Build [new file with mode: 0644]
Mac/mkapplet.py [new file with mode: 0644]

diff --git a/Mac/MPW/Build b/Mac/MPW/Build
new file mode 100644 (file)
index 0000000..f85c0da
--- /dev/null
@@ -0,0 +1,3 @@
+Make {1} -f MakeFile >Make.out
+Set Echo 1
+Make.out
diff --git a/Mac/mkapplet.py b/Mac/mkapplet.py
new file mode 100644 (file)
index 0000000..d5cfba3
--- /dev/null
@@ -0,0 +1,89 @@
+"""Add a 'PYC ' resource named "__main__" to a resource file.
+
+This first puts up a dialog asking for a Python source file ('TEXT'),
+then one asking for an existing destination file ('APPL' or 'rsrc').
+
+It compiles the Python source into a code object, marshals it into a string,
+prefixes the string with a .pyc header, and turns it into a resource,
+which is then written to the destination.
+
+If the destination already contains a resource with the same name and type,
+it is overwritten.
+"""
+
+import marshal
+import imp
+import macfs
+from Res import *
+
+# .pyc file (and 'PYC ' resource magic number)
+MAGIC = imp.get_magic()
+
+# Complete specification of our resource
+RESTYPE = 'PYC '
+RESID = 128
+RESNAME = '__main__'
+
+# OpenResFile mode parameters
+READ = 1
+WRITE = 2
+
+def main():
+       
+       # Ask for source text
+       
+       srcfss, ok = macfs.StandardGetFile('TEXT')
+       if not ok: return
+       
+       # Read the source and compile it
+       # (there's no point asking for a destination if it has a syntax error)
+       
+       filename = srcfss.as_pathname()
+       fp = open(filename)
+       text = fp.read()
+       fp.close()
+       code = compile(text, filename, "exec")
+       
+       # Ask for destination file
+       
+       dstfss, ok = macfs.StandardGetFile('APPL', 'rsrc')
+       if not ok: return
+       
+       # Create the raw data for the resource from the code object
+       
+       data = marshal.dumps(code)
+       del code
+       data = (MAGIC + '\0\0\0\0') + data
+       
+       # Open the resource file
+       
+       fnum = FSpOpenResFile(dstfss.as_pathname(), WRITE)
+       
+       # Delete any existing resource with name __main__ or number 128
+       
+       try:
+               res = Get1NamedResource(RESTYPE, RESNAME)
+               res.RmveResource()
+       except Error:
+               pass
+       
+       try:
+               res = Get1Resource(RESTYPE, RESID)
+               res.RmveResource()
+       except Error:
+               pass
+       
+       # Create the resource and write it
+       
+       res = Resource(data)
+       res.AddResource(RESTYPE, RESID, RESNAME)
+       # XXX Are the following two calls needed?
+       res.WriteResource()
+       res.ReleaseResource()
+       
+       # Close the resource file
+       
+       CloseResFile(fnum)
+
+if __name__ == '__main__':
+       main()