core/execute: introduce exec_command_free

This commit is contained in:
Mike Yuan 2024-04-11 04:10:36 +08:00
parent ccbb85a58b
commit f09604b0a6
No known key found for this signature in database
GPG key ID: 417471C0A40F58B3
2 changed files with 13 additions and 4 deletions

View file

@ -672,13 +672,19 @@ void exec_command_done_array(ExecCommand *c, size_t n) {
exec_command_done(i);
}
ExecCommand* exec_command_free(ExecCommand *c) {
if (!c)
return NULL;
exec_command_done(c);
return mfree(c);
}
ExecCommand* exec_command_free_list(ExecCommand *c) {
ExecCommand *i;
while ((i = LIST_POP(command, c))) {
exec_command_done(i);
free(i);
}
while ((i = LIST_POP(command, c)))
exec_command_free(i);
return NULL;
}

View file

@ -487,10 +487,13 @@ int exec_spawn(Unit *unit,
void exec_command_done(ExecCommand *c);
void exec_command_done_array(ExecCommand *c, size_t n);
ExecCommand* exec_command_free(ExecCommand *c);
DEFINE_TRIVIAL_CLEANUP_FUNC(ExecCommand*, exec_command_free);
ExecCommand* exec_command_free_list(ExecCommand *c);
void exec_command_free_array(ExecCommand **c, size_t n);
void exec_command_reset_status_array(ExecCommand *c, size_t n);
void exec_command_reset_status_list_array(ExecCommand **c, size_t n);
void exec_command_dump_list(ExecCommand *c, FILE *f, const char *prefix);
void exec_command_append_list(ExecCommand **l, ExecCommand *e);
int exec_command_set(ExecCommand *c, const char *path, ...) _sentinel_;