Signed-off-by: Nikola Pajkovsky npajkovs@redhat.com --- src/include/report/dump_dir.h | 1 + src/lib/dump_dir.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/src/include/report/dump_dir.h b/src/include/report/dump_dir.h index 913eca1..849525e 100644 --- a/src/include/report/dump_dir.h +++ b/src/include/report/dump_dir.h @@ -59,6 +59,7 @@ void dd_save_text(struct dump_dir *dd, const char *name, const char *data); void dd_save_binary(struct dump_dir *dd, const char *name, const char *data, unsigned size); 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 delete_dump_dir(const char *dd_dir);
diff --git a/src/lib/dump_dir.c b/src/lib/dump_dir.c index 0e0b5f1..7f62be3 100644 --- a/src/lib/dump_dir.c +++ b/src/lib/dump_dir.c @@ -544,6 +544,40 @@ char **dd_get_unknown_files(struct dump_dir *dd, const char **known_files) return unknowns; }
+/* + * todo: add flags OPEN, CLOSE to be able run OPEN | CLOSE + * and safe a few boring commands + */ +void dd_add_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) + { + dd_save_text(dd, "attachments", name); + return; + } + + char *token = strtok(attach_list, "\n"); + while (token) + { + if (strcmp(name, token) == 0) + { + free(attach_list); + return; + } + + token = strtok(NULL, "\n"); + } + + char *add = xasprintf("%s\n%s\n", attach_list, name); + dd_save_text(dd, "attachments", add); + free(add); +} + /* Utility function */ void delete_dump_dir(const char *dd_dir) {