* added and used the macro RETURN_AND_SET_STATUS()

* added parsing for DQue, DQTi, DQSz, DQMi tags. This could be used to check if an application is actually installed.
* added parsing for PtcI (unknown use).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34981 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Jérôme Duval
2010-01-09 22:05:04 +00:00
parent 5e0aacb9f8
commit 0064d3243a
+97 -97
View File
@@ -19,6 +19,10 @@
// Macro reserved for later localization // Macro reserved for later localization
#define T(x) x #define T(x) x
#define RETURN_AND_SET_STATUS(err) fStatus = err; \
fprintf(stderr, "err at %s():%d: %x\n", __FUNCTION__, __LINE__, err); \
return fStatus;
const uint32 kSkipOffset = 33; const uint32 kSkipOffset = 33;
// Section constants // Section constants
@@ -91,8 +95,7 @@ PackageInfo::Parse()
{ {
// TODO: Clean up // TODO: Clean up
if (!fPackageFile || fPackageFile->InitCheck() != B_OK) { if (!fPackageFile || fPackageFile->InitCheck() != B_OK) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
// Check for the presence of the first AlB tag - as the 'magic number'. // Check for the presence of the first AlB tag - as the 'magic number'.
@@ -102,8 +105,7 @@ PackageInfo::Parse()
fPackageFile->Read(buffer, 8); fPackageFile->Read(buffer, 8);
if (buffer[0] != 'A' || buffer[1] != 'l' || buffer[2] != 'B' if (buffer[0] != 'A' || buffer[1] != 'l' || buffer[2] != 'B'
|| buffer[3] != 0x1a) { || buffer[3] != 0x1a) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
fHasImage = false; fHasImage = false;
@@ -128,8 +130,7 @@ PackageInfo::Parse()
while (true) { while (true) {
bytesRead = fPackageFile->Read(buffer, 7); bytesRead = fPackageFile->Read(buffer, 7);
if (bytesRead != 7) { if (bytesRead != 7) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
if (!memcmp(buffer, "PhIn", 5)) { if (!memcmp(buffer, "PhIn", 5)) {
@@ -165,15 +166,13 @@ PackageInfo::Parse()
parser_debug("End!\n"); parser_debug("End!\n");
break; break;
} else { } else {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
} }
fPackageFile->Read(buffer, 7); fPackageFile->Read(buffer, 7);
if (memcmp(buffer, "PkgA", 5) || !groupsOffset || !infoOffset) { if (memcmp(buffer, "PkgA", 5) || !groupsOffset || !infoOffset) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
// Section header identifying constant byte sequences: // Section header identifying constant byte sequences:
@@ -235,8 +234,7 @@ PackageInfo::Parse()
uint64 original; uint64 original;
if (fPackageFile->Read(&original, 8) != 8) { if (fPackageFile->Read(&original, 8) != 8) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
swap_data(B_UINT64_TYPE, &original, sizeof(uint64), swap_data(B_UINT64_TYPE, &original, sizeof(uint64),
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
@@ -246,9 +244,8 @@ PackageInfo::Parse()
uint8 *compressed = new uint8[length]; uint8 *compressed = new uint8[length];
if (fPackageFile->Read(compressed, length) if (fPackageFile->Read(compressed, length)
!= static_cast<int64>(length)) { != static_cast<int64>(length)) {
fStatus = B_ERROR;
delete compressed; delete compressed;
return fStatus; RETURN_AND_SET_STATUS(B_ERROR);
} }
uint8 *disclaimer = new uint8[original + 1]; uint8 *disclaimer = new uint8[original + 1];
@@ -257,9 +254,8 @@ PackageInfo::Parse()
disclaimer[original] = 0; disclaimer[original] = 0;
delete compressed; delete compressed;
if (ret != B_OK) { if (ret != B_OK) {
fStatus = B_ERROR;
delete disclaimer; delete disclaimer;
return ret; RETURN_AND_SET_STATUS(B_ERROR);
} }
fDisclaimer = (char *)disclaimer; fDisclaimer = (char *)disclaimer;
@@ -274,8 +270,7 @@ PackageInfo::Parse()
uint64 original; uint64 original;
if (fPackageFile->Read(&original, 8) != 8) { if (fPackageFile->Read(&original, 8) != 8) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
swap_data(B_UINT64_TYPE, &original, sizeof(uint64), swap_data(B_UINT64_TYPE, &original, sizeof(uint64),
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
@@ -285,9 +280,8 @@ PackageInfo::Parse()
uint8 *compressed = new uint8[length]; uint8 *compressed = new uint8[length];
if (fPackageFile->Read(compressed, length) if (fPackageFile->Read(compressed, length)
!= static_cast<int64>(length)) { != static_cast<int64>(length)) {
fStatus = B_ERROR;
delete compressed; delete compressed;
return fStatus; RETURN_AND_SET_STATUS(B_ERROR);
} }
fImage.SetSize(original); fImage.SetSize(original);
@@ -296,8 +290,7 @@ PackageInfo::Parse()
original); original);
delete compressed; delete compressed;
if (ret != B_OK) { if (ret != B_OK) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return ret;
} }
fHasImage = true; fHasImage = true;
continue; continue;
@@ -313,16 +306,14 @@ PackageInfo::Parse()
parser_debug("FDst - "); parser_debug("FDst - ");
directory_which dir; directory_which dir;
if (fPackageFile->Read(&dir, 4) != 4) { if (fPackageFile->Read(&dir, 4) != 4) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
swap_data(B_UINT32_TYPE, &dir, sizeof(uint32), swap_data(B_UINT32_TYPE, &dir, sizeof(uint32),
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
BPath *path = new BPath(); BPath *path = new BPath();
status_t ret = find_directory(dir, path); status_t ret = find_directory(dir, path);
if (ret != B_OK) { if (ret != B_OK) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("%s\n", path->Path()); parser_debug("%s\n", path->Path());
@@ -331,8 +322,7 @@ PackageInfo::Parse()
} else if (!memcmp(buffer, "PaNa", 5)) { } else if (!memcmp(buffer, "PaNa", 5)) {
parser_debug("PaNa\n"); parser_debug("PaNa\n");
if (fPackageFile->Read(&length, 4) != 4) { if (fPackageFile->Read(&length, 4) != 4) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
swap_data(B_UINT32_TYPE, &length, sizeof(uint32), swap_data(B_UINT32_TYPE, &length, sizeof(uint32),
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
@@ -343,8 +333,7 @@ PackageInfo::Parse()
parser_debug("Padding!\n"); parser_debug("Padding!\n");
continue; continue;
} else { } else {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
break; break;
} }
@@ -358,8 +347,7 @@ PackageInfo::Parse()
parser_debug("IGrp\n"); parser_debug("IGrp\n");
} else if (!memcmp(buffer, "GrpN", 5)) { } else if (!memcmp(buffer, "GrpN", 5)) {
if (!groupStarted) { if (!groupStarted) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("GrpN\n"); parser_debug("GrpN\n");
@@ -374,8 +362,7 @@ PackageInfo::Parse()
delete name; delete name;
} else if (!memcmp(buffer, "GrpD", 5)) { } else if (!memcmp(buffer, "GrpD", 5)) {
if (!groupStarted) { if (!groupStarted) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("GrpD\n"); parser_debug("GrpD\n");
@@ -390,8 +377,7 @@ PackageInfo::Parse()
delete desc; delete desc;
} else if (!memcmp(buffer, "GrHt", 5)) { } else if (!memcmp(buffer, "GrHt", 5)) {
if (!groupStarted) { if (!groupStarted) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("GrHt\n"); parser_debug("GrHt\n");
@@ -428,8 +414,7 @@ PackageInfo::Parse()
parser_debug("Marker, jumping!\n"); parser_debug("Marker, jumping!\n");
continue; continue;
} else { } else {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
break; break;
} }
@@ -484,8 +469,7 @@ PackageInfo::Parse()
// the first directory existing in the package // the first directory existing in the package
fPackageFile->Seek(21, SEEK_CUR); fPackageFile->Seek(21, SEEK_CUR);
if (fPackageFile->Read(&installDirectoryFlag, 1) != 1) { if (fPackageFile->Read(&installDirectoryFlag, 1) != 1) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
fPackageFile->Seek(11, SEEK_CUR); fPackageFile->Seek(11, SEEK_CUR);
@@ -554,6 +538,46 @@ PackageInfo::Parse()
if (!memcmp(buffer, "DPat", 5)) { if (!memcmp(buffer, "DPat", 5)) {
parser_debug("DPat\n"); parser_debug("DPat\n");
continue; continue;
} else if (!memcmp(buffer, "DQue", 5)) {
parser_debug("DQue\n");
continue;
} else if (!memcmp(buffer, "DQTi", 5)) {
parser_debug("DQTi\n");
uint32 length;
if (fPackageFile->Read(&length, 4) != 4) {
RETURN_AND_SET_STATUS(B_ERROR);
}
swap_data(B_UINT32_TYPE, &length, sizeof(uint32),
B_SWAP_BENDIAN_TO_HOST);
char *ti = new char[length + 1];
fPackageFile->Read(ti, length);
ti[length] = 0;
parser_debug("DQTi - %s\n", ti);
delete ti;
} else if (!memcmp(buffer, "DQSz", 5)) {
parser_debug("DQSz\n");
uint64 size;
if (fPackageFile->Read(&size, 8) != 8) {
RETURN_AND_SET_STATUS(B_ERROR);
}
swap_data(B_UINT64_TYPE, &size, sizeof(uint64),
B_SWAP_BENDIAN_TO_HOST);
parser_debug("DQSz - %Ld\n", size);
} else if (!memcmp(buffer, "DQMi", 5)) {
// TODO actually check if the query finds a file with
// size found previously
parser_debug("DQMi\n");
uint32 length;
if (fPackageFile->Read(&length, 4) != 4) {
RETURN_AND_SET_STATUS(B_ERROR);
}
swap_data(B_UINT32_TYPE, &length, sizeof(uint32),
B_SWAP_BENDIAN_TO_HOST);
char *signature = new char[length + 1];
fPackageFile->Read(signature, length);
signature[length] = 0;
parser_debug("DQMi - %s\n", signature);
delete signature;
} else if (!memcmp(buffer, "PaNa", 5)) { } else if (!memcmp(buffer, "PaNa", 5)) {
parser_debug("PaNa\n"); parser_debug("PaNa\n");
fPackageFile->Read(&length, 4); fPackageFile->Read(&length, 4);
@@ -572,8 +596,8 @@ PackageInfo::Parse()
parser_debug("Padding!\n"); parser_debug("Padding!\n");
continue; continue;
} else { } else {
fStatus = B_ERROR; parser_debug("Unknown user path section %s\n", buffer);
return fStatus; RETURN_AND_SET_STATUS(B_ERROR);
} }
break; break;
} }
@@ -597,8 +621,7 @@ PackageInfo::Parse()
while (true) { while (true) {
bytesRead = fPackageFile->Read(buffer, 7); bytesRead = fPackageFile->Read(buffer, 7);
if (bytesRead != 7) { if (bytesRead != 7) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
// TODO: Here's the deal... there seems to be a strange ScrI tag that // TODO: Here's the deal... there seems to be a strange ScrI tag that
@@ -660,8 +683,7 @@ PackageInfo::Parse()
originalSize = 0; originalSize = 0;
} else if (!memcmp(buffer, "Name", 5)) { } else if (!memcmp(buffer, "Name", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("Name\n"); parser_debug("Name\n");
@@ -677,8 +699,7 @@ PackageInfo::Parse()
delete name; delete name;
} else if (!memcmp(buffer, "Grps", 5)) { } else if (!memcmp(buffer, "Grps", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("Grps\n"); parser_debug("Grps\n");
@@ -687,8 +708,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "Dest", 5)) { } else if (!memcmp(buffer, "Dest", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("Dest\n"); parser_debug("Dest\n");
@@ -697,8 +717,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "Cust", 5)) { } else if (!memcmp(buffer, "Cust", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("Cust\n"); parser_debug("Cust\n");
@@ -707,8 +726,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "Repl", 5)) { } else if (!memcmp(buffer, "Repl", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("Repl\n"); parser_debug("Repl\n");
@@ -717,8 +735,7 @@ PackageInfo::Parse()
// I always leave the decision to the user // I always leave the decision to the user
} else if (!memcmp(buffer, "Plat", 5)) { } else if (!memcmp(buffer, "Plat", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("Plat\n"); parser_debug("Plat\n");
@@ -727,8 +744,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "CTim", 5)) { } else if (!memcmp(buffer, "CTim", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("CTim\n"); parser_debug("CTim\n");
@@ -737,8 +753,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "MTim", 5)) { } else if (!memcmp(buffer, "MTim", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("MTim\n"); parser_debug("MTim\n");
@@ -747,8 +762,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "OffT", 5)) { } else if (!memcmp(buffer, "OffT", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("OffT\n"); parser_debug("OffT\n");
@@ -757,8 +771,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "Mime", 5)) { } else if (!memcmp(buffer, "Mime", 5)) {
if (element != P_FILE) { if (element != P_FILE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
fPackageFile->Read(&length, 4); fPackageFile->Read(&length, 4);
@@ -774,8 +787,7 @@ PackageInfo::Parse()
delete mime; delete mime;
} else if (!memcmp(buffer, "CmpS", 5)) { } else if (!memcmp(buffer, "CmpS", 5)) {
if (element == P_NONE) { if (element == P_NONE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("CmpS\n"); parser_debug("CmpS\n");
@@ -784,8 +796,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "OrgS", 5)) { } else if (!memcmp(buffer, "OrgS", 5)) {
if (element != P_FILE && element != P_LINK) { if (element != P_FILE && element != P_LINK) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("OrgS\n"); parser_debug("OrgS\n");
@@ -794,8 +805,7 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "VrsI", 5)) { } else if (!memcmp(buffer, "VrsI", 5)) {
if (element != P_FILE) { if (element != P_FILE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("VrsI\n"); parser_debug("VrsI\n");
@@ -804,8 +814,7 @@ PackageInfo::Parse()
// Also, check what those empty 20 bytes mean // Also, check what those empty 20 bytes mean
} else if (!memcmp(buffer, "Mode", 5)) { } else if (!memcmp(buffer, "Mode", 5)) {
if (element != P_FILE && element != P_LINK) { if (element != P_FILE && element != P_LINK) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("Mode\n"); parser_debug("Mode\n");
@@ -814,15 +823,13 @@ PackageInfo::Parse()
B_SWAP_BENDIAN_TO_HOST); B_SWAP_BENDIAN_TO_HOST);
} else if (!memcmp(buffer, "FDat", 5)) { } else if (!memcmp(buffer, "FDat", 5)) {
if (element != P_DIRECTORY) { if (element != P_DIRECTORY) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
parser_debug("FDat\n"); parser_debug("FDat\n");
} else if (!memcmp(buffer, "ASig", 5)) { } else if (!memcmp(buffer, "ASig", 5)) {
if (element != P_FILE) { if (element != P_FILE) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
fPackageFile->Read(&length, 4); fPackageFile->Read(&length, 4);
@@ -838,8 +845,7 @@ PackageInfo::Parse()
delete signature; delete signature;
} else if (!memcmp(buffer, "Link", 5)) { } else if (!memcmp(buffer, "Link", 5)) {
if (element != P_LINK) { if (element != P_LINK) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
fPackageFile->Read(&length, 4); fPackageFile->Read(&length, 4);
@@ -879,8 +885,7 @@ PackageInfo::Parse()
BString *def = static_cast<BString *>( BString *def = static_cast<BString *>(
userPaths.ItemAt(path)); userPaths.ItemAt(path));
if (!def) { if (!def) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
if ((*def)[0] == '/') if ((*def)[0] == '/')
localType = P_SYSTEM_PATH; localType = P_SYSTEM_PATH;
@@ -892,8 +897,7 @@ PackageInfo::Parse()
BPath *def = static_cast<BPath *>( BPath *def = static_cast<BPath *>(
systemPaths.ItemAt(path)); systemPaths.ItemAt(path));
if (!def) { if (!def) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
localType = P_SYSTEM_PATH; localType = P_SYSTEM_PATH;
@@ -928,8 +932,7 @@ PackageInfo::Parse()
BString *def = static_cast<BString *>( BString *def = static_cast<BString *>(
userPaths.ItemAt(path)); userPaths.ItemAt(path));
if (!def) { if (!def) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
if ((*def)[0] == '/') if ((*def)[0] == '/')
pathType = P_SYSTEM_PATH; pathType = P_SYSTEM_PATH;
@@ -941,8 +944,7 @@ PackageInfo::Parse()
BPath *def = static_cast<BPath *>( BPath *def = static_cast<BPath *>(
systemPaths.ItemAt(path)); systemPaths.ItemAt(path));
if (!def) { if (!def) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
pathType = P_SYSTEM_PATH; pathType = P_SYSTEM_PATH;
@@ -955,8 +957,7 @@ PackageInfo::Parse()
} else { } else {
// Install directory // Install directory
if (path != 0xffffffff) { if (path != 0xffffffff) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
installDirectory = nameString; installDirectory = nameString;
@@ -991,8 +992,7 @@ PackageInfo::Parse()
BString *def = static_cast<BString *>( BString *def = static_cast<BString *>(
userPaths.ItemAt(path)); userPaths.ItemAt(path));
if (!def) { if (!def) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
if ((*def)[0] == '/') if ((*def)[0] == '/')
localType = P_SYSTEM_PATH; localType = P_SYSTEM_PATH;
@@ -1003,8 +1003,7 @@ PackageInfo::Parse()
} else { } else {
BPath *def = static_cast<BPath *>(systemPaths.ItemAt(path)); BPath *def = static_cast<BPath *>(systemPaths.ItemAt(path));
if (!def) { if (!def) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
localType = P_SYSTEM_PATH; localType = P_SYSTEM_PATH;
@@ -1044,10 +1043,12 @@ PackageInfo::Parse()
} else if (!memcmp(buffer, "PkgA", 5)) { } else if (!memcmp(buffer, "PkgA", 5)) {
parser_debug("PkgA\n"); parser_debug("PkgA\n");
break; break;
} else if (!memcmp(buffer, "PtcI", 5)) {
parser_debug("PtcI\n");
break;
} else { } else {
fprintf(stderr, "Unknown file tag %s", buffer); fprintf(stderr, "Unknown file tag %s\n", buffer);
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
} }
@@ -1062,8 +1063,7 @@ PackageInfo::Parse()
selection = warning->Go(); selection = warning->Go();
if (selection == 1) { if (selection == 1) {
fStatus = B_ERROR; RETURN_AND_SET_STATUS(B_ERROR);
return fStatus;
} }
} }