// Fetch the file for a given inode block-by-block, printing the data func PrintFile(fs *minixfs.FileSystem, inode *minixfs.Inode) { blocksize := fs.Block_size filesize := uint(inode.Size) position := uint(0) for position < filesize { blocknum := fs.ReadMap(inode, position) block, err := fs.GetFullDataBlock(blocknum) if err != nil { fmt.Printf("Failed to get data block: %d - %s\n", blocknum, err) break } if filesize-position >= blocksize { fmt.Printf("%s", block.Data) } else { fmt.Printf("%s", block.Data[:filesize-position]) } position = position + blocksize } fmt.Printf("\n") }