Beispiel #1
0
// 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();
    }
}