Esempio n. 1
0
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);
  }
Esempio n. 2
0
INT_PTR FreeOwnerDataMainMenu(WPARAM, LPARAM lParam)
{
	MainMenuExecParam *mmep = (MainMenuExecParam*)lParam;
	if (mmep != NULL) {
		FreeAndNil((void**)&mmep->szServiceName);
		FreeAndNil((void**)&mmep);
	}
	return 0;
}
Esempio n. 3
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;
}
Esempio n. 4
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 );
}
Esempio n. 5
0
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);
};
Esempio n. 7
0
INT_PTR FreeOwnerDataTrayMenu (WPARAM wParam,LPARAM lParam)
{

	lpTrayMenuExecParam mmep;
	mmep=(lpTrayMenuExecParam)lParam;
	if (mmep!=NULL){
		FreeAndNil(&mmep->szServiceName);
		FreeAndNil(&mmep);
	}

	return(0);
}
Esempio n. 8
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);
}
Esempio n. 9
0
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);
}
Esempio n. 10
0
INT_PTR FreeOwnerDataGroupMenu (WPARAM wParam,LPARAM lParam)
{

	lpGroupMenuExecParam mmep;
	mmep=(lpGroupMenuExecParam)lParam;
	if (mmep!=NULL){
		FreeAndNil((void **)&mmep->szServiceName);
		FreeAndNil((void **)&mmep);
	}

return(0);
};
Esempio n. 11
0
int FreeOwnerDataSubGroupMenu (WPARAM wParam,LPARAM lParam)
{

    lpSubGroupMenuExecParam mmep;
    mmep=(lpSubGroupMenuExecParam)lParam;
    if (mmep!=NULL) {
        FreeAndNil(&mmep->szServiceName);
        FreeAndNil(&mmep);
    }

    return(0);
};
Esempio n. 12
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();
	}
}
Esempio n. 13
0
//---------------------------------------------------------------------------
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];
}
Esempio n. 14
0
void __fastcall TfrmPluginMain::StopThread(TObject *Sender)
{
    WAShutdown();
    serverThread->WaitFor();
    FreeAndNil(serverThread);

}
Esempio n. 15
0
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;
}
Esempio n. 16
0
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;
}
Esempio n. 17
0
int MO_RemoveAllObjects()
{
	int i;
	for (i=0;i<MenuObjectsCount;i++)
	{
		RemoveAndClearOneObject(i);
	}
	MenuObjectsCount=0;
	FreeAndNil(&MenuObjects);

	return(0);
}
Esempio n. 18
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;
}
Esempio n. 19
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;
}
Esempio n. 20
0
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;
	}
}
Esempio n. 22
0
//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);
}
Esempio n. 23
0
// Close archive file and release memory. Used after archive reading and on errors
void cleanup()
{
  FreeAndNil (dirblock);
  FreeAndNil (arcinfo);
}
Esempio n. 24
0
//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;
}
Esempio n. 25
0
__fastcall TNotesResource1::~TNotesResource1(void)
{
    FreeAndNil(FNotesStorage);
}