[ome] / OME_CoreApp / Utils.c Repository:
ViewVC logotype

View of /OME_CoreApp/Utils.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (download) (annotate)
Sun Apr 6 08:17:50 2008 UTC (2 years, 5 months ago) by msyk
File size: 8079 byte(s)
First Import
/*
 *  Utils.c
 *  OME_Core
 *
 *  Created by 新居雅行 on Wed Feb 18 2004.
 *  Copyright (c) 2004 __MyCompanyName__. All rights reserved.
 *
 */

#include "main.h"

Boolean isSameFileName( HFSUniStr255 * f1, HFSUniStr255 *f2 )   {
	int i;
	Boolean isSame = false;
	if ( f1->length == f2->length )  {
		isSame = true;
		for (i = 0 ; i < f1->length ; i++ )
			if ( f1->unicode[i] != f2->unicode[i] )  {
				isSame = false;
				break;
			}
	}
	return isSame;
}

Boolean CheckSuffixOfFileName( HFSUniStr255 * fn, char * suffix)	{
	int i;

	size_t suffixLength = strlen(suffix);
	for ( i = 0 ; i < suffixLength ; i++)   {
		if ( fn->unicode[fn->length - suffixLength + i] != suffix[i])
			return false;
	}
	return true;
}

char * GetCStringPtrFromFileName(  HFSUniStr255 * fn )  {

	CFStringRef s = CFStringCreateWithCharacters(NULL ,fn->unicode ,fn->length);
	return (char *)CFStringGetCStringPtr(s, kCFStringEncodingUTF8);

}

Boolean isAlphaNumeric(char c)	{
    Boolean r = false;
    if(		((c>='0')&&(c<='9'))
		||  ((c>='A')&&(c<='Z'))
		||  ((c>='a')&&(c<='z')))
		r = true;
    return r;
}

unsigned char getCharFromHex(char d1, char d2)	{
    unsigned char rVal = 0;
    if((d1>='0')&&(d1<='9'))	rVal += (d1-'0')*16;
    if((d1>='A')&&(d1<='Z'))	rVal += (d1-'A'+10)*16;
    if((d1>='a')&&(d1<='z'))	rVal += (d1-'a'+10)*16;
    if((d2>='0')&&(d2<='9'))	rVal += (d2-'0')*1;
    if((d2>='A')&&(d2<='Z'))	rVal += (d2-'A'+10)*1;
    if((d2>='a')&&(d2<='z'))	rVal += (d2-'a'+10)*1;
    return rVal;
}

//フォルダを参照するFSRefとそのフォルダ内の項目名をCFStringで与えて、その項目へのFSRefを得る
OSStatus FSMakeFSRefCFString(FSRef *parentFolder, CFStringRef itemName, FSRef *targetRef)
{
    UniChar *chars, *buffer;
    CFIndex length;
    OSStatus er;
    
    chars = (UniChar*)CFStringGetCharactersPtr(itemName);
    length = CFStringGetLength(itemName);
    if (chars == NULL) { 
        length = CFStringGetLength(itemName); 
        buffer = (UniChar*)malloc(length * sizeof(UniChar)); 
        CFStringGetCharacters(itemName, CFRangeMake(0, length), buffer); 
        er = FSMakeFSRefUnicode (parentFolder ,length , buffer, kTextEncodingUnknown, targetRef); 
        free(buffer); 
    } 
    else
        er = FSMakeFSRefUnicode (parentFolder ,length , chars, kTextEncodingUnknown, targetRef);

    return er;
}
/*
//初期設定フォルダへのFSRefを取得するルーチン
OSStatus FSMakePreferencesFSRef(FSRef *prefRef)
{
//    FSSpec 	prefSpec;
//    short	prefVRef;
//    long	prefDirID;
    OSStatus	er;
//    UInt8	path[255];
    
    er = FSFindFolder(kUserDomain, kPreferencesFolderType, kDontCreateFolder, prefRef);

    if(er != noErr)	{
        strcpy((char*)path, "~/Library/Preferences");
        er = FSPathMakeRef (path, prefRef, NULL);
    }
    else	{
        er = FSMakeFSSpec(prefVRef, prefDirID, NULL, &prefSpec);
        er = FSpMakeFSRef (&prefSpec, prefRef);
    }

    return er;
}
*/
//OME_Preferencesフォルダへの参照を得る
OSStatus MakeOMEPrefrerencesFSRef(FSRef *omePrefRef)
{
	FSRef prefRef;
	OSStatus er;
	CFStringRef folderName;
	
//	er = FSMakePreferencesFSRef(&prefRef);
	er = FSFindFolder(kUserDomain, kPreferencesFolderType, kDontCreateFolder, &prefRef);
    //「OME設定」フォルダへのFSRefを取得する
    folderName = CFStringCreateWithCString (
		NULL, "OME_Preferences", kCFStringEncodingMacJapanese );
    er = FSMakeFSRefCFString(&prefRef, folderName, omePrefRef);  
    
    if(er == fnfErr)	{	//OME設定フォルダが存在しない場合、ローカライズ版をチェック
        folderName = CFStringCreateWithCString (
			NULL, "OME_Preferences.localized", kCFStringEncodingMacJapanese);
        er = FSMakeFSRefCFString(&prefRef, folderName, omePrefRef);
    }
	
	
	return er;
}

//OMEのルートフォルダへの参照を得る
OSStatus MakeOMERootFSRef(FSRef *omeRootRef)
{
	FSRef omePrefRef;
	OSStatus er;
	Boolean b1, b2;
	CFStringRef fileName;
	
	er = MakeOMEPrefrerencesFSRef(&omePrefRef); //「OME設定」フォルダへのFSRefを取得する
    fileName = CFStringCreateWithCString (
		NULL, "OME_Root", kCFStringEncodingMacJapanese );
	er = FSMakeFSRefCFString(&omePrefRef, fileName, omeRootRef);
    
	er = FSResolveAliasFile(omeRootRef, TRUE, &b1, &b2);
	return er;
}

