diff options
author | Guy Harris <guy@alum.mit.edu> | 2016-01-29 13:15:41 -0800 |
---|---|---|
committer | Guy Harris <guy@alum.mit.edu> | 2016-01-29 21:16:02 +0000 |
commit | 22e5cdbb9bd38710f59ad5ba19c3343b1c033dc7 (patch) | |
tree | 0c5c8e2cba72268e98ac933ad678ff48f5de43b4 /wiretap | |
parent | 32b44bfd0fc9f2e5df37b65b5352bd67689d56d6 (diff) | |
download | wireshark-22e5cdbb9bd38710f59ad5ba19c3343b1c033dc7.tar.gz |
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.c | 72 | ||||
-rw-r--r-- | wiretap/file_wrappers.c | 20 | ||||
-rw-r--r-- | wiretap/wtap-int.h | 7 |
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. |