|
From: John M M. <jo...@us...> - 2004-04-23 20:46:06
|
Update of /cvsroot/squeak/squeak/platforms/Mac OS/vm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1983/squeak/platforms/Mac OS/vm Modified Files: sqMacEncoding.c Log Message: 3.7.3b4 Update for normalized unicode pathnames Index: sqMacEncoding.c =================================================================== RCS file: /cvsroot/squeak/squeak/platforms/Mac OS/vm/sqMacEncoding.c,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** sqMacEncoding.c 2 Dec 2003 04:41:49 -0000 1.1 --- sqMacEncoding.c 23 Apr 2004 20:45:53 -0000 1.2 *************** *** 6,12 **** --- 6,15 ---- * */ + #include "sq.h" #include "sqMacEncoding.h" #include "sqMacUIConstants.h" + #include "sqMacFileLogic.h" + #if TARGET_API_MAC_CARBON *************** *** 35,40 **** if (vmPathString != NULL) CFRelease(vmPathString); ! PathToDir(path,VMPATH_SIZE, workingDirectory,kCFStringEncodingUTF8); ! vmPathString = CFStringCreateWithCString(NULL, path, kCFStringEncodingUTF8); } --- 38,49 ---- if (vmPathString != NULL) CFRelease(vmPathString); ! PathToDir(path,VMPATH_SIZE, workingDirectory,gCurrentVMEncoding); ! CFStringRef strRef = CFStringCreateWithCString(NULL, path, gCurrentVMEncoding); ! // HFS+ imposes Unicode2.1 decomposed UTF-8 encoding on all path elements ! vmPathString = CFStringCreateMutableCopy(NULL, 0, strRef); ! CFRelease(strRef); ! if (gCurrentVMEncoding == kCFStringEncodingUTF8) ! CFStringNormalize((CFMutableStringRef)vmPathString, kCFStringNormalizationFormKC); // pre-combined ! CFRetain(vmPathString); } *************** *** 58,63 **** void SetImageNameViaCFString(CFStringRef string) { char *ignore; ! CFRetain(string); ! imageNameString = string; ignore = getImageName(); } --- 67,77 ---- void SetImageNameViaCFString(CFStringRef string) { char *ignore; ! // HFS+ imposes Unicode2.1 decomposed UTF-8 encoding on all path elements ! CFMutableStringRef mutableStr= CFStringCreateMutableCopy(NULL, 0, string); ! CFRelease(string); ! if (gCurrentVMEncoding == kCFStringEncodingUTF8) ! CFStringNormalize(mutableStr, kCFStringNormalizationFormKC); // pre-combined ! CFRetain(mutableStr); ! imageNameString = mutableStr; ignore = getImageName(); } *************** *** 67,79 **** if (imageNameString != NULL) CFRelease(imageNameString); ! imageNameString = CFStringCreateWithCString(NULL, string, encoding); ! ignore = getImageName(); } void SetImageName(FSSpec *workingDirectory) { char path[IMAGE_NAME_SIZE + 1]; ! PathToFile(path,IMAGE_NAME_SIZE, workingDirectory,kCFStringEncodingUTF8); ! SetImageNameViaString(path,kCFStringEncodingUTF8); } --- 81,97 ---- if (imageNameString != NULL) CFRelease(imageNameString); ! SetImageNameViaCFString(CFStringCreateWithCString(NULL, string, encoding)); } void SetImageName(FSSpec *workingDirectory) { + SetImageNameWithEncoding(workingDirectory, gCurrentVMEncoding); + } + + void SetImageNameWithEncoding(FSSpec *workingDirectory, + CFStringEncodings encoding) { char path[IMAGE_NAME_SIZE + 1]; ! PathToFile(path,IMAGE_NAME_SIZE, workingDirectory, encoding); ! SetImageNameViaString(path, encoding); } *************** *** 175,188 **** void setEncodingType (char * string) { ! gCurrentVMEncoding = kCFStringEncodingMacRoman; ! if (strcmp("UTF-8",string) == 0) ! gCurrentVMEncoding = kCFStringEncodingUTF8; ! } ! ! char *getEncodingType(UInt32 aType) { ! if (aType == kCFStringEncodingMacRoman) ! return &"macintosh"; ! if (aType == kCFStringEncodingUTF8) ! return &"UTF-8"; ! return &"macintosh"; ! } \ No newline at end of file --- 193,210 ---- void setEncodingType (char * string) { ! gCurrentVMEncoding = kCFStringEncodingMacRoman; ! if (strcmp("UTF-8",string) == 0) ! gCurrentVMEncoding = kCFStringEncodingUTF8; ! if (strcmp("ShiftJIS",string) == 0) ! gCurrentVMEncoding = kCFStringEncodingShiftJIS; ! } ! ! char *getEncodingType(UInt32 aType) { ! if (aType == kCFStringEncodingMacRoman) ! return (char *)&"macintosh"; ! if (aType == kCFStringEncodingUTF8) ! return (char *)&"UTF-8"; ! if (aType == kCFStringEncodingShiftJIS) ! return (char *)&"ShiftJIS"; ! return (char *)&"macintosh"; ! } |