Example #1
0
void CLeftView::OnSelchanged(NMHDR* pNMHDR, LRESULT* pResult) 
{
	CTreeCtrl & ctr = GetTreeCtrl();
	HTREEITEM handle = NULL;
	dir *d[500],*d1[500];int i=2;
	TVINSERTSTRUCTA tritem;
	tritem.hInsertAfter = TVI_SORT;
	handle = ctr.GetSelectedItem();
	int smas = (TVIS_OVERLAYMASK | TVIS_STATEIMAGEMASK  
 | TVIS_USERMASK  );

	if(handle!=NULL){
		
	Ino = ctr.GetItemData(handle);
		
	int mas = (TVIF_CHILDREN | TVIF_IMAGE | TVIF_SELECTEDIMAGE | 
TVIF_STATE | TVIF_TEXT ); 
	
	tritem.hParent = handle;
	tritem.item.iSelectedImage = 0;
	tritem.item.iImage = 1;
	tritem.item.cChildren = 0;
	tritem.item.mask = mas;
	int DirCnt = ReadInodeData(d,Ino);
	if(DirCnt > 2)
	{	
		for(int j=0;j<DirCnt;j++)
		{
			HTREEITEM h=ctr.GetChildItem(handle);
			if(h==NULL) break;
			ctr.DeleteItem(h);
		}
		while(i < DirCnt)
		{
			int DirCnt = ReadInodeData(d1,d[i]->inode);
			if(DirCnt > 2 )
				tritem.item.cChildren = 1;
			else
				tritem.item.cChildren = 0;
			tritem.item.pszText = d[i]->name;
			tritem.item.state = TVIS_EXPANDEDONCE;
			tritem.item.stateMask = smas;
			hand[k++] = ctr.InsertItem(&tritem);
			ctr.SetItemData(hand[k-1],d[i]->inode);
			i++;
		}
			
	}
	
	CLawDoc *c=GetDocument();
	c->UpdateAllViews(this);
	}
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
	*pResult = 0;
}
Example #2
0
uint8_t* GetInodeDataSize(int fd, initrd_superblock_t* sb,
                          initrd_inode_t* inode, size_t size)
{
	uint8_t* buf = (uint8_t*) malloc(size);
	if ( !buf ) { return NULL; }
	if ( !ReadInodeData(fd, sb, inode, buf, size) ) { free(buf); return NULL; }
	return buf;
}
Example #3
0
bool PrintFile(int fd, initrd_superblock_t* sb, initrd_inode_t* inode)
{
	if ( INITRD_S_ISDIR(inode->mode ) ) { errno = EISDIR; return false; }
	uint32_t sofar = 0;
	while ( sofar < inode->size )
	{
		const size_t BUFFER_SIZE = 16UL * 1024UL;
		uint8_t buffer[BUFFER_SIZE];
		uint32_t available = inode->size - sofar;
		uint32_t count = available < BUFFER_SIZE ? available : BUFFER_SIZE;
		if ( !ReadInodeData(fd, sb, inode, buffer, count) ) { return false; }
		if ( writeall(1, buffer, count) != count ) { return false; }
		sofar += count;
	}
	return true;
}