/** * Performs cleanup of Sony-CLIE specific features. */ static Err SonySilkLibFree(DIA_Settings* diaSettings) { UInt32 vskVersion=0; Err error; Assert(diaSettings); Assert(DIA_HasSonySilkLib(diaSettings)); Assert(diaSettings->sonySilkLibRefNum); error=FtrGet(sonySysFtrCreator, sonySysFtrNumVskVersion, &vskVersion); if (error) { SilkLibDisableResize(diaSettings->sonySilkLibRefNum); error=SilkLibClose(diaSettings->sonySilkLibRefNum); if (silkLibErrStillOpen==error) error=errNone; if (error) goto OnErrorFreeLib; } else { error=VskClose(diaSettings->sonySilkLibRefNum); if (vskErrStillOpen==error) error=errNone; if (error) goto OnErrorFreeLib; } OnErrorFreeLib: if (DIA_TestFlag(diaSettings, diaLoadedSonySilkLib)) { Err tmpErr=SysLibRemove(diaSettings->sonySilkLibRefNum); if (tmpErr) error=tmpErr; } diaSettings->sonySilkLibRefNum=0; return error; }
/*********************************************************************** * * FUNCTION: ZDicToolsLibRelease * * DESCRIPTION: This routine Unload a library previously loaded . * must called after GSLLibInitial. * * PARAMETERS: -> refNum The library reference number * -> bLoadP true if we need release the library. * * RETURNED: errNone if no error * * REVISION HISTORY: * Name Date Description * ---- ---- ----------- * ZhongYuanHuan 14/Aug/04 Initial Revision * ***********************************************************************/ Err ZDicToolsLibRelease(UInt16 refNum, Boolean bLoad) { Err err; if(bLoad) err = SysLibRemove(refNum); return err; }
/* * ClibRemove * 关闭并卸载通讯录拼音查找库 * * 参数: * refNum -> 已经打开的查找库的引用 * clientContext -> 已经打开的查找库的Client Context * * 返回: * 当成功关闭并卸载库时,返回errNone;否则返回对应的错误代码 */ Err CLibRemove(UInt16 refNum, UInt32 clientContext) { UInt16 error = CNLB_RUNTIME_ERROR; if (CLibClose(refNum, clientContext) == errNone) { error = SysLibRemove(refNum); } return error; }
/* close AxxPac library and remove it if necessary */ void TeardownAxxPac(void) { UInt16 numapps; Err err; if ( axxPacStatus == AXXPAC_PRESENT) { err = axxPacLibClose(LibRef, &numapps); if ( ( err == errNone ) && ( numapps == 0 ) ) SysLibRemove( LibRef ); axxPacStatus=AXXPAC_STATUS_UNKNOWN; } }
Err unloadHiRes(void) { Err rv = 0; if (hires != 0) { rv = HRClose(hires); if (didl) SysLibRemove(hires); didl = 0; hires = 0; } return (rv); }
Boolean sonyCanHires(void) { if (hires == 0) { loadHiRes(); if (hires != 0) { HRClose(hires); SysLibRemove(hires); hires = 0; return (true); } else return (false); } else return (true); }
Err GetPhoneNumber(ExtensibleBuffer* out) { Boolean fNeedToRemove=false; UInt16 refNum; Err error = GetPhoneLib(&refNum,&fNeedToRemove); if (error) return error; if ( !CheckPhonePower(refNum) ) return sysErrNotAllowed; Assert(sysInvalidRefNum!=refNum); PhnAddressList addressList=NULL; error=PhnLibGetOwnNumbers(refNum, &addressList); if (error) goto Exit; PhnAddressHandle address=NULL; error=PhnLibAPGetNth(refNum, addressList, 1, &address); if (!error && address) { char* number=PhnLibAPGetField(refNum, address, phnAddrFldPhone); MemHandleFree(address); if (number) { ebufAddStr(out, number); MemPtrFree(number); } else error=sysErrNotAllowed; } MemHandleFree(addressList); Exit: if (fNeedToRemove) SysLibRemove(refNum); return error; }