[Python-checkins] r68156 - in python/trunk: Lib/test/test_macos.py Mac/Modules/MacOS.c Misc/NEWS

ronald.oussoren python-checkins at python.org
Fri Jan 2 15:10:20 CET 2009


Author: ronald.oussoren
Date: Fri Jan 2 15:10:20 2009
New Revision: 68156
Log:
Fix for issue1594
Modified:
 python/trunk/Lib/test/test_macos.py
 python/trunk/Mac/Modules/MacOS.c
 python/trunk/Misc/NEWS
Modified: python/trunk/Lib/test/test_macos.py
==============================================================================
--- python/trunk/Lib/test/test_macos.py	(original)
+++ python/trunk/Lib/test/test_macos.py	Fri Jan 2 15:10:20 2009
@@ -3,11 +3,66 @@
 import Carbon.File
 from test import test_support
 import os
+import subprocess
 
 TESTFN2 = test_support.TESTFN + '2'
 
 class TestMacOS(unittest.TestCase):
 
+ def testGetCreatorAndType(self):
+ if not os.path.exists('/Developer/Tools/SetFile'):
+ return
+
+ try:
+ fp = open(test_support.TESTFN, 'w')
+ fp.write('\n')
+ fp.close()
+
+ subprocess.call(
+ ['/Developer/Tools/SetFile', '-t', 'ABCD', '-c', 'EFGH',
+ test_support.TESTFN])
+
+ cr, tp = MacOS.GetCreatorAndType(test_support.TESTFN)
+ self.assertEquals(tp, 'ABCD')
+ self.assertEquals(cr, 'EFGH')
+
+ finally:
+ os.unlink(test_support.TESTFN)
+
+ def testSetCreatorAndType(self):
+ if not os.path.exists('/Developer/Tools/GetFileInfo'):
+ return
+
+ try:
+ fp = open(test_support.TESTFN, 'w')
+ fp.write('\n')
+ fp.close()
+
+ MacOS.SetCreatorAndType(test_support.TESTFN,
+ 'ABCD', 'EFGH')
+
+ cr, tp = MacOS.GetCreatorAndType(test_support.TESTFN)
+ self.assertEquals(cr, 'ABCD')
+ self.assertEquals(tp, 'EFGH')
+
+ data = subprocess.Popen(["/Developer/Tools/GetFileInfo", test_support.TESTFN],
+ stdout=subprocess.PIPE).communicate()[0]
+
+ tp = None
+ cr = None
+ for ln in data.splitlines():
+ if ln.startswith('type:'):
+ tp = ln.split()[-1][1:-1]
+ if ln.startswith('creator:'):
+ cr = ln.split()[-1][1:-1]
+
+ self.assertEquals(cr, 'ABCD')
+ self.assertEquals(tp, 'EFGH')
+
+ finally:
+ os.unlink(test_support.TESTFN)
+
+
 def testOpenRF(self):
 try:
 fp = open(test_support.TESTFN, 'w')
Modified: python/trunk/Mac/Modules/MacOS.c
==============================================================================
--- python/trunk/Mac/Modules/MacOS.c	(original)
+++ python/trunk/Mac/Modules/MacOS.c	Fri Jan 2 15:10:20 2009
@@ -30,6 +30,9 @@
 #include <Carbon/Carbon.h>
 #include <ApplicationServices/ApplicationServices.h>
 
+#include <arpa/inet.h> /* for ntohl, htonl */
+
+
 #ifndef HAVE_OSX105_SDK
 typedef SInt16	FSIORefNum;
 #endif
@@ -310,6 +313,10 @@
 		if ((err = FSpGetFInfo(&fss, &info)) != noErr) {
 			return PyErr_Mac(MacOS_Error, err);
 		}
+
+		info.fdCreator = ntohl(info.fdCreator);
+		info.fdType = ntohl(info.fdType);
+
 		creator = PyString_FromStringAndSize(
 				(char *)&info.fdCreator, 4);
 		type = PyString_FromStringAndSize((char *)&info.fdType, 4);
@@ -341,6 +348,8 @@
 
 	} 
 	finfo = (FileInfo*)&(cataloginfo.finderInfo);
+	finfo->fileCreator = ntohl(finfo->fileCreator);
+	finfo->fileType = ntohl(finfo->fileType);
 	creator = PyString_FromStringAndSize((char*)&(finfo->fileCreator), 4);
 	type = PyString_FromStringAndSize((char*)&(finfo->fileType), 4);
 
Modified: python/trunk/Misc/NEWS
==============================================================================
--- python/trunk/Misc/NEWS	(original)
+++ python/trunk/Misc/NEWS	Fri Jan 2 15:10:20 2009
@@ -224,6 +224,9 @@
 - Issue #4730: Fixed the cPickle module to handle correctly astral characters
 when protocol 0 is used.
 
+- Issue #1594: MacOS.GetCreatorAndType now always returns a big-endian result,
+ to be consistent with Apple tools.
+
 Tools/Demos
 -----------
 


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /