Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
ccan
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mirror
ccan
Commits
77818c17
Commit
77818c17
authored
Jul 21, 2011
by
Rusty Russell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ccanlint: move license tag matching into common code.
Refactoring helps the next patch.
parent
3087ef72
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
63 additions
and
54 deletions
+63
-54
tools/ccanlint/licenses.c
tools/ccanlint/licenses.c
+57
-0
tools/ccanlint/licenses.h
tools/ccanlint/licenses.h
+6
-0
tools/ccanlint/tests/license_exists.c
tools/ccanlint/tests/license_exists.c
+0
-54
No files found.
tools/ccanlint/licenses.c
View file @
77818c17
...
...
@@ -2,6 +2,7 @@
#include "ccanlint.h"
#include <ccan/talloc/talloc.h>
#include <ccan/str/str.h>
#include <ccan/str_talloc/str_talloc.h>
const
struct
license_info
licenses
[]
=
{
{
"LGPLv2+"
,
"LGPL"
,
...
...
@@ -102,6 +103,49 @@ bool license_compatible[LICENSE_UNKNOWN+1][LICENSE_UNKNOWN] = {
{
false
,
false
,
false
,
false
,
false
,
false
,
false
,
false
,
false
,
false
,
true
}
};
/* See GPLv2 and v2 (basically same wording) for interpreting versions:
* the "any later version" means the recepient can choose. */
enum
license
which_license
(
struct
doc_section
*
d
)
{
if
(
!
d
)
return
LICENSE_UNKNOWN
;
/* This means "user chooses what version", including GPLv1! */
if
(
streq
(
d
->
lines
[
0
],
"GPL"
))
return
LICENSE_GPL
;
/* This means "v2 only". */
if
(
streq
(
d
->
lines
[
0
],
"GPLv2"
))
return
LICENSE_GPLv2
;
/* This means "v2 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"GPL (v2 or any later version)"
))
return
LICENSE_GPLv2_PLUS
;
/* This means "v3 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"GPL (v3 or any later version)"
))
return
LICENSE_GPLv3
;
/* This means "user chooses what version" */
if
(
streq
(
d
->
lines
[
0
],
"LGPL"
))
return
LICENSE_LGPL
;
/* This means "v2.1 only". */
if
(
streq
(
d
->
lines
[
0
],
"LGPLv2.1"
))
return
LICENSE_LGPLv2
;
/* This means "v2.1 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"LGPL (v2.1 or any later version)"
))
return
LICENSE_LGPLv2_PLUS
;
/* This means "v3 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"LGPL (v3 or any later version)"
))
return
LICENSE_LGPLv3
;
if
(
streq
(
d
->
lines
[
0
],
"BSD-MIT"
)
||
streq
(
d
->
lines
[
0
],
"MIT"
))
return
LICENSE_MIT
;
if
(
streq
(
d
->
lines
[
0
],
"BSD (3 clause)"
))
return
LICENSE_BSD
;
if
(
strreg
(
NULL
,
d
->
lines
[
0
],
"[Pp]ublic [Dd]omain"
))
return
LICENSE_PUBLIC_DOMAIN
;
return
LICENSE_UNKNOWN
;
}
const
char
*
get_ccan_simplified
(
struct
ccan_file
*
f
)
{
if
(
!
f
->
simplified
)
{
...
...
@@ -141,3 +185,16 @@ bool find_boilerplate(struct ccan_file *f, enum license license)
}
return
true
;
}
struct
doc_section
*
find_license_tag
(
const
struct
manifest
*
m
)
{
struct
doc_section
*
d
;
list_for_each
(
get_ccan_file_docs
(
m
->
info_file
),
d
,
list
)
{
if
(
!
streq
(
d
->
function
,
m
->
basename
))
continue
;
if
(
streq
(
d
->
type
,
"license"
))
return
d
;
}
return
NULL
;
}
tools/ccanlint/licenses.h
View file @
77818c17
...
...
@@ -34,4 +34,10 @@ extern const struct license_info licenses[];
struct
ccan_file
;
bool
find_boilerplate
(
struct
ccan_file
*
f
,
enum
license
license
);
struct
doc_section
;
enum
license
which_license
(
struct
doc_section
*
d
);
struct
manifest
;
struct
doc_section
*
find_license_tag
(
const
struct
manifest
*
m
);
#endif
/* CCANLINT_LICENSES_H */
tools/ccanlint/tests/license_exists.c
View file @
77818c17
...
...
@@ -10,60 +10,6 @@
#include <err.h>
#include <ccan/talloc/talloc.h>
#include <ccan/str/str.h>
#include <ccan/str_talloc/str_talloc.h>
static
struct
doc_section
*
find_license_tag
(
const
struct
manifest
*
m
)
{
struct
doc_section
*
d
;
list_for_each
(
m
->
info_file
->
doc_sections
,
d
,
list
)
{
if
(
!
streq
(
d
->
function
,
m
->
basename
))
continue
;
if
(
streq
(
d
->
type
,
"license"
))
return
d
;
}
return
NULL
;
}
/* See GPLv2 and v2 (basically same wording) for interpreting versions:
* the "any later version" means the recepient can choose. */
static
enum
license
which_license
(
struct
doc_section
*
d
)
{
/* This means "user chooses what version", including GPLv1! */
if
(
streq
(
d
->
lines
[
0
],
"GPL"
))
return
LICENSE_GPL
;
/* This means "v2 only". */
if
(
streq
(
d
->
lines
[
0
],
"GPLv2"
))
return
LICENSE_GPLv2
;
/* This means "v2 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"GPL (v2 or any later version)"
))
return
LICENSE_GPLv2_PLUS
;
/* This means "v3 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"GPL (v3 or any later version)"
))
return
LICENSE_GPLv3
;
/* This means "user chooses what version" */
if
(
streq
(
d
->
lines
[
0
],
"LGPL"
))
return
LICENSE_LGPL
;
/* This means "v2.1 only". */
if
(
streq
(
d
->
lines
[
0
],
"LGPLv2.1"
))
return
LICENSE_LGPLv2
;
/* This means "v2.1 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"LGPL (v2.1 or any later version)"
))
return
LICENSE_LGPLv2_PLUS
;
/* This means "v3 or above" at user's choice. */
if
(
streq
(
d
->
lines
[
0
],
"LGPL (v3 or any later version)"
))
return
LICENSE_LGPLv3
;
if
(
streq
(
d
->
lines
[
0
],
"BSD-MIT"
)
||
streq
(
d
->
lines
[
0
],
"MIT"
))
return
LICENSE_MIT
;
if
(
streq
(
d
->
lines
[
0
],
"BSD (3 clause)"
))
return
LICENSE_BSD
;
if
(
strreg
(
NULL
,
d
->
lines
[
0
],
"[Pp]ublic [Dd]omain"
))
return
LICENSE_PUBLIC_DOMAIN
;
return
LICENSE_UNKNOWN
;
}
static
const
char
*
expected_link
(
enum
license
license
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment