Fix for issue1594
This commit is contained in:
parent
8c95484cff
commit
0238497e93
|
@ -3,11 +3,66 @@ import MacOS
|
|||
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')
|
||||
|
|
|
@ -30,6 +30,9 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#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 @@ MacOS_GetCreatorAndType(PyObject *self, PyObject *args)
|
|||
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 @@ MacOS_GetCreatorAndType(PyObject *self, PyObject *args)
|
|||
|
||||
}
|
||||
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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue