From: Rusty Russell Date: Wed, 31 Oct 2012 07:11:43 +0000 (+1030) Subject: ccanlint: Understand Creative Commons Zero license. X-Git-Url: http://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=4fc1f40b58ec470a89d95e8790956a4967a87cb1 ccanlint: Understand Creative Commons Zero license. Public domain for those who don't have it. Signed-off-by: Rusty Russell --- diff --git a/tools/ccanlint/licenses.c b/tools/ccanlint/licenses.c index 962412cc..ff786de8 100644 --- a/tools/ccanlint/licenses.c +++ b/tools/ccanlint/licenses.c @@ -65,6 +65,12 @@ const struct license_info licenses[] = { "without warranty" } }, + { "CC0", "CC0", + { "Waiver.", + "unconditionally waives", + NULL + } + }, { "Public domain", "Public domain", { NULL, NULL, NULL } }, @@ -75,33 +81,40 @@ const struct license_info licenses[] = { /* License compatibilty chart (simplified: we don't test that licenses between * files are compatible). */ +#define O true +#define X false bool license_compatible[LICENSE_UNKNOWN+1][LICENSE_UNKNOWN] = { -/* LGPL2+ LGPL2 LGPL3 LGPL GPL2+ GPL2 GPL3 GPL BSD MIT PD */ +/* LGPL2+ LGPL3 GPL2+ GPL3 BSD CC0 + LGPL2 LGPL GPL2 GPL MIT PD */ /* _info says: LGPL2+ */ - { true, false,false,true, false,false,false,false,true, true, true }, + { O, X, X, O, X, X, X, X, O, O, O, O }, /* _info says: LGPL2 only */ - { true, true, false,true, false,false,false,false,true, true, true }, + { O, O, X, O, X, X, X, X, O, O, O, O }, /* _info says: LGPL3 (or any later version) */ - { true, false,true, true, false,false,false,false,true, true, true }, + { O, X, O, O, X, X, X, X, O, O, O, O }, /* _info says: LGPL (no version specified) */ - { true, true, true, true, false,false,false,false,true, true, true }, + { O, O, O, O, X, X, X, X, O, O, O, O }, /* _info says: GPL2+ */ - { true, true, true, true, true, false,false,true, true, true, true }, + { O, O, O, O, O, X, X, O, O, O, O, O }, /* _info says: GPL2 only */ - { true, true, true, true, true, true, false,true, true, true, true }, + { O, O, O, O, O, O, X, O, O, O, O, O }, /* _info says: GPL3 (or any later version) */ - { true, true, true, true, true, false,true, true, true, true, true }, + { O, O, O, O, O, X, O, O, O, O, O, O }, /* _info says: GPL (unknown version) */ - { true, true, true, true, true, true, true, true, true, true, true }, + { O, O, O, O, O, O, O, O, O, O, O, O }, /* _info says: BSD (3-clause) */ - { false,false,false,false,false,false,false,false,true, true, true }, + { X, X, X, X, X, X, X, X, O, O, O, O }, /* _info says: MIT */ - { false,false,false,false,false,false,false,false,false,true, true }, + { X, X, X, X, X, X, X, X, X, O, O, O }, +/* _info says: CC0 */ + { X, X, X, X, X, X, X, X, X, X, O, O }, /* _info says: Public domain */ - { false,false,false,false,false,false,false,false,false,false,true }, + { X, X, X, X, X, X, X, X, X, X, O, O }, /* _info says something we don't understand */ - { false,false,false,false,false,false,false,false,false,false,true } + { X, X, X, X, X, X, X, X, X, X, O, O } }; +#undef X +#undef O /* See GPLv2 and v2 (basically same wording) for interpreting versions: * the "any later version" means the recepient can choose. */ @@ -140,6 +153,10 @@ enum license which_license(struct doc_section *d) return LICENSE_MIT; if (streq(d->lines[0], "BSD (3 clause)")) return LICENSE_BSD; + if (streq(d->lines[0], "CC0")) + return LICENSE_CC0; + if (strreg(NULL, d->lines[0], "CC0 \\([Pp]ublic [Dd]omain\\)", NULL)) + return LICENSE_CC0; if (strreg(NULL, d->lines[0], "[Pp]ublic [Dd]omain")) return LICENSE_PUBLIC_DOMAIN; diff --git a/tools/ccanlint/licenses.h b/tools/ccanlint/licenses.h index 48aad167..ed1e9ad7 100644 --- a/tools/ccanlint/licenses.h +++ b/tools/ccanlint/licenses.h @@ -13,6 +13,7 @@ enum license { LICENSE_GPL, LICENSE_BSD, LICENSE_MIT, + LICENSE_CC0, LICENSE_PUBLIC_DOMAIN, LICENSE_UNKNOWN }; diff --git a/tools/ccanlint/tests/license_exists.c b/tools/ccanlint/tests/license_exists.c index 15d566d3..53071c63 100644 --- a/tools/ccanlint/tests/license_exists.c +++ b/tools/ccanlint/tests/license_exists.c @@ -35,6 +35,9 @@ static const char *expected_link(enum license license) case LICENSE_MIT: return "../../licenses/BSD-MIT"; + case LICENSE_CC0: + return "../../licenses/CC0"; + default: return NULL; }