int WINAPI _export GetArcItem(struct PluginPanelItem *Item,struct ArcItemInfo *Info) { if (setjmp(jumper) != 0) {cleanup(); return GETARC_BROKEN;} // Сюда мы попадём при возникновении ошибки в одной из вызываемых процедур // Считаем следующий блок каталога архива, если все файлы из текущего уже перечислены if( current_block < 0 || ++current_file_in_block >= dirblock->total_files) { FreeAndNil (dirblock); for(;;) { if( ++current_block == arcinfo->control_blocks_descriptors.size ) { return GETARC_EOF; } // Если это блок каталога - прочитаем его и выйдем из цикла BLOCK& descriptor = arcinfo->control_blocks_descriptors [current_block]; if (descriptor.type == DIR_BLOCK) { dirblock = new DIRECTORY_BLOCK (*arcinfo, descriptor); current_file_in_block = current_data_block = 0; if (dirblock->total_files>0) break; FreeAndNil (dirblock); } } //printf("%d files\n", dirblock->total_files); } // Заполним описание файла int i = current_file_in_block; Item->FindData.dwFileAttributes = dirblock->isdir[i]? FILE_ATTRIBUTE_DIRECTORY : 0; UnixTimeToFileTime (dirblock->time[i], &Item->FindData.ftLastWriteTime); Item->FindData.nFileSizeHigh = ((uint64) dirblock->size[i]) >> 32; Item->FindData.nFileSizeLow = dirblock->size[i]; char utf8name[MY_FILENAME_MAX*4]; WCHAR utf16name[MY_FILENAME_MAX*2]; dirblock->fullname (i, utf8name); utf8_to_utf16 (utf8name, utf16name); CharToOemW (utf16name, Item->FindData.cFileName); Item->CRC32 = dirblock->crc[i]; Info->UnpVer = UnpVer; // Теперь извлечём информацию из описания солид-блока int &b = current_data_block; // Увеличим номер солид-блока если мы вышли за последний принадлежащий ему файл if (current_file_in_block >= dirblock->block_end(b)) b++; // Если это первый файл в солид-блоке - соберём block-related информацию if (current_file_in_block == dirblock->block_start(b)) { // Запишем на первый файл в блоке весь его упакованный размер uint64 packed = dirblock->data_block[b].compsize; Item->PackSizeHigh = packed >> 32; Item->PackSize = packed; // Запомним информацию о солид-блоке для использования её со всеми файлами из этого солид-блока char *c = dirblock->data_block[b].compressor; Solid = dirblock->block_start(b)+1 != dirblock->block_end(b); Encrypted = strstr (c, "+aes-")!=NULL || strstr (c, "+serpent-")!=NULL || strstr (c, "+blowfish-")!=NULL || strstr (c, "+twofish-")!=NULL; DictSize = compressorGetDecompressionMem (dirblock->data_block[b].compressor); }
INT_PTR FreeOwnerDataMainMenu(WPARAM, LPARAM lParam) { MainMenuExecParam *mmep = (MainMenuExecParam*)lParam; if (mmep != NULL) { FreeAndNil((void**)&mmep->szServiceName); FreeAndNil((void**)&mmep); } return 0; }
INT_PTR FreeOwnerDataContactMenu(WPARAM, LPARAM lParam) { ContactMenuExecParam *cmep = (ContactMenuExecParam*)lParam; if (cmep != NULL) { FreeAndNil((void**)&cmep->szServiceName); FreeAndNil((void**)&cmep->pszContactOwner); FreeAndNil((void**)&cmep); } return 0; }
void TIntMenuObject::freeItem( TMO_IntMenuItem* p ) { if ( FreeService ) CallService( FreeService, ( WPARAM )p, ( LPARAM )p->mi.ownerdata ); FreeAndNil(( void** )&p->mi.pszName ); FreeAndNil(( void** )&p->UniqName ); FreeAndNil(( void** )&p->CustomName ); if ( p->hBmp ) DeleteObject( p->hBmp ); mir_free( p ); }
INT_PTR FreeOwnerDataStatusMenu(WPARAM, LPARAM lParam) { StatusMenuExecParam *smep = (StatusMenuExecParam*)lParam; if (smep != NULL) { FreeAndNil((void**)&smep->proto); FreeAndNil((void**)&smep->svc); FreeAndNil((void**)&smep); } return (0); }
int FreeOwnerDataFrameMenu (WPARAM wParam,LPARAM lParam) { lpFrameMenuExecParam cmep; cmep=(lpFrameMenuExecParam)lParam; if (cmep!=NULL){ FreeAndNil(&cmep->szServiceName); FreeAndNil(&cmep); } return(0); };
INT_PTR FreeOwnerDataTrayMenu (WPARAM wParam,LPARAM lParam) { lpTrayMenuExecParam mmep; mmep=(lpTrayMenuExecParam)lParam; if (mmep!=NULL){ FreeAndNil(&mmep->szServiceName); FreeAndNil(&mmep); } return(0); }
TIntMenuObject::~TIntMenuObject() { MO_RecursiveWalkMenu( m_items.first, FreeMenuItem, NULL ); FreeAndNil(( void** )&FreeService ); FreeAndNil(( void** )&onAddService ); FreeAndNil(( void** )&CheckService ); FreeAndNil(( void** )&ExecService ); FreeAndNil(( void** )&Name ); ImageList_Destroy(m_hMenuIcons); }
void TIntMenuObject::freeItem(TMO_IntMenuItem *p) { if (FreeService) CallService(FreeService, (WPARAM)p, (LPARAM)p->pUserData); p->signature = 0; FreeAndNil((void**)&p->mi.name.t); FreeAndNil((void**)&p->UniqName); FreeAndNil((void**)&p->CustomName); if (p->hBmp) DeleteObject(p->hBmp); mir_free(p); }
INT_PTR FreeOwnerDataGroupMenu (WPARAM wParam,LPARAM lParam) { lpGroupMenuExecParam mmep; mmep=(lpGroupMenuExecParam)lParam; if (mmep!=NULL){ FreeAndNil((void **)&mmep->szServiceName); FreeAndNil((void **)&mmep); } return(0); };
int FreeOwnerDataSubGroupMenu (WPARAM wParam,LPARAM lParam) { lpSubGroupMenuExecParam mmep; mmep=(lpSubGroupMenuExecParam)lParam; if (mmep!=NULL) { FreeAndNil(&mmep->szServiceName); FreeAndNil(&mmep); } return(0); };
void TNotesResource1::Get(TEndpointContext* AContext, TEndpointRequest* ARequest, TEndpointResponse* AResponse) { String LTitle = ""; std::auto_ptr<TNote> LNote(new TNote()); std::vector<TNote*> * lNotes = NULL; TJSONArray * lJson = NULL; try { this->CheckNotesManager(AContext); if(ARequest->Params->TryGetValue("title", LTitle)) { // Find a note with a particular title if(FNotesStorage->FindNote(LTitle, LNote.get())) { lNotes = new std::vector<TNote*>(); lNotes->push_back(LNote.get()); } else { lNotes = NULL; } } else { lNotes = FNotesStorage->GetNotes(); } lJson = TNoteJSON::NotesToJSON(lNotes); AResponse->Body->SetValue(lJson, true); } catch(...) { FreeAndNil(lJson); HandleException(); } }
//--------------------------------------------------------------------------- void __fastcall THttpTestForm::SslHttpCli1SslCliCertRequest(TObject *Sender, TX509Base *&Cert) { TX509Base *X; // A very simple test of the SslCliCertRequest event. } // This event is triggered only if CertFileEdit.Text is empty, } // the server requested a certificate from the client, } // and of course only in case of the SSL session wasn't reused. } if (FClientCerts == NULL) { // Create a pool of client certs ClientCertDlg->CertListBox->Clear(); FClientCerts = new TX509List(this, true); try { X = FClientCerts->Add(); X->LoadFromPemFile("01cert.pem"); X->PrivateKeyLoadFromPemFile("01key.pem", "password"); ClientCertDlg->CertListBox->Items->Add(X->SubjectOneLine); X = FClientCerts->Add(); X->LoadFromPemFile("client.pem", True, "password"); ClientCertDlg->CertListBox->Items->Add(X->SubjectOneLine); } catch (const Exception& E) { FreeAndNil(FClientCerts); throw(E); } } ClientCertDlg->CertListBox->ItemIndex = 0; if (ClientCertDlg->ShowModal() == mrOk) Cert = FClientCerts->Items[ClientCertDlg->CertListBox->ItemIndex]; }
void __fastcall TfrmPluginMain::StopThread(TObject *Sender) { WAShutdown(); serverThread->WaitFor(); FreeAndNil(serverThread); }
int MO_SetOptionsMenuItem(WPARAM wParam,LPARAM lParam) { lpOptParam lpop; PMO_IntMenuItem pimi; int objidx; if (!isGenMenuInited) return -1; if (lParam==0){return(0);} lockmo(); setcnt++; __try { lpop=(lpOptParam)lParam; pimi=MO_GetIntMenuItem(lpop->Handle); if (pimi==NULL){unlockmo();return(-1);} objidx=GetObjIdxByItemId(pimi->id); if (objidx==-1){unlockmo();return(-1);} switch(lpop->Setting) { case OPT_MENUITEMSETUNIQNAME: if (!(pimi->mi.flags&CMIF_ROOTPOPUP)) { FreeAndNil(&pimi->UniqName); pimi->UniqName=mir_strdup((char*)lpop->Value); } break; } return(1); } __finally { setcnt--; unlockmo(); } return 1; }
int MO_SetOptionsMenuObject( HANDLE handle, int setting, INT_PTR value ) { int pimoidx; int res = 0; if ( !bIsGenMenuInited ) return -1; EnterCriticalSection( &csMenuHook ); __try { pimoidx = GetMenuObjbyId( (int)handle ); res = pimoidx != -1; if ( res ) { TIntMenuObject* pmo = g_menus[pimoidx]; switch ( setting ) { case OPT_MENUOBJECT_SET_ONADD_SERVICE: FreeAndNil(( void** )&pmo->onAddService ); pmo->onAddService = mir_strdup(( char* )value ); break; case OPT_MENUOBJECT_SET_FREE_SERVICE: FreeAndNil(( void** )&pmo->FreeService ); pmo->FreeService = mir_strdup(( char* )value ); break; case OPT_MENUOBJECT_SET_CHECK_SERVICE: FreeAndNil(( void** )&pmo->CheckService ); pmo->CheckService = mir_strdup(( char* )value); break; case OPT_USERDEFINEDITEMS: pmo->m_bUseUserDefinedItems = ( BOOL )value; break; } } } __except( EXCEPTION_EXECUTE_HANDLER ) {} LeaveCriticalSection( &csMenuHook ); return res; }
int MO_RemoveAllObjects() { int i; for (i=0;i<MenuObjectsCount;i++) { RemoveAndClearOneObject(i); } MenuObjectsCount=0; FreeAndNil(&MenuObjects); return(0); }
int RecursiveRemoveChilds(int pos,ListParam *param) { ListParam localparam; int rootid; int i=0; int menuitemid;//id int objidx;//pos in array int *MenuItemsCount; PMO_IntMenuItem *MenuItems=NULL; objidx=GetMenuObjbyId(param->MenuObjectHandle); if ((objidx==-1)){return(-1);} localparam=*param; //rootid=(*param->MenuItems)[pos].id|param->cntFlag; rootid=getGlobalId(MenuObjects[objidx].id,MenuObjects[objidx].MenuItems[pos].id); menuitemid=MenuObjects[objidx].MenuItems[pos].id; MenuItems=&MenuObjects[objidx].MenuItems; MenuItemsCount=&MenuObjects[objidx].MenuItemsCount; if ((*MenuItems)[pos].mi.flags&CMIF_ROOTPOPUP) { while(i<*MenuItemsCount) { if ((*MenuItems)[i].mi.root!=rootid||(*MenuItems)[i].mi.root==-1) { i++; continue; } if ((*MenuItems)[i].mi.flags&CMIF_ROOTPOPUP) { RecursiveRemoveChilds(i,&localparam); i=0; continue; } if ((*MenuItems)[i].mi.flags&CMIF_CHILDPOPUP) { FreeAndNil(&((*MenuItems)[i].mi.pszName)); FreeAndNil(&((*MenuItems)[i].CustomName)); FreeAndNil(&((*MenuItems)[i].UniqName)); if (MenuObjects[objidx].FreeService) CallService(MenuObjects[objidx].FreeService,(WPARAM)(*MenuItems)[i].globalid,(LPARAM)(*MenuItems)[i].mi.ownerdata); RemoveFromList(i,(void **)MenuItems,MenuItemsCount,sizeof(TMO_IntMenuItem)); i=0; continue; } } } i = GetMenuItembyId( objidx, menuitemid ); if ( i >= 0 && i < *MenuItemsCount ) { FreeAndNil(&((*MenuItems)[i].mi.pszName)); FreeAndNil(&((*MenuItems)[i].CustomName)); FreeAndNil(&((*MenuItems)[i].UniqName)); if (MenuObjects[objidx].FreeService) CallService(MenuObjects[objidx].FreeService,(WPARAM)(*MenuItems)[i].globalid,(LPARAM)(*MenuItems)[i].mi.ownerdata); RemoveFromList(i,(void **)MenuItems,MenuItemsCount,sizeof(TMO_IntMenuItem)); } return 0; }
int MO_SetOptionsMenuObject(WPARAM wParam,LPARAM lParam) { int pimoidx; lpOptParam lpop; if (!isGenMenuInited) return -1; if (lParam==0){return(0);} lockmo(); __try { lpop=(lpOptParam)lParam; pimoidx=GetMenuObjbyId(lpop->Handle); if (pimoidx==-1){return(0);} switch(lpop->Setting) { case OPT_MENUOBJECT_SET_ONADD_SERVICE: FreeAndNil(&MenuObjects[pimoidx].onAddService); MenuObjects[pimoidx].onAddService=mir_strdup((char *)lpop->Value); break; case OPT_MENUOBJECT_SET_FREE_SERVICE: FreeAndNil(&MenuObjects[pimoidx].FreeService); MenuObjects[pimoidx].FreeService=mir_strdup((char *)lpop->Value); break; case OPT_USERDEFINEDITEMS: MenuObjects[pimoidx].bUseUserDefinedItems=(BOOL)lpop->Value; break; } return(1); } __finally { unlockmo(); } return 1; }
void RemoveAndClearOneObject(int arpos) { int j; for (j=0;j<MenuObjects[arpos].MenuItemsCount;j++) { if (MenuObjects[arpos].FreeService) CallService(MenuObjects[arpos].FreeService,(WPARAM)MenuObjects[arpos].MenuItems[j].globalid,(LPARAM)MenuObjects[arpos].MenuItems[j].mi.ownerdata); FreeAndNil(&MenuObjects[arpos].MenuItems[j].mi.pszName); FreeAndNil(&MenuObjects[arpos].MenuItems[j].UniqName); FreeAndNil(&MenuObjects[arpos].MenuItems[j].CustomName); } FreeAndNil(&MenuObjects[arpos].MenuItems); MenuObjects[arpos].MenuItemsCount=0; FreeAndNil(&MenuObjects[arpos].FreeService); FreeAndNil(&MenuObjects[arpos].onAddService); FreeAndNil(&MenuObjects[arpos].CheckService); FreeAndNil(&MenuObjects[arpos].ExecService); FreeAndNil(&MenuObjects[arpos].Name); ImageList_Destroy(MenuObjects[arpos].hMenuIcons); }
//--------------------------------------------------------------------------- void __fastcall TNotesAdapterModule::UpdateAdapter(std::vector<TNote*> *ANotes) { if (ComponentState.Contains(csDestroying)) { return; } TList__1<TObject*> *lList = new TList__1<TObject*>(); try { for(std::vector<TNote*>::iterator it = ANotes->begin(); it != ANotes->end(); it++) { lList->Add(new TNoteWrapper(*it)); if(FBindSourceAdapter == NULL) { FBindSourceAdapter = new TListBindSourceAdapter(this, lList, __classid(TNoteWrapper), true); } FBindSourceAdapter->SetList(lList, true); FBindSourceAdapter->Active = true; } } catch (...) { FreeAndNil(lList); throw; } }
//wparam MenuItemHandle //lparam PMO_MenuItem int MO_ModifyMenuItem(WPARAM wParam,LPARAM lParam) { PMO_MenuItem pmiparam=(PMO_MenuItem)lParam; PMO_IntMenuItem pimi; int oldflags; int objidx; if (!isGenMenuInited) return -1; if (pmiparam==NULL){return(-1);} lockmo(); pimi=MO_GetIntMenuItem(wParam); if (pimi==NULL){unlockmo();return(-1);} if (pmiparam->cbSize!=sizeof(TMO_MenuItem)){unlockmo();return(-1);} objidx=GetObjIdxByItemId(pimi->id); if (objidx==-1){unlockmo();return(-1);} if (pmiparam->flags&CMIM_NAME) { FreeAndNil(&pimi->mi.pszName); pimi->mi.pszName = mir_tstrdup(pmiparam->pszName); } if (pmiparam->flags&CMIM_FLAGS) { oldflags=(pimi->mi.flags&CMIF_ROOTPOPUP)|(pimi->mi.flags&CMIF_CHILDPOPUP); pimi->mi.flags=pmiparam->flags&~CMIM_ALL; pimi->mi.flags|=oldflags; } if (pmiparam->flags&CMIM_ICON) { pimi->mi.hIcon=pmiparam->hIcon; if (pmiparam->hIcon!=NULL) pimi->iconId=ImageList_ReplaceIcon(MenuObjects[objidx].hMenuIcons,pimi->iconId,pmiparam->hIcon); else pimi->iconId=-1; //fixme, should remove old icon & shuffle all iconIds } if (pmiparam->flags&CMIM_HOTKEY) { pimi->mi.hotKey=pmiparam->hotKey; } if (pmiparam->flags&CMIM_HOTKEY) { pimi->mi.hotKey=pmiparam->hotKey; } unlockmo(); return(0); }
// Close archive file and release memory. Used after archive reading and on errors void cleanup() { FreeAndNil (dirblock); FreeAndNil (arcinfo); }
//wparam MenuItemHandle //lparam PMO_MenuItem int MO_ModifyMenuItem( PMO_IntMenuItem menuHandle, PMO_MenuItem pmi ) { int oldflags; if ( !bIsGenMenuInited || pmi == NULL || pmi->cbSize != sizeof( TMO_MenuItem )) return -1; EnterCriticalSection( &csMenuHook ); PMO_IntMenuItem pimi = MO_GetIntMenuItem(( HGENMENU )menuHandle ); if ( !pimi ) { LeaveCriticalSection( &csMenuHook ); return -1; } if ( pmi->flags & CMIM_NAME ) { FreeAndNil(( void** )&pimi->mi.pszName ); #if defined( _UNICODE ) if ( pmi->flags & CMIF_UNICODE ) pimi->mi.ptszName = mir_tstrdup(( pmi->flags & CMIF_KEEPUNTRANSLATED ) ? pmi->ptszName : TranslateTS( pmi->ptszName )); else { if ( pmi->flags & CMIF_KEEPUNTRANSLATED ) { int len = lstrlenA( pmi->pszName ); pimi->mi.ptszName = ( TCHAR* )mir_alloc( sizeof( TCHAR )*( len+1 )); MultiByteToWideChar( CP_ACP, 0, pmi->pszName, -1, pimi->mi.ptszName, len+1 ); pimi->mi.ptszName[ len ] = 0; } else pimi->mi.ptszName = LangPackPcharToTchar( pmi->pszName ); } #else pimi->mi.ptszName = mir_strdup(( pmi->flags & CMIF_KEEPUNTRANSLATED ) ? pmi->ptszName : Translate( pmi->ptszName )); #endif } if ( pmi->flags & CMIM_FLAGS ) { oldflags = pimi->mi.flags & ( CMIF_ROOTHANDLE | CMIF_ICONFROMICOLIB ); pimi->mi.flags = (pmi->flags & ~CMIM_ALL) | oldflags; } if ( (pmi->flags & CMIM_ICON) && !bIconsDisabled ) { if ( pimi->mi.flags & CMIF_ICONFROMICOLIB ) { HICON hIcon = IcoLib_GetIconByHandle( pmi->hIcolibItem, false ); if ( hIcon != NULL ) { pimi->hIcolibItem = pmi->hIcolibItem; pimi->iconId = ImageList_ReplaceIcon( pimi->parent->m_hMenuIcons, pimi->iconId, hIcon ); IconLib_ReleaseIcon( hIcon, 0 ); } else pimi->iconId = -1, pimi->hIcolibItem = NULL; } else { pimi->mi.hIcon = pmi->hIcon; if ( pmi->hIcon != NULL ) pimi->iconId = ImageList_ReplaceIcon( pimi->parent->m_hMenuIcons, pimi->iconId, pmi->hIcon ); else pimi->iconId = -1; //fixme, should remove old icon & shuffle all iconIds } if (pimi->hBmp) DeleteObject(pimi->hBmp); pimi->hBmp = NULL; } if ( pmi->flags & CMIM_HOTKEY ) pimi->mi.hotKey = pmi->hotKey; LeaveCriticalSection( &csMenuHook ); return 0; }
__fastcall TNotesResource1::~TNotesResource1(void) { FreeAndNil(FNotesStorage); }