diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index 2e8e1397b..a345829f3 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,9 +1,13 @@ -@008-11-28 Matthias Clasen +2008-11-28 Matthias Clasen + + * gio/gio-sections.txt: Add g_app_info_get_commandline + +2008-11-28 Matthias Clasen * glib/tmpl/keyfile.sgml: Explain locale identifiers in more detail -@008-11-28 Matthias Clasen +2008-11-28 Matthias Clasen Bug 562549 – g_byte_array_free should tell how free data diff --git a/docs/reference/gio/gio-sections.txt b/docs/reference/gio/gio-sections.txt index a3cf765ee..c54272cf9 100644 --- a/docs/reference/gio/gio-sections.txt +++ b/docs/reference/gio/gio-sections.txt @@ -1066,6 +1066,7 @@ g_app_info_get_id g_app_info_get_name g_app_info_get_description g_app_info_get_executable +g_app_info_get_commandline g_app_info_get_icon g_app_info_launch g_app_info_supports_files diff --git a/gio/ChangeLog b/gio/ChangeLog index 370f9945f..674b966af 100644 --- a/gio/ChangeLog +++ b/gio/ChangeLog @@ -1,3 +1,13 @@ +2008-11-28 Matthias Clasen + + Bug 555486 – No way to recover command line from GAppInfo + + * gio.symbols: + * gappinfo.[hc]: Add g_app_info_get_commandline. Requested + by Hans Petter Jansson. + + * gdesktopappinfo.c: And implement it here. + 2008-11-28 Christian Dywan * gappinfo.c: Fix a typo, s/detext/detect. Patch by Enrico Tröger. diff --git a/gio/gappinfo.c b/gio/gappinfo.c index a7feee5d1..b017247de 100644 --- a/gio/gappinfo.c +++ b/gio/gappinfo.c @@ -249,12 +249,12 @@ g_app_info_get_description (GAppInfo *appinfo) /** * g_app_info_get_executable: - * @appinfo: a #GAppInfo. + * @appinfo: a #GAppInfo * * Gets the executable's name for the installed application. * * Returns: a string containing the @appinfo's application - * binary's name. + * binary's name **/ const char * g_app_info_get_executable (GAppInfo *appinfo) @@ -269,6 +269,33 @@ g_app_info_get_executable (GAppInfo *appinfo) } +/** + * g_app_info_get_commandline: + * @appinfo: a #GAppInfo + * + * Gets the commandline with which the application will be + * started. + * + * Returns: a string containing the @appinfo's commandline, + * or %NULL if this information is not available + * + * Since: 2.20 + **/ +const char * +g_app_info_get_commandline (GAppInfo *appinfo) +{ + GAppInfoIface *iface; + + g_return_val_if_fail (G_IS_APP_INFO (appinfo), NULL); + + iface = G_APP_INFO_GET_IFACE (appinfo); + + if (iface->get_commandline) + return (* iface->get_commandline) (appinfo); + + return NULL; +} + /** * g_app_info_set_as_default_for_type: * @appinfo: a #GAppInfo. diff --git a/gio/gappinfo.h b/gio/gappinfo.h index 14ac96a58..3214c0284 100644 --- a/gio/gappinfo.h +++ b/gio/gappinfo.h @@ -124,6 +124,7 @@ struct _GAppInfoIface GError **error); gboolean (* can_delete) (GAppInfo *appinfo); gboolean (* do_delete) (GAppInfo *appinfo); + const char * (* get_commandline) (GAppInfo *appinfo); }; GType g_app_info_get_type (void) G_GNUC_CONST; @@ -138,6 +139,7 @@ const char *g_app_info_get_id (GAppInfo *appin const char *g_app_info_get_name (GAppInfo *appinfo); const char *g_app_info_get_description (GAppInfo *appinfo); const char *g_app_info_get_executable (GAppInfo *appinfo); +const char *g_app_info_get_commandline (GAppInfo *appinfo); GIcon * g_app_info_get_icon (GAppInfo *appinfo); gboolean g_app_info_launch (GAppInfo *appinfo, GList *files, diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c index c9dadc272..db907d392 100644 --- a/gio/gdesktopappinfo.c +++ b/gio/gdesktopappinfo.c @@ -479,6 +479,14 @@ g_desktop_app_info_get_executable (GAppInfo *appinfo) return info->binary; } +static const char * +g_desktop_app_info_get_commandline (GAppInfo *appinfo) +{ + GDesktopAppInfo *info = G_DESKTOP_APP_INFO (appinfo); + + return info->exec; +} + static GIcon * g_desktop_app_info_get_icon (GAppInfo *appinfo) { @@ -1745,6 +1753,7 @@ g_desktop_app_info_iface_init (GAppInfoIface *iface) iface->remove_supports_type = g_desktop_app_info_remove_supports_type; iface->can_delete = g_desktop_app_info_can_delete; iface->do_delete = g_desktop_app_info_delete; + iface->get_commandline = g_desktop_app_info_get_commandline; } static gboolean diff --git a/gio/gio.symbols b/gio/gio.symbols index 9074b39cb..3be198820 100644 --- a/gio/gio.symbols +++ b/gio/gio.symbols @@ -36,6 +36,7 @@ g_app_info_get_id g_app_info_get_name g_app_info_get_description g_app_info_get_executable +g_app_info_get_commandline g_app_info_get_icon g_app_info_launch g_app_info_supports_uris