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; }
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; }
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; }