Merge branch 'bw/forking-and-threading'
The "run-command" API implementation has been made more robust against dead-locking in a threaded environment. * bw/forking-and-threading: usage.c: drop set_error_handle() run-command: restrict PATH search to executable files run-command: expose is_executable function run-command: block signals between fork and execve run-command: add note about forking and threading run-command: handle dup2 and close errors in child run-command: eliminate calls to error handling functions in child run-command: don't die in child when duping /dev/null run-command: prepare child environment before forking string-list: add string_list_remove function run-command: use the async-signal-safe execv instead of execvp run-command: prepare command before forking t0061: run_command executes scripts without a #! line t5550: use write_script to generate post-update hook
This commit is contained in:
@@ -64,6 +64,24 @@ struct string_list_item *string_list_insert(struct string_list *list, const char
|
||||
return list->items + index;
|
||||
}
|
||||
|
||||
void string_list_remove(struct string_list *list, const char *string,
|
||||
int free_util)
|
||||
{
|
||||
int exact_match;
|
||||
int i = get_entry_index(list, string, &exact_match);
|
||||
|
||||
if (exact_match) {
|
||||
if (list->strdup_strings)
|
||||
free(list->items[i].string);
|
||||
if (free_util)
|
||||
free(list->items[i].util);
|
||||
|
||||
list->nr--;
|
||||
memmove(list->items + i, list->items + i + 1,
|
||||
(list->nr - i) * sizeof(struct string_list_item));
|
||||
}
|
||||
}
|
||||
|
||||
int string_list_has_string(const struct string_list *list, const char *string)
|
||||
{
|
||||
int exact_match;
|
||||
|
||||
Reference in New Issue
Block a user