diff options
Diffstat (limited to 'lib/isobuilder.cpp')
-rw-r--r-- | lib/isobuilder.cpp | 278 |
1 files changed, 139 insertions, 139 deletions
diff --git a/lib/isobuilder.cpp b/lib/isobuilder.cpp index 5d72abb..327b55c 100644 --- a/lib/isobuilder.cpp +++ b/lib/isobuilder.cpp @@ -17,68 +17,68 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -/* $Id: isobuilder.cpp,v 1.17 2005-01-30 14:46:24 pixel Exp $ */ +/* $Id: isobuilder.cpp,v 1.18 2005-11-02 21:34:02 pixel Exp $ */ #include "isobuilder.h" -void isobuilder::Date::dump(Byte * datas) { +void isobuilder::Date::dump(Byte * data) { char pbuf[256]; sprintf(pbuf, "%04i", year); - memcpy(datas + 0, pbuf, 4); + memcpy(data + 0, pbuf, 4); sprintf(pbuf, "%02i", month); - memcpy(datas + 4, pbuf, 2); + memcpy(data + 4, pbuf, 2); sprintf(pbuf, "%02i", day); - memcpy(datas + 6, pbuf, 2); + memcpy(data + 6, pbuf, 2); sprintf(pbuf, "%02i", hour); - memcpy(datas + 8, pbuf, 2); + memcpy(data + 8, pbuf, 2); sprintf(pbuf, "%02i", minute); - memcpy(datas + 10, pbuf, 2); + memcpy(data + 10, pbuf, 2); sprintf(pbuf, "%02i", second); - memcpy(datas + 12, pbuf, 2); + memcpy(data + 12, pbuf, 2); sprintf(pbuf, "%02i", hundredths); - memcpy(datas + 14, pbuf, 2); + memcpy(data + 14, pbuf, 2); - *((char *) (datas + 16)) = offset; + *((char *) (data + 16)) = offset; } isobuilder::Date::Date(int) { year = month = day = hour = minute = second = hundredths = offset = 0; } -isobuilder::Date::Date(Byte * datas) { +isobuilder::Date::Date(Byte * data) { char pbuf[256]; - char * cdatas = (char *) datas; + char * cdata = (char *) data; - memcpy(pbuf, cdatas + 0, 4); + memcpy(pbuf, cdata + 0, 4); pbuf[4] = 0; sscanf(pbuf, "%d", &year); - memcpy(pbuf, cdatas + 4, 2); + memcpy(pbuf, cdata + 4, 2); pbuf[2] = 0; sscanf(pbuf, "%d", &month); - memcpy(pbuf, cdatas + 6, 2); + memcpy(pbuf, cdata + 6, 2); pbuf[2] = 0; sscanf(pbuf, "%d", &day); - memcpy(pbuf, cdatas + 8, 2); + memcpy(pbuf, cdata + 8, 2); pbuf[2] = 0; sscanf(pbuf, "%d", &hour); - memcpy(pbuf, cdatas + 10, 2); + memcpy(pbuf, cdata + 10, 2); pbuf[2] = 0; sscanf(pbuf, "%d", &minute); - memcpy(pbuf, cdatas + 12, 2); + memcpy(pbuf, cdata + 12, 2); pbuf[2] = 0; sscanf(pbuf, "%d", &second); - memcpy(pbuf, cdatas + 14, 2); + memcpy(pbuf, cdata + 14, 2); pbuf[2] = 0; sscanf(pbuf, "%d", &hundredths); - offset = *(cdatas + 16); + offset = *(cdata + 16); } isobuilder::DirTree::DirTree(isobuilder::DirTree * _father, bool _dir) : mode(-1), father(_father), dir(_dir) { @@ -164,19 +164,19 @@ void isobuilder::DirTree::dumpdirs(isobuilder * builder) throw (GeneralException dir += R; } - builder->putdatas(odir, size, mode, sector); + builder->putdata(odir, size, mode, sector); free(odir); } -int isobuilder::DirTree::buildpath(Byte * datas, int size, bool bigendian) throw (GeneralException) { +int isobuilder::DirTree::buildpath(Byte * data, int size, bool bigendian) throw (GeneralException) { int N, r, tr; Uint16 pn; char pbuf[256], pad; if (!dir) { if (brother) { - return brother->buildpath(datas, size, bigendian); + return brother->buildpath(data, size, bigendian); } else { return 0; } @@ -199,28 +199,28 @@ int isobuilder::DirTree::buildpath(Byte * datas, int size, bool bigendian) throw if (size < 0) throw GeneralException("Path table too small."); - datas[0] = N; - datas[1] = 0; - *((Uint32 *) (datas + 2)) = bigendian ? cdutils::swap_dword(sector) : sector; - *((Uint16 *) (datas + 6)) = bigendian ? cdutils::swap_word(pn) : pn; - memcpy(datas + 8, pbuf, N); + data[0] = N; + data[1] = 0; + *((Uint32 *) (data + 2)) = bigendian ? cdutils::to_BE32(sector) : cdutils::to_LE32(sector); + *((Uint16 *) (data + 6)) = bigendian ? cdutils::to_BE16(pn) : cdutils::to_LE16(pn); + memcpy(data + 8, pbuf, N); if (pad) - datas[8 + N] = 0; + data[8 + N] = 0; - datas += r; + data += r; if (brother) { - tr = brother->buildpath(datas, size, bigendian); + tr = brother->buildpath(data, size, bigendian); r += tr; size -= tr; - datas += tr; + data += tr; } if (child) { - tr = child->buildpath(datas, size, bigendian); + tr = child->buildpath(data, size, bigendian); r += tr; size -= tr; - datas += tr; + data += tr; } return r; @@ -285,10 +285,10 @@ int isobuilder::DirTree::buildentry(Byte * buffer, int spaceleft, bool put_xa) { d->N = N; memcpy(d->id, pbuf, N + pad + (put_xa ? 14 : 0)); - d->Sector = sector; - d->BESector = cdutils::swap_dword(sector); - d->Size = size; - d->BESize = cdutils::swap_dword(size); + d->Sector = cdutils::to_LE32(sector); + d->BESector = cdutils::to_BE32(sector); + d->Size = cdutils::to_LE32(size); + d->BESize = cdutils::to_BE32(size); if (creation.year >= 1000) { d->Year = creation.year - 1900; } else { @@ -459,7 +459,7 @@ int isobuilder::getdispsect() { } int isobuilder::putfile(Handle * file, int mode, int n) { - Byte datas[2352]; + Byte data[2352]; ssize_t filesize; int fsect; @@ -477,8 +477,8 @@ int isobuilder::putfile(Handle * file, int mode, int n) { filesize = file->GetSize(); while (filesize > 0) { - memset(datas, 0, 2352); - filesize -= file->read(datas, sec_sizes[mode]); + memset(data, 0, 2352); + filesize -= file->read(data, sec_sizes[mode]); if ((mode == MODE2_FORM1) || (mode == MODE2_FORM2)) { if (filesize) { clearEOF(); @@ -486,14 +486,14 @@ int isobuilder::putfile(Handle * file, int mode, int n) { setEOF(); } } - createsector(datas, mode); + createsector(data, mode); } return fsect; } -int isobuilder::putdatas(Byte * _datas, size_t size, int smode, int n) { - Byte datas[2352]; +int isobuilder::putdata(Byte * _data, size_t size, int smode, int n) { + Byte data[2352]; size_t eating; int dsect; if (n >= 0) { @@ -508,11 +508,11 @@ int isobuilder::putdatas(Byte * _datas, size_t size, int smode, int n) { smode = dmode; while (size > 0) { - memset(datas, 0, 2352); + memset(data, 0, 2352); eating = MIN(size, (size_t) sec_sizes[smode]); - memcpy(datas, _datas, eating); + memcpy(data, _data, eating); size -= eating; - _datas += eating; + _data += eating; if ((smode == MODE2_FORM1) || (smode == MODE2_FORM2)) { if (size) { clearEOF(); @@ -520,13 +520,13 @@ int isobuilder::putdatas(Byte * _datas, size_t size, int smode, int n) { setEOF(); } } - createsector(datas, smode); + createsector(data, smode); } return dsect; } -int isobuilder::createsector(Byte * datas, int smode, int n, int FN, int CN, int SM, int CI) { +int isobuilder::createsector(Byte * data, int smode, int n, int FN, int CN, int SM, int CI) { Byte dsector[2352]; int rsector; if (n >= 0) @@ -539,7 +539,7 @@ int isobuilder::createsector(Byte * datas, int smode, int n, int FN, int CN, int w->seek(2352 * sector, SEEK_SET); - memcpy(dsector + sec_offsts[smode], datas, sec_sizes[smode]); + memcpy(dsector + sec_offsts[smode], data, sec_sizes[smode]); if ((smode == MODE2_FORM1) || (smode == MODE2_FORM2)) { // Mode 2 Form 2 would be odd, but well.... @@ -636,7 +636,7 @@ isobuilder::DirTree * isobuilder::createdir(DirTree * p, const String & _name, i r->name = _name; r->size = size * 2048; if (!r->size) - r->size = d->Size; + r->size = cdutils::from_LE32(d->Size); r->sector = lastdispsect; if (mode >= 0) r->mode = mode; @@ -678,18 +678,18 @@ isobuilder::DirTree * isobuilder::createfile(DirTree * p, Handle * file, const S } void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntry * d, int mode) { - Byte datas[2048]; + Byte data[2048]; cdutils::DirEntry * p; - int nsectors = d->Size / 2048, ssize, c = 0; + int nsectors = cdutils::from_LE32(d->Size) / 2048, ssize, c = 0; int fsize, osize; if (mode < 0) mode = dmode; while (nsectors) { - cd->read_sector(datas, mode, d->Sector + c++); + cd->read_sector(data, mode, cdutils::from_LE32(d->Sector) + c++); nsectors--; - p = (cdutils::DirEntry *) datas; + p = (cdutils::DirEntry *) data; ssize = 2048; while ((ssize) && (p->R)) { ssize -= p->R; @@ -698,11 +698,11 @@ void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntr pbuf[p->N] = 0; if (p->Flags & 2) { if (!((p->N == 1) && ((p->id[0] == 0) || (p->id[0] == 1)))) - copydir(createdir(r, "", p->Size / 2048, p, mode), cd, p, mode); + copydir(createdir(r, "", cdutils::from_LE32(p->Size) / 2048, p, mode), cd, p, mode); } else { printm(M_INFO, "Dupping %s\n", pbuf); int fmode; - osize = fsize = p->Size; + osize = fsize = cdutils::from_LE32(p->Size); if (mode == MODE1) { fmode = mode; } else { @@ -718,15 +718,15 @@ void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntr if ((s != p->R) && ((s + 14) == p->R)) { if (!(p->id[p->N + pad + 4] & 8)) { fmode = MODE2; - fsize = (p->Size / 2048) * 2336; + fsize = (cdutils::from_LE32(p->Size) / 2048) * 2336; } } } - p->Size = fsize; + p->Size = cdutils::to_BE32(fsize); cdfile * tmp = new cdfile(cd, p, fmode); createfile(r, tmp, "", p, fmode)->size = osize; delete tmp; - p->Size = osize; + p->Size = cdutils::to_BE32(osize); } p = (cdutils::DirEntry *) (((Byte *) p) + p->R); } @@ -734,15 +734,15 @@ void isobuilder::copydir(isobuilder::DirTree * r, cdutils * cd, cdutils::DirEntr } isobuilder::PVD isobuilder::createpvd(Handle * f) { - Byte datas[2048]; - f->read(datas, 2048); - return createpvd(datas); + Byte data[2048]; + f->read(data, 2048); + return createpvd(data); } isobuilder::PVD isobuilder::createpvd(cdutils * cd) { - Byte datas[2048]; - cd->read_sector(datas, GUESS, 16); - return createpvd(datas); + Byte data[2048]; + cd->read_sector(data, GUESS, 16); + return createpvd(data); } isobuilder::PVD isobuilder::createpvd(Byte * buffer) { @@ -797,9 +797,9 @@ isobuilder::PVD isobuilder::createpvd(Byte * buffer) { } void isobuilder::close(Handle * cue, int mode, int nsects) throw (GeneralException) { - Byte datas[2048]; - Byte * pdatas; - char * cdatas = (char *) datas; + Byte data[2048]; + Byte * pdata; + char * cdata = (char *) data; int psize; if (!root) { @@ -809,82 +809,82 @@ void isobuilder::close(Handle * cue, int mode, int nsects) throw (GeneralExcepti if (nsects < 0) nsects = nsectors; - memset(datas, 0, 2048); - - pdatas = (Byte *) malloc(ptsize * 2048); - psize = root->buildpath(pdatas, ptsize * 2048); - putdatas(pdatas, ptsize * 2048, mode, ptsect); - putdatas(pdatas, ptsize * 2048, mode, ptsect + ptsize); - root->buildpath(pdatas, ptsize * 2048, true); - putdatas(pdatas, ptsize * 2048, mode, ptsect + ptsize * 2); - putdatas(pdatas, ptsize * 2048, mode, ptsect + ptsize * 3); - free(pdatas); - - datas[0] = 1; - datas[1] = 67; - datas[2] = 68; - datas[3] = 48; - datas[4] = 48; - datas[5] = 49; - datas[6] = 1; - datas[7] = 0; - - sprintf(cdatas + 8, "%-32s", pvd.sysid.to_charp()); - sprintf(cdatas + 40, "%-32s", pvd.volid.to_charp()); - *((Uint32 *) (datas + 80)) = nsects; - *((Uint32 *) (datas + 84)) = cdutils::swap_dword(nsects); - - datas[120] = 1; - datas[121] = 0; - datas[122] = 0; - datas[123] = 1; - datas[124] = 1; - datas[125] = 0; - datas[126] = 0; - datas[127] = 1; - datas[128] = 0; - datas[129] = 8; - datas[130] = 8; - datas[131] = 0; - *((Uint32 *) (datas + 132)) = psize; - *((Uint32 *) (datas + 136)) = cdutils::swap_dword(psize); - *((Uint32 *) (datas + 140)) = ptsect; - *((Uint32 *) (datas + 144)) = ptsect + ptsize; - *((Uint32 *) (datas + 148)) = cdutils::swap_dword(ptsect + ptsize * 2); - *((Uint32 *) (datas + 152)) = cdutils::swap_dword(ptsect + ptsize * 3); - - root->buildentry(datas + 156, 34, false); - - sprintf(cdatas + 190, "%-128s", pvd.volsetid.to_charp()); - sprintf(cdatas + 318, "%-128s", pvd.pubid.to_charp()); - sprintf(cdatas + 446, "%-128s", pvd.prepid.to_charp()); - sprintf(cdatas + 574, "%-128s", pvd.appid.to_charp()); - sprintf(cdatas + 702, "%-37s", pvd.copyright.to_charp()); - sprintf(cdatas + 739, "%-37s", pvd.abstract.to_charp()); - sprintf(cdatas + 776, "%-37s", pvd.biblio.to_charp()); - - pvd.volcreat.dump(datas + 813); - pvd.modif.dump(datas + 830); - pvd.volexp.dump(datas + 847); - pvd.voleff.dump(datas + 864); - - memcpy(datas + 883, pvd.appdata, 512); + memset(data, 0, 2048); + + pdata = (Byte *) malloc(ptsize * 2048); + psize = root->buildpath(pdata, ptsize * 2048); + putdata(pdata, ptsize * 2048, mode, ptsect); + putdata(pdata, ptsize * 2048, mode, ptsect + ptsize); + root->buildpath(pdata, ptsize * 2048, true); + putdata(pdata, ptsize * 2048, mode, ptsect + ptsize * 2); + putdata(pdata, ptsize * 2048, mode, ptsect + ptsize * 3); + free(pdata); + + data[0] = 1; + data[1] = 67; + data[2] = 68; + data[3] = 48; + data[4] = 48; + data[5] = 49; + data[6] = 1; + data[7] = 0; + + sprintf(cdata + 8, "%-32s", pvd.sysid.to_charp()); + sprintf(cdata + 40, "%-32s", pvd.volid.to_charp()); + *((Uint32 *) (data + 80)) = cdutils::to_LE32(nsects); + *((Uint32 *) (data + 84)) = cdutils::to_BE32(nsects); + + data[120] = 1; + data[121] = 0; + data[122] = 0; + data[123] = 1; + data[124] = 1; + data[125] = 0; + data[126] = 0; + data[127] = 1; + data[128] = 0; + data[129] = 8; + data[130] = 8; + data[131] = 0; + *((Uint32 *) (data + 132)) = cdutils::to_LE32(psize); + *((Uint32 *) (data + 136)) = cdutils::to_BE32(psize); + *((Uint32 *) (data + 140)) = cdutils::to_LE32(ptsect); + *((Uint32 *) (data + 144)) = cdutils::to_LE32(ptsect + ptsize); + *((Uint32 *) (data + 148)) = cdutils::to_BE32(ptsect + ptsize * 2); + *((Uint32 *) (data + 152)) = cdutils::to_BE32(ptsect + ptsize * 3); + + root->buildentry(data + 156, 34, false); + + sprintf(cdata + 190, "%-128s", pvd.volsetid.to_charp()); + sprintf(cdata + 318, "%-128s", pvd.pubid.to_charp()); + sprintf(cdata + 446, "%-128s", pvd.prepid.to_charp()); + sprintf(cdata + 574, "%-128s", pvd.appid.to_charp()); + sprintf(cdata + 702, "%-37s", pvd.copyright.to_charp()); + sprintf(cdata + 739, "%-37s", pvd.abstract.to_charp()); + sprintf(cdata + 776, "%-37s", pvd.biblio.to_charp()); + + pvd.volcreat.dump(data + 813); + pvd.modif.dump(data + 830); + pvd.volexp.dump(data + 847); + pvd.voleff.dump(data + 864); + + memcpy(data + 883, pvd.appdata, 512); clearEOF(); sub_EOR = 1; - createsector(datas, mode, 16); + createsector(data, mode, 16); - memset(datas, 0, 2048); - datas[0] =255; - datas[1] = 67; - datas[2] = 68; - datas[3] = 48; - datas[4] = 48; - datas[5] = 49; - datas[6] = 1; + memset(data, 0, 2048); + data[0] =255; + data[1] = 67; + data[2] = 68; + data[3] = 48; + data[4] = 48; + data[5] = 49; + data[6] = 1; setEOF(); - createsector(datas, mode); + createsector(data, mode); root->dumpdirs(this); |