Commit cc94764c authored by Jack Jansen's avatar Jack Jansen

Getting rid of macfs usage and almost all FSSpecs. Untested on MacOS9.

parent 52377e05
...@@ -5,9 +5,9 @@ import os ...@@ -5,9 +5,9 @@ import os
import string import string
import imp import imp
import marshal import marshal
import macfs
from Carbon import Res from Carbon import Res
import MACFS import Carbon.Files
import Carbon.File
import MacOS import MacOS
import macostools import macostools
import macresource import macresource
...@@ -38,6 +38,8 @@ DEFAULT_APPLET_CREATOR="Pyta" ...@@ -38,6 +38,8 @@ DEFAULT_APPLET_CREATOR="Pyta"
READ = 1 READ = 1
WRITE = 2 WRITE = 2
# Parameter for FSOpenResourceFile
RESOURCE_FORK_NAME=Carbon.File.FSGetResourceForkName()
def findtemplate(template=None): def findtemplate(template=None):
"""Locate the applet template along sys.path""" """Locate the applet template along sys.path"""
...@@ -50,9 +52,9 @@ def findtemplate(template=None): ...@@ -50,9 +52,9 @@ def findtemplate(template=None):
for p in sys.path: for p in sys.path:
file = os.path.join(p, template) file = os.path.join(p, template)
try: try:
file, d1, d2 = macfs.ResolveAliasFile(file) file, d1, d2 = Carbon.File.FSResolveAliasFile(file, 1)
break break
except (macfs.error, ValueError): except (Carbon.File.error, ValueError):
continue continue
else: else:
raise BuildError, "Template %s not found on sys.path" % `template` raise BuildError, "Template %s not found on sys.path" % `template`
...@@ -145,9 +147,8 @@ def process_common(template, progress, code, rsrcname, destname, is_update, ...@@ -145,9 +147,8 @@ def process_common(template, progress, code, rsrcname, destname, is_update,
if others: if others:
raise BuildError, "Extra files only allowed for MachoPython applets" raise BuildError, "Extra files only allowed for MachoPython applets"
# Create FSSpecs for the various files # Create FSSpecs for the various files
template_fss = macfs.FSSpec(template) template_fsr, d1, d2 = Carbon.File.FSResolveAliasFile(template, 1)
template_fss, d1, d2 = macfs.ResolveAliasFile(template_fss) template = template_fsr.as_pathname()
dest_fss = macfs.FSSpec(destname)
# Copy data (not resources, yet) from the template # Copy data (not resources, yet) from the template
if progress: if progress:
...@@ -171,15 +172,16 @@ def process_common(template, progress, code, rsrcname, destname, is_update, ...@@ -171,15 +172,16 @@ def process_common(template, progress, code, rsrcname, destname, is_update,
progress.label("Copy resources...") progress.label("Copy resources...")
progress.set(20) progress.set(20)
try: try:
output = Res.FSpOpenResFile(dest_fss, WRITE) output = Res.FSOpenResourceFile(destname, RESOURCE_FORK_NAME, WRITE)
except MacOS.Error: except MacOS.Error:
Res.FSpCreateResFile(destname, '????', 'APPL', MACFS.smAllScripts) destdir, destfile = os.path.split(destname)
output = Res.FSpOpenResFile(dest_fss, WRITE) Res.FSCreateResourceFile(destdir, destfile, RESOURCE_FORK_NAME)
output = Res.FSOpenResourceFile(destname, RESOURCE_FORK_NAME, WRITE)
# Copy the resources from the target specific resource template, if any # Copy the resources from the target specific resource template, if any
typesfound, ownertype = [], None typesfound, ownertype = [], None
try: try:
input = Res.FSpOpenResFile(rsrcname, READ) input = Res.FSOpenResourceFile(rsrcname, RESOURCE_FORK_NAME, READ)
except (MacOS.Error, ValueError): except (MacOS.Error, ValueError):
pass pass
if progress: if progress:
...@@ -204,7 +206,7 @@ def process_common(template, progress, code, rsrcname, destname, is_update, ...@@ -204,7 +206,7 @@ def process_common(template, progress, code, rsrcname, destname, is_update,
# Copy the resources from the template # Copy the resources from the template
input = Res.FSpOpenResFile(template_fss, READ) input = Res.FSOpenResourceFile(template, RESOURCE_FORK_NAME, READ)
dummy, tmplowner = copyres(input, output, skiptypes, 1, progress) dummy, tmplowner = copyres(input, output, skiptypes, 1, progress)
Res.CloseResFile(input) Res.CloseResFile(input)
...@@ -257,15 +259,17 @@ def process_common(template, progress, code, rsrcname, destname, is_update, ...@@ -257,15 +259,17 @@ def process_common(template, progress, code, rsrcname, destname, is_update,
Res.CloseResFile(output) Res.CloseResFile(output)
# Now set the creator, type and bundle bit of the destination # Now set the creator, type and bundle bit of the destination.
dest_finfo = dest_fss.GetFInfo() # Done with FSSpec's, FSRef FInfo isn't good enough yet (2.3a1+)
dset_fss = Carbon.File.FSSpec(destname)
dest_finfo = dest_fss.FSpGetFInfo()
dest_finfo.Creator = ownertype dest_finfo.Creator = ownertype
dest_finfo.Type = 'APPL' dest_finfo.Type = 'APPL'
dest_finfo.Flags = dest_finfo.Flags | MACFS.kHasBundle | MACFS.kIsShared dest_finfo.Flags = dest_finfo.Flags | Carbon.Files.kHasBundle | Carbon.Files.kIsShared
dest_finfo.Flags = dest_finfo.Flags & ~MACFS.kHasBeenInited dest_finfo.Flags = dest_finfo.Flags & ~Carbon.Files.kHasBeenInited
dest_fss.SetFInfo(dest_finfo) dest_fss.FSpSetFInfo(dest_finfo)
macostools.touched(dest_fss) macostools.touched(destname)
if progress: if progress:
progress.label("Done.") progress.label("Done.")
progress.inc(0) progress.inc(0)
......
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