Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com --- src/include/report/dump_dir.h | 1 + src/lib/dump_dir.c | 32 ++++++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 0 deletions(-)
diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index 849525e..a41b700 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -60,6 +60,7 @@ void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, uns void dd_delete(struct dump_dir *dd); char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files); void dd_add_attachments_name(struct dump_dir *dd, const char *name); +void dd_rm_attachments_name(struct dump_dir *dd, const char *name);
void delete_dump_dir(const char *dd_dir);
diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 7f62be3..5537002 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -578,6 +578,38 @@ void dd_add_attachments_name(struct dump_dir *dd, const char *name) free(add); }
+/* + * todo: add flags OPEN, CLOSE to be able run OPEN | CLOSE + * and safe a few boring commands + */ +void dd_rm_attachments_name(struct dump_dir *dd, const char *name) +{ + if (!dd->locked) + error_msg_and_die("dump_dir is not opened"); /* bug */ + + char *attach_list = dd_load_text_ext(dd, "attachments", + DD_LOAD_TEXT_RETURN_NULL_ON_FAILURE); + if (!attach_list) + return; + + struct strbuf *list = strbuf_new(); + char *token = strtok(attach_list, "\n"); + while (token) + { + if (strcmp(name, token) == 0) + { + token = strtok(NULL, "\n"); + continue; + } + + strbuf_append_strf(list, "%s\n", token); + token = strtok(NULL, "\n"); + } + + dd_save_text(dd, "attachments", list->buf); + strbuf_free(list); + free(attach_list); +} /* Utility function */ void delete_dump_dir(const char *dd_dir) {