diff options
author | Ihar Hrachyshka <ihar.hrachyshka@gmail.com> | 2012-10-20 20:27:17 +0300 |
---|---|---|
committer | Alexander Larsson <alexl@redhat.com> | 2013-10-16 17:34:13 +0200 |
commit | eb1e1bb3e13eb6d9a9952fd1b6cb7ffe65aba15f (patch) | |
tree | b7238cf544156ad1eb90f68785bbb5d198b1d990 /programs | |
parent | b510d4426fb8df74a05b45b24272221e341ffa10 (diff) | |
download | gvfs-eb1e1bb3e13eb6d9a9952fd1b6cb7ffe65aba15f.tar.gz |
gvfs-ls: added option to output URIs
Add a new -u option to gvfs-ls utility which will make it output
properly escaped URIs. These URIs may then be passed to other gvfs-*
tools.
Signed-off-by: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
https://bugzilla.gnome.org/show_bug.cgi?id=683295
Diffstat (limited to 'programs')
-rw-r--r-- | programs/gvfs-ls.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/programs/gvfs-ls.c b/programs/gvfs-ls.c index aca6a9fc..45e39f86 100644 --- a/programs/gvfs-ls.c +++ b/programs/gvfs-ls.c @@ -33,6 +33,7 @@ static gboolean show_hidden = FALSE; static gboolean show_long = FALSE; static gboolean nofollow_symlinks = FALSE; static char *show_completions = NULL; +static gboolean print_uris = FALSE; static GOptionEntry entries[] = { @@ -41,6 +42,7 @@ static GOptionEntry entries[] = { "long", 'l', 0, G_OPTION_ARG_NONE, &show_long, N_("Use a long listing format"), NULL }, { "show-completions", 'c', 0, G_OPTION_ARG_STRING, &show_completions, N_("Show completions"), N_("PREFIX") }, { "nofollow-symlinks", 'n', 0, G_OPTION_ARG_NONE, &nofollow_symlinks, N_("Don't follow symbolic links"), NULL}, + { "print-uris", 'u', 0, G_OPTION_ARG_NONE, &print_uris, N_("Print full URIs"), NULL}, { NULL } }; @@ -76,13 +78,15 @@ type_to_string (GFileType type) } static void -show_info (GFileInfo *info) +show_info (GFileInfo *info, GFile *parent) { const char *name, *type; + char *uri; goffset size; char **attributes; int i; gboolean first_attr; + GFile *child; if ((g_file_info_get_is_hidden (info)) && !show_hidden) return; @@ -91,12 +95,22 @@ show_info (GFileInfo *info) if (name == NULL) name = ""; + if (print_uris) { + child = g_file_get_child (parent, name); + uri = g_file_get_uri (child); + g_object_unref (child); + } + size = g_file_info_get_size (info); type = type_to_string (g_file_info_get_file_type (info)); if (show_long) - g_print ("%s\t%"G_GUINT64_FORMAT"\t(%s)", name, (guint64)size, type); + g_print ("%s\t%"G_GUINT64_FORMAT"\t(%s)", print_uris? uri: name, (guint64)size, type); else - g_print ("%s", name); + g_print ("%s", print_uris? uri: name); + + if (print_uris) { + g_free (uri); + } first_attr = TRUE; attributes = g_file_info_list_attributes (info, NULL); @@ -156,7 +170,7 @@ list (GFile *file) res = TRUE; while ((info = g_file_enumerator_next_file (enumerator, NULL, &error)) != NULL) { - show_info (info); + show_info (info, file); g_object_unref (info); } |