+<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Long_Description ##### -->
+<para>
+The "GDesktopEntry" parser is intended to parse files written to
+the <ulink
+url="http://www.freedesktop.org/Standards/desktop-entry-spec">Desktop
+Entry Specification</ulink>. It supports deserialization of
+desktop entries from files and in-memory data. Desktop entries
+are used for a variety of things including menus, application
+MIME type registration, and launchers.
+</para>
+
+<para>
+To load an existing desktop entry from a data directory (as
+returned by g_get_user_data_dir() and g_get_system_data_dirs())
+use g_desktop_entry_new_from_data_dirs(). To load an existing
+desktop entry from an arbitrary location on the file system use
+g_desktop_entry_new_from_file(). If the desktop entry is already
+in memory use g_desktop_entry_new_from_data(). Once the desktop
+entry is loaded its keys can be queried using the g_desktop_entry_get
+family of functions.
+</para>
+
+<para>
+To create a new desktop entry first call g_desktop_entry_new().
+Then, call the g_desktop_entry_set family of functions. Next,
+call g_desktop_entry_to_data() to output the desktop entry to
+a byte array, which can be written to disk or sent over a
+network. Finally, call g_desktop_entry_free() to deallocate the
+#GDesktopEntry object returned by g_desktop_entry_new().
+</para>
+
+
+<!-- ##### SECTION ./tmpl/desktop_entry.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Short_Description ##### -->
+serializes and deserializes a desktop entry.
+
+
+<!-- ##### SECTION ./tmpl/desktop_entry.sgml:Title ##### -->
+Desktop Entry Parser
+
+
+<!-- ##### SECTION ./tmpl/glib-unused.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/testutils.sgml:Long_Description ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/testutils.sgml:See_Also ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### SECTION ./tmpl/testutils.sgml:Short_Description ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/testutils.sgml:Stability_Level ##### -->
+
+
+
+<!-- ##### SECTION ./tmpl/testutils.sgml:Title ##### -->
+Testing
+
+
+<!-- ##### ENUM GChannelError ##### -->
+<para>
+
+</para>
+
+@G_CHANNEL_ERROR_ACCES:
+@G_CHANNEL_ERROR_BADF:
+@G_CHANNEL_ERROR_DEADLK:
+@G_CHANNEL_ERROR_FAULT:
+@G_CHANNEL_ERROR_INVAL:
+@G_CHANNEL_ERROR_IO:
+@G_CHANNEL_ERROR_ISDIR:
+@G_CHANNEL_ERROR_MFILE:
+@G_CHANNEL_ERROR_NOLCK:
+@G_CHANNEL_ERROR_NOSPC:
+@G_CHANNEL_ERROR_PERM:
+@G_CHANNEL_ERROR_PIPE:
+@G_CHANNEL_ERROR_SPIPE:
+@G_CHANNEL_ERROR_ENCODE_RW:
+@G_CHANNEL_ERROR_FAILED:
+
+<!-- ##### ENUM GChannelStatus ##### -->
+<para>
+
+</para>
+
+@G_CHANNEL_STATUS_NORMAL:
+@G_CHANNEL_STATUS_EOF:
+@G_CHANNEL_STATUS_PARTIAL_CHARS:
+@G_CHANNEL_STATUS_AGAIN:
+@G_CHANNEL_STATUS_INTR:
+@G_CHANNEL_STATUS_ERROR:
+@G_CHANNEL_STATUS_BAD_INPUT:
+
+<!-- ##### USER_FUNCTION GCompareFuncData ##### -->
+<para>
+
+</para>
+
+@a:
+@b:
+@user_data:
+@Returns:
+
<!-- ##### USER_FUNCTION GCompletionStrcmpFunc ##### -->
<para>
@s2:
@Returns:
+<!-- ##### STRUCT GDesktopEntry ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### ENUM GDesktopEntryError ##### -->
+<para>
+Error codes returned by desktop entry parsing.
+</para>
+
+@G_DESKTOP_ENTRY_ERROR_UNKNOWN_ENCODING: text being parsed is not UTF-8 and
+cannot be guessed.
+@G_DESKTOP_ENTRY_ERROR_BAD_START_GROUP: desktop entry does not start with a
+legal start group.
+@G_DESKTOP_ENTRY_ERROR_PARSE: desktop entry is empty or contains invalid
+data.
+@G_DESKTOP_ENTRY_ERROR_NOT_FOUND: valid desktop entry could not be found.
+@G_DESKTOP_ENTRY_ERROR_KEY_NOT_FOUND: desktop entry does not have requested
+key.
+@G_DESKTOP_ENTRY_ERROR_GROUP_NOT_FOUND: desktop entry does not have requested
+group
+@G_DESKTOP_ENTRY_ERROR_INVALID_VALUE: desktop entry contains key which has
+value that cannot be validated.
+
+<!-- ##### ENUM GDesktopEntryFlags ##### -->
+<para>
+#GDesktopEntry supports a few flags for tweaking performance during
+deserialization. #G_DESKTOP_ENTRY_DISCARD_COMMENTS and
+#G_DESKTOP_ENTRY_DISCARD_TRANSLATIONS will reduce memory footprint,
+and #G_DESKTOP_ENTRY_GENERATE_LOOKUP_MAP will increase key lookup speed.
+</para>
+
+@G_DESKTOP_ENTRY_NONE: use parser defaults
+@G_DESKTOP_ENTRY_DISCARD_COMMENTS: Discard all lines that are blank
+or start with "#".
+@G_DESKTOP_ENTRY_DISCARD_TRANSLATIONS: Only retain translations that
+are returned by g_get_language_names().
+@G_DESKTOP_ENTRY_GENERATE_LOOKUP_MAP: Generate a lookup map for key names to make lookups constant time at the cost of more memory.
+
+<!-- ##### USER_FUNCTION GErrorFunc ##### -->
+<para>
+Specifies the type of function passed to g_set_error_handler().
+</para>
+
+@str: the error message.
+
+<!-- ##### USER_FUNCTION GHookFreeFunc ##### -->
+<para>
+
+</para>
+
+@hook_list:
+@hook:
+
+<!-- ##### ENUM GIOFileMode ##### -->
+<para>
+
+</para>
+
+@G_IO_FILE_MODE_READ:
+@G_IO_FILE_MODE_WRITE:
+@G_IO_FILE_MODE_APPEND:
+@G_IO_FILE_MODE_READ_WRITE:
+@G_IO_FILE_MODE_READ_WRITE_TRUNCATE:
+@G_IO_FILE_MODE_READ_WRITE_APPEND:
+
+<!-- ##### ENUM GMatchType ##### -->
+<para>
+Enumeration representing different kinds of patterns. This is only used
+internally for optimizing the match algorithm.
+</para>
+
+@G_MATCH_ALL: a general pattern.
+@G_MATCH_ALL_TAIL: a general pattern which contains a fixed part matching
+the end of the string.
+@G_MATCH_HEAD: a pattern matching every string with a certain prefix.
+@G_MATCH_TAIL: a pattern matching every string with a certain suffix.
+@G_MATCH_EXACT: a pattern matching exactly one string.
+@G_MATCH_LAST:
+
+<!-- ##### USER_FUNCTION GWarningFunc ##### -->
+<para>
+Specifies the type of function passed to g_set_warning_handler().
+</para>
+
+@str: the warning message.
+
+<!-- ##### MACRO G_CHANNEL_ERROR ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO G_DESKTOP_ENTRY_ERROR ##### -->
+<para>
+Error domain for desktop entry parsing. Errors in this domain will
+be from the #GDesktopEntryError enumeration. See #GError for information on
+error domains.
+</para>
+
+
+<!-- ##### MACRO G_HOOK_DEFERRED_DESTROY ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO G_IO_CHANNEL_DEFAULT_LINE_TERM ##### -->
+<para>
+One of %G_IO_CHANNEL_UNIX_LINE_TERM, %G_IO_CHANNEL_DOS_LINE_TERM,
+or %G_IO_CHANNEL_MACINTOSH_LINE_TERM (unimplemented)
+depending on the system type.
+</para>
+
+
+<!-- ##### MACRO G_IO_CHANNEL_DOS_LINE_TERM ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO G_IO_CHANNEL_ENCODE_RAW ##### -->
+<para>
+Encoding for nonbuffered IO. With this encoding, data must be
+read using g_io_channel_read_chars(); the other functions will
+not work.
+</para>
+
+
+<!-- ##### MACRO G_IO_CHANNEL_MACINTOSH_LINE_TERM ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO G_IO_CHANNEL_UNIX_LINE_TERM ##### -->
+<para>
+
+</para>
+
+
+<!-- ##### MACRO NAME_MAX ##### -->
+<para>
+Provided for UNIX emulation on Windows; equivalent to UNIX macro
+%NAME_MAX, which is the maximum length of a single path component.
+i.e. just the <filename>foo</filename> in <filename>/usr/bin/foo</filename>.
+</para>
+
+
+<!-- ##### MACRO _ ##### -->
+<para>
+Marks a string for translation, gets replaced with the translated string
+at runtime.
+</para>
+
+@String: the string to be translated
+@Since: 2.4
+
<!-- ##### MACRO access ##### -->
<para>
</para>
+<!-- ##### FUNCTION closedir ##### -->
+<para>
+Provided for UNIX emulation on Windows; see documentation for <function>closedir()</function>
+in any UNIX manual.
+</para>
+
+@Param1:
+@Returns:
+
<!-- ##### MACRO fdopen ##### -->
<para>
</para>
+<!-- ##### MACRO ftruncate ##### -->
+<para>
+Provided for UNIX emulation on Windows; see documentation for ftruncate()
+in any UNIX manual.
+</para>
+
+@fd:
+@size:
+
+<!-- ##### FUNCTION g_channel_error_from_errno ##### -->
+<para>
+
+</para>
+
+@en:
+@Returns:
+
+<!-- ##### FUNCTION g_channel_error_quark ##### -->
+<para>
+
+</para>
+
+@Returns:
+
<!-- ##### FUNCTION g_convert_error_quark ##### -->
<para>
@Returns:
+<!-- ##### FUNCTION g_desktop_entry_escape_strings ##### -->
+<para>
+
+</para>
+
+@entry:
+@should_escape:
+
+<!-- ##### FUNCTION g_desktop_entry_free ##### -->
+<para>
+
+</para>
+
+@entry:
+
+<!-- ##### FUNCTION g_desktop_entry_get_boolean ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_boolean_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@length:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_groups ##### -->
+<para>
+
+</para>
+
+@entry:
+@length:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_integer ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_integer_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@length:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_keys ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@length:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_locale_string ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@locale:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_locale_string_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@locale:
+@length:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_start_group ##### -->
+<para>
+
+</para>
+
+@entry:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_string ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_get_string_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@length:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_has_group ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_has_key ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_new ##### -->
+<para>
+
+</para>
+
+@flags:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_new_from_data ##### -->
+<para>
+
+</para>
+
+@data:
+@length:
+@legal_start_groups:
+@flags:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_new_from_data_dirs ##### -->
+<para>
+
+</para>
+
+@file:
+@full_path:
+@legal_start_groups:
+@flags:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_new_from_file ##### -->
+<para>
+
+</para>
+
+@file:
+@legal_start_groups:
+@flags:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_desktop_entry_remove_group ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_remove_key ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_boolean ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@boolean:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_boolean_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@list:
+@length:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_integer ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@integer:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_integer_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@list:
+@length:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_locale_string ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@locale:
+@string:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_locale_string_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@locale:
+@list:
+@length:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_string ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@string:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_set_string_list ##### -->
+<para>
+
+</para>
+
+@entry:
+@group_name:
+@key:
+@list:
+@length:
+@error:
+
+<!-- ##### FUNCTION g_desktop_entry_to_data ##### -->
+<para>
+
+</para>
+
+@entry:
+@length:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_file_replace ##### -->
+<para>
+
+</para>
+
+@filename:
+@contents:
+@length:
+@error:
+@Returns:
+
+<!-- ##### FUNCTION g_format_file_size_for_display ##### -->
+<para>
+
+</para>
+
+@size:
+@Returns:
+
+<!-- ##### FUNCTION g_io_channel_error_quark ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### VARIABLE g_log_domain_glib ##### -->
+<para>
+The log domain used for messages logged by GLib itself.
+</para>
+
+
<!-- ##### FUNCTION g_main_add_poll ##### -->
<para>
Adds a file descriptor to be polled.
See #G_PRIORITY_DEFAULT, #G_PRIORITY_DEFAULT_IDLE, #G_PRIORITY_HIGH,
#G_PRIORITY_HIGH_IDLE, and #G_PRIORITY_LOW.
+<!-- ##### FUNCTION g_main_context_get ##### -->
+<para>
+
+</para>
+
+@thread:
+@Returns:
+
<!-- ##### FUNCTION g_main_loop_destroy ##### -->
<para>
@mem: the memory to check.
+<!-- ##### FUNCTION g_regex_error_quark ##### -->
+<para>
+
+</para>
+
+@Returns:
+
+<!-- ##### FUNCTION g_regex_free ##### -->
+<para>
+
+</para>
+
+@regex:
+
+<!-- ##### FUNCTION g_scanner_stat_mode ##### -->
+<para>
+Gets the file attributes.
+This is the <structfield>st_mode</structfield> field from the
+<structname>stat</structname> structure. See the <function>stat()</function>
+documentation.
+</para>
+
+@filename: the file name.
+@Returns: the file attributes.
+
+<!-- ##### FUNCTION g_set_error_handler ##### -->
+<para>
+Sets the function to be called to handle error messages.
+This function is deprecated in favour of the new logging facilities.
+</para>
+
+@func: the function to be called to handle error messages.
+@Returns: the old error handler.
+
+<!-- ##### FUNCTION g_set_message_handler ##### -->
+<para>
+Sets the function to be called to handle messages.
+This function is deprecated in favour of the new logging facilities.
+</para>
+
+@func: the function to be called to handle normal messages.
+@Returns: the old message handler.
+
+<!-- ##### FUNCTION g_set_warning_handler ##### -->
+<para>
+Sets the function to be called to handle warning messages.
+This function is deprecated in favour of the new logging facilities.
+</para>
+
+@func: the function to be called to handle warning messages.
+@Returns: the old warning handler.
+
<!-- ##### FUNCTION g_source_add ##### -->
<para>
</para>
type of source.
@Returns: TRUE if an event source was found and removed.
+<!-- ##### FUNCTION g_static_private_get_for_thread ##### -->
+<para>
+
+</para>
+
+@private_key:
+@thread:
+@Returns:
+
+<!-- ##### FUNCTION g_static_private_set_for_thread ##### -->
+<para>
+
+</para>
+
+@private_key:
+@thread:
+@data:
+@notify:
+
<!-- ##### MACRO g_string ##### -->
<para>
Turns the argument into a string literal by using the '#' stringizing operator.
@x: text to convert to a literal string.
+<!-- ##### FUNCTION g_warn_message ##### -->
+<para>
+
+</para>
+
+@domain:
+@file:
+@line:
+@func:
+@warnexpr:
+
<!-- ##### MACRO getcwd ##### -->
<para>
</para>
+<!-- ##### VARIABLE glib_binary_age ##### -->
+<para>
+This is the binary age passed to <application>libtool</application>. If
+<application>libtool</application> means nothing to you, don't worry
+about it. ;-)
+</para>
+
+
+<!-- ##### FUNCTION glib_check_version ##### -->
+<para>
+
+</para>
+
+@required_major:
+@required_minor:
+@required_micro:
+@Returns:
+
+<!-- ##### VARIABLE glib_interface_age ##### -->
+<para>
+This is the interface age passed to <application>libtool</application>. If
+<application>libtool</application> means nothing to you, don't worry
+about it. ;-)
+</para>
+
+
+<!-- ##### VARIABLE glib_major_version ##### -->
+<para>
+The major version number of the GLib library.
+(e.g. in GLib version 1.2.5 this is 1.)
+</para>
+
+<para>
+This variable is in the library, so represents the
+GLib library you have linked against. Contrast with the
+#GLIB_MAJOR_VERSION macro, which represents the major version of the
+GLib headers you have included.
+</para>
+
+
+<!-- ##### VARIABLE glib_micro_version ##### -->
+<para>
+The micro version number of the GLib library.
+(e.g. in GLib version 1.2.5 this is 5.)
+</para>
+
+<para>
+This variable is in the library, so represents the GLib library you
+have linked against. Contrast with the #GLIB_MICRO_VERSION macro, which
+represents the micro version of the GLib headers you have included.
+</para>
+
+
+<!-- ##### VARIABLE glib_minor_version ##### -->
+<para>
+The minor version number of the GLib library.
+(e.g. in GLib version 1.2.5 this is 2.)
+</para>
+
+<para>
+This variable is in the library, so represents the
+GLib library you have linked against. Contrast with the
+#GLIB_MINOR_VERSION macro, which represents the minor version of the
+GLib headers you have included.
+</para>
+
+
<!-- ##### MACRO lseek ##### -->
<para>
</para>
+<!-- ##### FUNCTION opendir ##### -->
+<para>
+Provided for UNIX emulation on Windows; see documentation for <function>opendir()</function>
+in any UNIX manual.
+</para>
+
+@Param1:
+@Returns:
+
<!-- ##### MACRO pclose ##### -->
<para>
</para>
+<!-- ##### MACRO pipe ##### -->
+<para>
+Provided for UNIX emulation on Windows; see documentation for pipe()
+in any UNIX manual.
+</para>
+
+@phandles: file descriptors, the first one for reading, the second one for writing.
+
<!-- ##### MACRO popen ##### -->
<para>
</para>
+<!-- ##### MACRO readdir ##### -->
+<para>
+Provided for UNIX emulation on Windows; see documentation for <function>readdir()</function>
+in any UNIX manual.
+</para>
+
+
+<!-- ##### FUNCTION rewinddir ##### -->
+<para>
+Provided for UNIX emulation on Windows; see documentation for <function>rewinddir()</function>
+in any UNIX manual.
+</para>
+
+@Param1:
+
<!-- ##### MACRO write ##### -->
<para>