From a44f5f6aaa4e90596e2e32df425a0b19fc34ad52 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 28 Nov 2008 23:16:45 +0000 Subject: [PATCH] Add g_app_info_get_commandline. Requested by Hans Petter Jansson. * gio.symbols: * gappinfo.[hc]: Add g_app_info_get_commandline. Requested by Hans Petter Jansson. * gdesktopappinfo.c: And implement it here. svn path=/trunk/; revision=7706 --- docs/reference/ChangeLog | 8 ++++++-- docs/reference/gio/gio-sections.txt | 1 + gio/ChangeLog | 10 ++++++++++ gio/gappinfo.c | 31 +++++++++++++++++++++++++++++-- gio/gappinfo.h | 2 ++ gio/gdesktopappinfo.c | 9 +++++++++ gio/gio.symbols | 1 + 7 files changed, 58 insertions(+), 4 deletions(-) diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index 2e8e139..a345829 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 a3cf765..c54272c 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 370f994..674b966 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 a7feee5..b017247 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) @@ -270,6 +270,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. * @content_type: the content type. diff --git a/gio/gappinfo.h b/gio/gappinfo.h index 14ac96a..3214c02 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 c9dadc2..db907d3 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 9074b39..3be1988 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 -- 2.7.4