diff --git a/common/flatpak-context.c b/common/flatpak-context.c index a4eb41f5..f95a431d 100644 --- a/common/flatpak-context.c +++ b/common/flatpak-context.c @@ -826,6 +826,22 @@ flatpak_context_parse_filesystem (const char *filesystem_and_mode, return TRUE; } + if (strcmp (filesystem, "~") == 0) + { + if (filesystem_out != NULL) + *filesystem_out = g_strdup ("home"); + + return TRUE; + } + + if (g_str_has_prefix (filesystem, "home/")) + { + if (filesystem_out != NULL) + *filesystem_out = g_strconcat ("~/", filesystem + 5, NULL); + + return TRUE; + } + g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, _("Unknown filesystem location %s, valid locations are: host, host-os, host-etc, home, xdg-*[/…], ~/dir, /dir"), filesystem); return FALSE; diff --git a/doc/flatpak-metadata.xml b/doc/flatpak-metadata.xml index 325a381a..ce62f872 100644 --- a/doc/flatpak-metadata.xml +++ b/doc/flatpak-metadata.xml @@ -210,6 +210,14 @@ Available since 0.3. + + Alias for ~/path + Available since 1.8.7. + For better compatibility with older + Flatpak versions, prefer to write this + as ~/path. + + The entire host file system, except for @@ -382,6 +390,15 @@ directory. Available since 0.3. + + + The same as . + Available since 1.8.7. + For better compatibility with older + Flatpak versions, prefer to write this + as . + + One of the above followed by diff --git a/tests/test-exports.c b/tests/test-exports.c index 55a06c09..02618c75 100644 --- a/tests/test-exports.c +++ b/tests/test-exports.c @@ -298,6 +298,12 @@ static const Filesystem filesystems[] = { "xdg-config/././///.///././.", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "xdg-config" }, { "xdg-config/////", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "xdg-config" }, { "xdg-run/dbus", FLATPAK_FILESYSTEM_MODE_READ_WRITE }, + { "~", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "home" }, + { "~/.", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "home" }, + { "~/", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "home" }, + { "~///././//", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "home" }, + { "home/", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "home" }, + { "home/Projects", FLATPAK_FILESYSTEM_MODE_READ_WRITE, "~/Projects" }, }; static void