aboutsummaryrefslogtreecommitdiffhomepage
path: root/xdgmime.cpp
diff options
context:
space:
mode:
authorGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-11-18 16:30:30 -0800
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2012-11-18 16:30:30 -0800
commit9992b8eb0e3366ff8a3948aa0b66a19c3c12c737 (patch)
tree6dda0fef85812016fbba9ea067c9d586092b506d /xdgmime.cpp
parentbab69f26724028d16054a3daf5c78aad7c67bb2d (diff)
Apply new indentation, brace, and whitespace style
Diffstat (limited to 'xdgmime.cpp')
-rw-r--r--xdgmime.cpp816
1 files changed, 411 insertions, 405 deletions
diff --git a/xdgmime.cpp b/xdgmime.cpp
index 5db32268..39d0a189 100644
--- a/xdgmime.cpp
+++ b/xdgmime.cpp
@@ -59,189 +59,193 @@ const char *xdg_mime_type_unknown = "application/octet-stream";
enum
- {
- XDG_CHECKED_UNCHECKED,
- XDG_CHECKED_VALID,
- XDG_CHECKED_INVALID
- };
+{
+ XDG_CHECKED_UNCHECKED,
+ XDG_CHECKED_VALID,
+ XDG_CHECKED_INVALID
+};
struct XdgDirTimeList
{
- time_t mtime;
- char *directory_name;
- int checked;
- XdgDirTimeList *next;
+ time_t mtime;
+ char *directory_name;
+ int checked;
+ XdgDirTimeList *next;
};
struct XdgCallbackList
{
- XdgCallbackList *next;
- XdgCallbackList *prev;
- int callback_id;
- XdgMimeCallback callback;
- void *data;
- XdgMimeDestroy destroy;
+ XdgCallbackList *next;
+ XdgCallbackList *prev;
+ int callback_id;
+ XdgMimeCallback callback;
+ void *data;
+ XdgMimeDestroy destroy;
};
/* Function called by xdg_run_command_on_dirs. If it returns TRUE, further
* directories aren't looked at */
-typedef int (*XdgDirectoryFunc) (const char *directory,
- void *user_data);
+typedef int (*XdgDirectoryFunc)(const char *directory,
+ void *user_data);
static XdgDirTimeList *
-xdg_dir_time_list_new (void)
+xdg_dir_time_list_new(void)
{
- XdgDirTimeList *retval;
+ XdgDirTimeList *retval;
- retval = (XdgDirTimeList *)calloc (1, sizeof (XdgDirTimeList));
- retval->checked = XDG_CHECKED_UNCHECKED;
+ retval = (XdgDirTimeList *)calloc(1, sizeof(XdgDirTimeList));
+ retval->checked = XDG_CHECKED_UNCHECKED;
- return retval;
+ return retval;
}
static void
-xdg_dir_time_list_free (XdgDirTimeList *list)
+xdg_dir_time_list_free(XdgDirTimeList *list)
{
- XdgDirTimeList *next;
+ XdgDirTimeList *next;
- while (list)
+ while (list)
{
- next = list->next;
- free (list->directory_name);
- free (list);
- list = next;
+ next = list->next;
+ free(list->directory_name);
+ free(list);
+ list = next;
}
}
static int
-xdg_mime_init_from_directory (const char *directory)
+xdg_mime_init_from_directory(const char *directory)
{
- char *file_name;
- struct stat st;
- XdgDirTimeList *list;
+ char *file_name;
+ struct stat st;
+ XdgDirTimeList *list;
- assert (directory != NULL);
+ assert(directory != NULL);
- file_name = (char *)malloc (strlen (directory) + strlen ("/mime/globs") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/globs");
- if (stat (file_name, &st) == 0)
+ file_name = (char *)malloc(strlen(directory) + strlen("/mime/globs") + 1);
+ strcpy(file_name, directory);
+ strcat(file_name, "/mime/globs");
+ if (stat(file_name, &st) == 0)
{
- _xdg_mime_glob_read_from_file (global_hash, file_name);
+ _xdg_mime_glob_read_from_file(global_hash, file_name);
- list = xdg_dir_time_list_new ();
- list->directory_name = file_name;
- list->mtime = st.st_mtime;
- list->next = dir_time_list;
- dir_time_list = list;
+ list = xdg_dir_time_list_new();
+ list->directory_name = file_name;
+ list->mtime = st.st_mtime;
+ list->next = dir_time_list;
+ dir_time_list = list;
}
- else
+ else
{
- free (file_name);
+ free(file_name);
}
- file_name = (char *)malloc (strlen (directory) + strlen ("/mime/magic") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/magic");
- if (stat (file_name, &st) == 0)
+ file_name = (char *)malloc(strlen(directory) + strlen("/mime/magic") + 1);
+ strcpy(file_name, directory);
+ strcat(file_name, "/mime/magic");
+ if (stat(file_name, &st) == 0)
{
- _xdg_mime_magic_read_from_file (global_magic, file_name);
+ _xdg_mime_magic_read_from_file(global_magic, file_name);
- list = xdg_dir_time_list_new ();
- list->directory_name = file_name;
- list->mtime = st.st_mtime;
- list->next = dir_time_list;
- dir_time_list = list;
+ list = xdg_dir_time_list_new();
+ list->directory_name = file_name;
+ list->mtime = st.st_mtime;
+ list->next = dir_time_list;
+ dir_time_list = list;
}
- else
+ else
{
- free (file_name);
+ free(file_name);
}
- file_name = (char *)malloc (strlen (directory) + strlen ("/mime/aliases") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/aliases");
- _xdg_mime_alias_read_from_file (alias_list, file_name);
- free (file_name);
+ file_name = (char *)malloc(strlen(directory) + strlen("/mime/aliases") + 1);
+ strcpy(file_name, directory);
+ strcat(file_name, "/mime/aliases");
+ _xdg_mime_alias_read_from_file(alias_list, file_name);
+ free(file_name);
- file_name = (char *)malloc (strlen (directory) + strlen ("/mime/subclasses") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/subclasses");
- _xdg_mime_parent_read_from_file (parent_list, file_name);
- free (file_name);
+ file_name = (char *)malloc(strlen(directory) + strlen("/mime/subclasses") + 1);
+ strcpy(file_name, directory);
+ strcat(file_name, "/mime/subclasses");
+ _xdg_mime_parent_read_from_file(parent_list, file_name);
+ free(file_name);
- return FALSE; /* Keep processing */
+ return FALSE; /* Keep processing */
}
/* Runs a command on all the directories in the search path */
static void
-xdg_run_command_on_dirs (XdgDirectoryFunc func,
- void *user_data)
+xdg_run_command_on_dirs(XdgDirectoryFunc func,
+ void *user_data)
{
- const char *xdg_data_home;
- const char *xdg_data_dirs;
- const char *ptr;
+ const char *xdg_data_home;
+ const char *xdg_data_dirs;
+ const char *ptr;
- xdg_data_home = getenv ("XDG_DATA_HOME");
- if (xdg_data_home)
+ xdg_data_home = getenv("XDG_DATA_HOME");
+ if (xdg_data_home)
{
- if ((func) (xdg_data_home, user_data))
- return;
+ if ((func)(xdg_data_home, user_data))
+ return;
}
- else
- {
- const char *home;
-
- home = getenv ("HOME");
- if (home != NULL)
+ else
{
- char *guessed_xdg_home;
- int stop_processing;
-
- guessed_xdg_home = (char *)malloc (strlen (home) + strlen ("/.local/share/") + 1);
- strcpy (guessed_xdg_home, home);
- strcat (guessed_xdg_home, "/.local/share/");
- stop_processing = (func) (guessed_xdg_home, user_data);
- free (guessed_xdg_home);
-
- if (stop_processing)
- return;
- }
+ const char *home;
+
+ home = getenv("HOME");
+ if (home != NULL)
+ {
+ char *guessed_xdg_home;
+ int stop_processing;
+
+ guessed_xdg_home = (char *)malloc(strlen(home) + strlen("/.local/share/") + 1);
+ strcpy(guessed_xdg_home, home);
+ strcat(guessed_xdg_home, "/.local/share/");
+ stop_processing = (func)(guessed_xdg_home, user_data);
+ free(guessed_xdg_home);
+
+ if (stop_processing)
+ return;
+ }
}
- xdg_data_dirs = getenv ("XDG_DATA_DIRS");
- if (xdg_data_dirs == NULL)
- xdg_data_dirs = "/usr/local/share/:/usr/share/";
+ xdg_data_dirs = getenv("XDG_DATA_DIRS");
+ if (xdg_data_dirs == NULL)
+ xdg_data_dirs = "/usr/local/share/:/usr/share/";
- ptr = xdg_data_dirs;
+ ptr = xdg_data_dirs;
- while (*ptr != '\000')
+ while (*ptr != '\000')
{
- const char *end_ptr;
- char *dir;
- int len;
- int stop_processing;
-
- end_ptr = ptr;
- while (*end_ptr != ':' && *end_ptr != '\000')
- end_ptr ++;
-
- if (end_ptr == ptr)
- {
- ptr++;
- continue;
- }
-
- if (*end_ptr == ':')
- len = end_ptr - ptr;
- else
- len = end_ptr - ptr + 1;
- dir = (char *)malloc (len + 1);
- strncpy (dir, ptr, len);
- dir[len] = '\0';
- stop_processing = (func) (dir, user_data);
- free (dir);
-
- if (stop_processing)
- return;
-
- ptr = end_ptr;
+ const char *end_ptr;
+ char *dir;
+ int len;
+ int stop_processing;
+
+ end_ptr = ptr;
+ while (*end_ptr != ':' && *end_ptr != '\000')
+ end_ptr ++;
+
+ if (end_ptr == ptr)
+ {
+ ptr++;
+ continue;
+ }
+
+ if (*end_ptr == ':')
+ len = end_ptr - ptr;
+ else
+ len = end_ptr - ptr + 1;
+ dir = (char *)malloc(len + 1);
+ strncpy(dir, ptr, len);
+ dir[len] = '\0';
+ stop_processing = (func)(dir, user_data);
+ free(dir);
+
+ if (stop_processing)
+ return;
+
+ ptr = end_ptr;
}
}
@@ -252,92 +256,94 @@ xdg_run_command_on_dirs (XdgDirectoryFunc func,
* FIXME: This doesn't protect against permission changes.
*/
static int
-xdg_check_file (const char *file_path)
+xdg_check_file(const char *file_path)
{
- struct stat st;
-
- /* If the file exists */
- if (stat (file_path, &st) == 0)
- {
- XdgDirTimeList *list;
+ struct stat st;
- for (list = dir_time_list; list; list = list->next)
+ /* If the file exists */
+ if (stat(file_path, &st) == 0)
{
- if (! strcmp (list->directory_name, file_path) &&
- st.st_mtime == list->mtime)
- {
- if (list->checked == XDG_CHECKED_UNCHECKED)
- list->checked = XDG_CHECKED_VALID;
- else if (list->checked == XDG_CHECKED_VALID)
- list->checked = XDG_CHECKED_INVALID;
-
- return (list->checked != XDG_CHECKED_VALID);
- }
- }
- return TRUE;
+ XdgDirTimeList *list;
+
+ for (list = dir_time_list; list; list = list->next)
+ {
+ if (! strcmp(list->directory_name, file_path) &&
+ st.st_mtime == list->mtime)
+ {
+ if (list->checked == XDG_CHECKED_UNCHECKED)
+ list->checked = XDG_CHECKED_VALID;
+ else if (list->checked == XDG_CHECKED_VALID)
+ list->checked = XDG_CHECKED_INVALID;
+
+ return (list->checked != XDG_CHECKED_VALID);
+ }
+ }
+ return TRUE;
}
- return FALSE;
+ return FALSE;
}
static int
-xdg_check_dir (const char *directory,
- int *invalid_dir_list)
+xdg_check_dir(const char *directory,
+ int *invalid_dir_list)
{
- int invalid;
- char *file_name;
-
- assert (directory != NULL);
-
- /* Check the globs file */
- file_name = (char *)malloc (strlen (directory) + strlen ("/mime/globs") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/globs");
- invalid = xdg_check_file (file_name);
- free (file_name);
- if (invalid)
+ int invalid;
+ char *file_name;
+
+ assert(directory != NULL);
+
+ /* Check the globs file */
+ file_name = (char *)malloc(strlen(directory) + strlen("/mime/globs") + 1);
+ strcpy(file_name, directory);
+ strcat(file_name, "/mime/globs");
+ invalid = xdg_check_file(file_name);
+ free(file_name);
+ if (invalid)
{
- *invalid_dir_list = TRUE;
- return TRUE;
+ *invalid_dir_list = TRUE;
+ return TRUE;
}
- /* Check the magic file */
- file_name = (char *)malloc (strlen (directory) + strlen ("/mime/magic") + 1);
- strcpy (file_name, directory); strcat (file_name, "/mime/magic");
- invalid = xdg_check_file (file_name);
- free (file_name);
- if (invalid)
+ /* Check the magic file */
+ file_name = (char *)malloc(strlen(directory) + strlen("/mime/magic") + 1);
+ strcpy(file_name, directory);
+ strcat(file_name, "/mime/magic");
+ invalid = xdg_check_file(file_name);
+ free(file_name);
+ if (invalid)
{
- *invalid_dir_list = TRUE;
- return TRUE;
+ *invalid_dir_list = TRUE;
+ return TRUE;
}
- return FALSE; /* Keep processing */
+ return FALSE; /* Keep processing */
}
/* Walks through all the mime files stat()ing them to see if they've changed.
* Returns TRUE if they have. */
static int
-xdg_check_dirs (void)
+xdg_check_dirs(void)
{
- XdgDirTimeList *list;
- int invalid_dir_list = FALSE;
+ XdgDirTimeList *list;
+ int invalid_dir_list = FALSE;
- for (list = dir_time_list; list; list = list->next)
- list->checked = XDG_CHECKED_UNCHECKED;
+ for (list = dir_time_list; list; list = list->next)
+ list->checked = XDG_CHECKED_UNCHECKED;
- xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_check_dir,
- &invalid_dir_list);
+ xdg_run_command_on_dirs((XdgDirectoryFunc) xdg_check_dir,
+ &invalid_dir_list);
- if (invalid_dir_list)
- return TRUE;
+ if (invalid_dir_list)
+ return TRUE;
- for (list = dir_time_list; list; list = list->next)
+ for (list = dir_time_list; list; list = list->next)
{
- if (list->checked != XDG_CHECKED_VALID)
- return TRUE;
+ if (list->checked != XDG_CHECKED_VALID)
+ return TRUE;
}
- return FALSE;
+ return FALSE;
}
/* We want to avoid stat()ing on every single mime call, so we only look for
@@ -345,372 +351,372 @@ xdg_check_dirs (void)
* mime data from disk.
*/
static int
-xdg_check_time_and_dirs (void)
+xdg_check_time_and_dirs(void)
{
- struct timeval tv;
- time_t current_time;
- int retval = FALSE;
+ struct timeval tv;
+ time_t current_time;
+ int retval = FALSE;
- gettimeofday (&tv, NULL);
- current_time = tv.tv_sec;
+ gettimeofday(&tv, NULL);
+ current_time = tv.tv_sec;
- if (current_time >= last_stat_time + 5)
+ if (current_time >= last_stat_time + 5)
{
- retval = xdg_check_dirs ();
- last_stat_time = current_time;
+ retval = xdg_check_dirs();
+ last_stat_time = current_time;
}
- return retval;
+ return retval;
}
/* Called in every public function. It reloads the hash function if need be.
*/
static void
-xdg_mime_init (void)
+xdg_mime_init(void)
{
- if (xdg_check_time_and_dirs ())
+ if (xdg_check_time_and_dirs())
{
- xdg_mime_shutdown ();
+ xdg_mime_shutdown();
}
- if (need_reread)
+ if (need_reread)
{
- global_hash = _xdg_glob_hash_new ();
- global_magic = _xdg_mime_magic_new ();
- alias_list = _xdg_mime_alias_list_new ();
- parent_list = _xdg_mime_parent_list_new ();
+ global_hash = _xdg_glob_hash_new();
+ global_magic = _xdg_mime_magic_new();
+ alias_list = _xdg_mime_alias_list_new();
+ parent_list = _xdg_mime_parent_list_new();
- xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_mime_init_from_directory,
- NULL);
+ xdg_run_command_on_dirs((XdgDirectoryFunc) xdg_mime_init_from_directory,
+ NULL);
- need_reread = FALSE;
+ need_reread = FALSE;
}
}
const char *
-xdg_mime_get_mime_type_for_data (const void *data,
- size_t len)
+xdg_mime_get_mime_type_for_data(const void *data,
+ size_t len)
{
- const char *mime_type;
+ const char *mime_type;
- xdg_mime_init ();
+ xdg_mime_init();
- mime_type = _xdg_mime_magic_lookup_data (global_magic, data, len);
+ mime_type = _xdg_mime_magic_lookup_data(global_magic, data, len);
- if (mime_type)
- return mime_type;
+ if (mime_type)
+ return mime_type;
- return XDG_MIME_TYPE_UNKNOWN;
+ return XDG_MIME_TYPE_UNKNOWN;
}
const char *
-xdg_mime_get_mime_type_for_file (const char *file_name)
+xdg_mime_get_mime_type_for_file(const char *file_name)
{
- const char *mime_type;
- FILE *file;
- unsigned char *data;
- int max_extent;
- int bytes_read;
- struct stat statbuf;
- const char *base_name;
-
- if (file_name == NULL)
- return NULL;
- if (! _xdg_utf8_validate (file_name))
- return NULL;
-
- xdg_mime_init ();
-
- base_name = _xdg_get_base_name (file_name);
- mime_type = xdg_mime_get_mime_type_from_file_name (base_name);
-
- if (mime_type != XDG_MIME_TYPE_UNKNOWN)
- return mime_type;
-
- if (stat (file_name, &statbuf) != 0)
- return XDG_MIME_TYPE_UNKNOWN;
-
- if (!S_ISREG (statbuf.st_mode))
- return XDG_MIME_TYPE_UNKNOWN;
-
- /* FIXME: Need to make sure that max_extent isn't totally broken. This could
- * be large and need getting from a stream instead of just reading it all
- * in. */
- max_extent = _xdg_mime_magic_get_buffer_extents (global_magic);
- data = (unsigned char *)malloc (max_extent);
- if (data == NULL)
- return XDG_MIME_TYPE_UNKNOWN;
-
- /* OK to not use CLO_EXEC here because mimedb is single threaded */
- file = fopen (file_name, "r");
- if (file == NULL)
+ const char *mime_type;
+ FILE *file;
+ unsigned char *data;
+ int max_extent;
+ int bytes_read;
+ struct stat statbuf;
+ const char *base_name;
+
+ if (file_name == NULL)
+ return NULL;
+ if (! _xdg_utf8_validate(file_name))
+ return NULL;
+
+ xdg_mime_init();
+
+ base_name = _xdg_get_base_name(file_name);
+ mime_type = xdg_mime_get_mime_type_from_file_name(base_name);
+
+ if (mime_type != XDG_MIME_TYPE_UNKNOWN)
+ return mime_type;
+
+ if (stat(file_name, &statbuf) != 0)
+ return XDG_MIME_TYPE_UNKNOWN;
+
+ if (!S_ISREG(statbuf.st_mode))
+ return XDG_MIME_TYPE_UNKNOWN;
+
+ /* FIXME: Need to make sure that max_extent isn't totally broken. This could
+ * be large and need getting from a stream instead of just reading it all
+ * in. */
+ max_extent = _xdg_mime_magic_get_buffer_extents(global_magic);
+ data = (unsigned char *)malloc(max_extent);
+ if (data == NULL)
+ return XDG_MIME_TYPE_UNKNOWN;
+
+ /* OK to not use CLO_EXEC here because mimedb is single threaded */
+ file = fopen(file_name, "r");
+ if (file == NULL)
{
- free (data);
- return XDG_MIME_TYPE_UNKNOWN;
+ free(data);
+ return XDG_MIME_TYPE_UNKNOWN;
}
- bytes_read = fread (data, 1, max_extent, file);
- if (ferror (file))
+ bytes_read = fread(data, 1, max_extent, file);
+ if (ferror(file))
{
- free (data);
- fclose (file);
- return XDG_MIME_TYPE_UNKNOWN;
+ free(data);
+ fclose(file);
+ return XDG_MIME_TYPE_UNKNOWN;
}
- mime_type = _xdg_mime_magic_lookup_data (global_magic, data, bytes_read);
+ mime_type = _xdg_mime_magic_lookup_data(global_magic, data, bytes_read);
- free (data);
- fclose (file);
+ free(data);
+ fclose(file);
- if (mime_type)
- return mime_type;
+ if (mime_type)
+ return mime_type;
- return XDG_MIME_TYPE_UNKNOWN;
+ return XDG_MIME_TYPE_UNKNOWN;
}
const char *
-xdg_mime_get_mime_type_from_file_name (const char *file_name)
+xdg_mime_get_mime_type_from_file_name(const char *file_name)
{
- const char *mime_type;
+ const char *mime_type;
- xdg_mime_init ();
+ xdg_mime_init();
- mime_type = _xdg_glob_hash_lookup_file_name (global_hash, file_name);
- if (mime_type)
- return mime_type;
- else
- return XDG_MIME_TYPE_UNKNOWN;
+ mime_type = _xdg_glob_hash_lookup_file_name(global_hash, file_name);
+ if (mime_type)
+ return mime_type;
+ else
+ return XDG_MIME_TYPE_UNKNOWN;
}
int
-xdg_mime_is_valid_mime_type (const char *mime_type)
+xdg_mime_is_valid_mime_type(const char *mime_type)
{
- /* FIXME: We should make this a better test
- */
- return _xdg_utf8_validate (mime_type);
+ /* FIXME: We should make this a better test
+ */
+ return _xdg_utf8_validate(mime_type);
}
void
-xdg_mime_shutdown (void)
+xdg_mime_shutdown(void)
{
- XdgCallbackList *list;
+ XdgCallbackList *list;
- /* FIXME: Need to make this (and the whole library) thread safe */
- if (dir_time_list)
+ /* FIXME: Need to make this (and the whole library) thread safe */
+ if (dir_time_list)
{
- xdg_dir_time_list_free (dir_time_list);
- dir_time_list = NULL;
+ xdg_dir_time_list_free(dir_time_list);
+ dir_time_list = NULL;
}
- if (global_hash)
+ if (global_hash)
{
- _xdg_glob_hash_free (global_hash);
- global_hash = NULL;
+ _xdg_glob_hash_free(global_hash);
+ global_hash = NULL;
}
- if (global_magic)
+ if (global_magic)
{
- _xdg_mime_magic_free (global_magic);
- global_magic = NULL;
+ _xdg_mime_magic_free(global_magic);
+ global_magic = NULL;
}
- if (alias_list)
+ if (alias_list)
{
- _xdg_mime_alias_list_free (alias_list);
- alias_list = NULL;
+ _xdg_mime_alias_list_free(alias_list);
+ alias_list = NULL;
}
- if( parent_list )
- {
- _xdg_mime_parent_list_free ( parent_list);
- }
+ if (parent_list)
+ {
+ _xdg_mime_parent_list_free(parent_list);
+ }
- for (list = callback_list; list; list = list->next)
- (list->callback) (list->data);
+ for (list = callback_list; list; list = list->next)
+ (list->callback)(list->data);
- need_reread = TRUE;
+ need_reread = TRUE;
}
int
-xdg_mime_get_max_buffer_extents (void)
+xdg_mime_get_max_buffer_extents(void)
{
- xdg_mime_init ();
+ xdg_mime_init();
- return _xdg_mime_magic_get_buffer_extents (global_magic);
+ return _xdg_mime_magic_get_buffer_extents(global_magic);
}
const char *
-xdg_mime_unalias_mime_type (const char *mime_type)
+xdg_mime_unalias_mime_type(const char *mime_type)
{
- const char *lookup;
+ const char *lookup;
- xdg_mime_init ();
+ xdg_mime_init();
- if ((lookup = _xdg_mime_alias_list_lookup (alias_list, mime_type)) != NULL)
- return lookup;
+ if ((lookup = _xdg_mime_alias_list_lookup(alias_list, mime_type)) != NULL)
+ return lookup;
- return mime_type;
+ return mime_type;
}
int
-xdg_mime_mime_type_equal (const char *mime_a,
- const char *mime_b)
+xdg_mime_mime_type_equal(const char *mime_a,
+ const char *mime_b)
{
- const char *unalias_a, *unalias_b;
+ const char *unalias_a, *unalias_b;
- xdg_mime_init ();
+ xdg_mime_init();
- unalias_a = xdg_mime_unalias_mime_type (mime_a);
- unalias_b = xdg_mime_unalias_mime_type (mime_b);
+ unalias_a = xdg_mime_unalias_mime_type(mime_a);
+ unalias_b = xdg_mime_unalias_mime_type(mime_b);
- if (strcmp (unalias_a, unalias_b) == 0)
- return 1;
+ if (strcmp(unalias_a, unalias_b) == 0)
+ return 1;
- return 0;
+ return 0;
}
int
-xdg_mime_media_type_equal (const char *mime_a,
- const char *mime_b)
+xdg_mime_media_type_equal(const char *mime_a,
+ const char *mime_b)
{
- char *sep;
+ char *sep;
- xdg_mime_init ();
+ xdg_mime_init();
- sep = const_cast<char*>(strchr (mime_a, '/'));
+ sep = const_cast<char*>(strchr(mime_a, '/'));
- if (sep && strncmp (mime_a, mime_b, sep - mime_a + 1) == 0)
- return 1;
+ if (sep && strncmp(mime_a, mime_b, sep - mime_a + 1) == 0)
+ return 1;
- return 0;
+ return 0;
}
#if 0
static int
-xdg_mime_is_super_type (const char *mime)
+xdg_mime_is_super_type(const char *mime)
{
- int length;
- const char *type;
+ int length;
+ const char *type;
- length = strlen (mime);
- type = &(mime[length - 2]);
+ length = strlen(mime);
+ type = &(mime[length - 2]);
- if (strcmp (type, "/*") == 0)
- return 1;
+ if (strcmp(type, "/*") == 0)
+ return 1;
- return 0;
+ return 0;
}
#endif
int
-xdg_mime_mime_type_subclass (const char *mime,
- const char *base)
+xdg_mime_mime_type_subclass(const char *mime,
+ const char *base)
{
- const char *umime, *ubase;
- const char **parents;
+ const char *umime, *ubase;
+ const char **parents;
- xdg_mime_init ();
+ xdg_mime_init();
- umime = xdg_mime_unalias_mime_type (mime);
- ubase = xdg_mime_unalias_mime_type (base);
+ umime = xdg_mime_unalias_mime_type(mime);
+ ubase = xdg_mime_unalias_mime_type(base);
- if (strcmp (umime, ubase) == 0)
- return 1;
+ if (strcmp(umime, ubase) == 0)
+ return 1;
#if 0
- /* Handle supertypes */
- if (xdg_mime_is_super_type (ubase) &&
- xdg_mime_media_type_equal (umime, ubase))
- return 1;
+ /* Handle supertypes */
+ if (xdg_mime_is_super_type(ubase) &&
+ xdg_mime_media_type_equal(umime, ubase))
+ return 1;
#endif
- /* Handle special cases text/plain and application/octet-stream */
- if (strcmp (ubase, "text/plain") == 0 &&
- strncmp (umime, "text/", 5) == 0)
- return 1;
+ /* Handle special cases text/plain and application/octet-stream */
+ if (strcmp(ubase, "text/plain") == 0 &&
+ strncmp(umime, "text/", 5) == 0)
+ return 1;
- if (strcmp (ubase, "application/octet-stream") == 0)
- return 1;
+ if (strcmp(ubase, "application/octet-stream") == 0)
+ return 1;
- parents = _xdg_mime_parent_list_lookup (parent_list, umime);
- for (; parents && *parents; parents++)
+ parents = _xdg_mime_parent_list_lookup(parent_list, umime);
+ for (; parents && *parents; parents++)
{
- if (xdg_mime_mime_type_subclass (*parents, ubase))
- return 1;
+ if (xdg_mime_mime_type_subclass(*parents, ubase))
+ return 1;
}
- return 0;
+ return 0;
}
const char **
-xdg_mime_get_mime_parents (const char *mime)
+xdg_mime_get_mime_parents(const char *mime)
{
- const char *umime;
+ const char *umime;
- xdg_mime_init ();
+ xdg_mime_init();
- umime = xdg_mime_unalias_mime_type (mime);
+ umime = xdg_mime_unalias_mime_type(mime);
- return _xdg_mime_parent_list_lookup (parent_list, umime);
+ return _xdg_mime_parent_list_lookup(parent_list, umime);
}
void
-xdg_mime_dump (void)
+xdg_mime_dump(void)
{
- printf ("*** ALIASES ***\n\n");
- _xdg_mime_alias_list_dump (alias_list);
- printf ("\n*** PARENTS ***\n\n");
- _xdg_mime_parent_list_dump (parent_list);
+ printf("*** ALIASES ***\n\n");
+ _xdg_mime_alias_list_dump(alias_list);
+ printf("\n*** PARENTS ***\n\n");
+ _xdg_mime_parent_list_dump(parent_list);
}
/* Registers a function to be called every time the mime database reloads its files
*/
int
-xdg_mime_register_reload_callback (XdgMimeCallback callback,
- void *data,
- XdgMimeDestroy destroy)
+xdg_mime_register_reload_callback(XdgMimeCallback callback,
+ void *data,
+ XdgMimeDestroy destroy)
{
- XdgCallbackList *list_el;
- static int callback_id = 1;
-
- /* Make a new list element */
- list_el = (XdgCallbackList *)calloc (1, sizeof (XdgCallbackList));
- list_el->callback_id = callback_id;
- list_el->callback = callback;
- list_el->data = data;
- list_el->destroy = destroy;
- list_el->next = callback_list;
- if (list_el->next)
- list_el->next->prev = list_el;
-
- callback_list = list_el;
- callback_id ++;
-
- return callback_id - 1;
+ XdgCallbackList *list_el;
+ static int callback_id = 1;
+
+ /* Make a new list element */
+ list_el = (XdgCallbackList *)calloc(1, sizeof(XdgCallbackList));
+ list_el->callback_id = callback_id;
+ list_el->callback = callback;
+ list_el->data = data;
+ list_el->destroy = destroy;
+ list_el->next = callback_list;
+ if (list_el->next)
+ list_el->next->prev = list_el;
+
+ callback_list = list_el;
+ callback_id ++;
+
+ return callback_id - 1;
}
void
-xdg_mime_remove_callback (int callback_id)
+xdg_mime_remove_callback(int callback_id)
{
- XdgCallbackList *list;
+ XdgCallbackList *list;
- for (list = callback_list; list; list = list->next)
+ for (list = callback_list; list; list = list->next)
{
- if (list->callback_id == callback_id)
- {
- if (list->next)
- list->next = list->prev;
-
- if (list->prev)
- list->prev->next = list->next;
- else
- callback_list = list->next;
-
- /* invoke the destroy handler */
- (list->destroy) (list->data);
- free (list);
- return;
- }
+ if (list->callback_id == callback_id)
+ {
+ if (list->next)
+ list->next = list->prev;
+
+ if (list->prev)
+ list->prev->next = list->next;
+ else
+ callback_list = list->next;
+
+ /* invoke the destroy handler */
+ (list->destroy)(list->data);
+ free(list);
+ return;
+ }
}
}