aboutsummaryrefslogtreecommitdiffstats
path: root/wiretap
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2016-01-29 13:15:41 -0800
committerGuy Harris <guy@alum.mit.edu>2016-01-29 21:16:02 +0000
commit22e5cdbb9bd38710f59ad5ba19c3343b1c033dc7 (patch)
tree0c5c8e2cba72268e98ac933ad678ff48f5de43b4 /wiretap
parent32b44bfd0fc9f2e5df37b65b5352bd67689d56d6 (diff)
No need for a routine to return a GSList of extensions for compressed files.
Just use the table - or an empty table if we're not including the compressed file extensions. Change-Id: I0b3ef3987e1986953f2957c27c84b2ee59b90bc0 Reviewed-on: https://code.wireshark.org/review/13611 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'wiretap')
-rw-r--r--wiretap/file_access.c72
-rw-r--r--wiretap/file_wrappers.c20
-rw-r--r--wiretap/wtap-int.h7
3 files changed, 26 insertions, 73 deletions
diff --git a/wiretap/file_access.c b/wiretap/file_access.c
index 96ea46c2e5..0daed2b419 100644
--- a/wiretap/file_access.c
+++ b/wiretap/file_access.c
@@ -90,9 +90,9 @@
*/
static GSList *
add_extensions(GSList *extensions, const gchar *extension,
- GSList *compressed_file_extensions)
+ const char **compressed_file_extensions)
{
- GSList *compressed_file_extension;
+ const char **compressed_file_extensionp;
/*
* Add the specified extension.
@@ -103,12 +103,12 @@ add_extensions(GSList *extensions, const gchar *extension,
* Now add the extensions for compressed-file versions of
* that extension.
*/
- for (compressed_file_extension = compressed_file_extensions;
- compressed_file_extension != NULL;
- compressed_file_extension = g_slist_next(compressed_file_extension)) {
+ for (compressed_file_extensionp = compressed_file_extensions;
+ *compressed_file_extensionp != NULL;
+ compressed_file_extensionp++) {
extensions = g_slist_append(extensions,
g_strdup_printf("%s.%s", extension,
- (gchar *)compressed_file_extension->data));
+ *compressed_file_extensionp));
}
return extensions;
@@ -198,7 +198,7 @@ wtap_get_file_extension_type_name(int extension_type)
static GSList *
add_extensions_for_file_extensions_type(int extension_type,
- GSList *extensions, GSList *compressed_file_extensions)
+ GSList *extensions, const char **compressed_file_extensions)
{
gchar **extensions_set, **extensionp, *extension;
@@ -234,7 +234,6 @@ add_extensions_for_file_extensions_type(int extension_type,
GSList *
wtap_get_file_extension_type_extensions(guint extension_type)
{
- GSList *compressed_file_extensions;
GSList *extensions;
if (extension_type >= file_type_extensions_arr->len)
@@ -243,18 +242,12 @@ wtap_get_file_extension_type_extensions(guint extension_type)
extensions = NULL; /* empty list, to start with */
/*
- * Get the list of compressed-file extensions.
- */
- compressed_file_extensions = wtap_get_compressed_file_extensions();
-
- /*
* Add all this file extension type's extensions, with compressed
* variants.
*/
extensions = add_extensions_for_file_extensions_type(extension_type,
- extensions, compressed_file_extensions);
+ extensions, compressed_file_extension_table);
- g_slist_free(compressed_file_extensions);
return extensions;
}
@@ -267,7 +260,6 @@ wtap_get_file_extension_type_extensions(guint extension_type)
GSList *
wtap_get_all_file_extensions_list(void)
{
- GSList *compressed_file_extensions;
GSList *extensions;
unsigned int i;
@@ -275,21 +267,15 @@ wtap_get_all_file_extensions_list(void)
extensions = NULL; /* empty list, to start with */
- /*
- * Get the list of compressed-file extensions.
- */
- compressed_file_extensions = wtap_get_compressed_file_extensions();
-
for (i = 0; i < file_type_extensions_arr->len; i++) {
/*
* Add all this file extension type's extensions, with
* compressed variants.
*/
extensions = add_extensions_for_file_extensions_type(i,
- extensions, compressed_file_extensions);
+ extensions, compressed_file_extension_table);
}
- g_slist_free(compressed_file_extensions);
return extensions;
}
@@ -590,7 +576,7 @@ get_file_extension(const char *pathname)
gchar *filename;
gchar **components;
size_t ncomponents;
- GSList *compressed_file_extensions, *compressed_file_extension;
+ const char **compressed_file_extensionp;
gchar *extensionp;
/*
@@ -637,21 +623,11 @@ get_file_extension(const char *pathname)
* Is the last component one of the extensions used for compressed
* files?
*/
- compressed_file_extensions = wtap_get_compressed_file_extensions();
- if (compressed_file_extensions == NULL) {
- /*
- * We don't support reading compressed files, so just
- * return a copy of whatever extension we did find.
- */
- extensionp = g_strdup(components[ncomponents - 1]);
- g_strfreev(components);
- return extensionp;
- }
extensionp = components[ncomponents - 1];
- for (compressed_file_extension = compressed_file_extensions;
- compressed_file_extension != NULL;
- compressed_file_extension = g_slist_next(compressed_file_extension)) {
- if (strcmp(extensionp, (char *)compressed_file_extension->data) == 0) {
+ for (compressed_file_extensionp = compressed_file_extension_table;
+ *compressed_file_extensionp != NULL;
+ compressed_file_extensionp++) {
+ if (strcmp(extensionp, *compressed_file_extensionp) == 0) {
/*
* Yes, it's one of the compressed-file extensions.
* Is there an extension before that?
@@ -1995,7 +1971,7 @@ wtap_short_string_to_file_type_subtype(const char *short_name)
static GSList *
add_extensions_for_file_type_subtype(int file_type_subtype, GSList *extensions,
- GSList *compressed_file_extensions)
+ const char **compressed_file_extensions)
{
gchar **extensions_set, **extensionp;
gchar *extension;
@@ -2049,8 +2025,10 @@ add_extensions_for_file_type_subtype(int file_type_subtype, GSList *extensions,
GSList *
wtap_get_file_extensions_list(int file_type_subtype, gboolean include_compressed)
{
- GSList *compressed_file_extensions;
GSList *extensions;
+ static const char *no_compressed_extensions[] = {
+ NULL
+ };
if (file_type_subtype < 0 || file_type_subtype >= wtap_num_file_types_subtypes)
return NULL; /* not a valid file type */
@@ -2061,22 +2039,12 @@ wtap_get_file_extensions_list(int file_type_subtype, gboolean include_compressed
extensions = NULL; /* empty list, to start with */
/*
- * If include_compressions is true, get the list of compressed-file
- * extensions.
- */
- if (include_compressed)
- compressed_file_extensions = wtap_get_compressed_file_extensions();
- else
- compressed_file_extensions = NULL;
-
- /*
* Add all this file type's extensions, with compressed
- * variants.
+ * variants if include_compressed is true.
*/
extensions = add_extensions_for_file_type_subtype(file_type_subtype, extensions,
- compressed_file_extensions);
+ include_compressed ? compressed_file_extension_table : no_compressed_extensions);
- g_slist_free(compressed_file_extensions);
return extensions;
}
diff --git a/wiretap/file_wrappers.c b/wiretap/file_wrappers.c
index 0edd8945bb..067be50659 100644
--- a/wiretap/file_wrappers.c
+++ b/wiretap/file_wrappers.c
@@ -69,31 +69,13 @@
* might be expanded to include routines to handle the various
* compression types.
*/
-static const char *compressed_file_extensions[] = {
+const char *compressed_file_extension_table[] = {
#ifdef HAVE_LIBZ
"gz",
#endif
NULL
};
-/*
- * Return a GSList of all the compressed file extensions.
- * The data pointers all point to items in compressed_file_extensions[],
- * so the GSList can just be freed with g_slist_free().
- */
-GSList *
-wtap_get_compressed_file_extensions(void)
-{
- const char **extension;
- GSList *extensions;
-
- extensions = NULL;
- for (extension = &compressed_file_extensions[0]; *extension != NULL;
- extension++)
- extensions = g_slist_append(extensions, (gpointer)(*extension));
- return extensions;
-}
-
/* #define GZBUFSIZE 8192 */
#define GZBUFSIZE 4096
diff --git a/wiretap/wtap-int.h b/wiretap/wtap-int.h
index 73a3bdf1ac..332d836c57 100644
--- a/wiretap/wtap-int.h
+++ b/wiretap/wtap-int.h
@@ -247,8 +247,11 @@ extern gint wtap_num_file_types;
#define g_ptr_array_len(a) ((a)->len)
#endif
-/*** get GSList of all compressed file extensions ***/
-GSList *wtap_get_compressed_file_extensions(void);
+/*
+ * Table of extensions for compressed file types we support.
+ * Last pointer in the list is null.
+ */
+extern const char *compressed_file_extension_table[];
/*
* Read a given number of bytes from a file.