diff options
author | Martin Baulig <martin@home-of-linux.org> | 2000-06-09 17:57:16 +0000 |
---|---|---|
committer | Martin Baulig <martin@src.gnome.org> | 2000-06-09 17:57:16 +0000 |
commit | 4fbf8ff9b6bc6ce5c0f6c193be7f93972112d60e (patch) | |
tree | 70d5ea696c0d3a2539525e0e700bf6d0b12f0d32 /libnautilus-extensions | |
parent | c8d89a1a6b9e10ff0dfc3c469cd7a4e541d6ecc8 (diff) | |
download | nautilus-4fbf8ff9b6bc6ce5c0f6c193be7f93972112d60e.tar.gz |
New function. Returns a local path for a file:// URI.
2000-06-09 Martin Baulig <martin@home-of-linux.org>
* libnautilus-extensions/nautilus-file-utilities.c:
(nautilus_get_local_path_from_uri): New function. Returns
a local path for a file:// URI.
Diffstat (limited to 'libnautilus-extensions')
-rw-r--r-- | libnautilus-extensions/nautilus-file-utilities.c | 39 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-file-utilities.h | 1 |
2 files changed, 40 insertions, 0 deletions
diff --git a/libnautilus-extensions/nautilus-file-utilities.c b/libnautilus-extensions/nautilus-file-utilities.c index 7876cd27c..33fd75fd6 100644 --- a/libnautilus-extensions/nautilus-file-utilities.c +++ b/libnautilus-extensions/nautilus-file-utilities.c @@ -34,6 +34,10 @@ #include "nautilus-link-set.h" #include "nautilus-metadata.h" + +#include <libnautilus-extensions/nautilus-string.h> +#include <libgnomevfs/gnome-vfs-utils.h> + #define NAUTILUS_USER_DIRECTORY_NAME ".nautilus" #define DEFAULT_NAUTILUS_DIRECTORY_MODE (0755) @@ -204,3 +208,38 @@ nautilus_get_user_main_directory (void) return user_main_directory; } + +/** + * nautilus_get_local_path_from_uri: + * + * Return a local path for a file:// URI. + * + * Return value: the local path or NULL on error. + **/ +char * +nautilus_get_local_path_from_uri (const char *uri) +{ + char *result, *unescaped_uri; + + if (uri == NULL) { + return NULL; + } + + unescaped_uri = gnome_vfs_unescape_string (uri, "/"); + + if (unescaped_uri == NULL) { + return NULL; + } + + if (nautilus_str_has_prefix (unescaped_uri, "file://")) { + result = g_strdup (unescaped_uri+7); + } else if (unescaped_uri[0] == '/') { + result = g_strdup (unescaped_uri); + } else { + result = NULL; + } + + g_free (unescaped_uri); + + return result; +} diff --git a/libnautilus-extensions/nautilus-file-utilities.h b/libnautilus-extensions/nautilus-file-utilities.h index d01a6a3da..f024fac16 100644 --- a/libnautilus-extensions/nautilus-file-utilities.h +++ b/libnautilus-extensions/nautilus-file-utilities.h @@ -30,5 +30,6 @@ char * nautilus_make_path (const char *path, const char *nautilus_get_user_directory (void); const char *nautilus_get_user_main_directory (void); const char *nautilus_get_desktop_directory (void); +char * nautilus_get_local_path_from_uri (const char *uri); #endif /* NAUTILUS_FILE_UTILITIES_H */ |