aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2011-04-12 00:44:44 +0000
committerGuy Harris <guy@alum.mit.edu>2011-04-12 00:44:44 +0000
commit2b8ebd389bf1d706d6922940e69b89ff038bf9df (patch)
tree598ee6dae4cbe95a2d65910302f56df5c2dbf832 /wiretap
parent793d683575966d990ce2e819bac5e1c214c6a9fa (diff)
"This file format can't be written to a pipe" and "this file format
can't be saved in compress form" are both equivalent to "this file file format requires seeking when writing it". Change the "can compress" Boolean in the file format table to "writing requires seeking", give all the entries the proper value, and do the checks for attempting to write a file format to a pipe or write it in compressed format to common code. This means we don't need to pass the "can't seek" flag to the dump open routines. svn path=/trunk/; revision=36575
Diffstat (limited to 'wiretap')
-rw-r--r--wiretap/5views.c10
-rw-r--r--wiretap/5views.h2
-rw-r--r--wiretap/btsnoop.c4
-rw-r--r--wiretap/btsnoop.h4
-rw-r--r--wiretap/catapult_dct2000.c2
-rw-r--r--wiretap/catapult_dct2000.h2
-rw-r--r--wiretap/commview.c3
-rw-r--r--wiretap/commview.h2
-rw-r--r--wiretap/eyesdn.c2
-rw-r--r--wiretap/eyesdn.h2
-rw-r--r--wiretap/file_access.c55
-rw-r--r--wiretap/k12.c7
-rw-r--r--wiretap/k12.h4
-rw-r--r--wiretap/k12text.l8
-rw-r--r--wiretap/lanalyzer.c10
-rw-r--r--wiretap/lanalyzer.h2
-rw-r--r--wiretap/libpcap.c2
-rw-r--r--wiretap/libpcap.h2
-rw-r--r--wiretap/netmon.c10
-rw-r--r--wiretap/netmon.h2
-rw-r--r--wiretap/netscaler.c8
-rw-r--r--wiretap/netscaler.h2
-rw-r--r--wiretap/nettl.c2
-rw-r--r--wiretap/nettl.h2
-rw-r--r--wiretap/network_instruments.c7
-rw-r--r--wiretap/network_instruments.h2
-rw-r--r--wiretap/netxray.c20
-rw-r--r--wiretap/netxray.h4
-rw-r--r--wiretap/ngsniffer.c2
-rw-r--r--wiretap/ngsniffer.h2
-rw-r--r--wiretap/pcapng.c2
-rw-r--r--wiretap/pcapng.h2
-rw-r--r--wiretap/snoop.c2
-rw-r--r--wiretap/snoop.h2
-rw-r--r--wiretap/visual.c9
-rw-r--r--wiretap/visual.h2
-rw-r--r--wiretap/wtap.h7
37 files changed, 76 insertions, 136 deletions
diff --git a/wiretap/5views.c b/wiretap/5views.c
index 8cfff5e15d..5352a7be4c 100644
--- a/wiretap/5views.c
+++ b/wiretap/5views.c
@@ -377,18 +377,10 @@ int _5views_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean _5views_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean _5views_dump_open(wtap_dumper *wdh, int *err)
{
_5views_dump_t *_5views;
- /* This is a 5Views file. We can't fill in some fields in the
- header until all the packets have been written, so we can't
- write to a pipe. */
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
/* We can't fill in all the fields in the file header, as we
haven't yet written any packets. As we'll have to rewrite
the header when we've written out all the packets, we just
diff --git a/wiretap/5views.h b/wiretap/5views.h
index bc4a9df842..f51aa30e0a 100644
--- a/wiretap/5views.h
+++ b/wiretap/5views.h
@@ -24,7 +24,7 @@
#define __5VIEWS_H__
int _5views_open(wtap *wth, int *err, gchar **err_info);
-gboolean _5views_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean _5views_dump_open(wtap_dumper *wdh, int *err);
int _5views_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/btsnoop.c b/wiretap/btsnoop.c
index fd266f16b4..bd965f5a29 100644
--- a/wiretap/btsnoop.c
+++ b/wiretap/btsnoop.c
@@ -431,7 +431,7 @@ static gboolean btsnoop_dump_h4(wtap_dumper *wdh,
}
/* FIXME: How do we support multiple backends?*/
-gboolean btsnoop_dump_open_h1(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+gboolean btsnoop_dump_open_h1(wtap_dumper *wdh, int *err)
{
struct btsnoop_hdr file_hdr;
@@ -473,7 +473,7 @@ gboolean btsnoop_dump_open_h1(wtap_dumper *wdh, gboolean cant_seek _U_, int *err
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean btsnoop_dump_open_h4(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+gboolean btsnoop_dump_open_h4(wtap_dumper *wdh, int *err)
{
struct btsnoop_hdr file_hdr;
diff --git a/wiretap/btsnoop.h b/wiretap/btsnoop.h
index 288fece637..e141d42486 100644
--- a/wiretap/btsnoop.h
+++ b/wiretap/btsnoop.h
@@ -24,8 +24,8 @@
#define __W_BTSNOOP_H__
int btsnoop_open(wtap *wth, int *err, gchar **err_info);
-gboolean btsnoop_dump_open_h1(wtap_dumper *wdh, gboolean cant_seek, int *err);
-gboolean btsnoop_dump_open_h4(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean btsnoop_dump_open_h1(wtap_dumper *wdh, int *err);
+gboolean btsnoop_dump_open_h4(wtap_dumper *wdh, int *err);
int btsnoop_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/catapult_dct2000.c b/wiretap/catapult_dct2000.c
index cfc21a7249..91a9067374 100644
--- a/wiretap/catapult_dct2000.c
+++ b/wiretap/catapult_dct2000.c
@@ -571,7 +571,7 @@ typedef struct {
/* The file that we are writing to has been opened. */
/* Set other dump callbacks. */
/*****************************************************/
-gboolean catapult_dct2000_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err _U_)
+gboolean catapult_dct2000_dump_open(wtap_dumper *wdh, int *err _U_)
{
/* Fill in other dump callbacks */
wdh->subtype_write = catapult_dct2000_dump;
diff --git a/wiretap/catapult_dct2000.h b/wiretap/catapult_dct2000.h
index 95253a7fdc..4b8773a69a 100644
--- a/wiretap/catapult_dct2000.h
+++ b/wiretap/catapult_dct2000.h
@@ -21,7 +21,7 @@
*/
int catapult_dct2000_open(wtap *wth, int *err, gchar **err_info);
-gboolean catapult_dct2000_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean catapult_dct2000_dump_open(wtap_dumper *wdh, int *err);
int catapult_dct2000_dump_can_write_encap(int encap);
#define DCT2000_ENCAP_UNHANDLED 0
diff --git a/wiretap/commview.c b/wiretap/commview.c
index 266132ecad..4b4781663d 100644
--- a/wiretap/commview.c
+++ b/wiretap/commview.c
@@ -300,8 +300,7 @@ int commview_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure;
sets "*err" to an error code on failure */
-gboolean commview_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_,
- int *err _U_)
+gboolean commview_dump_open(wtap_dumper *wdh, int *err _U_)
{
wdh->subtype_write = commview_dump;
wdh->subtype_close = NULL;
diff --git a/wiretap/commview.h b/wiretap/commview.h
index 4fc5e2a780..f7220de250 100644
--- a/wiretap/commview.h
+++ b/wiretap/commview.h
@@ -27,7 +27,7 @@
int commview_open(wtap *wth, int *err, gchar **err_info _U_);
int commview_dump_can_write_encap(int encap);
-gboolean commview_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err);
+gboolean commview_dump_open(wtap_dumper *wdh, int *err);
#endif /* __COMMVIEW_H__ */
diff --git a/wiretap/eyesdn.c b/wiretap/eyesdn.c
index 4f5446761e..51f4926810 100644
--- a/wiretap/eyesdn.c
+++ b/wiretap/eyesdn.c
@@ -428,7 +428,7 @@ static gboolean eyesdn_dump(wtap_dumper *wdh,
const union wtap_pseudo_header *pseudo_header _U_,
const guchar *pd, int *err);
-gboolean eyesdn_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+gboolean eyesdn_dump_open(wtap_dumper *wdh, int *err)
{
wdh->subtype_write=eyesdn_dump;
wdh->subtype_close=NULL;
diff --git a/wiretap/eyesdn.h b/wiretap/eyesdn.h
index 5df4419c0d..3f64e947cb 100644
--- a/wiretap/eyesdn.h
+++ b/wiretap/eyesdn.h
@@ -37,7 +37,7 @@ enum EyeSDN_TYPES {
EYESDN_ENCAP_BACNET
};
-gboolean eyesdn_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err);
+gboolean eyesdn_dump_open(wtap_dumper *wdh, int *err);
int eyesdn_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/file_access.c b/wiretap/file_access.c
index 3070b44f04..c50e4b30a6 100644
--- a/wiretap/file_access.c
+++ b/wiretap/file_access.c
@@ -398,35 +398,35 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL },
/* WTAP_FILE_PCAP */
- { "Wireshark/tcpdump/... - libpcap", "libpcap", "*.pcap;*.cap", ".pcap", TRUE, FALSE,
+ { "Wireshark/tcpdump/... - libpcap", "libpcap", "*.pcap;*.cap", ".pcap", FALSE, FALSE,
libpcap_dump_can_write_encap, libpcap_dump_open },
/* WTAP_FILE_PCAP_NSEC */
- { "Wireshark - nanosecond libpcap", "nseclibpcap", "*.pcap;*.cap", ".pcap", TRUE, FALSE,
+ { "Wireshark - nanosecond libpcap", "nseclibpcap", "*.pcap;*.cap", ".pcap", FALSE, FALSE,
libpcap_dump_can_write_encap, libpcap_dump_open },
/* WTAP_FILE_PCAP_AIX */
- { "AIX tcpdump - libpcap", "aixlibpcap", "*.pcap;*.cap", ".pcap", TRUE, FALSE,
+ { "AIX tcpdump - libpcap", "aixlibpcap", "*.pcap;*.cap", ".pcap", FALSE, FALSE,
NULL, NULL },
/* WTAP_FILE_PCAP_SS991029 */
- { "Modified tcpdump - libpcap", "modlibpcap", "*.pcap;*.cap", ".pcap", TRUE, FALSE,
+ { "Modified tcpdump - libpcap", "modlibpcap", "*.pcap;*.cap", ".pcap", FALSE, FALSE,
libpcap_dump_can_write_encap, libpcap_dump_open },
/* WTAP_FILE_PCAP_NOKIA */
- { "Nokia tcpdump - libpcap ", "nokialibpcap", "*.pcap;*.cap", ".pcap", TRUE, FALSE,
+ { "Nokia tcpdump - libpcap ", "nokialibpcap", "*.pcap;*.cap", ".pcap", FALSE, FALSE,
libpcap_dump_can_write_encap, libpcap_dump_open },
/* WTAP_FILE_PCAP_SS990417 */
- { "RedHat 6.1 tcpdump - libpcap", "rh6_1libpcap", "*.pcap;*.cap", ".pcap", TRUE, FALSE,
+ { "RedHat 6.1 tcpdump - libpcap", "rh6_1libpcap", "*.pcap;*.cap", ".pcap", FALSE, FALSE,
libpcap_dump_can_write_encap, libpcap_dump_open },
/* WTAP_FILE_PCAP_SS990915 */
- { "SuSE 6.3 tcpdump - libpcap", "suse6_3libpcap", "*.pcap;*.cap", ".pcap", TRUE, FALSE,
+ { "SuSE 6.3 tcpdump - libpcap", "suse6_3libpcap", "*.pcap;*.cap", ".pcap", FALSE, FALSE,
libpcap_dump_can_write_encap, libpcap_dump_open },
/* WTAP_FILE_5VIEWS */
- { "Accellent 5Views capture", "5views", "*.5vw", ".5vw", FALSE, FALSE,
+ { "Accellent 5Views capture", "5views", "*.5vw", ".5vw", TRUE, FALSE,
_5views_dump_can_write_encap, _5views_dump_open },
/* WTAP_FILE_IPTRACE_1_0 */
@@ -498,11 +498,11 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL },
/* WTAP_FILE_NETMON_1_x */
- { "Microsoft NetMon 1.x", "netmon1", "*.cap", ".cap", FALSE, FALSE,
+ { "Microsoft NetMon 1.x", "netmon1", "*.cap", ".cap", TRUE, FALSE,
netmon_dump_can_write_encap, netmon_dump_open },
/* WTAP_FILE_NETMON_2_x */
- { "Microsoft NetMon 2.x", "netmon2", "*.cap", ".cap", FALSE, FALSE,
+ { "Microsoft NetMon 2.x", "netmon2", "*.cap", ".cap", TRUE, FALSE,
netmon_dump_can_write_encap, netmon_dump_open },
/* WTAP_FILE_NGSNIFFER_UNCOMPRESSED */
@@ -514,19 +514,19 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL },
/* WTAP_FILE_NETXRAY_1_1 */
- { "NA Sniffer (Windows) 1.1", "ngwsniffer_1_1", "*.cap", ".cap", FALSE, FALSE,
+ { "NA Sniffer (Windows) 1.1", "ngwsniffer_1_1", "*.cap", ".cap", TRUE, FALSE,
netxray_dump_can_write_encap_1_1, netxray_dump_open_1_1 },
/* WTAP_FILE_NETXRAY_2_00x */
- { "NA Sniffer (Windows) 2.00x", "ngwsniffer_2_0", "*.cap", ".cap", FALSE, FALSE,
+ { "NA Sniffer (Windows) 2.00x", "ngwsniffer_2_0", "*.cap", ".cap", TRUE, FALSE,
netxray_dump_can_write_encap_2_0, netxray_dump_open_2_0 },
/* WTAP_FILE_NETWORK_INSTRUMENTS_V9 */
- { "Network Instruments Observer (V9)", "niobserverv9", "*.bfr", ".bfr", FALSE, FALSE,
+ { "Network Instruments Observer (V9)", "niobserverv9", "*.bfr", ".bfr", TRUE, FALSE,
network_instruments_dump_can_write_encap, network_instruments_dump_open },
/* WTAP_FILE_LANALYZER */
- { "Novell LANalyzer","lanalyzer", "*.tr1", ".tr1", FALSE, FALSE,
+ { "Novell LANalyzer","lanalyzer", "*.tr1", ".tr1", TRUE, FALSE,
lanalyzer_dump_can_write_encap, lanalyzer_dump_open },
/* WTAP_FILE_PPPDUMP */
@@ -550,7 +550,7 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL},
/* WTAP_FILE_K12 */
- { "Tektronix K12xx 32-bit .rf5 format", "rf5", "*.rf5", ".rf5", TRUE, FALSE,
+ { "Tektronix K12xx 32-bit .rf5 format", "rf5", "*.rf5", ".rf5", FALSE, FALSE,
k12_dump_can_write_encap, k12_dump_open },
/* WTAP_FILE_TOSHIBA */
@@ -558,7 +558,7 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL },
/* WTAP_FILE_VISUAL_NETWORKS */
- { "Visual Networks traffic capture", "visual", "*.*", NULL, FALSE, FALSE,
+ { "Visual Networks traffic capture", "visual", "*.*", NULL, TRUE, FALSE,
visual_dump_can_write_encap, visual_dump_open },
/* WTAP_FILE_ETHERPEEK_V56 */
@@ -578,7 +578,7 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL },
/* WTAP_FILE_K12TEXT */
- { "K12 text file", "k12text", "*.txt", ".txt", TRUE, FALSE,
+ { "K12 text file", "k12text", "*.txt", ".txt", FALSE, FALSE,
k12text_dump_can_write_encap, k12text_dump_open },
/* WTAP_FILE_NETSCREEN */
@@ -586,7 +586,7 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL },
/* WTAP_FILE_COMMVIEW */
- { "TamoSoft CommView", "commview", "*.ncf", ".ncf", TRUE, FALSE,
+ { "TamoSoft CommView", "commview", "*.ncf", ".ncf", FALSE, FALSE,
commview_dump_can_write_encap, commview_dump_open },
/* WTAP_FILE_PCAPNG */
@@ -618,11 +618,11 @@ static const struct file_type_info dump_open_table_base[] = {
NULL, NULL },
/* WTAP_FILE_NETSCALER_1_0 */
- { "NetScaler Trace (Version 1.0)", "nstrace10", "*.*", "*.*", FALSE, FALSE,
+ { "NetScaler Trace (Version 1.0)", "nstrace10", "*.*", "*.*", TRUE, FALSE,
nstrace_10_dump_can_write_encap, nstrace_dump_open },
/* WTAP_FILE_NETSCALER_2_0 */
- { "NetScaler Trace (Version 2.0)", "nstrace20", "*.cap", "*.cap", FALSE, FALSE,
+ { "NetScaler Trace (Version 2.0)", "nstrace20", "*.cap", "*.cap", TRUE, FALSE,
nstrace_20_dump_can_write_encap, nstrace_dump_open },
/* WTAP_FILE_JPEG_JFIF */
@@ -741,8 +741,13 @@ gboolean wtap_dump_can_write_encap(int filetype, int encap)
#ifdef HAVE_LIBZ
gboolean wtap_dump_can_compress(int filetype)
{
+ /*
+ * If this is an unknown file type, or if we have to
+ * seek when writing out a file with this file type,
+ * return FALSE.
+ */
if (filetype < 0 || filetype >= wtap_num_file_types
- || dump_open_table[filetype].can_compress == FALSE)
+ || dump_open_table[filetype].writing_must_seek)
return FALSE;
return TRUE;
@@ -931,8 +936,14 @@ static gboolean wtap_dump_open_finish(wtap_dumper *wdh, int filetype, gboolean c
}
}
+ /* If this file type requires seeking, and we can't seek, fail. */
+ if (dump_open_table[filetype].writing_must_seek && cant_seek) {
+ *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
+ return FALSE;
+ }
+
/* Now try to open the file for writing. */
- if (!(*dump_open_table[filetype].dump_open)(wdh, cant_seek, err)) {
+ if (!(*dump_open_table[filetype].dump_open)(wdh, err)) {
return FALSE;
}
diff --git a/wiretap/k12.c b/wiretap/k12.c
index 3b23224a0a..300f92fbb2 100644
--- a/wiretap/k12.c
+++ b/wiretap/k12.c
@@ -1056,14 +1056,9 @@ static gboolean k12_dump_close(wtap_dumper *wdh, int *err) {
}
-gboolean k12_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err) {
+gboolean k12_dump_open(wtap_dumper *wdh, int *err) {
k12_dump_t *k12;
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
if ( ! wtap_dump_file_write(wdh, k12_file_magic, 8, err)) {
return FALSE;
}
diff --git a/wiretap/k12.h b/wiretap/k12.h
index d5ebe19f28..29bb716328 100644
--- a/wiretap/k12.h
+++ b/wiretap/k12.h
@@ -22,7 +22,7 @@
int k12_open(wtap *wth, int *err, gchar **err_info);
int k12_dump_can_write_encap(int encap);
-gboolean k12_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err);
+gboolean k12_dump_open(wtap_dumper *wdh, int *err);
int k12text_open(wtap *wth, int *err, gchar **err_info _U_);
int k12text_dump_can_write_encap(int encap);
-gboolean k12text_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err);
+gboolean k12text_dump_open(wtap_dumper *wdh, int *err);
diff --git a/wiretap/k12text.l b/wiretap/k12text.l
index 04b61e9f34..a8fba9edbc 100644
--- a/wiretap/k12text.l
+++ b/wiretap/k12text.l
@@ -395,14 +395,8 @@ k12text_dump(wtap_dumper *wdh _U_, const struct wtap_pkthdr *phdr,
gboolean
-k12text_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err)
+k12text_dump_open(wtap_dumper *wdh, int *err)
{
-
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
wdh->subtype_write = k12text_dump;
return TRUE;
diff --git a/wiretap/lanalyzer.c b/wiretap/lanalyzer.c
index 77f6ac9b4a..5719c09a56 100644
--- a/wiretap/lanalyzer.c
+++ b/wiretap/lanalyzer.c
@@ -600,19 +600,11 @@ int lanalyzer_dump_can_write_encap(int encap)
* Returns TRUE on success, FALSE on failure; sets "*err" to an
* error code on failure
*---------------------------------------------------*/
-gboolean lanalyzer_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean lanalyzer_dump_open(wtap_dumper *wdh, int *err)
{
int jump;
void *tmp;
- /* This is a LANalyzer file. We can't fill in some fields in the
- header until all the packets have been written, so we can't
- write to a pipe. */
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
tmp = g_malloc(sizeof(LA_TmpInfo));
if (!tmp) {
*err = errno;
diff --git a/wiretap/lanalyzer.h b/wiretap/lanalyzer.h
index 88420d2b93..6c54a0c024 100644
--- a/wiretap/lanalyzer.h
+++ b/wiretap/lanalyzer.h
@@ -170,7 +170,7 @@ typedef struct {
} LA_TmpInfo;
int lanalyzer_open(wtap *wth, int *err, gchar **err_info);
-gboolean lanalyzer_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean lanalyzer_dump_open(wtap_dumper *wdh, int *err);
int lanalyzer_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/libpcap.c b/wiretap/libpcap.c
index 03ffed19b7..5e65da7183 100644
--- a/wiretap/libpcap.c
+++ b/wiretap/libpcap.c
@@ -907,7 +907,7 @@ int libpcap_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean libpcap_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+gboolean libpcap_dump_open(wtap_dumper *wdh, int *err)
{
guint32 magic;
struct pcap_hdr file_hdr;
diff --git a/wiretap/libpcap.h b/wiretap/libpcap.h
index 401cf343a7..69be8cb2c7 100644
--- a/wiretap/libpcap.h
+++ b/wiretap/libpcap.h
@@ -99,7 +99,7 @@ struct pcaprec_nokia_hdr {
};
int libpcap_open(wtap *wth, int *err, gchar **err_info);
-gboolean libpcap_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean libpcap_dump_open(wtap_dumper *wdh, int *err);
int libpcap_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/netmon.c b/wiretap/netmon.c
index 2f2f1334fa..d31b32c561 100644
--- a/wiretap/netmon.c
+++ b/wiretap/netmon.c
@@ -798,18 +798,10 @@ int netmon_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean netmon_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean netmon_dump_open(wtap_dumper *wdh, int *err)
{
netmon_dump_t *netmon;
- /* This is a NetMon file. We can't fill in some fields in the
- header until all the packets have been written, so we can't
- write to a pipe. */
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
/* We can't fill in all the fields in the file header, as we
haven't yet written any packets. As we'll have to rewrite
the header when we've written out all the packets, we just
diff --git a/wiretap/netmon.h b/wiretap/netmon.h
index 9310547525..599a4e2fd2 100644
--- a/wiretap/netmon.h
+++ b/wiretap/netmon.h
@@ -24,7 +24,7 @@
#define __NETMON_H__
int netmon_open(wtap *wth, int *err, gchar **err_info);
-gboolean netmon_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean netmon_dump_open(wtap_dumper *wdh, int *err);
int netmon_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/netscaler.c b/wiretap/netscaler.c
index 03c996d5f6..f1e646a15a 100644
--- a/wiretap/netscaler.c
+++ b/wiretap/netscaler.c
@@ -1058,16 +1058,10 @@ int nstrace_20_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
** failure */
-gboolean nstrace_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean nstrace_dump_open(wtap_dumper *wdh, int *err _U_)
{
nstrace_dump_t *nstrace;
- if (cant_seek)
- {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
wdh->subtype_write = nstrace_dump;
nstrace = (nstrace_dump_t *)g_malloc(sizeof(nstrace_dump_t));
diff --git a/wiretap/netscaler.h b/wiretap/netscaler.h
index 8e1edb5dbe..0b40fac305 100644
--- a/wiretap/netscaler.h
+++ b/wiretap/netscaler.h
@@ -76,7 +76,7 @@ int nstrace_open(wtap *wth, int *err, gchar **err_info);
int nstrace_10_dump_can_write_encap(int encap);
int nstrace_20_dump_can_write_encap(int encap);
-gboolean nstrace_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean nstrace_dump_open(wtap_dumper *wdh, int *err);
#endif /* _NETSCALER_H */
diff --git a/wiretap/nettl.c b/wiretap/nettl.c
index b384947980..29c8dfdc18 100644
--- a/wiretap/nettl.c
+++ b/wiretap/nettl.c
@@ -722,7 +722,7 @@ int nettl_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure;
sets "*err" to an error code on failure */
-gboolean nettl_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+gboolean nettl_dump_open(wtap_dumper *wdh, int *err)
{
struct nettl_file_hdr file_hdr;
diff --git a/wiretap/nettl.h b/wiretap/nettl.h
index be65ab63f5..6fca41f44b 100644
--- a/wiretap/nettl.h
+++ b/wiretap/nettl.h
@@ -126,7 +126,7 @@
#define NETTL_HDR_PDU_MASK 0x30000000
int nettl_open(wtap *wth, int *err, gchar **err_info);
-gboolean nettl_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err);
+gboolean nettl_dump_open(wtap_dumper *wdh, int *err);
int nettl_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/network_instruments.c b/wiretap/network_instruments.c
index fb98533183..b11a526f59 100644
--- a/wiretap/network_instruments.c
+++ b/wiretap/network_instruments.c
@@ -491,7 +491,7 @@ int network_instruments_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure. */
-gboolean network_instruments_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean network_instruments_dump_open(wtap_dumper *wdh, int *err)
{
capture_file_header file_header;
tlv_header comment_header;
@@ -500,11 +500,6 @@ gboolean network_instruments_dump_open(wtap_dumper *wdh, gboolean cant_seek, int
time_t system_time;
niobserver_dump_t *niobserver;
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
wdh->subtype_write = observer_dump;
niobserver = (niobserver_dump_t *)g_malloc(sizeof(niobserver_dump_t));
diff --git a/wiretap/network_instruments.h b/wiretap/network_instruments.h
index 64e1f78d09..2000bcd043 100644
--- a/wiretap/network_instruments.h
+++ b/wiretap/network_instruments.h
@@ -24,7 +24,7 @@
int network_instruments_open(wtap *wth, int *err, gchar **err_info);
int network_instruments_dump_can_write_encap(int encap);
-gboolean network_instruments_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean network_instruments_dump_open(wtap_dumper *wdh, int *err);
typedef struct capture_file_header
{
diff --git a/wiretap/netxray.c b/wiretap/netxray.c
index e08a952cb9..32f5120764 100644
--- a/wiretap/netxray.c
+++ b/wiretap/netxray.c
@@ -1508,18 +1508,10 @@ int netxray_dump_can_write_encap_1_1(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean netxray_dump_open_1_1(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err)
{
netxray_dump_t *netxray;
- /* This is a NetXRay file. We can't fill in some fields in the header
- until all the packets have been written, so we can't write to a
- pipe. */
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
wdh->subtype_write = netxray_dump_1_1;
wdh->subtype_close = netxray_dump_close_1_1;
@@ -1676,18 +1668,10 @@ int netxray_dump_can_write_encap_2_0(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean netxray_dump_open_2_0(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err)
{
netxray_dump_t *netxray;
- /* This is a NetXRay file. We can't fill in some fields in the header
- until all the packets have been written, so we can't write to a
- pipe. */
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
wdh->subtype_write = netxray_dump_2_0;
wdh->subtype_close = netxray_dump_close_2_0;
diff --git a/wiretap/netxray.h b/wiretap/netxray.h
index eeb3319672..56054d12e1 100644
--- a/wiretap/netxray.h
+++ b/wiretap/netxray.h
@@ -25,8 +25,8 @@
int netxray_open(wtap *wth, int *err, gchar **err_info);
int netxray_dump_can_write_encap_1_1(int encap);
-gboolean netxray_dump_open_1_1(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean netxray_dump_open_1_1(wtap_dumper *wdh, int *err);
int netxray_dump_can_write_encap_2_0(int encap);
-gboolean netxray_dump_open_2_0(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean netxray_dump_open_2_0(wtap_dumper *wdh, int *err);
#endif
diff --git a/wiretap/ngsniffer.c b/wiretap/ngsniffer.c
index d102f5709b..10cd3d4ede 100644
--- a/wiretap/ngsniffer.c
+++ b/wiretap/ngsniffer.c
@@ -2038,7 +2038,7 @@ ngsniffer_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
gboolean
-ngsniffer_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+ngsniffer_dump_open(wtap_dumper *wdh, int *err)
{
ngsniffer_dump_t *ngsniffer;
char buf[6] = {REC_VERS, 0x00, 0x12, 0x00, 0x00, 0x00}; /* version record */
diff --git a/wiretap/ngsniffer.h b/wiretap/ngsniffer.h
index 7260947eeb..afbc4993a0 100644
--- a/wiretap/ngsniffer.h
+++ b/wiretap/ngsniffer.h
@@ -24,7 +24,7 @@
#define __NGSNIFFER_H__
int ngsniffer_open(wtap *wth, int *err, gchar **err_info);
-gboolean ngsniffer_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean ngsniffer_dump_open(wtap_dumper *wdh, int *err);
int ngsniffer_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/pcapng.c b/wiretap/pcapng.c
index dbd51ace53..d3f6c4700a 100644
--- a/wiretap/pcapng.c
+++ b/wiretap/pcapng.c
@@ -2023,7 +2023,7 @@ static gboolean pcapng_dump_close(wtap_dumper *wdh, int *err _U_)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
gboolean
-pcapng_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+pcapng_dump_open(wtap_dumper *wdh, int *err)
{
wtapng_block_t wblock;
pcapng_dump_t *pcapng;
diff --git a/wiretap/pcapng.h b/wiretap/pcapng.h
index b5b037ebd4..a65ee6ff70 100644
--- a/wiretap/pcapng.h
+++ b/wiretap/pcapng.h
@@ -24,7 +24,7 @@
#define __W_PCAPNG_H__
int pcapng_open(wtap *wth, int *err, gchar **err_info);
-gboolean pcapng_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean pcapng_dump_open(wtap_dumper *wdh, int *err);
int pcapng_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/snoop.c b/wiretap/snoop.c
index 12cad44304..7822c55f4d 100644
--- a/wiretap/snoop.c
+++ b/wiretap/snoop.c
@@ -875,7 +875,7 @@ int snoop_dump_can_write_encap(int encap)
/* Returns TRUE on success, FALSE on failure; sets "*err" to an error code on
failure */
-gboolean snoop_dump_open(wtap_dumper *wdh, gboolean cant_seek _U_, int *err)
+gboolean snoop_dump_open(wtap_dumper *wdh, int *err)
{
struct snoop_hdr file_hdr;
diff --git a/wiretap/snoop.h b/wiretap/snoop.h
index c52972ae10..0cba84dadd 100644
--- a/wiretap/snoop.h
+++ b/wiretap/snoop.h
@@ -24,7 +24,7 @@
#define __W_SNOOP_H__
int snoop_open(wtap *wth, int *err, gchar **err_info);
-gboolean snoop_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean snoop_dump_open(wtap_dumper *wdh, int *err);
int snoop_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/visual.c b/wiretap/visual.c
index c1bbd0db5f..949c105172 100644
--- a/wiretap/visual.c
+++ b/wiretap/visual.c
@@ -661,17 +661,10 @@ int visual_dump_can_write_encap(int encap)
/* Open a file for writing.
Returns TRUE on success, FALSE on failure; sets "*err" to an
error code on failure */
-gboolean visual_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err)
+gboolean visual_dump_open(wtap_dumper *wdh, int *err)
{
struct visual_write_info *visual;
- /* We can't fill in some fields in the header until all the packets
- have been written, so we can't write to a pipe. */
- if (cant_seek) {
- *err = WTAP_ERR_CANT_WRITE_TO_PIPE;
- return FALSE;
- }
-
/* Set the write routines for a visual file. */
wdh->subtype_write = visual_dump;
wdh->subtype_close = visual_dump_close;
diff --git a/wiretap/visual.h b/wiretap/visual.h
index 9e32791234..b028a78ca0 100644
--- a/wiretap/visual.h
+++ b/wiretap/visual.h
@@ -29,7 +29,7 @@
#define __VISUAL_H__
int visual_open(wtap *wth, int *err, gchar **err_info);
-gboolean visual_dump_open(wtap_dumper *wdh, gboolean cant_seek, int *err);
+gboolean visual_dump_open(wtap_dumper *wdh, int *err);
int visual_dump_can_write_encap(int encap);
#endif
diff --git a/wiretap/wtap.h b/wiretap/wtap.h
index 6b0eb6e7cf..858dcf0520 100644
--- a/wiretap/wtap.h
+++ b/wiretap/wtap.h
@@ -822,7 +822,6 @@ struct wtap_dumper;
typedef struct wtap wtap;
typedef struct wtap_dumper wtap_dumper;
-/* XXX Should this be moved to wtap-int.h? It appears to be internal to wtap.c. */
struct file_type_info {
/* the file type name */
/* should be NULL for all "pseudo" types that are only internally used and not read/writeable */
@@ -840,8 +839,8 @@ struct file_type_info {
/* should be NULL if no default extension is known */
const char *file_extension_default;
- /* can this type be compressed with gzip? */
- gboolean can_compress;
+ /* when writing this file format, is seeking required? */
+ gboolean writing_must_seek;
/* does this type support name resolution records? */
/* should be FALSE is this file type doesn't support name resolution records */
@@ -853,7 +852,7 @@ struct file_type_info {
/* the function to open the capture file for writing */
/* should be NULL is this file type don't have write support */
- int (*dump_open)(wtap_dumper *, gboolean, int *);
+ int (*dump_open)(wtap_dumper *, int *);
};