* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#include "main.h"
#include "filefilter.h"
+#include <config.h>
+
#include "cache.h"
-#include "ui-fileops.h"
+#include "debug.h"
+#include "main-defines.h"
#include "rcfile.h"
+#include "ui-fileops.h"
/*
*-----------------------------------------------------------------------------
*-----------------------------------------------------------------------------
*/
-static GList *filter_list = NULL;
-static GList *extension_list = NULL;
-static GList *sidecar_ext_list = NULL;
+static GList *filter_list = nullptr;
+static GList *extension_list = nullptr;
+static GList *sidecar_ext_list = nullptr;
static GList *file_class_extension_list[FILE_FORMAT_CLASSES];
-static GList *file_writable_list = NULL; /* writable files */
-static GList *file_sidecar_list = NULL; /* files with allowed sidecar */
+static GList *file_writable_list = nullptr; /* writable files */
+static GList *file_sidecar_list = nullptr; /* files with allowed sidecar */
static FilterEntry *filter_entry_new(const gchar *key, const gchar *description,
g_free(fe);
}
-GList *filter_get_list(void)
+GList *filter_get_list()
{
return filter_list;
}
{
GList *work;
- if (!key) return NULL;
+ if (!key) return nullptr;
work = filter_list;
while (work)
{
- FilterEntry *fe = static_cast<FilterEntry *>(work->data);
+ auto fe = static_cast<FilterEntry *>(work->data);
work = work->next;
if (strcmp(fe->key, key) == 0) return fe;
}
- return NULL;
+ return nullptr;
}
static gboolean filter_key_exists(const gchar *key)
{
- return (filter_get_by_key(key) != NULL);
+ return (filter_get_by_key(key) != nullptr);
}
void filter_add(const gchar *key, const gchar *description, const gchar *extensions, FileFormatClass file_class, gboolean writable, gboolean allow_sidecar, gboolean enabled)
work = filter_list;
while (work)
{
- FilterEntry *fe = static_cast<FilterEntry *>(work->data);
+ auto fe = static_cast<FilterEntry *>(work->data);
work = work->next;
if (fe->key && strcmp(fe->key, key) == 0)
{
filter_add(key, description, extensions, file_class, writable, allow_sidecar, enabled);
}
-void filter_reset(void)
+void filter_reset()
{
- GList *work;
-
- work = filter_list;
- while (work)
- {
- FilterEntry *fe = static_cast<FilterEntry *>(work->data);
- work = work->next;
- filter_entry_free(fe);
- }
-
- g_list_free(filter_list);
- filter_list = NULL;
+ g_list_free_full(filter_list, reinterpret_cast<GDestroyNotify>(filter_entry_free));
+ filter_list = nullptr;
}
-void filter_add_defaults(void)
+void filter_add_defaults()
{
/* formats supported by custom loaders */
filter_add_if_missing("dds", "DirectDraw Surface", ".dds", FORMAT_CLASS_IMAGE, FALSE, FALSE, TRUE);
#ifdef HAVE_DJVU
filter_add_if_missing("djvu", "DjVu Format", ".djvu;.djv", FORMAT_CLASS_DOCUMENT, FALSE, FALSE, TRUE);
#endif
+#ifdef HAVE_JPEGXL
+ filter_add_if_missing("jxl", "JXL", ".jxl", FORMAT_CLASS_IMAGE, FALSE, TRUE, TRUE);
+#endif
#ifdef HAVE_J2K
filter_add_if_missing("jp2", "JPEG 2000", ".jp2", FORMAT_CLASS_IMAGE, FALSE, FALSE, TRUE);
#endif
filter_add_if_missing("apng", "Animated Portable Network Graphic", ".apng", FORMAT_CLASS_IMAGE, FALSE, FALSE, TRUE);
/* formats supported by gdk-pixbuf */
- GSList *list, *work;
+ GSList *list;
+ GSList *work;
list = gdk_pixbuf_get_formats();
work = list;
gchar *name;
gchar *desc;
gchar **extensions;
- GString *filter = NULL;
+ GString *filter = nullptr;
guint i;
- format = work->data;
+ format = static_cast<GdkPixbufFormat *>(work->data);
work = work->next;
name = gdk_pixbuf_format_get_name(format);
filter_add_if_missing("mrw", "Minolta raw format", ".mrw", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
filter_add_if_missing("nef", "Nikon raw format", ".nef", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
filter_add_if_missing("orf", "Olympus raw format", ".orf", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
- filter_add_if_missing("pef", "Pentax or Samsung raw format", ".pef;.ptx", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
+ filter_add_if_missing("pef", "Pentax or Samsung raw format", ".pef", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
filter_add_if_missing("dng", "Adobe Digital Negative raw format", ".dng", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
- filter_add_if_missing("x3f", "Sigma raw format", ".x3f", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
filter_add_if_missing("raw", "Panasonic raw format", ".raw", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
filter_add_if_missing("r3d", "Red raw format", ".r3d", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
filter_add_if_missing("3fr", "Hasselblad raw format", ".3fr", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
filter_add_if_missing("rw2", "Panasonic raw format", ".rw2", FORMAT_CLASS_RAWIMAGE, FALSE, TRUE, TRUE);
/* video files */
- filter_add_if_missing("mp4", "MP4 video file", ".mp4;.m4v;.3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
- filter_add_if_missing("3gp", "3GP video file", ".3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
- filter_add_if_missing("mov", "MOV video file", ".mov;.qt", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
- filter_add_if_missing("avi", "AVI video file", ".avi", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
- filter_add_if_missing("mpg", "MPG video file", ".mpg;.mpeg;.mts;.m2ts", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
- filter_add_if_missing("mkv", "Matroska video file", ".mkv;.webm", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
- filter_add_if_missing("wmv", "Windows Media Video file", ".wmv;.asf", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
- filter_add_if_missing("flv", "Flash Video file", ".flv", FORMAT_CLASS_VIDEO, FALSE, FALSE, FALSE);
+ filter_add_if_missing("mp4", "MP4 video file", ".mp4;.m4v;.3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+ filter_add_if_missing("3gp", "3GP video file", ".3gp;.3g2", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+ filter_add_if_missing("mov", "MOV video file", ".mov;.qt", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+ filter_add_if_missing("avi", "AVI video file", ".avi", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+ filter_add_if_missing("mpg", "MPG video file", ".mpg;.mpeg;.mts;.m2ts", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+ filter_add_if_missing("mkv", "Matroska video file", ".mkv;.webm", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+ filter_add_if_missing("wmv", "Windows Media Video file", ".wmv;.asf", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
+ filter_add_if_missing("flv", "Flash Video file", ".flv", FORMAT_CLASS_VIDEO, FALSE, FALSE, TRUE);
}
GList *filter_to_list(const gchar *extensions)
{
- GList *list = NULL;
+ GList *list = nullptr;
const gchar *p;
- if (!extensions) return NULL;
+ if (!extensions) return nullptr;
p = extensions;
while (*p != '\0')
static gint filter_sort_ext_len_cb(gconstpointer a, gconstpointer b)
{
- gchar *sa = (gchar *)a;
- gchar *sb = (gchar *)b;
+ auto sa = static_cast<const gchar *>(a);
+ auto sb = static_cast<const gchar *>(b);
gint len_a = strlen(sa);
gint len_b = strlen(sb);
}
-void filter_rebuild(void)
+void filter_rebuild()
{
GList *work;
guint i;
- string_list_free(extension_list);
- extension_list = NULL;
+ g_list_free_full(extension_list, g_free);
+ extension_list = nullptr;
- string_list_free(file_writable_list);
- file_writable_list = NULL;
+ g_list_free_full(file_writable_list, g_free);
+ file_writable_list = nullptr;
- string_list_free(file_sidecar_list);
- file_sidecar_list = NULL;
+ g_list_free_full(file_sidecar_list, g_free);
+ file_sidecar_list = nullptr;
for (i = 0; i < FILE_FORMAT_CLASSES; i++)
{
- string_list_free(file_class_extension_list[i]);
- file_class_extension_list[i] = NULL;
+ g_list_free_full(file_class_extension_list[i], g_free);
+ file_class_extension_list[i] = nullptr;
}
work = filter_list;
{
FilterEntry *fe;
- fe = work->data;
+ fe = static_cast<FilterEntry *>(work->data);
work = work->next;
if (fe->enabled)
work = filter;
while (work)
{
- gchar *filter = work->data;
+ auto filter = static_cast<gchar *>(work->data);
guint lf = strlen(filter);
if (ln >= lf)
work = work->next;
}
- return NULL;
+ return nullptr;
}
const gchar *registered_extension_from_path(const gchar *name)
{
work = filter_list;
while (work)
{
- FilterEntry *fe = static_cast<FilterEntry *>(work->data);
+ auto fe = static_cast<FilterEntry *>(work->data);
work = work->next;
WRITE_NL(); WRITE_STRING("<file_type ");
{
old_fe = filter_get_by_key(fe.key);
- if (old_fe != NULL) filter_remove_entry(old_fe);
+ if (old_fe != nullptr) filter_remove_entry(old_fe);
filter_add(fe.key, fe.description, fe.extensions, fe.file_class, fe.writable, fe.allow_sidecar, fe.enabled);
}
g_free(fe.key);
*-----------------------------------------------------------------------------
*/
-GList *sidecar_ext_get_list(void)
+GList *sidecar_ext_get_list()
{
return sidecar_ext_list;
}
-static void sidecar_ext_free_list(void)
+static void sidecar_ext_free_list()
{
- GList *work;
-
- work = sidecar_ext_list;
- while (work)
- {
- gchar *ext = work->data;
- work = work->next;
- g_free(ext);
- }
- g_list_free(sidecar_ext_list);
- sidecar_ext_list = NULL;
+ g_list_free_full(sidecar_ext_list, g_free);
+ sidecar_ext_list = nullptr;
}
void sidecar_ext_parse(const gchar *text)
{
sidecar_ext_free_list();
- if (text == NULL) return;
+ if (text == nullptr) return;
sidecar_ext_list = filter_to_list(text);
}