packagefs: Use more descriptive error codes on failing activations.

This commit is contained in:
Augustin Cavalier
2019-05-15 16:18:36 -04:00
parent f6f19105dc
commit ec5b988026
@@ -1517,7 +1517,7 @@ Volume::_ChangeActivation(ActivationChangeRequest& request)
|| item->parentDirectoryID != fPackagesDirectory->NodeID()) { || item->parentDirectoryID != fPackagesDirectory->NodeID()) {
ERROR("Volume::_ChangeActivation(): mismatching packages " ERROR("Volume::_ChangeActivation(): mismatching packages "
"directory\n"); "directory\n");
RETURN_ERROR(B_BAD_VALUE); RETURN_ERROR(B_MISMATCHED_VALUES);
} }
Package* package = _FindPackage(item->name); Package* package = _FindPackage(item->name);
@@ -1526,21 +1526,21 @@ Volume::_ChangeActivation(ActivationChangeRequest& request)
if (package != NULL) { if (package != NULL) {
ERROR("Volume::_ChangeActivation(): package to activate " ERROR("Volume::_ChangeActivation(): package to activate "
"already activated: \"%s\"\n", item->name); "already activated: \"%s\"\n", item->name);
RETURN_ERROR(B_BAD_VALUE); RETURN_ERROR(B_NAME_IN_USE);
} }
newPackageCount++; newPackageCount++;
} else if (item->type == PACKAGE_FS_DEACTIVATE_PACKAGE) { } else if (item->type == PACKAGE_FS_DEACTIVATE_PACKAGE) {
if (package == NULL) { if (package == NULL) {
ERROR("Volume::_ChangeActivation(): package to deactivate " ERROR("Volume::_ChangeActivation(): package to deactivate "
"not found: \"%s\"\n", item->name); "not found: \"%s\"\n", item->name);
RETURN_ERROR(B_BAD_VALUE); RETURN_ERROR(B_NAME_NOT_FOUND);
} }
oldPackageCount++; oldPackageCount++;
} else if (item->type == PACKAGE_FS_REACTIVATE_PACKAGE) { } else if (item->type == PACKAGE_FS_REACTIVATE_PACKAGE) {
if (package == NULL) { if (package == NULL) {
ERROR("Volume::_ChangeActivation(): package to reactivate " ERROR("Volume::_ChangeActivation(): package to reactivate "
"not found: \"%s\"\n", item->name); "not found: \"%s\"\n", item->name);
RETURN_ERROR(B_BAD_VALUE); RETURN_ERROR(B_NAME_NOT_FOUND);
} }
oldPackageCount++; oldPackageCount++;
newPackageCount++; newPackageCount++;
@@ -1548,7 +1548,9 @@ Volume::_ChangeActivation(ActivationChangeRequest& request)
RETURN_ERROR(B_BAD_VALUE); RETURN_ERROR(B_BAD_VALUE);
} }
} }
INFORM("Volume::_ChangeActivation(): %" B_PRId32 " new packages, %" B_PRId32 " old packages\n", newPackageCount, oldPackageCount);
INFORM("Volume::_ChangeActivation(): %" B_PRId32 " new packages, %" B_PRId32
" old packages\n", newPackageCount, oldPackageCount);
// Things look good so far -- allocate reference arrays for the packages to // Things look good so far -- allocate reference arrays for the packages to
// add and remove. // add and remove.
@@ -1608,7 +1610,8 @@ INFORM("Volume::_ChangeActivation(): %" B_PRId32 " new packages, %" B_PRId32 " o
oldPackageReferences[oldPackageIndex++].SetTo(package); oldPackageReferences[oldPackageIndex++].SetTo(package);
_RemovePackageContent(package, NULL, true); _RemovePackageContent(package, NULL, true);
_RemovePackage(package); _RemovePackage(package);
INFORM("package \"%s\" deactivated\n", package->FileName().Data());
INFORM("package \"%s\" deactivated\n", package->FileName().Data());
} }
// TODO: Since package removal cannot fail, consider adding the new packages // TODO: Since package removal cannot fail, consider adding the new packages
// first. The reactivation case may make that problematic, since two packages // first. The reactivation case may make that problematic, since two packages
@@ -1627,7 +1630,7 @@ INFORM("package \"%s\" deactivated\n", package->FileName().Data());
_RemovePackage(package); _RemovePackage(package);
break; break;
} }
INFORM("package \"%s\" activated\n", package->FileName().Data()); INFORM("package \"%s\" activated\n", package->FileName().Data());
} }
// Try to roll back the changes, if an error occurred. // Try to roll back the changes, if an error occurred.