<!-- ##### 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


<!-- ##### 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>

</para>

@s1: 
@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 access ##### -->
<para>

</para>


<!-- ##### MACRO close ##### -->
<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 <function>ftruncate()</function>
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>

</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_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.
This is usually combined with g_source_add() to add an event source.
The event source's check function will typically test the revents
field in the #GPollFD struct and return TRUE if events need to be processed.
</para>

@fd: a #GPollFD, which is a file descriptor together with a bitwise
combination of #GIOCondition flags determining which events to poll for.
@priority: the priority of the poll, which should be the same as the priority
used for g_source_add() to ensure that the file descriptor is polled whenever
the results may be needed.
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>

</para>

@loop: 

<!-- ##### FUNCTION g_main_remove_poll ##### -->
<para>
Removes a file descriptor from the list being polled.
</para>

@fd: the #GPollFD to remove.

<!-- ##### FUNCTION g_main_win32_get_poll_func ##### -->
<para>

</para>

@Returns: 

<!-- ##### FUNCTION g_mem_check ##### -->
<para>
Checks if the given memory has already been freed. If it has it outputs
a warning message.
To use this function you must configure glib with the flag
'--enable-mem-check=yes' before compiling.
</para>

@mem: the memory to check.

<!-- ##### 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>

@priority: 
@can_recurse: 
@funcs: 
@source_data: 
@user_data: 
@notify: 
@Returns: 
@source: 
@context: 

<!-- ##### FUNCTION g_source_connect ##### -->
<para>

</para>

@source: 
@func: 
@data: 
@notify: 

<!-- ##### FUNCTION g_source_connect_indirect ##### -->
<para>

</para>

@source: 
@callback_data: 
@callback_funcs: 

<!-- ##### FUNCTION g_source_remove_by_source_data ##### -->
<para>
Removes the first event source found with the given source data.
</para>
<para>
Event sources are sorted with the highest priority first. Sources with equal
priority are stored in the order in which they were added.
</para>

@source_data: the source data, which contains information specific to the
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.
</para>

@x: text to convert to a literal string.

<!-- ##### MACRO getcwd ##### -->
<para>

</para>


<!-- ##### MACRO getpid ##### -->
<para>

</para>


<!-- ##### MACRO lseek ##### -->
<para>

</para>


<!-- ##### MACRO open ##### -->
<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>


<!-- ##### TYPEDEF pid_t ##### -->
<para>
Provided for UNIX emulation on Windows; process ID type.
</para>


<!-- ##### MACRO popen ##### -->
<para>

</para>


<!-- ##### MACRO read ##### -->
<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>

</para>


