Example #1
0
void _clear_act_list( )
{
	list_entry *node = __action.flink;
	list_entry *del = NULL;

	list_entry *head = &__action;

	for ( ;
		node != &__action;		
	)
	{
		_dact *act = contain_record(node, _dact, list);
		if ( ACT_STOPPED == act->status )
		{
			if ( WaitForSingleObject(act->h_thread, 0) == WAIT_OBJECT_0 )
			{
				del = node;
				node = node->flink;

				_remove_entry_list(del); 

				CloseHandle(act->h_thread);
				free(del);
			
				continue;
			}
		}
		node = node->flink;
	}

}
Example #2
0
void _keyfiles_wipe(
		int key_list
	)
{
	_list_key_files *node, *next;
	if ( next = _first_keyfile(key_list) )
	{
		do 
		{
			node = next;
			next = _next_keyfile( node, key_list );

			_remove_entry_list( &node->next );
			secure_free( node );

		} while ( next != NULL );
	} 
}
Example #3
0
_dnode *_scan_vols_tree(
		vol_inf *vol,
		int     *count
	)
{
	list_entry *del;
	list_entry *node;
	list_entry *sub;	

	for ( node = __drives.flink;
		  node != &__drives
		  ;
		) 
	{
		_dnode *root = contain_record(node, _dnode, list);
		if ( count )
		{
			*count += 1;
		}
		for ( sub = root->root.vols.flink;
			  sub != &root->root.vols
			  ; 
			) 
		{
			_dnode *mnt = contain_record(sub, _dnode, list);
			if ( count ) 
			{
				*count += 1;
			}				
			if (! vol )
			{
				if (! mnt->exists )
				{
					del = sub;
					sub = sub->flink;

					_remove_entry_list(del);
					free(del);

					continue;
				}
			} else {
				if ( ( wcscmp(mnt->mnt.info.device, vol->device) == 0 ) && (! mnt->exists) ) 
				{
					return mnt;
				}
			}
			sub = sub->flink;
		}
		if (_is_list_empty(sub)) 
		{
			del = node;
			node = node->flink;

			_remove_entry_list(del);
			free(del);

			continue;
		}
		node = node->flink;
	}
	return NULL;

}