+static char *xstrdup(const char *s) {
+ char * ret = strdup(s);
+ if (ret == NULL) {
+ perror("strdup");
+ abort();
+ }
+ return ret;
+}
+
+/**
+ * line_has_license_flavour - returns true if line contains a <flavour> license
+ * @line: line to look for license in
+ * @shortname: license to find
+ * @note ("LGPLv2.0","LGPL") returns true
+ * @note ("LGPLv2.0","GPL") returns false
+ */
+static bool line_has_license_flavour(const char *line, const char *flavour) {
+ char *strtok_line, *strtok_tmp, *token;
+ bool ret = false;
+ const size_t flavour_len = strlen(flavour);
+
+ strtok_line = strtok_tmp = xstrdup(line);
+ while((token = strtok(strtok_tmp, " \t-:")) != NULL) {
+ if (!strncmp(token, flavour, flavour_len)) {
+ ret = true;
+ break;
+ }
+ strtok_tmp = NULL;
+ }
+ free(strtok_line);
+
+ return ret;
+}
+