summaryrefslogtreecommitdiff
path: root/ui/cli
diff options
context:
space:
mode:
authorPascal Quantin <pascal.quantin@gmail.com>2015-06-08 21:24:22 +0200
committerAnders Broman <a.broman58@gmail.com>2015-06-09 04:00:01 +0000
commite28339e59001baf9bb3aa02e29b931b316d07e1c (patch)
treef6d3296ed4c39af16957d6779178571f7bebc7c6 /ui/cli
parent0a78e0bb485d129e7d68e2984e335bad5c3585fb (diff)
downloadwireshark-e28339e59001baf9bb3aa02e29b931b316d07e1c.tar.gz
tshark: add ability to display streams in EBCDIC
As requested in https://ask.wireshark.org/questions/42958/tshark-follow-tcp-stream-for-ebcdic Change-Id: Ia8d93f59aa038bd6328adea137c92ea5a52361b5 Reviewed-on: https://code.wireshark.org/review/8844 Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com> Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
Diffstat (limited to 'ui/cli')
-rw-r--r--ui/cli/tap-follow.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/ui/cli/tap-follow.c b/ui/cli/tap-follow.c
index a658f4170a..4a7d27eb10 100644
--- a/ui/cli/tap-follow.c
+++ b/ui/cli/tap-follow.c
@@ -36,6 +36,7 @@
#include <glib.h>
#include <epan/addr_resolv.h>
+#include <epan/charsets.h>
#include <epan/epan_dissect.h>
#include <epan/follow.h>
#include <epan/stat_tap_ui.h>
@@ -66,6 +67,7 @@ typedef enum
{
mode_HEX,
mode_ASCII,
+ mode_EBCDIC,
mode_RAW
} mode_e;
@@ -96,6 +98,7 @@ typedef struct
#define STR_HEX ",hex"
#define STR_ASCII ",ascii"
+#define STR_EBCDIC ",ebcdic"
#define STR_RAW ",raw"
static void
@@ -133,6 +136,7 @@ followStrMode(
{
case mode_HEX: return "hex";
case mode_ASCII: return "ascii";
+ case mode_EBCDIC: return "ebcdic";
case mode_RAW: return "raw";
}
@@ -632,6 +636,7 @@ followDraw(
break;
case mode_ASCII:
+ case mode_EBCDIC:
printf("%s%u\n", node ? "\t" : "", sc.dlen);
break;
@@ -659,6 +664,7 @@ followDraw(
break;
case mode_ASCII:
+ case mode_EBCDIC:
for (ii = 0; ii < len; ii++)
{
switch (bin[ii])
@@ -677,6 +683,9 @@ followDraw(
data[ii++] = '\n';
}
data[ii] = 0;
+ if (fp->mode == mode_EBCDIC) {
+ EBCDIC_to_ASCII(data, ii);
+ }
printf("%s", data);
break;
@@ -752,6 +761,10 @@ followArgMode(
{
fp->mode = mode_ASCII;
}
+ else if (followArgStrncmp(opt_argp, STR_EBCDIC))
+ {
+ fp->mode = mode_EBCDIC;
+ }
else if (followArgStrncmp(opt_argp, STR_RAW))
{
fp->mode = mode_RAW;