summaryrefslogtreecommitdiff
path: root/libnautilus-extensions
diff options
context:
space:
mode:
authorMartin Baulig <martin@home-of-linux.org>2000-06-09 17:57:16 +0000
committerMartin Baulig <martin@src.gnome.org>2000-06-09 17:57:16 +0000
commit4fbf8ff9b6bc6ce5c0f6c193be7f93972112d60e (patch)
tree70d5ea696c0d3a2539525e0e700bf6d0b12f0d32 /libnautilus-extensions
parentc8d89a1a6b9e10ff0dfc3c469cd7a4e541d6ecc8 (diff)
downloadnautilus-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.c39
-rw-r--r--libnautilus-extensions/nautilus-file-utilities.h1
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 */