//もう一つのOMEのルートフォルダへの参照を得る
OSStatus MakeOMERootAltFSRef(FSRef *omeRootRef)
{
	FSRef omePrefRef;
	OSStatus er;
	Boolean b1, b2;
	CFStringRef fileName;
	
	er = MakeOMEPrefrerencesFSRef(&omePrefRef); //「OME設定」フォルダへのFSRefを取得する
    fileName = CFStringCreateWithCString (
		NULL, "OME_Root_Alt", kCFStringEncodingMacJapanese );
	er = FSMakeFSRefCFString(&omePrefRef, fileName, omeRootRef);
    
	er = FSResolveAliasFile(omeRootRef, TRUE, &b1, &b2);
	return er;
}

//OMEのtempフォルダへの参照を得る
OSStatus MakeOMETempFSRef(FSRef *omeTempRef)
{
	FSRef omeRootRef;
	OSStatus er;
	CFStringRef fileName;
	
	er = MakeOMERootFSRef(&omeRootRef);
    fileName = CFStringCreateWithCString (
		NULL, "temp", kCFStringEncodingMacJapanese );
	er = FSMakeFSRefCFString(&omeRootRef, fileName, omeTempRef);
	return er;
}

//もう一つのOMEのtempフォルダへの参照を得る
OSStatus MakeOMETempAltFSRef(FSRef *omeTempRef)
{
	FSRef omeRootRef;
	OSStatus er;
	CFStringRef fileName;
	
	er = MakeOMERootAltFSRef(&omeRootRef);
    fileName = CFStringCreateWithCString (
		NULL, "temp", kCFStringEncodingMacJapanese );
	er = FSMakeFSRefCFString(&omeRootRef, fileName, omeTempRef);
	return er;
}

//OMEのunreadAliasesフォルダへの参照を得る
OSStatus MakeOMEUnreadAliasFSRef(FSRef *omeUnreadAliasRef)
{
	FSRef omeTempRef;
	OSStatus er;
	CFStringRef fileName;
	
	er = MakeOMETempFSRef(&omeTempRef);
    fileName = CFStringCreateWithCString (
		NULL, "unreadAliases", kCFStringEncodingMacJapanese );
	er = FSMakeFSRefCFString(&omeTempRef, fileName, omeUnreadAliasRef);
	return er;
}

//もう一つのOMEのunreadAliasesフォルダへの参照を得る
OSStatus MakeOMEUnreadAliasAltFSRef(FSRef *omeUnreadAliasRef)
{
	FSRef omeTempRef;
	OSStatus er;
	CFStringRef fileName;
	
	er = MakeOMETempAltFSRef(&omeTempRef);
    fileName = CFStringCreateWithCString (
		NULL, "unreadAliases", kCFStringEncodingMacJapanese );
	er = FSMakeFSRefCFString(&omeTempRef, fileName, omeUnreadAliasRef);
	return er;
}

OSStatus MakeLaunchInfoFromAlias(
			LSLaunchFSRefSpec * launchInfo,
			CFStringRef aliasName,
			char * altanateAppPath) {
			
	OSStatus er;
	FSRef omePrefRef, *targetRefPtr;
	Boolean d1, d2, isFolder;
	
	er = MakeOMEPrefrerencesFSRef( &omePrefRef );
	targetRefPtr = (FSRef *)NewPtr( sizeof(FSRef) );
	er = FSMakeFSRefCFString(&omePrefRef, aliasName, targetRefPtr);

	if(er != fnfErr)
		er = FSResolveAliasFile(targetRefPtr, true, &d1, &d2);
	else
		er = FSPathMakeRef ((UInt8*)altanateAppPath, targetRefPtr, &isFolder);

	launchInfo->appRef=targetRefPtr;
	launchInfo->numDocs = 1;
	launchInfo->passThruParams = nil;
	launchInfo->launchFlags = kLSLaunchDefaults;
	launchInfo->asyncRefCon = 0;  
	
	return er;
}

OSStatus MakeLaunchInfoFromAlias3Alts(
			LSLaunchFSRefSpec * launchInfo,
			CFStringRef aliasName,
			char * altanateAppPath1,
			char * altanateAppPath2,
			char * altanateAppPath3) {
			
	OSStatus er;
	FSRef omePrefRef, *targetRefPtr;
	Boolean d1, d2, isFolder;
	
	er = MakeOMEPrefrerencesFSRef( &omePrefRef );
	targetRefPtr = (FSRef *)NewPtr( sizeof(FSRef) );
	er = FSMakeFSRefCFString(&omePrefRef, aliasName, targetRefPtr);

	if(er != fnfErr)
		er = FSResolveAliasFile(targetRefPtr, true, &d1, &d2);
	else	{
		er = FSPathMakeRef ((UInt8*)altanateAppPath1, targetRefPtr, &isFolder);
		if(er == fnfErr)	{
			er = FSPathMakeRef ((UInt8*)altanateAppPath2, targetRefPtr, &isFolder);
			if(er == fnfErr)	{
				er = FSPathMakeRef ((UInt8*)altanateAppPath3, targetRefPtr, &isFolder);
			}
		}
	}

	launchInfo->appRef=targetRefPtr;
	launchInfo->numDocs = 1;
	launchInfo->passThruParams = nil;
	launchInfo->launchFlags = kLSLaunchDefaults;
	launchInfo->asyncRefCon = 0;  
	
	return er;
}

This site is managed by Masayuki Nii.
ViewVC Help
Powered by ViewVC 1.0.5