From 5c3041e840c60cb6a9a63aa743d0dbb3add54101 Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Fri, 18 Dec 2015 17:30:05 +0000 Subject: Accept various 'or later' metadata content licenses --- libappstream-glib/as-app-validate.c | 58 +++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 19 deletions(-) diff --git a/libappstream-glib/as-app-validate.c b/libappstream-glib/as-app-validate.c index cb31924..87e4a10 100644 --- a/libappstream-glib/as-app-validate.c +++ b/libappstream-glib/as-app-validate.c @@ -985,6 +985,43 @@ as_app_validate_license (const gchar *license_text, GError **error) return TRUE; } +/** + * as_app_validate_is_content_license_id: + **/ +static gboolean +as_app_validate_is_content_license_id (const gchar *license_id) +{ + if (g_strcmp0 (license_id, "@CC0-1.0") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-3.0") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-3.0+") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-4.0") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-4.0+") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-SA-3.0") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-SA-3.0+") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-SA-4.0") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@CC-BY-SA-4.0+") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@GFDL-1.1") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@GFDL-1.2") == 0) + return TRUE; + if (g_strcmp0 (license_id, "@GFDL-1.3") == 0) + return TRUE; + if (g_strcmp0 (license_id, "&") == 0) + return TRUE; + if (g_strcmp0 (license_id, "|") == 0) + return TRUE; + return FALSE; +} + /** * as_app_validate_is_content_license: **/ @@ -997,25 +1034,8 @@ as_app_validate_is_content_license (const gchar *license) if (tokens == NULL) return FALSE; for (i = 0; tokens[i] != NULL; i++) { - if (g_strcmp0 (tokens[i], "@CC0-1.0") == 0) - continue; - if (g_strcmp0 (tokens[i], "@CC-BY-3.0") == 0) - continue; - if (g_strcmp0 (tokens[i], "@CC-BY-4.0") == 0) - continue; - if (g_strcmp0 (tokens[i], "@CC-BY-SA-3.0") == 0) - continue; - if (g_strcmp0 (tokens[i], "@CC-BY-SA-4.0") == 0) - continue; - if (g_strcmp0 (tokens[i], "@GFDL-1.1") == 0) - continue; - if (g_strcmp0 (tokens[i], "@GFDL-1.2") == 0) - continue; - if (g_strcmp0 (tokens[i], "@GFDL-1.3") == 0) - continue; - if (g_strcmp0 (tokens[i], "&") == 0) - continue; - return FALSE; + if (!as_app_validate_is_content_license_id (tokens[i])) + return FALSE; } return TRUE; } -- cgit v1.2.1