diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-11-02 15:46:53 +0100 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-11-02 15:46:53 +0100 |
commit | 3cfc642450ab5b19a3e07a2b1815a63a396c3dff (patch) | |
tree | 1f0560ae4cd12a5c05828c504abb5733367c30c7 /src | |
parent | 0548c795edc34cba29d42abc28bf1e6cfc8c87b8 (diff) | |
download | abrt-3cfc642450ab5b19a3e07a2b1815a63a396c3dff.tar.gz abrt-3cfc642450ab5b19a3e07a2b1815a63a396c3dff.tar.xz abrt-3cfc642450ab5b19a3e07a2b1815a63a396c3dff.zip |
Added DIR paramented to "Crash" dbus signal
Run-tested
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/applet/Applet.cpp | 14 | ||||
-rw-r--r-- | src/daemon/CommLayerServer.h | 6 | ||||
-rw-r--r-- | src/daemon/CommLayerServerDBus.cpp | 13 | ||||
-rw-r--r-- | src/daemon/CommLayerServerDBus.h | 6 | ||||
-rw-r--r-- | src/daemon/Daemon.cpp | 10 |
5 files changed, 34 insertions, 15 deletions
diff --git a/src/applet/Applet.cpp b/src/applet/Applet.cpp index cc29fbde..4ce497cf 100644 --- a/src/applet/Applet.cpp +++ b/src/applet/Applet.cpp @@ -42,15 +42,25 @@ static void Crash(DBusMessage* signal) r = load_val(&in_iter, package_name); /* 2nd param: crash_id */ - const char* crash_id = NULL; if (r != ABRT_DBUS_MORE_FIELDS) { error_msg("dbus signal %s: parameter type mismatch", __func__); return; } + const char* crash_id = NULL; r = load_val(&in_iter, crash_id); - /* Optional 3rd param: uid */ + /* 3rd param: dir */ +//dir parameter is not used for now, use is planned in the future + if (r != ABRT_DBUS_MORE_FIELDS) + { + error_msg("dbus signal %s: parameter type mismatch", __func__); + return; + } + const char* dir = NULL; + r = load_val(&in_iter, dir); + + /* Optional 4th param: uid */ const char* uid_str = NULL; if (r == ABRT_DBUS_MORE_FIELDS) { diff --git a/src/daemon/CommLayerServer.h b/src/daemon/CommLayerServer.h index c6bf71ee..6eb8b464 100644 --- a/src/daemon/CommLayerServer.h +++ b/src/daemon/CommLayerServer.h @@ -30,7 +30,11 @@ class CCommLayerServer { virtual ~CCommLayerServer(); /* just stubs to be called when not implemented in specific comm layer */ - virtual void Crash(const char *package_name, const char* crash_id, const char *uid_str) {} + virtual void Crash(const char *package_name, + const char *crash_id, + const char *dir, + const char *uid_str + ) {} virtual void JobDone(const char* peer) = 0; virtual void QuotaExceed(const char* str) {} diff --git a/src/daemon/CommLayerServerDBus.cpp b/src/daemon/CommLayerServerDBus.cpp index e40b1093..d7c63ee5 100644 --- a/src/daemon/CommLayerServerDBus.cpp +++ b/src/daemon/CommLayerServerDBus.cpp @@ -55,26 +55,29 @@ static void send_flush_and_unref(DBusMessage* msg) /* Notify the clients (UI) about a new crash */ void CCommLayerServerDBus::Crash(const char *package_name, - const char* crash_id, - const char *uid_str) -{ + const char *crash_id, + const char *dir, + const char *uid_str +) { DBusMessage* msg = new_signal_msg("Crash"); if (uid_str) { dbus_message_append_args(msg, DBUS_TYPE_STRING, &package_name, DBUS_TYPE_STRING, &crash_id, + DBUS_TYPE_STRING, &dir, DBUS_TYPE_STRING, &uid_str, DBUS_TYPE_INVALID); - VERB2 log("Sending signal Crash('%s','%s','%s')", package_name, crash_id, uid_str); + VERB2 log("Sending signal Crash('%s','%s','%s','%s')", package_name, crash_id, dir, uid_str); } else { dbus_message_append_args(msg, DBUS_TYPE_STRING, &package_name, DBUS_TYPE_STRING, &crash_id, + DBUS_TYPE_STRING, &dir, DBUS_TYPE_INVALID); - VERB2 log("Sending signal Crash('%s','%s')", package_name, crash_id); + VERB2 log("Sending signal Crash('%s','%s','%s')", package_name, crash_id, dir); } send_flush_and_unref(msg); } diff --git a/src/daemon/CommLayerServerDBus.h b/src/daemon/CommLayerServerDBus.h index 7ccad083..df767436 100644 --- a/src/daemon/CommLayerServerDBus.h +++ b/src/daemon/CommLayerServerDBus.h @@ -30,8 +30,10 @@ class CCommLayerServerDBus /* DBus signal senders */ virtual void Crash(const char *package_name, - const char *crash_id, - const char *uid_str); + const char *crash_id, + const char *dir, + const char *uid_str + ); virtual void JobDone(const char* peer); virtual void QuotaExceed(const char* str); diff --git a/src/daemon/Daemon.cpp b/src/daemon/Daemon.cpp index 929fcd0b..ffc60a8f 100644 --- a/src/daemon/Daemon.cpp +++ b/src/daemon/Daemon.cpp @@ -74,7 +74,7 @@ using namespace std; * - SetSettings(map_abrt_settings_t): returns void * * DBus signals we emit: - * - Crash(progname, crash_id, uid) - a new crash occurred (new /var/spool/abrt/DIR is found) + * - Crash(progname, crash_id, dir, uid) - a new crash occurred (new /var/spool/abrt/DIR is found) * - JobDone(client_dbus_ID) - see StartJob above. * Sent as unicast to the client which did StartJob. * - Warning(msg) @@ -663,7 +663,6 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin strrchr(first, '/') + 1); delete_debug_dump_dir(fullname); } -#define fullname fullname_should_not_be_used_here const char *analyzer = get_crash_data_item_content(crashinfo, FILENAME_ANALYZER).c_str(); const char *uid_str = get_crash_data_item_content(crashinfo, CD_UID).c_str(); @@ -676,11 +675,12 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin get_crash_data_item_content(crashinfo, CD_UUID).c_str() ); g_pCommLayer->Crash(get_crash_data_item_content(crashinfo, FILENAME_PACKAGE).c_str(), - crash_id, - uid_str); + crash_id, + fullname, + uid_str + ); free(crash_id); break; -#undef fullname } case MW_IN_DB: log("Huh, this crash is already in db?! Nothing to do"); |