diff options
| author | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-10-06 12:42:13 +0200 |
|---|---|---|
| committer | Nikola Pajkovsky <npajkovs@redhat.com> | 2010-10-06 12:42:13 +0200 |
| commit | 350eacf7f1948d52d6c71789845b0b640bb048ac (patch) | |
| tree | d4b296a0b348b4d5a2ec878de91a3432708c34d3 /lib/plugins | |
| parent | 4fb70fe4df4e54f8da1a8c356fa7724180c96181 (diff) | |
| parent | 2a43414497aa857d9dbf3e2dc04ac207d5730335 (diff) | |
| download | abrt-350eacf7f1948d52d6c71789845b0b640bb048ac.tar.gz abrt-350eacf7f1948d52d6c71789845b0b640bb048ac.tar.xz abrt-350eacf7f1948d52d6c71789845b0b640bb048ac.zip | |
Merge branch 'vector_string_t'
* vector_string_t:
report.cpp: split() uses GList
Kerneloops*.cpp and dumpoops.cpp uses GList
Daemon.cpp: FindNewDumps() uses GList
Diffstat (limited to 'lib/plugins')
| -rw-r--r-- | lib/plugins/KerneloopsScanner.cpp | 28 | ||||
| -rw-r--r-- | lib/plugins/KerneloopsSysLog.cpp | 10 | ||||
| -rw-r--r-- | lib/plugins/KerneloopsSysLog.h | 3 | ||||
| -rw-r--r-- | lib/plugins/Makefile.am | 4 |
4 files changed, 26 insertions, 19 deletions
diff --git a/lib/plugins/KerneloopsScanner.cpp b/lib/plugins/KerneloopsScanner.cpp index e0e64438..0e7d4dc3 100644 --- a/lib/plugins/KerneloopsScanner.cpp +++ b/lib/plugins/KerneloopsScanner.cpp @@ -22,6 +22,7 @@ */ #include <syslog.h> #include <asm/unistd.h> /* __NR_syslog */ +#include <glib.h> #include "abrtlib.h" #include "abrt_exception.h" #include "comm_layer_inner.h" @@ -30,7 +31,7 @@ // TODO: https://fedorahosted.org/abrt/ticket/78 -static int scan_dmesg(vector_string_t& oopsList) +static int scan_dmesg(GList **oopsList) { VERB1 log("Scanning dmesg"); @@ -51,7 +52,7 @@ static int scan_dmesg(vector_string_t& oopsList) /* "dumpoops" tool uses these two functions too */ extern "C" { -int scan_syslog_file(vector_string_t& oopsList, const char *filename, time_t *last_changed_p) +int scan_syslog_file(GList **oopsList, const char *filename, time_t *last_changed_p) { VERB1 log("Scanning syslog file '%s'", filename); @@ -111,10 +112,10 @@ int scan_syslog_file(vector_string_t& oopsList, const char *filename, time_t *la } /* returns number of errors */ -int save_oops_to_debug_dump(const vector_string_t& oopsList) +int save_oops_to_debug_dump(GList **oopsList) { unsigned countdown = 16; /* do not report hundreds of oopses */ - unsigned idx = oopsList.size(); + unsigned idx = g_list_length(*oopsList); time_t t = time(NULL); pid_t my_pid = getpid(); @@ -127,8 +128,7 @@ int save_oops_to_debug_dump(const vector_string_t& oopsList) char path[sizeof(DEBUG_DUMPS_DIR"/kerneloops-%lu-%lu-%lu") + 3 * sizeof(long)*3]; sprintf(path, DEBUG_DUMPS_DIR"/kerneloops-%lu-%lu-%lu", (long)t, (long)my_pid, (long)idx); - std::string oops = oopsList.at(--idx); - const char *first_line = oops.c_str(); + char *first_line = (char*)g_list_nth_data(*oopsList,--idx); char *second_line = (char*)strchr(first_line, '\n'); /* never NULL */ *second_line++ = '\0'; @@ -161,11 +161,11 @@ CKerneloopsScanner::CKerneloopsScanner() m_syslog_last_change = 0; /* Scan dmesg, on first call only */ - vector_string_t oopsList; - cnt_FoundOopses = scan_dmesg(oopsList); + GList *oopsList = NULL; + cnt_FoundOopses = scan_dmesg(&oopsList); if (cnt_FoundOopses > 0) { - int errors = save_oops_to_debug_dump(oopsList); + int errors = save_oops_to_debug_dump(&oopsList); if (errors > 0) log("%d errors while dumping oopses", errors); } @@ -178,11 +178,11 @@ void CKerneloopsScanner::Run(const char *pActionDir, const char *pArgs, int forc if (it != m_pSettings.end()) syslog_file = it->second.c_str(); - vector_string_t oopsList; - int cnt_FoundOopses = scan_syslog_file(oopsList, syslog_file, &m_syslog_last_change); + GList *oopsList = NULL; + int cnt_FoundOopses = scan_syslog_file(&oopsList, syslog_file, &m_syslog_last_change); if (cnt_FoundOopses > 0) { - int errors = save_oops_to_debug_dump(oopsList); + int errors = save_oops_to_debug_dump(&oopsList); if (errors > 0) log("%d errors while dumping oopses", errors); /* @@ -198,6 +198,10 @@ void CKerneloopsScanner::Run(const char *pActionDir, const char *pArgs, int forc cnt_FoundOopses); closelog(); } + + for (GList *li = oopsList; li != NULL; li = g_list_next(li)) + free((char*)li->data); + g_list_free(oopsList); } PLUGIN_INFO(ACTION, diff --git a/lib/plugins/KerneloopsSysLog.cpp b/lib/plugins/KerneloopsSysLog.cpp index 8594bf42..68f309bc 100644 --- a/lib/plugins/KerneloopsSysLog.cpp +++ b/lib/plugins/KerneloopsSysLog.cpp @@ -18,10 +18,12 @@ */ #include "abrtlib.h" #include "KerneloopsSysLog.h" +#include <glib.h> -static void queue_oops(vector_string_t &vec, const char *data, const char *version) +static void queue_oops(GList **vec, const char *data, const char *version) { - vec.push_back(ssprintf("%s\n%s", version, data)); + char *ver_data = xasprintf("%s\n%s", version, data); + *vec = g_list_append(*vec, ver_data); } /* @@ -59,7 +61,7 @@ struct line_info { char level; }; -static int record_oops(vector_string_t &oopses, struct line_info* lines_info, int oopsstart, int oopsend) +static int record_oops(GList **oopses, struct line_info* lines_info, int oopsstart, int oopsend) { int q; int len; @@ -98,7 +100,7 @@ static int record_oops(vector_string_t &oopses, struct line_info* lines_info, in return rv; } #define REALLOC_CHUNK 1000 -int extract_oopses(vector_string_t &oopses, char *buffer, size_t buflen) +int extract_oopses(GList **oopses, char *buffer, size_t buflen) { char *c; int linecount = 0; diff --git a/lib/plugins/KerneloopsSysLog.h b/lib/plugins/KerneloopsSysLog.h index a67b33d4..d8b4d32b 100644 --- a/lib/plugins/KerneloopsSysLog.h +++ b/lib/plugins/KerneloopsSysLog.h @@ -28,7 +28,8 @@ #define __INCLUDE_GUARD_KERNELOOPSSYSLOG_H_ #include "abrt_types.h" +#include <glib.h> -int extract_oopses(vector_string_t &oopses, char *buffer, size_t buflen); +int extract_oopses(GList **oopses, char *buffer, size_t buflen); #endif diff --git a/lib/plugins/Makefile.am b/lib/plugins/Makefile.am index ffdfa332..12fe6db6 100644 --- a/lib/plugins/Makefile.am +++ b/lib/plugins/Makefile.am @@ -87,8 +87,8 @@ libKerneloopsReporter_la_CPPFLAGS = -I$(INC_PATH) -I$(UTILS_PATH) $(CURL_CFLAGS) # KerneloopsScanner libKerneloopsScanner_la_SOURCES = KerneloopsScanner.cpp KerneloopsScanner.h KerneloopsSysLog.cpp KerneloopsSysLog.h -libKerneloopsScanner_la_LDFLAGS = -avoid-version -libKerneloopsScanner_la_CPPFLAGS = -I$(INC_PATH) -I$(UTILS_PATH) -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" +libKerneloopsScanner_la_LDFLAGS = -avoid-version $(GLIB_LIBS) +libKerneloopsScanner_la_CPPFLAGS = -I$(INC_PATH) -I$(UTILS_PATH) -DDEBUG_DUMPS_DIR=\"$(DEBUG_DUMPS_DIR)\" $(GLIB_CFLAGS) # Mailx libMailx_la_SOURCES = Mailx.cpp Mailx.h |
