[tex-live] The adforn package.

Maxwell, Adam R adam.maxwell at pnl.gov
Tue Oct 5 01:51:25 CEST 2010


On Oct 4, 2010, at 15:41, Martin Schröder wrote:

> 2010/10/4 C.M. Connelly <cmc at math.hmc.edu>:
>> (For added fun, some sloppily coded apps break if you switch to a
>> case-sensitive file system (e.g., Office, Adobe apps).)
> 
> Why am I not surprised?

It doesn't help that parts of Apple's frameworks are case-sensitive
(NSBundle and CFBundle) even on case-insensitive file systems, and
others (e.g., NSFileManager) respect file system case-sensitivity.
As long as you don't hardcode paths or accept them as user input
directly, it's manageable; using FSRef objects instead of paths is
even better.

Sort-of-on-topic, this is an example of how things that work in the
shell on OS X might work differently in other languages or APIs, so
there are plenty of ways to shoot yourself in the foot.

If you speak Python and Cocoa, there's a short PyObjC example below
that demonstrates the NSFileManager end.  It should fail on a UFS
or HFSX volume.

#!/usr/bin/env python

from Foundation import NSFileManager, NSString
from Foundation import NSUTF8StringEncoding

import os

if __name__ == '__main__':
    
    fm = NSFileManager.defaultManager()

    path = "/tmp/casetest"
    if os.path.exists(path):
        os.remove(path)
    
    fileExists, isDirectory = fm.fileExistsAtPath_isDirectory_(path, None)
    assert fileExists is False, "file exists"
    
    content = NSString.stringWithString_("junk").dataUsingEncoding_(NSUTF8StringEncoding)
    didCreate = fm.createFileAtPath_contents_attributes_(path, content, None)
    assert didCreate is True, "failed to create file"
    print "created file %s" % (path)
    print "Python API check:", os.path.abspath(path), os.path.exists(path)
    
    print ""
    
    path = "/tmp/CASEtest"
    fileExists, isDirectory = fm.fileExistsAtPath_isDirectory_(path, None)
    print "%s %s" % (path, "exists" if fileExists else "does not exist")
    print "display name of %s = %s" % (path, fm.displayNameAtPath_(path))
    
    print "Python API check:", os.path.abspath(path), os.path.exists(path)




More information about the tex-live mailing list