summaryrefslogtreecommitdiffstats
path: root/src/lib/problem_data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/problem_data.c')
-rw-r--r--src/lib/problem_data.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/src/lib/problem_data.c b/src/lib/problem_data.c
index 42dc770d..657044bb 100644
--- a/src/lib/problem_data.c
+++ b/src/lib/problem_data.c
@@ -57,6 +57,38 @@ problem_data_t *new_problem_data(void)
free, free_problem_item);
}
+void add_basics_to_problem_data(problem_data_t *pd)
+{
+ const char *analyzer = get_problem_item_content_or_NULL(pd, FILENAME_ANALYZER);
+ if (analyzer == NULL)
+ add_to_problem_data(pd, "analyzer", "libreport");
+
+ pid_t pid = getpid();
+ if (pid > 0)
+ {
+ char buf[PATH_MAX+1];
+ char *exe = xasprintf("/proc/%u/exe", pid);
+ ssize_t read = readlink(exe, buf, PATH_MAX);
+ if (read > 0)
+ {
+ buf[read] = 0;
+ VERB2 log("reporting initiated from: %s\n", buf);
+ add_to_problem_data(pd, FILENAME_EXECUTABLE, buf);
+ }
+ free(exe);
+
+//#ifdef WITH_RPM
+ /* FIXME: component should be taken from rpm using
+ * rpm -qf executable
+ */
+ /* Fedora/RHEL rpm specific piece of code */
+ const char *component = get_problem_item_content_or_NULL(pd, FILENAME_ANALYZER);
+ if(component == NULL) // application didn't specify component
+ add_to_problem_data(pd, FILENAME_COMPONENT, "abrt");
+//#endif
+ }
+}
+
void add_to_problem_data_ext(problem_data_t *problem_data,
const char *name,
const char *content,