aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap/dpa400.c
diff options
context:
space:
mode:
authorGuy Harris <gharris@sonic.net>2021-02-14 00:34:10 -0800
committerGuy Harris <gharris@sonic.net>2021-02-14 00:58:46 -0800
commitb8b3531883db249be80e217154c7e7fffb86f5bd (patch)
treebecde2c028097baae1b38d8c13b4a9827d0de8b0 /wiretap/dpa400.c
parent5b3c3d0682c869e6dd19a5245b1a22c90192e9ae (diff)
wiretap: register most built-in file types from its module.
Remove most of the built-in file types from the table in wiretap/file_access.c and, instead, have the file types register themselves, using wtap_register_file_type_subtypes(). This reduces the source code changes needed to add a new file type from three (add the handler, add the file type to the table in file_access.c, add a #define for the file type in wiretap/wtap.h) to one (add the handler). (It also requires adding the handler's source file to wiretap/CMakeLists.txt, but that's required in both cases.) A few remain because the WTAP_FILE_TYPE_SUBTYPE_ #define is used elsewhere; that needs to be fixed. Fix the wiretap/CMakefile.txt file to scan k12text.l, as that now contains a registration routine. In the process, avoid scanning files that don't implement a file type and won't ever have a registration routine. Add a Lua routine to fetch the total number of file types; we use that in some code to construct the wtap_filetypes table, which we need to do in order to continue to have all the values that used to come from the WTAP_FILE_TYPE_SUBTYPE_ types. While we're at it, add modelines to a file that lacked them.
Diffstat (limited to 'wiretap/dpa400.c')
-rw-r--r--wiretap/dpa400.c32
1 files changed, 31 insertions, 1 deletions
diff --git a/wiretap/dpa400.c b/wiretap/dpa400.c
index a298520b47..95885597ff 100644
--- a/wiretap/dpa400.c
+++ b/wiretap/dpa400.c
@@ -32,6 +32,10 @@ struct dpa400_header {
guint8 sb2;
};
+static int dpa400_file_type_subtype = -1;
+
+void register_dpa400(void);
+
static gboolean dpa400_read_header(FILE_T fh, struct dpa400_header *hdr, int *err, gchar **err_info)
{
if (!wtap_read_bytes_or_eof(fh, hdr, sizeof(struct dpa400_header), err, err_info))
@@ -224,7 +228,7 @@ wtap_open_return_val dpa400_open(wtap *wth, int *err, gchar **err_info)
if (memcmp(magic, dpa_magic, sizeof(dpa_magic)))
return WTAP_OPEN_NOT_MINE;
- wth->file_type_subtype = WTAP_FILE_TYPE_SUBTYPE_DPA400;
+ wth->file_type_subtype = dpa400_file_type_subtype;
wth->file_encap = WTAP_ENCAP_DPAUXMON;
wth->file_tsprec = WTAP_TSPREC_USEC;
wth->subtype_read = dpa400_read;
@@ -241,3 +245,29 @@ wtap_open_return_val dpa400_open(wtap *wth, int *err, gchar **err_info)
return WTAP_OPEN_MINE;
}
+
+static const struct file_type_subtype_info dpa400_info = {
+ "Unigraf DPA-400 capture", "dpa400", "bin", NULL,
+ FALSE, FALSE, 0,
+ NULL, NULL, NULL
+};
+
+void register_dpa400(void)
+{
+ dpa400_file_type_subtype =
+ wtap_register_file_type_subtypes(&dpa400_info,
+ WTAP_FILE_TYPE_SUBTYPE_UNKNOWN);
+}
+
+/*
+ * Editor modelines - https://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 8
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * End:
+ *
+ * vi: set shiftwidth=8 tabstop=8 noexpandtab:
+ * :indentSize=8:tabSize=8:noTabs=false:
+ */