aboutsummaryrefslogtreecommitdiffstats
path: root/epan
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2017-09-21 23:20:03 -0400
committerAnders Broman <a.broman58@gmail.com>2017-09-22 04:49:48 +0000
commit5f667694d3bbd57f13c26d3588d5671dfd30d09a (patch)
treee3dbdd8cf9c62acc73b51bc3895ed8b6f3f14ca8 /epan
parent620d54b1e3a4fcad1994409013f6a5b2b76913b4 (diff)
Add Flow Graph functionality to TShark
Add flow graph functionality to tshark through -z option. Output is same as ASCII format saved from GUI. Change-Id: Iee0bfea7215858e6488b4728581be28287e9ea1a Reviewed-on: https://code.wireshark.org/review/23652 Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'epan')
-rw-r--r--epan/sequence_analysis.c30
-rw-r--r--epan/sequence_analysis.h6
2 files changed, 14 insertions, 22 deletions
diff --git a/epan/sequence_analysis.c b/epan/sequence_analysis.c
index ed52782ba0..7978637427 100644
--- a/epan/sequence_analysis.c
+++ b/epan/sequence_analysis.c
@@ -32,7 +32,6 @@
#include "column-info.h"
#include "tap.h"
#include "wmem/wmem.h"
-#include "wsutil/file_util.h"
#define NODE_OVERFLOW MAX_NUM_NODES+1
@@ -191,7 +190,8 @@ void sequence_analysis_info_free(seq_analysis_info_t *sainfo)
sequence_analysis_list_free(sainfo);
g_queue_free(sainfo->items);
- g_hash_table_destroy(sainfo->ht);
+ if (sainfo->ht != NULL)
+ g_hash_table_destroy(sainfo->ht);
g_free(sainfo);
}
@@ -241,7 +241,8 @@ sequence_analysis_list_free(seq_analysis_info_t *sainfo)
/* free the graph data items */
#if GLIB_CHECK_VERSION (2, 32, 0)
- g_queue_free_full(sainfo->items, sequence_analysis_item_free);
+ if (sainfo->items != NULL)
+ g_queue_free_full(sainfo->items, sequence_analysis_item_free);
sainfo->items = g_queue_new();
#else
{
@@ -399,8 +400,8 @@ static void overwrite (GString *gstr, char *text_to_insert, guint32 p1, guint32
}
-gboolean
-sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo, unsigned int first_node)
+void
+sequence_analysis_dump_to_file(FILE *of, seq_analysis_info_t *sainfo, unsigned int first_node)
{
guint32 i, display_items, display_nodes;
guint32 start_position, end_position, item_width, header_length;
@@ -412,18 +413,13 @@ sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo
GString *label_string, *empty_line, *separator_line, *tmp_str, *tmp_str2;
const char *empty_header;
char src_port[8], dst_port[8];
- GList *list;
+ GList *list = NULL;
char *addr_str;
- FILE *of;
-
- of = ws_fopen(pathname, "w");
- if (of==NULL) {
- return FALSE;
- }
-
display_items = 0;
- list = g_queue_peek_nth_link(sainfo->items, 0);
+ if (sainfo->items != NULL)
+ list = g_queue_peek_nth_link(sainfo->items, 0);
+
while (list)
{
sai = (seq_analysis_item_t *)list->data;
@@ -444,8 +440,7 @@ sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo
/* if not items to display */
if (display_items == 0) {
- fclose (of);
- return TRUE;
+ return;
}
label_string = g_string_new("");
@@ -610,9 +605,6 @@ sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo
g_string_free(separator_line, TRUE);
g_string_free(tmp_str, TRUE);
g_string_free(tmp_str2, TRUE);
- fclose (of);
- return TRUE;
-
}
/*
diff --git a/epan/sequence_analysis.h b/epan/sequence_analysis.h
index 68af7f5c68..64b0a31be3 100644
--- a/epan/sequence_analysis.h
+++ b/epan/sequence_analysis.h
@@ -38,6 +38,7 @@
#include "packet_info.h"
#include "tap.h"
#include "address.h"
+#include "wsutil/file_util.h"
#ifdef __cplusplus
extern "C" {
@@ -202,12 +203,11 @@ WS_DLL_PUBLIC void sequence_analysis_free_nodes(seq_analysis_info_t *sainfo);
/** Write an ASCII version of the sequence diagram to a file.
*
- * @param pathname Pathname of the file to write.
+ * @param of File to write.
* @param sainfo Sequence analysis information.
* @param first_node Start drawing at this node.
- * @return TRUE on success, FALSE on failure.
*/
-WS_DLL_PUBLIC gboolean sequence_analysis_dump_to_file(const char *pathname, seq_analysis_info_t *sainfo, unsigned int first_node);
+WS_DLL_PUBLIC void sequence_analysis_dump_to_file(FILE *of, seq_analysis_info_t *sainfo, unsigned int first_node);
#ifdef __cplusplus
}