dbus-manager: use CLEANUP_ARRAY

This commit is contained in:
David Tardon
2023-04-11 15:08:03 +02:00
parent 19279652c0
commit f8888b9a3c
+34 -52
View File
@@ -2234,7 +2234,7 @@ static int install_error(
InstallChange *changes,
size_t n_changes) {
int r;
CLEANUP_ARRAY(changes, n_changes, install_changes_free);
for (size_t i = 0; i < n_changes; i++)
@@ -2246,83 +2246,65 @@ static int install_error(
case -EEXIST:
if (changes[i].source)
r = sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS,
"File %s already exists and is a symlink to %s.",
changes[i].path, changes[i].source);
else
r = sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS,
"File %s already exists.",
changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS,
"File %s already exists and is a symlink to %s.",
changes[i].path, changes[i].source);
return sd_bus_error_setf(error, BUS_ERROR_UNIT_EXISTS,
"File %s already exists.",
changes[i].path);
case -ERFKILL:
r = sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED,
"Unit file %s is masked.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_UNIT_MASKED,
"Unit file %s is masked.", changes[i].path);
case -EADDRNOTAVAIL:
r = sd_bus_error_setf(error, BUS_ERROR_UNIT_GENERATED,
"Unit %s is transient or generated.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_UNIT_GENERATED,
"Unit %s is transient or generated.", changes[i].path);
case -ETXTBSY:
r = sd_bus_error_setf(error, BUS_ERROR_UNIT_BAD_PATH,
"File %s is under the systemd unit hierarchy already.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_UNIT_BAD_PATH,
"File %s is under the systemd unit hierarchy already.", changes[i].path);
case -EBADSLT:
r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Invalid specifier in %s.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Invalid specifier in %s.", changes[i].path);
case -EIDRM:
r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Destination unit %s is a non-template unit.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Destination unit %s is a non-template unit.", changes[i].path);
case -EUCLEAN:
r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"\"%s\" is not a valid unit name.",
changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"\"%s\" is not a valid unit name.",
changes[i].path);
case -ELOOP:
r = sd_bus_error_setf(error, BUS_ERROR_UNIT_LINKED,
"Refusing to operate on alias name or linked unit file: %s",
changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_UNIT_LINKED,
"Refusing to operate on alias name or linked unit file: %s",
changes[i].path);
case -EXDEV:
if (changes[i].source)
r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Cannot alias %s as %s.",
changes[i].source, changes[i].path);
else
r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Invalid unit reference %s.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Cannot alias %s as %s.",
changes[i].source, changes[i].path);
return sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Invalid unit reference %s.", changes[i].path);
case -ENOENT:
r = sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT,
"Unit file %s does not exist.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_NO_SUCH_UNIT,
"Unit file %s does not exist.", changes[i].path);
case -EUNATCH:
r = sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Cannot resolve specifiers in %s.", changes[i].path);
goto found;
return sd_bus_error_setf(error, BUS_ERROR_BAD_UNIT_SETTING,
"Cannot resolve specifiers in %s.", changes[i].path);
default:
assert(changes[i].type < 0); /* other errors */
r = sd_bus_error_set_errnof(error, changes[i].type, "File %s: %m", changes[i].path);
goto found;
return sd_bus_error_set_errnof(error, changes[i].type, "File %s: %m", changes[i].path);
}
r = c < 0 ? c : -EINVAL;
found:
install_changes_free(changes, n_changes);
return r;
return c < 0 ? c : -EINVAL;
}
static int reply_install_changes_and_free(