aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeff Foster <jfoste@woodward.com>2001-03-23 18:44:20 +0000
committerJeff Foster <jfoste@woodward.com>2001-03-23 18:44:20 +0000
commit45cde0fc88238ffb61073d06f7bf5ad9c81968b8 (patch)
tree84f9eb242d2ba381499b3acad8f399fdcfe71233
parent2fd1bed04ae7ee40bf5be8be6414dca8e1b625a6 (diff)
Added named data sources printing support, written by Guy Harris
svn path=/trunk/; revision=3167
-rw-r--r--print.c43
-rw-r--r--print.h5
-rw-r--r--tethereal.c5
3 files changed, 40 insertions, 13 deletions
diff --git a/print.c b/print.c
index 64779b8a7e..08f5e1ad74 100644
--- a/print.c
+++ b/print.c
@@ -1,7 +1,7 @@
/* print.c
* Routines for printing packet analysis trees.
*
- * $Id: print.c,v 1.29 2000/04/13 20:39:18 gram Exp $
+ * $Id: print.c,v 1.30 2001/03/23 18:44:20 jfoster Exp $
*
* Gilbert Ramirez <gram@xiexie.org>
*
@@ -177,13 +177,42 @@ void proto_tree_print_node_text(GNode *node, gpointer data)
}
}
-void print_hex_data(FILE *fh, gint format, register const u_char *cp,
- register u_int length, char_enc encoding)
+void print_hex_data(FILE *fh, gint format, frame_data *fd)
{
- if (format == PR_FMT_PS)
- print_hex_data_ps(fh, cp, length, encoding);
- else
- print_hex_data_text(fh, cp, length, encoding);
+ gboolean multiple_sources;
+ GSList *src;
+ tvbuff_t *tvb;
+ char *name;
+ char *line;
+ const u_char *cp;
+ guint length;
+
+ /*
+ * Set "multiple_sources" iff this frame has more than one
+ * data source; if it does, we need to print the name of
+ * the data source before printing the data from the
+ * data source.
+ */
+ multiple_sources = (fd->data_src->next != NULL);
+
+ for (src = fd->data_src; src != NULL; src = src->next) {
+ tvb = src->data;
+ if (multiple_sources) {
+ name = tvb_get_name(tvb);
+ line = g_malloc(strlen(name) + 3); /* <name>:\n\0 */
+ strcpy(line, name);
+ strcat(line, ":");
+ print_line(fh, format, line);
+ g_free(line);
+ print_line(fh, format, "\n");
+ }
+ length = tvb_length(tvb);
+ cp = tvb_get_ptr(tvb, 0, length);
+ if (format == PR_FMT_PS)
+ print_hex_data_ps(fh, cp, length, fd->flags.encoding);
+ else
+ print_hex_data_text(fh, cp, length, fd->flags.encoding);
+ }
}
/* This routine was created by Dan Lasley <DLASLEY@PROMUS.com>, and
diff --git a/print.h b/print.h
index 23c6757b2b..62845ed4d5 100644
--- a/print.h
+++ b/print.h
@@ -1,7 +1,7 @@
/* print.h
* Definitions for printing packet analysis trees.
*
- * $Id: print.h,v 1.20 2000/08/11 13:34:26 deniel Exp $
+ * $Id: print.h,v 1.21 2001/03/23 18:44:20 jfoster Exp $
*
* Gilbert Ramirez <gram@xiexie.org>
*
@@ -54,8 +54,7 @@ void print_preamble(FILE *fh, gint format);
void print_finale(FILE *fh, gint format);
void proto_tree_print(gboolean print_one_packet, print_args_t *print_args,
GNode *protocol_tree, const u_char *pd, frame_data *fd, FILE *fh);
-void print_hex_data(FILE *fh, gint format, register const u_char *cp,
- register u_int length, char_enc encoding);
+void print_hex_data(FILE *fh, gint format, frame_data *fd);
void print_line(FILE *fh, gint format, char *line);
#endif /* print.h */
diff --git a/tethereal.c b/tethereal.c
index 39fc756caa..727a5c484a 100644
--- a/tethereal.c
+++ b/tethereal.c
@@ -1,6 +1,6 @@
/* tethereal.c
*
- * $Id: tethereal.c,v 1.68 2001/02/18 03:38:42 guy Exp $
+ * $Id: tethereal.c,v 1.69 2001/03/23 18:44:20 jfoster Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@zing.org>
@@ -1256,8 +1256,7 @@ wtap_dispatch_cb_print(u_char *user, const struct wtap_pkthdr *phdr, int offset,
putchar('\n');
}
if (print_hex) {
- print_hex_data(stdout, print_args.format, buf,
- fdata.cap_len, fdata.flags.encoding);
+ print_hex_data(stdout, print_args.format, &fdata);
putchar('\n');
}
fdata.cinfo = NULL;