summaryrefslogtreecommitdiff
path: root/lib/isobuilder.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/isobuilder.cpp')
-rw-r--r--lib/isobuilder.cpp278
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);