// recursively write the files and dirs void MakeImage::WriteFiles(Directory *root, ofstream &out) { char *sector = 0; sector = new char[SECTOR_SIZE]; ZeroMemory(sector, SECTOR_SIZE); root->CreatePathDescriptor(sector, false); WriteSector(out, root->GetBlock(), sector); delete [] sector; for(UINT i=0; i < root->mChildren.size(); ++i) { WriteFiles(root->mChildren[i], out); } for(UINT i=0; i < root->mFiles.size(); ++i) { File *curFile = root->mFiles[i]; int writeSector = curFile->GetBlock(); char filePath[MAX_PATH]; strcpy_s(filePath, MAX_PATH, "cd_root"); strcat_s(filePath, MAX_PATH, curFile->GetAbsolutePath()); ifstream in; in.open(filePath, ios_base::binary); do { sector = new char[SECTOR_SIZE]; ZeroMemory(sector, SECTOR_SIZE); in.read(sector, SECTOR_SIZE); WriteSector(out, writeSector, sector); delete [] sector; ++writeSector; } while(!in.eof()); in.close(); } }