be0b8a5e |
diff -Naur ngrep.old/ngrep.8 ngrep.patched/ngrep.8
--- ngrep.old/ngrep.8 Mon Dec 31 23:07:02 2001
+++ ngrep.patched/ngrep.8 Fri Aug 30 17:33:28 2002
@@ -48,6 +48,10 @@
.IP -h
Display help/usage information.
+.IP -L
+Display captured packets in line-by-line manner. Good for post-processing
+of textual protocols.
+
.IP -X
Treat the match expression as a hexadecimal string. See the
explanation of \fImatch expression\fP below.
diff -Naur ngrep.old/ngrep.c ngrep.patched/ngrep.c
--- ngrep.old/ngrep.c Mon Dec 31 23:11:00 2001
+++ ngrep.patched/ngrep.c Fri Aug 30 17:33:28 2002
@@ -54,6 +54,8 @@
#include <signal.h>
#include <sys/ioctl.h>
+#include <locale.h>
+
#ifdef USE_PCRE
#include "pcre-3.4/pcre.h"
#else
@@ -62,6 +64,9 @@
#include "ngrep.h"
+#define dump(_a,_b) ( show_eol ? \
+ dump_line_by_line((_a),(_b)) : _dump((_a),(_b)) )
+
static char rcsver[] = "$Revision$";
@@ -72,6 +77,8 @@
int matches = 0, max_matches = 0;
int live_read = 1, want_delay = 0;
+int show_eol=0;
+
char pc_err[PCAP_ERRBUF_SIZE];
#ifdef USE_PCRE
int err_offset;
@@ -117,8 +124,13 @@
signal(SIGPIPE, clean_exit);
signal(SIGWINCH, update_windowsize);
- while ((c = getopt(argc, argv, "hXViwqpevxlDtTs:n:d:A:I:O:")) != EOF) {
+ setlocale(LC_ALL, "");
+
+ while ((c = getopt(argc, argv, "LhXViwqpevxlDtTs:n:d:A:I:O:")) != EOF) {
switch (c) {
+ case 'L':
+ show_eol=1;
+ break;
case 'I':
read_file = optarg;
break;
@@ -649,8 +661,28 @@
return 1;
}
+void dump_line_by_line( char *data, int len )
+{
+ unsigned width;
+ char *c;
+
+ c=data;
+
+ while( c< data + len) {
+ if (*c=='\n') {
+ puts("");
+ } else {
+ putchar(isprint(*c)?*c:'.');
+ }
+ c++;
+
+ }
+ puts("");
+
+}
+
-void dump(char *data, int len) {
+void _dump(char *data, int len) {
if (len > 0) {
unsigned width = show_hex?16:(ws_col-5);
char *str = data;
@@ -811,7 +843,7 @@
void usage(int e) {
- printf("usage: ngrep <-hXViwqpevxlDtT> <-IO pcap_dump> <-n num> <-d dev> <-A num>\n"
+ printf("usage: ngrep <-hLXViwqpevxlDtT> <-IO pcap_dump> <-n num> <-d dev> <-A num>\n"
" <-s snaplen> <match expression> <bpf filter>\n");
exit(e);
}
diff -Naur ngrep.old/ngrep.h ngrep.patched/ngrep.h
--- ngrep.old/ngrep.h Mon Dec 31 23:02:00 2001
+++ ngrep.patched/ngrep.h Fri Aug 30 17:33:29 2002
@@ -29,7 +29,8 @@
char *get_filter(char **);
void process(u_char *, struct pcap_pkthdr*, u_char *);
-void dump(char *, int);
+void _dump(char *, int);
+void dump_line_by_line(char *, int);
void clean_exit(int);
void usage(int);
void version(void);
|