FOSSology  4.7.1
Open Source License Compliance by Open Source Software
parse.c
Go to the documentation of this file.
1 /*
2  SPDX-FileCopyrightText: © 2006-2015 Hewlett-Packard Development Company, L.P.
3  SPDX-FileCopyrightText: © 2017-2019 Bittium Wireless Ltd.
4 
5  SPDX-License-Identifier: GPL-2.0-only
6 */
7 /* Equivalent to version 1.83 of Core Nomos code. */
8 #include <ctype.h>
9 
10 #include "nomos.h"
11 
12 #include "parse.h"
13 #include "list.h"
14 #include "util.h"
15 #include "nomos_regex.h"
16 #include "nomos_utils.h"
17 #include <_autodefs.h>
18 
19 /* DEBUG
20 #define DOCTOR_DEBUG 1
21 #define PROC_TRACE 1
22  DEBUG */
23 
40 #define _mGPL 0
41 #define _mLGPL 1
42 #define _mGFDL 2
43 #define _mQPL 3
44 #define _mPYTHON 4
45 #define _mPYTH_TEXT 5
46 #define _mAPACHE 6
47 #define _mHP 7
48 #define _mPHP 8
49 #define _mMIT 9
50 #define _mXOPEN 10
51 #define _mREDHAT 11
52 #define _mISC 12
53 #define _mCMU 13
54 #define _mOSF 14
55 #define _mSUN 15
56 #define _mALADDIN 16
57 #define _mCUPS 17
58 #define _fOPENLDAP 18
59 #define _fBSD 19
60 #define _fGPL 20
61 #define _mCDDL 21
62 #define _mLIBRE 22
63 #define _mGSOAP 23
64 #define _mMPL 24
65 #define _fATTRIB 25
66 #define _fREAL 26
67 #define _fIETF 27
68 #define _fDOC 28
69 #define _fMSCORP 29
70 #define _fW3C 30
71 #define _mAPTANA 31
72 #define _tOPENLDAP 32
73 #define _mNTP 33 // To avoid W3C-style detection
74 #define _fIP 34
75 #define _fANTLR 35
76 #define _fCCBY 36
77 #define _fZPL 37
78 #define _fCLA 38
79 #define _fODBL 39
80 #define _fPDDL 40
81 #define _fRUBY 41
82 #define _fSAX 42
83 #define _fAPL 43
84 #define _fARTISTIC 44
85 #define _fCITRIX 45
86 #define _fPURDUE 46
87 #define _fUNICODE 47
88 #define _fOFL 48
89 #define _mAPACHE10 49
90 #define _mAPACHE11 50
91 #define _mWORDNET 51
92 #define _fNCSA 52
93 #define _fTCL 53
94 #define _fIJG 54
95 #define _msize _fIJG+1
97 
101 static struct {
102  char *base;
103  int sso;
104  int seo;
105  int index;
107 
108 
109 #ifdef PRECHECK
110 extern void preloadResults(char *filetext, char *ltsr);
111 #endif /* PRECHECK */
112 
118 int findPhrase(int, char *,int, int, int, int);
119 int famOPENLDAP(char *, int ,int, int);
120 int checkUnclassified(char *, int, int, int, int, int);
121 int checkPublicDomain(char *, int, int, int, int, int);
122 static int dbgIdxGrep(int, char *, int);
123 #ifdef LTSR_DEBUG
124 void showLTCache(char *);
125 #endif /* LTSR_DEBUG */
126 void checkCornerCases(char *, int, int, int, int, int, int, int);
127 void checkFileReferences(char *, int, int, int, int, int);
128 void addRef(char *, int);
129 #ifdef DOCTOR_DEBUG
130 void dumpMatch(char *, char *);
131 #endif /* DOCTOR_DEBUG */
132 void locateRegex(char *, item_t *, int, int, int, int);
133 void saveRegexLocation(int, int, int, int);
134 void saveUnclBufLocation(int);
135 void saveLicenseParagraph(char *, int , int , int , int , int );
136 char *cplVersion(char *, int, int, int);
137 static char *gplVersion(char *, int, int, int);
138 char *lgplVersion(char *, int, int, int);
139 char *agplVersion(char *, int, int, int);
140 char *gfdlVersion(char *, int, int, int);
141 char *lpplVersion(char *, int, int, int);
142 char *mplNplVersion(char *, int, int, int);
143 char *pythonVersion(char *, int, int, int);
144 static char *realVersion(char *, int, int, int, int);
145 static char *sisslVersion(char *, int, int, int);
146 char *aslVersion(char *, int, int, int);
147 char *cddlVersion(char *, int, int, int);
148 char *ccVersion(char *, int, int, int);
149 char *oslVersion(char *, int, int, int);
150 char *aflVersion(char *, int, int, int);
151 static int match3(int, char *, int, int, int, int);
152 void spdxReference(char *, int, int, int);
153 void copyleftExceptions(char *, int, int, int);
155 
164 static char licStr[myBUFSIZ];
165 
166 static char ltsr[NFOOTPRINTS];
168 static char name[256];
169 static char lmem[_msize];
170 static list_t searchList;
171 static list_t whereList;
172 static list_t whCacheList;
173 static int refOffset;
174 static int maxInterest;
175 static int pd;
177 static int crCheck;
178 static int checknw;
179 static int lDebug = 0;
180 static int lDiags = 0;
182 
188 #define PARSE_ARGS filetext, size, isML, isPS
189 #define LVAL(x) (ltsr[x] & LTSR_RMASK)
190 #define SEEN(x) (ltsr[x] & LTSR_SMASK)
191 #define INFILE(x) fileHasPatt(x, PARSE_ARGS, 0)
192 #define NOT_INFILE(x) !( fileHasPatt(x, PARSE_ARGS, 0) && clearLastElementOfLicenceBuffer() )
193 #define RM_INFILE(x) fileHasPatt(x, PARSE_ARGS, 1)
194 #define GPL_INFILE(x) fileHasPatt(x, PARSE_ARGS, 2)
195 #define PERL_INFILE(x) fileHasPatt(x, PARSE_ARGS, 3)
196 #define NY_INFILE(x) fileHasPatt(x, PARSE_ARGS, 4)
197 #define X_INFILE(x, y) fileHasPatt(x, PARSE_ARGS, y)
198 #define DEBUG_INFILE(x) printf(" Regex[%d] = \"%s\"\nINFILE(%d) = %d\n", x, _REGEX(x), x, INFILE(x));
199 #define HASREGEX(x, cp) idxGrep(x, cp, REG_ICASE|REG_EXTENDED)
200 #define HASREGEX_RI(x, cp) idxGrep_recordIndex(x, cp, REG_ICASE|REG_EXTENDED)
201 #define HASTEXT(x, fl) idxGrep_recordIndex(x, filetext, REG_ICASE|fl)
202 #define URL_INFILE(x) (INFILE(x) || fileHasPatt(x, PARSE_ARGS, -1))
203 #define CANSKIP(i,x,y,z) ((i >= y) && (i <= z) && !(kwbm & (1 << (x - _KW_first))))
204 #define HASKW(x, y) (x & (1 << (y - _KW_first)))
205 #define TRYGROUP(x) x(PARSE_ARGS)
206 #define LOWINTEREST(x) addRef(x, IL_LOW)
207 #define MEDINTEREST(x) addRef(x, IL_MED)
208 //#define INTERESTING(x) printf("INTERESTING: %s, %d, %s\n", __FILE__, __LINE__, x);addRef(x, IL_HIGH)
209 #define INTERESTING(x) addRef(x, IL_HIGH)
210 #define ASLVERS() aslVersion(PARSE_ARGS)
211 #define CCVERS() ccVersion(PARSE_ARGS)
212 #define AFLVERS() aflVersion(PARSE_ARGS)
213 #define OSLVERS() oslVersion(PARSE_ARGS)
214 #define CPLVERS() cplVersion(PARSE_ARGS)
215 #define GPLVERS() gplVersion(PARSE_ARGS)
216 #define LGPLVERS() lgplVersion(PARSE_ARGS)
217 #define AGPLVERS() agplVersion(PARSE_ARGS)
218 #define GFDLVERS() gfdlVersion(PARSE_ARGS)
219 #define CDDLVERS() cddlVersion(PARSE_ARGS)
220 #define LPPLVERS() lpplVersion(PARSE_ARGS)
221 #define MPLVERS() mplNplVersion(PARSE_ARGS)
222 #define PYTHVERS() pythonVersion(PARSE_ARGS)
223 #define SISSLVERS() sisslVersion(PARSE_ARGS)
224 #define REALVERS(x) realVersion(PARSE_ARGS, x)
225 #define PR_REGEX(x) printf("check %d = %s\n", x, _REGEX(x));
226 #define mCR_CMU() (INFILE(_CR_CMU_1) || INFILE(_CR_CMU_2))
227 #define mCR_EDIN() (INFILE(_CR_EDINBURGH_1) || INFILE(_CR_EDINBURGH_2))
228 #define mCR_FSF() (INFILE(_CR_FSF1) || INFILE(_CR_FSF2))
229 #define mCR_HP() (INFILE(_CR_HP_1)|| INFILE(_CR_HP_2) || INFILE(_CR_DEC) || INFILE(_CR_EDS))
230 #define mCR_IETF() (INFILE(_CR_IETF_1) || INFILE(_CR_IETF_2))
231 #define mCR_MIT() (INFILE(_CR_MIT1) || INFILE(_CR_MIT2))
232 #define mCR_X11() (INFILE(_CR_X11) || INFILE(_CR_XFREE86))
233 #define mCR_IPTC() (INFILE(_CR_IPTC1) || INFILE(_CR_IPTC2))
234 #define SPDXREF() spdxReference(PARSE_ARGS)
235 #define EXCEPTIONS() copyleftExceptions(PARSE_ARGS)
237 
248 static int fileHasPatt(int licTextIdx, char *filetext, int size,
249  int isML, int isPS, int qType)
250 {
251  int ret = 0;
252  int show = 0;
253  item_t *ip;
254 
255 #ifdef PROC_TRACE
256  traceFunc("== fileHasPatt(size=%d, isML=%d, isPS=%d, qType=%d, idx=%d)\n",
257  size, isML, isPS, qType, licTextIdx);
258 
259 #endif /* PROC_TRACE */
260 
261  /*
262  * If qType is negative, then we should call idxGrep to look at the
263  * raw text of the file; non-negative value means look in the doctored
264  * text buffers...
265  */
266  if ((qType >= 0) && (qType & FL_SHOWMATCH)) {
267  qType &= ~FL_SHOWMATCH;
268  show = FL_SHOWMATCH;
269  }
270  if (qType < 0) {
271  ret = idxGrep_recordPosition(licTextIdx, filetext, REG_ICASE | REG_EXTENDED | show);
272  if (lDiags && ret) {
273 #ifdef DOCTOR_DEBUG
274  dumpMatch(filetext, "RAW-Text");
275 #endif /* DEBUG */
276  printRegexMatch(licTextIdx, NO);
277  saveRegexLocation(licTextIdx, cur.regm.rm_so,
278  cur.regm.rm_eo - cur.regm.rm_so, YES);
279 #ifdef DEBUG
280  printf("WINDOW-RAW: offset %d, length %d\n",
281  cur.regm.rm_so, cur.regm.rm_eo - cur.regm.rm_so);
282 #endif /* DEBUG */
283  }
284  return(ret);
285  }
286  if (SEEN(licTextIdx)) {
287 #ifdef LTSR_DEBUG
288  printf("Cache hit: ltsr[%d] = 0x%x\n", licTextIdx, ltsr[licTextIdx]);
289 #endif /* LTSR_DEBUG */
290  if (lDiags && (ltsr[licTextIdx] & LTSR_YES) == LTSR_YES) {
291  printRegexMatch(licTextIdx, YES);
292  (void) sprintf(name, "reg%04d", licTextIdx);
293  ip = listGetItem(&whCacheList, name);
294  if (ip->bIndex != licTextIdx) {
295  listDump(&whCacheList, NO);
296  LOG_FATAL("Offset-cache (\"%s\") == %d, not %d!", name, ip->bIndex, licTextIdx)
297  Bail(-__LINE__);
298  }
299  saveRegexLocation(licTextIdx, ip->bStart, ip->bLen, NO);
300  }
301  return(ltsr[licTextIdx] & LTSR_RMASK);
302  }
303  /* Entries with no seed cannot use findPhrase(); fall back to direct regex search. */
304  if (licText[licTextIdx].tseed == NULL_STR) {
305  return idxGrep_recordPosition(licTextIdx, filetext, REG_ICASE | REG_EXTENDED);
306  }
307  return(findPhrase(licTextIdx, PARSE_ARGS, qType));
308 }
309 
320 static int dbgIdxGrep(int licTextIdx, char *buf, int show)
321 {
322  int ret;
323  int flags = REG_ICASE|REG_EXTENDED;
324 
325  if (SEEN(licTextIdx)) {
326  return(ltsr[licTextIdx] & LTSR_RMASK);
327  }
328 
329  if (show) {
330  flags |= FL_SHOWMATCH;
331  }
332  ret = idxGrep(licTextIdx, buf, flags);
333  if (lDiags && ret) {
334  printRegexMatch(licTextIdx, NO);
335  saveRegexLocation(licTextIdx, cur.regm.rm_so,
336  cur.regm.rm_eo - cur.regm.rm_so, YES);
337  }
338  ltsr[licTextIdx] |= ret;
339  return ret;
340 }
341 
363 char *parseLicenses(char *filetext, int size, scanres_t *scp,
364  int isML, int isPS)
365 {
366  static int first = 1;
367  char *cp;
368  int i;
369  int j;
370  int nw = 0;
371  int score = scp->score;
372  int kwbm = scp->kwbm;
373 #ifdef PRECHECK
374  extern void preloadResults(char *, char *);
375 #endif /* PRECHECK */
376 
377 #if defined(PROC_TRACE) || defined(DOCTOR_DEBUG)
378  traceFunc("== parseLicenses(%p, %d, [%d, 0x%x], %d, %d)\n",
379  filetext, size, score, kwbm, isML, isPS );
380 #endif /* PROC_TRACE || DOCTOR_DEBUG */
381 
382  if (size == 0) {
383  LOWINTEREST("Empty-file-no-data");
384  return(licStr+1);
385  }
386 
387  if (first) {
388  if (optionIsSet(OPTS_DEBUG)) {
389  lDebug = 1;
390  lDiags = 1;
391  }
392  listInit(&searchList, 0, "pattern-search list");
393  listInit(&whereList, 0, "regex-match locations list");
394  listInit(&whCacheList, 0, "regex-cache-match list");
395  first = 0;
396  }
397  crCheck = 0;
398  kludge.base = NULL_STR;
399  /*
400  * Interestingly enough, the headers for Nomos-generated file (e.g., the
401  * page containing the keywords found, file attributes and file text, etc.)
402  * contain enough data to confuse the parser in multiple ways... in the
403  * rare event we encounter a data file we generated, skip the header.
404  *****
405  * AND, not all nomos-created files have the same header(s).
406  */
407  pd = -1; /* unchecked */
408  cp = filetext;
409  maxInterest = IL_INIT;
410  cur.licPara = NULL_STR; /* unclassified license data */
411  gl.flags &= ~FL_FRAGMENT;
412 #ifdef FLAG_NO_COPYRIGHT
413  gl.flags &= ~FL_NOCOPYRIGHT;
414 #endif /* FLAG_NO_COPYRIGHT */
415  if (scp->dataOffset && lDiags) {
416  LOG_NOTICE("%s-generated link, ignore header (%d bytes)!",
417  gl.progName, scp->dataOffset);
418  }
419 
420  /*
421  * It's been observed over time that the file-magic() stuff doesn't always
422  * identify everything correctly. One case in particular is PostScript files
423  * when the "%%PS" directive isn't the first line in a file... but the rest
424  * of the data really IS PostScript
425  */
426  if (!isPS && (strncasecmp(filetext, "%%page:", 7) == 0 || strncasecmp(filetext, "{\\rtf", 5) == 0)) {
427 #if defined(DEBUG) || defined(DOCTOR_DEBUG)
428  printf("File is really postscript, %s filetext !\n", filetext);
429 #endif /* DEBUG || DOCTOR_DEBUG */
430  isPS = 1;
431  }
432 
433  *licStr = NULL_CHAR;
434  refOffset = 0;
435  (void) memset(ltsr, 0, sizeof(ltsr));
436  (void) memset(lmem, 0, sizeof(lmem));
437 #if defined(DEBUG) && defined(LTSR_DEBUG)
438  showLTCache("LTSR-results START:");
439 #endif /* DEBUG && LTSR_DEBUG */
440 #ifdef PRECHECK
441  preloadResults(/*PARSE_ARGS*/filetext, ltsr);
442 #endif /* PRECHECK */
443 #ifdef MEMSTATS
444  memStats("parseLicenses: BOP");
445 #endif /* MEMSTATS */
446  lmem[_mPYTH_TEXT] = HASTEXT(_TEXT_PYTHON, 0);
447  lmem[_tOPENLDAP] = HASTEXT(_TEXT_OPENLDAP, 0);
448  (void) INFILE(_TEXT_GNU_LIC_INFO);
449 #ifdef LTSR_DEBUG
450  showLTCache("LTSR-results INIT-SCAN:");
451 #endif /* LTSR_DEBUG */
452  /*
453  * MySQL.FLOSS exception
454  */
455  if (INFILE(_LT_MYSQL_EXCEPT) || INFILE(_PHR_FREE_LIBRE)) {
456  if (INFILE(_TITLE_ALFRESCO)) {
457  INTERESTING("Alfresco-FLOSS");
458  }
459  else if (HASTEXT(_TEXT_ALFRESCO, 0)) {
460  INTERESTING("Alfresco");
461  }
462  else if (INFILE(_CR_MYSQL) || INFILE(_TITLE_mysql_floss_exception)) {
463  if (INFILE(_TITLE_MYSQL_V03)) {
464  INTERESTING("MySQL-0.3");
465  }
466  else {
467  INTERESTING("mysql-floss-exception");
468  }
469  }
470  else {
471  INTERESTING("MySQL-style");
472  }
473  lmem[_mLIBRE] = 1;
474  }
475  /*
476  * Some RealNetworks licenses included a list of "compatible" licenses that
477  * can confuse the license-detection algorithms within. Look for these early
478  * in the process, and ignore the known (false) matches when we detect the
479  * RPSL/RCSL licenses.
480  */
481  if (HASTEXT(_TEXT_REALNET, REG_EXTENDED)) {
482  /*
483  * List of other licenses should be excluded only if full license text is found
484  */
485  if (INFILE(_LT_RPSL_COMPATIBLE)) {
486  lmem[_fREAL] = 1;
487  }
488  if (INFILE(_LT_REAL_RPSL)) {
489  cp = REALVERS(_TITLE_RPSL);
490  INTERESTING(lDebug ? "RPSL" : cp);
491  }
492  else if (INFILE(_LT_REAL_RPSLref)) {
493  cp = REALVERS(_TITLE_RPSL);
494  INTERESTING(lDebug ? "Real-RPSL(ref)" : cp);
495  }
496  if (INFILE(_LT_REAL_RCSL)) {
497  cp = REALVERS(_TITLE_RCSL);
498  INTERESTING(lDebug ? "RCSL" : cp);
499  }
500  else if (INFILE(_LT_REAL_RCSLref)) {
501  cp = REALVERS(_TITLE_RCSL);
502  INTERESTING(lDebug ? "Real-RCSL(ref)" : cp);
503  }
504  if (INFILE(_TITLE_REAL_EULA)) {
505  INTERESTING("RealNetworks-EULA");
506  }
507  else if (INFILE(_LT_HELIX_TITLE)) {
508  INTERESTING("Helix.RealNetworks-EULA");
509  }
510  }
512  /*
513  * Zope - this license is explicitly listed (by title) in several other
514  * licenses...
515  */
516  if (!lmem[_mLIBRE] && !lmem[_fREAL] && INFILE(_TITLE_ZOPE)) {
517  if (INFILE(_TITLE_ZOPE_V21)) {
518  INTERESTING("ZPL-2.1");
519  lmem[_fZPL] = 1;
520  }
521  else if (INFILE(_TITLE_ZOPE_V20)) {
522  INTERESTING("ZPL-2.0");
523  lmem[_fZPL] = 1;
524  }
525  else if (INFILE(_TITLE_ZOPE_V10)) {
526  INTERESTING("ZPL-1.0");
527  lmem[_fZPL] = 1;
528  }
529  else if (INFILE(_TITLE_ZOPE_V11)) {
530  INTERESTING("ZPL-1.1");
531  lmem[_fZPL] = 1;
532  }
533  else if (INFILE(_SPDX_ZPL_11)) {
534  INTERESTING("ZPL-1.1");
535  lmem[_fZPL] = 1;
536  }
537  else if (INFILE(_SPDX_ZPL_20)) {
538  INTERESTING("ZPL-2.0");
539  lmem[_fZPL] = 1;
540  }
541  else if (INFILE(_SPDX_ZPL_21)) {
542  INTERESTING("ZPL-2.1");
543  lmem[_fZPL] = 1;
544  }
545  else if (INFILE(_TITLE_ZIMBRA_13)) {
546  INTERESTING("Zimbra-1.3");
547  }
548  else if (INFILE(_TITLE_ZIMBRA_12)) {
549  INTERESTING("Zimbra-1.2");
550  }
551  else {
552  INTERESTING(lDebug ? "Zope(ref)" : "ZPL");
553  lmem[_fZPL] = 1;
554  }
555  }
557  if (INFILE(_LT_ANTI_CAPITALIST_1_4)) {
558  INTERESTING("ACSL-v.-1.4");
559  lmem[_mMIT] = 1;
560  }
562  if (INFILE(_LT_ANU_LICENSE)) {
563  INTERESTING("ANU");
564  lmem[_mMIT] = 1;
565  }
567  if (INFILE(_LT_ATKINSON_HYPERLEGIBLE_FONT)) {
568  INTERESTING("Atkinson-Hyperlegible-Font");
569  lmem[_mMIT] = 1;
570  }
572  if (INFILE(_LT_BLOOMBERG_BLPAPI)) {
573  INTERESTING("Bloomberg-BLPAPI");
574  lmem[_mMIT] = 1;
575  }
577  if (INFILE(_LT_BOOST_ORIGINAL)) {
578  INTERESTING("Boost-Original");
579  lmem[_mMIT] = 1;
580  }
582  if (INFILE(_LT_CARNEGIE_MELLON_CONTRIBUTORS) || INFILE(_LT_CMU_MACH_RETURN)) {
583  INTERESTING("CMU-Mach");
584  lmem[_mMIT] = 1;
585  /* blocks the generic CMU chain */
586  lmem[_mCMU] = 1;
587  }
589  if (INFILE(_LT_CMR_NO)) {
590  INTERESTING("CMR");
591  lmem[_mMIT] = 1;
592  }
594  if (INFILE(_LT_CMU_MIT)) {
595  INTERESTING("CMU-MIT-style");
596  lmem[_mMIT] = 1;
597  }
599  if (INFILE(_LT_CMU_TEMPLATE)) {
600  INTERESTING("CMU-style");
601  lmem[_mMIT] = 1;
602  }
604  if (INFILE(_LT_CORPORATE_ACCOUNTABILITY_1_1)) {
605  INTERESTING("CAL-Software");
606  lmem[_mMIT] = 1;
607  }
609  if (INFILE(_LT_DMALLOC)) {
610  INTERESTING("dmalloc");
611  lmem[_mMIT] = 1;
612  }
614  if (INFILE(_LT_DOCBOOK_2)) {
615  INTERESTING("Docbook");
616  lmem[_mMIT] = 1;
617  }
619  if (INFILE(_LT_DR_JOHN_MADDOCK)) {
620  INTERESTING("Dr-John-Maddock");
621  lmem[_mMIT] = 1;
622  }
624  if (INFILE(_LT_DROPBEAR)) {
625  INTERESTING("Dropbear");
626  lmem[_mMIT] = 1;
627  }
629  if (INFILE(_LT_FACEBOOK_SOFTWARE_LICENSE)) {
630  INTERESTING("Facebook-Software");
631  lmem[_mMIT] = 1;
632  }
634  if (INFILE(_LT_GITLAB_EE)) {
635  INTERESTING("GitLab-EE");
636  lmem[_mMIT] = 1;
637  }
639  if (INFILE(_LT_GOOGLE_MAPS_TOS_2020_05_06)) {
640  INTERESTING("Google-Maps-Platform-ToS-2020-05-06");
641  }
643  if (INFILE(_LT_GPL_2_0_PLUS_GEOSERVER)) {
644  INTERESTING("GPL-2.0-or-later-geoserver");
645  lmem[_mGPL] = 1;
646  }
648  if (INFILE(_LT_GPL_3_0_APTANA)) {
649  INTERESTING("GPL-3.0-with-Aptana-exception");
650  lmem[_mGPL] = 1;
651  }
653  if (INFILE(_LT_HDF4)) {
654  INTERESTING("HDF4");
655  }
657  if (INFILE(_LT_HDF5)) {
658  INTERESTING("HDF5");
659  }
661  if (INFILE(_LT_HIPPOCRATIC_2_0)) {
662  INTERESTING("Hippocratic-2.0");
663  lmem[_mMIT] = 1;
664  }
666  if (INFILE(_LT_IBPP)) {
667  INTERESTING("IBPP");
668  lmem[_mMIT] = 1;
669  }
671  if (INFILE(_LT_IC_1_0)) {
672  INTERESTING("IC-1.0");
673  lmem[_mMIT] = 1;
674  }
676  if (INFILE(_LT_IC_SHARED_1_0)) {
677  INTERESTING("IC-Shared-1.0");
678  lmem[_mMIT] = 1;
679  }
681  if (INFILE(_LT_ILMID)) {
682  INTERESTING("ilmid");
683  lmem[_mMIT] = 1;
684  }
686  if (INFILE(_LT_JASPER_1_0)) {
687  INTERESTING("Jasper-1.0");
688  lmem[_mAPACHE] = 1;
689  }
691  if (INFILE(_LT_KERBEROS)) {
692  INTERESTING("Kerberos");
693  lmem[_mMIT] = 1;
694  }
696  if (INFILE(_LT_KEVLIN_HENNEY)) {
697  INTERESTING("HPND-Kevlin-Henney");
698  lmem[_mMIT] = 1;
699  }
701  if (INFILE(_LT_KREATIVE_RELAY_FONTS_FREE_USE_1_2F)) {
702  INTERESTING("Kreative-Software-Relay-Fonts-Free-Use-1.2f");
703  lmem[_mMIT] = 1;
704  }
706  if (INFILE(_LT_LIBMIB)) {
707  INTERESTING("LibMib");
708  lmem[_mMIT] = 1;
709  }
711  if (INFILE(_LT_LUMISOFT_MAIL_SERVER)) {
712  INTERESTING("LumiSoft-Mail-Server");
713  lmem[_mMIT] = 1;
714  }
716  if (INFILE(_LT_LUXI)) {
717  INTERESTING("Bigelow-and-Holmes-Luxi-fonts");
718  lmem[_mMIT] = 1;
719  }
721  if (INFILE(_LT_MIT_NO_TRADEMARKS)) {
722  INTERESTING("MIT-No-Commercial-Use-of-Trademarks");
723  lmem[_mMIT] = 1;
724  }
726  if (INFILE(_LT_MIT_OLD_STYLE_SPARSE)) {
727  INTERESTING("MIT-Old-Style-Spare");
728  lmem[_mMIT] = 1;
729  }
731  if (INFILE(_LT_MIT_TAYLOR_VARIANT)) {
732  INTERESTING("pkgconf");
733  lmem[_mMIT] = 1;
734  }
736  if (INFILE(_LT_MIT_XFIG)) {
737  INTERESTING("Xfig");
738  lmem[_mMIT] = 1;
739  }
741  if (INFILE(_LT_MS_CL)) {
742  INTERESTING("MS-CL");
743  }
745  if (INFILE(_LT_MS_VISUAL_STUDIO_CODE_2022)) {
746  INTERESTING("MS-Visual-Studio-Code-2022");
747  lmem[_mMIT] = 1;
748  }
750  if (INFILE(_LT_MULLE_KYBERNETIK)) {
751  INTERESTING("Mulle-Kybernetik");
752  lmem[_mMIT] = 1;
753  }
755  if (INFILE(_LT_MX4J_2)) {
756  INTERESTING("MX4J");
757  lmem[_mAPACHE] = 1;
758  }
760  if (INFILE(_LT_NEWTON_KING_CLA)) {
761  INTERESTING("Newton-King-CLA");
762  lmem[_mMIT] = 1;
763  }
765  if (INFILE(_LT_NICE)) {
766  INTERESTING("Nice");
767  lmem[_mMIT] = 1;
768  }
770  if (INFILE(_LT_NONEXCLUSIVE)) {
771  INTERESTING("Nonexclusive");
772  lmem[_mMIT] = 1;
773  }
775  if (INFILE(_LT_NRL_PERMISSION)) {
776  INTERESTING("CMU-Mach-nodoc");
777  lmem[_mMIT] = 1;
778  }
780  if (INFILE(_LT_NXP_MICROCONTROLLER_PROPRIETARY)) {
781  INTERESTING("NXP-Microcontroller-Proprietary");
782  lmem[_mMIT] = 1;
783  }
785  if (INFILE(_LT_OPENSSL_EXCEPTION_AGPL_3_0_PLUS)) {
786  INTERESTING("AGPL-3.0-or-later-with-openssl-exception");
787  lmem[_mGPL] = 1;
788  }
790  if (INFILE(_LT_ORACLE_MYSQL_FOSS_EXCEPTION_2_0)) {
791  INTERESTING("Oracle-MySQL-FOSS-exception-2.0");
792  lmem[_mGPL] = 1;
793  }
795  if (INFILE(_LT_PASSIVE_AGGRESSIVE)) {
796  INTERESTING("Passive-Aggressive");
797  lmem[_mMIT] = 1;
798  }
800  if (INFILE(_LT_PPP)) {
801  INTERESTING("ppp");
802  lmem[_mMIT] = 1;
803  }
805  if (INFILE(_LT_PROSPERITY_3_0)) {
806  INTERESTING("Prosperity-Public-3.0");
807  lmem[_mMIT] = 1;
808  }
810  if (INFILE(_LT_PYBENCH)) {
811  INTERESTING("pybench");
812  lmem[_mMIT] = 1;
813  }
815  if (INFILE(_LT_PYGRES_2_2)) {
816  INTERESTING("PyGres-2.2");
817  }
819  if (INFILE(_LT_REPORTBUG)) {
820  INTERESTING("Debian-reportbug");
821  lmem[_mMIT] = 1;
822  }
824  if (INFILE(_LT_SCINTILLA)) {
825  INTERESTING("Scintilla");
826  lmem[_mMIT] = 1;
827  }
829  if (INFILE(_LT_SECRET_LABS_2011)) {
830  INTERESTING("Secret-Labs-2011");
831  lmem[_mMIT] = 1;
832  }
834  if (INFILE(_LT_STLPORT_2000)) {
835  INTERESTING("STLport-2000");
836  lmem[_mMIT] = 1;
837  }
839  if (INFILE(_LT_TTYP0)) {
840  INTERESTING("TTYP0");
841  lmem[_mMIT] = 1;
842  }
844  if (INFILE(_LT_UPL_1_0)) {
845  INTERESTING("UPL-1.0");
846  lmem[_mMIT] = 1;
847  }
849  if (INFILE(_LT_WESTHAWK)) {
850  INTERESTING("Westhawk");
851  lmem[_mMIT] = 1;
852  }
854  if (INFILE(_LT_X11_DEC2)) {
855  INTERESTING("HPND-DEC");
856  lmem[_mMIT] = 1;
857  }
859  if (INFILE(_LT_X11_DOC)) {
860  INTERESTING("X11-Documentation");
861  lmem[_mMIT] = 1;
862  }
864  if (INFILE(_LT_X11_DSC)) {
865  INTERESTING("X11-Style-DSC-Technologies");
866  lmem[_mMIT] = 1;
867  }
869  if (INFILE(_LT_X11_HANSON)) {
870  INTERESTING("X11-Style-David-R.-Hanson");
871  lmem[_mMIT] = 1;
872  }
874  if (INFILE(_LT_X11_OPENGL)) {
875  INTERESTING("SGI-OpenGL");
876  lmem[_mMIT] = 1;
877  }
879  if (INFILE(_LT_X11_QUARTERDECK)) {
880  INTERESTING("X11-Style-Quarterdeck");
881  lmem[_mMIT] = 1;
882  }
884  if (INFILE(_LT_X11R5_AUTHORS)) {
885  INTERESTING("X11-R5-Authors");
886  lmem[_mMIT] = 1;
887  }
889  if (INFILE(_LT_X11_X11R5)) {
890  INTERESTING("X11-R5");
891  lmem[_mMIT] = 1;
892  }
894  if (INFILE(_LT_BSD_3_CLAUSE_LBNL)) {
895  INTERESTING("BSD-3-Clause-LBNL");
896  }
898  if (INFILE(_LT_BLAS_2017)) {
899  INTERESTING("BLAS-2017");
900  }
902  /*
903  * Check Apache licenses before BSD
904  */
905  if (HASTEXT(_PHR_Apache_ref0, REG_EXTENDED) || INFILE(_PHR_Apache_ref7) || INFILE(_TITLE_Apache)) {
906  /* Exceptions modify an Apache grant rather than replacing it, so
907  record them and still resolve the base Apache version below. */
908  if (INFILE(_LT_APACHE_2_0_LINKING_EXCEPTION)) {
909  INTERESTING("Apache-2.0-with-Linking-Exception");
910  }
911  else if (INFILE(_LT_SWIFT_EXCEPTION)) {
912  INTERESTING("Swift-exception");
913  }
914  if (INFILE(_LT_QUICKFIX_1_0)) {
915  INTERESTING("QuickFix-1.0");
916  lmem[_mAPACHE] = 1;
917  }
918  else if (INFILE(_LT_CLOUDERA_EXPRESS)) {
919  INTERESTING("Cloudera-Express");
920  lmem[_mAPACHE] = 1;
921  }
922  else if (INFILE(_LT_COCKROACH)) {
923  INTERESTING("CockroachDB-BSL-1.1");
924  }
925  else if (INFILE(_LT_COCKROACHDB_USE_GRANT_FOR_BSL_1_1)) {
926  INTERESTING("CockroachDB-Use-Grant-for-BSL-1.1");
927  }
928  else if (INFILE(_LT_DGRAPH_CLA)) {
929  INTERESTING("Dgraph-Community");
930  }
931  else if (INFILE(_LT_ELASTIC_LICENSE_2018)) {
932  INTERESTING("Elastic-2018");
933  lmem[_mAPACHE] = 1;
934  }
935  else if (INFILE(_LT_GCEL_2022)) {
936  INTERESTING("GCEL-2022");
937  }
938  else if (INFILE(_LT_JYTHON)) {
939  INTERESTING("Jython");
940  lmem[_mAPACHE] = 1;
941  }
942  else if (INFILE(_LT_LEAP_MOTION_SDK_2019)) {
943  INTERESTING("Leap-Motion-SDK-2019");
944  lmem[_mAPACHE] = 1;
945  }
946  else if (INFILE(_LT_PHORUM_2_0)) {
947  INTERESTING("Phorum-2.0");
948  lmem[_mAPACHE] = 1;
949  }
950  else if (INFILE(_LT_SHL_0_5)) {
951  INTERESTING("SHL-0.5");
952  lmem[_mAPACHE] = 1;
953  }
954  else if (INFILE(_LT_SHL_0_51)) {
955  INTERESTING("SHL-0.51");
956  lmem[_mAPACHE] = 1;
957  }
958  else if (INFILE(_LT_SHL_2_0)) {
959  INTERESTING("SHL-2.0");
960  lmem[_mAPACHE] = 1;
961  }
962  else if (INFILE(_LT_SHL_2_1)) {
963  INTERESTING("SHL-2.1");
964  lmem[_mAPACHE] = 1;
965  }
966  else if (INFILE(_LT_SYMPHONYSOFT)) {
967  INTERESTING("Symphonysoft");
968  lmem[_mAPACHE] = 1;
969  }
970  else if (INFILE(_LT_TSL_2018)) {
971  INTERESTING("TSL");
972  }
973  else if (INFILE(_LT_TSL_2020)) {
974  INTERESTING("TSL-2020");
975  }
976  else if (INFILE(_LT_UCL_1_0)) {
977  INTERESTING("UCL-1.0");
978  lmem[_mAPACHE] = 1;
979  }
980  else {
981  cp = ASLVERS();
982  INTERESTING(cp);
983  }
984  }
986  /* outside the Apache guard: these only reference Apache */
987  if (INFILE(_LT_COCKROACH)) {
988  INTERESTING("CockroachDB-BSL-1.1");
989  }
991  if (INFILE(_LT_COCKROACHDB_USE_GRANT_FOR_BSL_1_1)) {
992  INTERESTING("CockroachDB-Use-Grant-for-BSL-1.1");
993  }
995  if (INFILE(_LT_DGRAPH_CLA)) {
996  INTERESTING("Dgraph-Community");
997  }
999  if (INFILE(_LT_GCEL_2022)) {
1000  INTERESTING("GCEL-2022");
1001  }
1003  if (INFILE(_LT_TSL_2018)) {
1004  INTERESTING("TSL");
1005  }
1007  if (INFILE(_LT_TSL_2020)) {
1008  INTERESTING("TSL-2020");
1009  }
1011  /*
1012  * BSD and all the variant 'flavors'. BSD licenses are kind of like
1013  * the cooking concept of 'the mother sauces' -- MANY things are derived
1014  * from the wordings of these licenses. There are still many more, for
1015  * certain, but LOTS of licenses are based on ~10 originally-BSD-phrases.
1016  */
1017  if (INFILE(_LT_WHITECAT)) {
1018  INTERESTING("Whitecat");
1019  }
1020  else if (INFILE(_LT_TWISTED_SNMP)) {
1021  INTERESTING("TwistedSNMP");
1022  }
1023  else if (INFILE(_LT_TTF2PT1)) {
1024  INTERESTING("TTF2PT1-Project");
1025  }
1026  else if (INFILE(_LT_STMICROELECTRONICS_CENTRALLABS)) {
1027  INTERESTING("STMicroelectronics-CentralLabs");
1028  }
1029  else if (INFILE(_LT_ST_BSD_RESTRICTED)) {
1030  INTERESTING("STMicro-BSD-Restricted");
1031  }
1032  else if (INFILE(_LT_SPARKY)) {
1033  INTERESTING("Sparky");
1034  }
1035  else if (INFILE(_LT_SPEECHWORKS_1_1)) {
1036  INTERESTING("SpeechWorks-Public-1.1");
1037  }
1038  else if (INFILE(_LT_SCANSOFT_1_2)) {
1039  INTERESTING("ScanSoft-Public-1.2");
1040  }
1041  else if (INFILE(_LT_RICEBSD)) {
1042  INTERESTING("RiceBSD");
1043  }
1044  else if (INFILE(_LT_RED_HAT_BSD_SIMPLIFIED)) {
1045  INTERESTING("Red-Hat-BSD-Simplified");
1046  }
1047  else if (INFILE(_LT_QUALCOMM_TURING)) {
1048  INTERESTING("Qualcomm-Turing");
1049  }
1050  else if (INFILE(_LT_PROTOBUF)) {
1051  INTERESTING("Protobuf");
1052  }
1053  else if (INFILE(_LT_PAUL_MACKERRAS_NEW)) {
1054  INTERESTING("Mackerras-3-Clause");
1055  }
1056  else if (INFILE(_LT_ORACLE_CODE_SAMPLES_BSD)) {
1057  INTERESTING("Oracle-Code-Samples-BSD-Style");
1058  }
1059  else if (INFILE(_LT_OPENSAML_1_0)) {
1060  INTERESTING("OpenSAML-v1");
1061  }
1062  else if (INFILE(_LT_OPENORB_1_0)) {
1063  INTERESTING("OpenORB-Community-1.0");
1064  }
1065  else if (INFILE(_LT_MINPACK)) {
1066  INTERESTING("Minpack");
1067  }
1068  else if (INFILE(_LT_LIBZIP)) {
1069  INTERESTING("libzip");
1070  }
1071  else if (INFILE(_LT_JGRAPH)) {
1072  INTERESTING("JGraph");
1073  }
1074  else if (INFILE(_LT_INDIANA_EXTREME)) {
1075  INTERESTING("Indiana-Extreme-1.1.1");
1076  }
1077  else if (INFILE(_LT_GEOFF_KUENNING_1993)) {
1078  INTERESTING("Geoff-Kuenning-1993");
1079  }
1080  else if (INFILE(_LT_FAR_MANAGER_EXCEPTION)) {
1081  INTERESTING("Far-Manager-exception");
1082  }
1083  else if (INFILE(_LT_FLEX_2_5)) {
1084  INTERESTING("BSD-3-Clause-flex");
1085  }
1086  else if (INFILE(_LT_ENERGYPLUS_BSD)) {
1087  INTERESTING("EnergyPlus-BSD-Style");
1088  }
1089  else if (INFILE(_LT_DOS32A_EXTENDER)) {
1090  INTERESTING("DOS32A-Extender");
1091  }
1092  else if (INFILE(_LT_COMPONENTACE_JCRAFT)) {
1093  INTERESTING("ComponentAce-JCraft");
1094  }
1095  else if (INFILE(_LT_CHICKEN_DL_0_2)) {
1096  INTERESTING("Chicken-Dance-v0.2");
1097  }
1098  else if (INFILE(_LT_BSD_UNMODIFIED)) {
1099  INTERESTING("BSD-Unmodified");
1100  }
1101  else if (INFILE(_LT_BSD_UNCHANGED)) {
1102  INTERESTING("BSD-Unchanged");
1103  }
1104  else if (INFILE(_LT_BSD_PLUS_MOD_NOTICE)) {
1105  INTERESTING("BSD-plus-modification-notice");
1106  }
1107  else if (INFILE(_LT_BSD_INTEL)) {
1108  INTERESTING("BSD-Intel");
1109  }
1110  else if (INFILE(_LT_BSD_NEW_FAR_MANAGER)) {
1111  INTERESTING("BSD-3-Clause-with-Far-Manager-exception");
1112  }
1113  else if (INFILE(_LT_BSD_NEW_NOMOD)) {
1114  INTERESTING("BSD-3-Clause-without-notice-modification");
1115  }
1116  else if (INFILE(_LT_BSD_ACK_CARROT2)) {
1117  INTERESTING("BSD-Acknowledgment-Carrot2");
1118  }
1119  else if (INFILE(_LT_BSD_EXPORT)) {
1120  INTERESTING("BSD-Export");
1121  }
1122  else if (INFILE(_LT_BSD_3_CLAUSE_NO_TRADEMARK)) {
1123  INTERESTING("BSD-3-Clause-no-trademark");
1124  }
1125  else if (INFILE(_LT_BSD_2_CLAUSE_PLUS_ADVERTIZING)) {
1126  INTERESTING("BSD-2-Clause-plus-advertizing");
1127  }
1128  else if (INFILE(_LT_BSD_3_CLAUSE_SUN)) {
1129  INTERESTING("BSD-3-Clause-Sun");
1130  }
1131  else if (INFILE(_LT_ATMEL_MICROCONTROLLER)) {
1132  INTERESTING("Atmel-Microcontroller");
1133  }
1134  else if (INFILE(_LT_ALTERMIME)) {
1135  INTERESTING("alterMIME");
1136  }
1137  else if (INFILE(_LT_ALLEN_INSTITUTE_SOFTWARE_2018)) {
1138  INTERESTING("Allen-Institute-Software-2018");
1139  }
1140  else if (INFILE(_LT_BSD_1)) {
1141  if (INFILE(_TITLE_PHP301)) {
1142  INTERESTING(lDebug ? "PHP(v3.01#1)" : "PHP-3.01");
1143  lmem[_mPHP] = 1;
1144  }
1145  else if (INFILE(_TITLE_PHP30)) {
1146  INTERESTING(lDebug ? "PHP(v3.0#1)" : "PHP-3.0");
1147  lmem[_mPHP] = 1;
1148  }
1149  else if (INFILE(_TITLE_PHP202)) {
1150  INTERESTING(lDebug ? "PHP(v2.02#1)" : "PHP-2.02");
1151  lmem[_mPHP] = 1;
1152  }
1153  else if (INFILE(_CR_VOVIDA) || INFILE(_TITLE_VOVIDA)) {
1154  INTERESTING("VSL-1.0");
1155  lmem[_fBSD] = 1;
1156  }
1157  else if (INFILE(_CR_NAUMEN) || INFILE(_TITLE_NAUMEN)) {
1158  INTERESTING("Naumen");
1159  }
1160  else if (INFILE(_CR_ENTESSA) || INFILE(_TITLE_ENTESSA)) {
1161  INTERESTING("Entessa");
1162  }
1163  else if (INFILE(_LT_ATTRIB) || INFILE(_TITLE_ATTRIBUTION)) {
1164  INTERESTING("AAL");
1165  lmem[_fATTRIB] = 1;
1166  }
1167  else if (INFILE(_CR_ZOPE)) {
1168  INTERESTING(lDebug ? "Zope(bsd)" : "ZPL");
1169  }
1170  else if (INFILE(_LT_Oracle_Berkeley_DB)) {
1171  INTERESTING("Oracle-Berkeley-DB");
1172  }
1173  else if (INFILE(_CR_SLEEPYCAT) || INFILE(_LT_SLEEPYCAT_1)) {
1174  MEDINTEREST(lDebug ? "Sleepycat(1)" : "Sleepycat");
1175  }
1176  else if (INFILE(_TITLE_ZEND_V20)) {
1177  INTERESTING("Zend-2.0");
1178  }
1179  else if (!lmem[_fOPENLDAP] && !TRYGROUP(famOPENLDAP)) {
1180  if (INFILE(_LT_RADVD)) {
1181  INTERESTING("radvd");
1182  }
1183  else if (HASTEXT(_LT_OPENSSLref5, REG_EXTENDED)) {
1184  INTERESTING(lDebug ? "OpenSSL(ref)" : "OpenSSL");
1185  }
1186  else if (INFILE(_LT_BSD_CLAUSE_0) && INFILE(_LT_BSD_CLAUSE_1) && INFILE(_LT_BSD_CLAUSE_2)) {
1187  if (INFILE(_LT_BSD_CLAUSE_3) && (INFILE(_LT_BSD_CLAUSE_4) || INFILE(_LT_BSD_CLAUSE_4_LONG)) && INFILE(_LT_UC)) {
1188  INTERESTING("BSD-4-Clause-UC");
1189  }
1190  else if (INFILE(_LT_BSD_CLAUSE_3) && (INFILE(_LT_BSD_CLAUSE_4) || INFILE(_LT_BSD_CLAUSE_4_LONG))) {
1191  INTERESTING("BSD-4-Clause");
1192  }
1193  else if (INFILE(_LT_BSD_CLAUSE_4) && INFILE(_LT_BSD_CLAUSE_CLEAR)) {
1194  INTERESTING("BSD-3-Clause-Clear");
1195  }
1196  else if (INFILE(_LT_BSD_CLAUSE_4) && INFILE(_LT_BSD_CLAUSE_OPEN_MPI)) {
1197  INTERESTING("BSD-3-Clause-Open-MPI");
1198  }
1199  else if (INFILE(_LT_BSD_CLAUSE_4) && HASTEXT(_KW_severability, REG_EXTENDED)) {
1200  INTERESTING("BSD-3-Clause-Severability");
1201  }
1202  else if (INFILE(_LT_XML_DB_V10)) {
1203  INTERESTING("XMLDB-1.0");
1204  }
1205  else if (INFILE(_LT_BSD_CLAUSE_4) && INFILE(_LT_ANT_BSD_RESTRICTION)) {
1206  INTERESTING("ANT-SharedSource");
1207  }
1208  else if (!lmem[_mAPACHE11] && INFILE(_LT_Apache_11_CLAUSE_3) && INFILE(_LT_Apache_11_CLAUSE_4) && INFILE(_LT_Apache_11_CLAUSE_5)) {
1209  INTERESTING(lDebug ? "BSD(Apache-1.1)" : "Apache-1.1-style");
1210  }
1211  else if(HASTEXT(_LT_Sendmail_823_title, 0)) {
1212  INTERESTING("Sendmail-8.23");
1213  }
1214  else if (!lmem[_mAPACHE10] && !lmem[_mAPACHE11] && INFILE(_LT_BSD_CLAUSE_ATTRIBUTION)) {
1215  INTERESTING("BSD-3-Clause-Attribution");
1216  }
1217  else if (!lmem[_mAPACHE10] && !lmem[_mAPACHE11] && INFILE(_LT_BSD_CLAUSE_4)) {
1218  if (INFILE(_LT_DARPA_COUGAAR_2)) {
1219  INTERESTING("DARPA-Cougaar");
1220  }
1221  else {
1222  INTERESTING("BSD-3-Clause");
1223  }
1224  }
1225  else if (INFILE(_LT_SSLEAY)) {
1226  INTERESTING("SSLeay");
1227  }
1228  else if (INFILE(_LT_TMATE)) {
1229  INTERESTING("TMate");
1230  }
1231  else if (INFILE(_LT_MUP)) {
1232  INTERESTING("Mup");
1233  }
1234  else if (INFILE(_LT_FREE_BSD)) {
1235  INTERESTING("BSD-2-Clause-FreeBSD");
1236  }
1237  else if (INFILE(_LT_BSD_CLAUSE_PATENT)) {
1238  INTERESTING("BSD-2-Clause-Patent");
1239  }
1240  else if (INFILE(_CR_NETBSD)) {
1241  INTERESTING("BSD-2-Clause-NetBSD");
1242  }
1243  else if (INFILE(_LT_MIT_0)) {
1244  lmem[_mMIT] = 1;
1245  INTERESTING("Linux-OpenIB");
1246  }
1247  else if (!lmem[_mAPACHE10] && !lmem[_mAPACHE11]) {
1248  INTERESTING("BSD-2-Clause");
1249  }
1250  }
1251  else if (INFILE(_CR_CRYPTOGAMS)) {
1252  INTERESTING("Cryptogams");
1253  }
1254  else if (INFILE(_LT_BSD_SHORTENED_CLAUSE_0) && INFILE(_LT_BSD_SHORTENED_CLAUSE_1) && INFILE(_LT_BSD_SHORTENED_CLAUSE_2) && INFILE(_LT_BSD_CLAUSE_3)) {
1255  INTERESTING("BSD-4-Clause-Shortened");
1256  }
1257  else if (INFILE(_CR_BSDCAL)) {
1258  INTERESTING(lDebug ? "BSD(1)" : "BSD");
1259  }
1260  else if (HASTEXT(_TEXT_ALTERED_SOURCE, REG_EXTENDED) && HASTEXT(_TEXT_ORIGIN, 0)) {
1261  if (INFILE(_PHR_BZIP2_3)) {
1262  INTERESTING("bzip2-1.0.5");
1263  }
1264  else if (HASTEXT(_PHR_BZIP2_4, REG_EXTENDED)) {
1265  INTERESTING("bzip2-1.0.6");
1266  }
1267  else {
1268  INTERESTING("bzip2");
1269  }
1270  }
1271  else if (mCR_CMU()) {
1272  /* a CMU copyright over BSD clause text */
1273  INTERESTING(lDebug ? "CMU(BSD-ish)" : "BSD-style");
1274  }
1275  else if (INFILE(_LT_MTLL)) {
1276  INTERESTING("MTLL");
1277  }
1278  else if (INFILE(_LT_BSD_CLAUSE_1_DISCLAIMER)) {
1279  INTERESTING("BSD-1-Clause");
1280  }
1281  else if (INFILE(_LT_Spencer_99) && INFILE(_CR_Spencer)) {
1282  INTERESTING("Spencer-99");
1283  }
1284  else if (INFILE(_LT_BRIAN_CLAPPER)) {
1285  INTERESTING("Brian-Clapper");
1286  }
1287  else if (INFILE(_LT_BSD_1988)) {
1288  INTERESTING("BSD-1988");
1289  }
1290  else if (INFILE(_LT_BSD_3_CLAUSE_DEVINE)) {
1291  INTERESTING("BSD-3-Clause-Devine");
1292  }
1293  else if (INFILE(_LT_BSD_3_CLAUSE_FDA)) {
1294  INTERESTING("BSD-3-Clause-FDA");
1295  }
1296  else if (INFILE(_LT_BSD_3_CLAUSE_JTAG)) {
1297  INTERESTING("BSD-3-Clause-jtag");
1298  }
1299  else if (INFILE(_LT_BSD_ATMEL)) {
1300  INTERESTING("BSD-Atmel");
1301  }
1302  else if (INFILE(_LT_BSD_AXIS_NOMOD)) {
1303  INTERESTING("BSD-Axis-without-modification");
1304  }
1305  else if (INFILE(_LT_BSD_AXIS)) {
1306  INTERESTING("BSD-Axis");
1307  }
1308  else if (INFILE(_LT_BSD_INNOSYS)) {
1309  INTERESTING("BSD-InnoSys");
1310  }
1311  else if (INFILE(_LT_BSD_NEW_DERIVATIVE)) {
1312  INTERESTING("BSD-Derivative");
1313  }
1314  else if (INFILE(_LT_BSD_NEW_TCPDUMP)) {
1315  INTERESTING("BSD-3-Clause-tcpdump-variant");
1316  }
1317  else if (INFILE(_LT_BSD_NO_DISCLAIMER_UNMODIFIED)) {
1318  INTERESTING("BSD-2-Clause-no-disclaimer-Unmod");
1319  }
1320  else if (INFILE(_LT_BSD_NO_DISCLAIMER)) {
1321  INTERESTING("BSD-2-Clause-no-disclaimer");
1322  }
1323  else if (INFILE(_LT_BSD_ORIGINAL_UC_1986)) {
1324  INTERESTING("BSD-4.3RENO");
1325  }
1326  else if (INFILE(_LT_BSD_SIMPLIFIED_DARWIN)) {
1327  INTERESTING("BSD-2-Clause-Darwin");
1328  }
1329  else if (INFILE(_LT_BSD_SIMPLIFIED_INTEL)) {
1330  INTERESTING("BSD-Simplified-Intel");
1331  }
1332  else if (INFILE(_LT_BSD_SIMPLIFIED_SOURCE)) {
1333  INTERESTING("BSD-Simplified-source");
1334  }
1335  else if (INFILE(_LT_BSD_SOURCE_CODE)) {
1336  INTERESTING("BSD-Source-Code");
1337  }
1338  else if (INFILE(_LT_BSD_TOP)) {
1339  INTERESTING("BSD-Source-beginning-file");
1340  }
1341  else if (INFILE(_LT_BSLA_NO_ADVERT)) {
1342  INTERESTING("BSLA-no-advertizing");
1343  }
1344  /* NOTE: bsla text is identical to bsd-original-uc-1990; unreachable in this else-if chain */
1345  else if (INFILE(_LT_BSLA)) {
1346  INTERESTING("BSD-4.3TAHOE");
1347  }
1348  else if (INFILE(_LT_FREEBSD_FIRST)) {
1349  INTERESTING("FreeBSD-unmodified-first-lines");
1350  }
1351  else if (INFILE(_LT_HOMEBREWED)) {
1352  INTERESTING("Homebrewed");
1353  }
1354  else if (INFILE(_LT_XPP)) {
1355  INTERESTING("xpp");
1356  }
1357  else if (INFILE(_LT_INTEL_BSD_2_CLAUSE)) {
1358  INTERESTING("Intel-BSD-2-Clause");
1359  }
1360  else if (INFILE(_LT_KALLE_KAUKONEN)) {
1361  INTERESTING("Kalle-Kaukonen");
1362  }
1363  else if (INFILE(_LT_MENTALIS)) {
1364  INTERESTING("Mentalis");
1365  }
1366  else if (INFILE(_LT_PAUL_MACKERRAS_SIMPLIFIED)) {
1367  INTERESTING("Paul-Mackerras-Simplified");
1368  }
1369  else if (INFILE(_LT_PAUL_MACKERRAS)) {
1370  INTERESTING("Mackerras-3-Clause-acknowledgment");
1371  }
1372  else if (INFILE(_LT_SENDMAIL_8_23)) {
1373  INTERESTING("Sendmail-8.23");
1374  }
1375  else if (INFILE(_LT_SVNDIFF)) {
1376  INTERESTING("svndiff");
1377  }
1378  else if (INFILE(_LT_TCP_WRAPPERS)) {
1379  INTERESTING("TCP-wrappers");
1380  }
1381  else if (INFILE(_LT_WINGO)) {
1382  INTERESTING("wingo");
1383  }
1384  else if (!lmem[_fZPL]) {
1385  INTERESTING(lDebug ? "BSD-style(1)" : "BSD-style");
1386  }
1387  }
1388  lmem[_fBSD] = 1;
1389  }
1390  else if (INFILE(_LT_BSD_CLEAR_CLAUSE_0) && INFILE(_LT_BSD_CLAUSE_1) && INFILE(_LT_BSD_CLAUSE_2)) {
1391  INTERESTING("BSD-3-Clause-Clear");
1392  }
1393  else if (INFILE(_PHR_Linux_OpenIB)) {
1394  INTERESTING("Linux-OpenIB");
1395  }
1396  else if (INFILE(_LT_BSD_2)) {
1397  /*
1398  * Python, OSF, SecretLabs, some universities, some vendors, etc., have
1399  * variants here.
1400  */
1401  if (INFILE(_CR_PYTHON) || INFILE(_TITLE_PYTHON)) {
1402  cp = PYTHVERS();
1403  INTERESTING(lDebug ? "Python(3)" : cp);
1404  lmem[_mPYTHON] = 1;
1405  }
1406  else if (INFILE(_CR_OSF)) {
1407  INTERESTING(lDebug ? "OSF(1)" : "OSF");
1408  lmem[_mOSF] = 1;
1409  }
1410  else if (INFILE(_CR_UI)) {
1411  INTERESTING(lDebug ? "UI(1)" : "Unix-Intl");
1412  }
1413  else if (INFILE(_CR_XOPEN)) {
1414  INTERESTING(lDebug ? "XOpen(1)" : "X-Open");
1415  lmem[_mXOPEN] = 1;
1416  }
1417  else if (INFILE(_PHR_HISTORICAL)) {
1418  INTERESTING("HPND");
1419  }
1420  else if (INFILE(_LT_CMU_7)) {
1421  if (INFILE(_CR_CMU_1) || INFILE(_CR_CMU_2) || INFILE(_CR_BSDCAL)) {
1422  INTERESTING("MIT-CMU");
1423  }
1424  else {
1425  INTERESTING("MIT-CMU-style");
1426  }
1427  lmem[_mCMU] = 1;
1428  }
1429  else if (INFILE(_CR_BSDCAL)) {
1430  INTERESTING(lDebug ? "BSD(2)" : "BSD");
1431  }
1432  else if (INFILE(_LT_NTP)) {
1433  INTERESTING("NTP");
1434  }
1435  else if (INFILE(_LT_WORDNET))
1436  {
1437  INTERESTING("WordNet-3.0");
1438  lmem[_mMIT] = 1;
1439  }
1440  else if (INFILE(_LT_HPND_1) && INFILE(_LT_HPND_2)) {
1441  INTERESTING("HPND");
1442  lmem[_mMIT] = 1;
1443  }
1444  else if (INFILE(_LT_MIT_1995)) {
1445  INTERESTING("MIT-1995");
1446  }
1447  else if (INFILE(_LT_NOT_ADVERTISING)) {
1448  INTERESTING(lDebug ? "BSD-style(2)" : "BSD-style");
1449  }
1450  else if (INFILE(_PHR_NO_WARRANTY_12)) {
1451  INTERESTING(lDebug ? "ISC(BSD-style)" : "ISC-style");
1452  }
1453  else {
1454  INTERESTING(lDebug ? "BSD-style(2)-MIT" : "MIT-style");
1455  }
1456  lmem[_fBSD] = 1;
1457  }
1458  else if (INFILE(_LT_BSD_3) && NOT_INFILE(_TITLE_OPENLDAP)) {
1459  if (INFILE(_LT_AMPAS)) {
1460  INTERESTING("AMPAS");
1461  }
1462  else if (INFILE(_CR_BSDCAL)) {
1463  INTERESTING(lDebug ? "BSD(3)" : "BSD");
1464  }
1465  else if (INFILE(_TITLE_OZPLB_10)) {
1466  INTERESTING("OZPLB-1.0");
1467  }
1468  /*
1469  * JPNIC
1470  */
1471  else if (HASTEXT(_TEXT_JPNIC, 0) && INFILE(_LT_JPNIC)) {
1472  INTERESTING("JPNIC");
1473  }
1474  else if (INFILE(_LT_3COM_MICROCODE)) {
1475  INTERESTING("3Com-Microcode");
1476  }
1477  else if (INFILE(_LT_AGERE_BSD)) {
1478  INTERESTING("Agere-BSD");
1479  }
1480  else if (INFILE(_LT_APACHE_DUE_CREDIT)) {
1481  INTERESTING("Apache-Due-Credit-Variant");
1482  }
1483  else if (INFILE(_LT_BROCADE_FIRMWARE)) {
1484  INTERESTING("Brocade-Firmware");
1485  }
1486  else if (INFILE(_LT_CHELSIO_LINUX_FIRMWARE)) {
1487  INTERESTING("Chelsio-Linux-Firmware");
1488  }
1489  else if (INFILE(_LT_ELLIS_LAB)) {
1490  INTERESTING("EllisLab");
1491  }
1492  else if (INFILE(_LT_FFTPACK_2004)) {
1493  INTERESTING("NCL");
1494  }
1495  else if (INFILE(_LT_GREG_ROELOFS)) {
1496  INTERESTING("Greg-Roelofs");
1497  }
1498  else if (INFILE(_LT_INFO_ZIP_2001_01)) {
1499  INTERESTING("Info-Zip-2001-01");
1500  }
1501  else if (INFILE(_LT_JAMON)) {
1502  INTERESTING("JAMon");
1503  }
1504  else if (INFILE(_LT_JDBM_1_00)) {
1505  INTERESTING("JDBM-v1.00");
1506  }
1507  else if (INFILE(_LT_NICTA_1_0)) {
1508  INTERESTING("NICTA-1.0");
1509  }
1510  else if (INFILE(_LT_OKL)) {
1511  INTERESTING("OKL");
1512  }
1513  else if (INFILE(_LT_OPENPBS_2_3)) {
1514  INTERESTING("OpenPBS-2.3");
1515  }
1516  else if (INFILE(_LT_QLOGIC_FIRMWARE)) {
1517  INTERESTING("QLogic-Firmware");
1518  }
1519  else if (INFILE(_LT_QLOGIC_MICROCODE)) {
1520  INTERESTING("QLogic-Microcode");
1521  }
1522  else if (INFILE(_LT_REALM_PLATFORM_EXTENSION_2017)) {
1523  INTERESTING("Realm-Platform-Extensions-2017");
1524  }
1525  else if (NOT_INFILE(_CR_XFREE86) && NOT_INFILE(_TITLE_NCSA) && NOT_INFILE(_TITLE_INNERNET200)) {
1526  INTERESTING(lDebug ? "BSD-style(3)" : "BSD-style");
1527  }
1528  lmem[_fBSD] = 1;
1529  }
1530  else if (INFILE(_LT_BSD_4)) {
1531  if (INFILE(_CR_BSDCAL)) {
1532  INTERESTING(lDebug ? "BSD(4)" : "BSD");
1533  }
1534  else {
1535  INTERESTING(lDebug ? "BSD-style(4)" : "BSD-style");
1536  }
1537  lmem[_fBSD] = 1;
1538  }
1539  /*
1540  * FIX-ME: this license text explicitly mentions "for no-profit", and as
1541  * such it should list it in the license-summary, yes?
1542  */
1543  else if (INFILE(_LT_BSD_5)) {
1544  if (!lmem[_mPYTHON] && INFILE(_CR_PYTHON)) {
1545  INTERESTING(lDebug ? "Python(2)" : "Python");
1546  lmem[_mPYTHON] = 1;
1547  }
1548  else if (INFILE(_CR_USL_EUR)) {
1549  INTERESTING(lDebug ? "USLE(1)" : "USL-Europe");
1550  }
1551  else if (INFILE(_CR_BSDCAL)) {
1552  INTERESTING(lDebug ? "BSD(5)" : "BSD");
1553  }
1554  else {
1555  INTERESTING(lDebug ? "BSD-style(5)" : "BSD-style");
1556  }
1557  lmem[_fBSD] = 1;
1558  }
1559  else if (INFILE(_LT_BSD_6)) {
1560  if (INFILE(_CR_BSDCAL)) {
1561  INTERESTING(lDebug ? "BSD(6)" : "BSD");
1562  }
1563  else if (INFILE(_LT_MIT_MODERN_VARIANT)) {
1564  INTERESTING("MIT-Modern-Variant");
1565  }
1566  else {
1567  INTERESTING(lDebug ? "BSD-style(6)" : "BSD-style");
1568  }
1569  lmem[_fBSD] = 1;
1570  }
1571  else if (INFILE(_LT_BSD_7)) {
1572  if (HASTEXT(_LT_MAKEINDEX_1, 0) && HASTEXT(_LT_MAKEINDEX_2, 0)) {
1573  INTERESTING("MakeIndex");
1574  }
1575  else if (INFILE(_CR_BSDCAL)) {
1576  INTERESTING(lDebug ? "BSD(7)" : "BSD");
1577  }
1578  else {
1579  INTERESTING(lDebug ? "BSD-style(7)" : "BSD-style");
1580  }
1581  lmem[_fBSD] = 1;
1582  }
1583  else if (INFILE(_LT_BSD_8)) {
1584  if (INFILE(_CR_BSDCAL)) {
1585  INTERESTING(lDebug ? "BSD(8)" : "BSD");
1586  }
1587  else {
1588  INTERESTING(lDebug ? "BSD-style(8)" : "BSD-style");
1589  }
1590  lmem[_fBSD] = 1;
1591  }
1592  else if (INFILE(_LT_BSD_9)) {
1593  if (INFILE(_CR_BSDCAL)) {
1594  INTERESTING(lDebug ? "BSD(9)" : "BSD");
1595  }
1596  else {
1597  INTERESTING(lDebug ? "BSD-style(8)" : "BSD-style");
1598  }
1599  lmem[_fBSD] = 1;
1600  }
1601  else if (INFILE(_LT_BSD_10)) {
1602  if (INFILE(_CR_BSDCAL)) {
1603  INTERESTING(lDebug ? "BSD(10)" : "BSD");
1604  }
1605  else {
1606  INTERESTING(lDebug ? "BSD-style(9)" : "BSD-style");
1607  }
1608  lmem[_fBSD] = 1;
1609  }
1610  else if (INFILE(_LT_BSD_11)) {
1611  if (INFILE(_CR_BSDCAL)) {
1612  INTERESTING(lDebug ? "BSD(11)" : "BSD");
1613  }
1614  else if (INFILE(_LT_WHISTLE)) {
1615  INTERESTING("Whistle-Communications");
1616  }
1617  else {
1618  INTERESTING(lDebug ? "BSD-style(10)" : "BSD-style");
1619  }
1620  lmem[_fBSD] = 1;
1621  }
1622  else if (INFILE(_LT_BSD_12)) {
1623  if (INFILE(_CR_BSDCAL)) {
1624  INTERESTING(lDebug ? "BSD(12)" : "BSD");
1625  }
1626  else if (INFILE(_LT_SOFTFLOAT_2_0)) {
1627  INTERESTING("SoftFloat-Legal-Notice-2.0");
1628  }
1629  else {
1630  INTERESTING(lDebug ? "BSD-style(11)" : "BSD-style");
1631  }
1632  lmem[_fBSD] = 1;
1633  }
1634  else if (INFILE(_LT_BSD_13)) {
1635  if (INFILE(_CR_BSDCAL)) {
1636  INTERESTING(lDebug ? "BSD(13)" : "BSD");
1637  }
1638  else {
1639  INTERESTING(lDebug ? "BSD-style(12)" : "BSD-style");
1640  }
1641  lmem[_fBSD] = 1;
1642  }
1643  else if (INFILE(_LT_BSD_NONC)) {
1644  if (INFILE(_CR_BSDCAL)) {
1645  INTERESTING(lDebug ? "BSD(NonC)" : "BSD.non-commercial");
1646  }
1647  else {
1648  INTERESTING(lDebug ? "BSD-style(NonC)" : "Non-commercial");
1649  }
1650  lmem[_fBSD] = 1;
1651  }
1652  else if (INFILE(_SPDX_BSD_3_Clause_Clear)) {
1653  INTERESTING("BSD-3-Clause-Clear");
1654  }
1655  else if (INFILE(_SPDX_BSD_3_Clause_No_Nuclear_License_2014)) {
1656  INTERESTING("BSD-3-Clause-No-Nuclear-License-2014");
1657  }
1658  else if (INFILE(_SPDX_BSD_3_Clause_No_Nuclear_License)) {
1659  INTERESTING("BSD-3-Clause-No-Nuclear-License");
1660  }
1661  else if (INFILE(_SPDX_BSD_3_Clause_No_Nuclear_Warranty)) {
1662  INTERESTING("BSD-3-Clause-No-Nuclear-Warranty");
1663  }
1664  else if (INFILE(_SPDX_BSD_3_Clause_Attribution)) {
1665  INTERESTING("BSD-3-Clause-Attribution");
1666  }
1667  else if (INFILE(_SPDX_BSD_3_Clause_LBNL)) {
1668  INTERESTING("BSD-3-Clause-LBNL");
1669  }
1670  else if (INFILE(_SPDX_BSD_3_Clause_Open_MPI)) {
1671  INTERESTING("BSD-3-Clause-Open-MPI");
1672  }
1673  else if (INFILE(_LT_BSD_3_CLAUSE_NO_MILITARY_LICENSE)) {
1674  INTERESTING("BSD-3-Clause-No-Military-License");
1675  }
1676  else if (INFILE(_LT_BSD_3_CLAUSE_NO_NUCLEAR_WARRANTY)) {
1677  INTERESTING("BSD-3-Clause-No-Nuclear-Warranty");
1678  }
1679  else if (INFILE(_LT_NET_SNMP)) {
1680  INTERESTING("Net-SNMP");
1681  }
1682  else if (INFILE(_LT_BSD_3_CLAUSE_NO_NUCLEAR_LICENSE_2014)) {
1683  INTERESTING("BSD-3-Clause-No-Nuclear-License-2014");
1684  }
1685  else if (INFILE(_LT_BSD_3_CLAUSE_NO_NUCLEAR_LICENSE)) {
1686  INTERESTING("BSD-3-Clause-No-Nuclear-License");
1687  }
1688  else if (INFILE(_SPDX_BSD_3_Clause)) {
1689  INTERESTING("BSD-3-Clause");
1690  }
1691  else if (INFILE(_PHR_BSD_3_CLAUSE_1) || INFILE(_PHR_BSD_3_CLAUSE_2) || INFILE(_PHR_BSD_3_CLAUSE_3) || INFILE(_PHR_BSD_3_CLAUSE_4)) {
1692  INTERESTING(lDebug ? "BSD(phr1/2)" : "BSD-3-Clause");
1693  }
1694  else if (INFILE(_LT_BSD_2_CLAUSE_NETBSD)) {
1695  INTERESTING("BSD-2-Clause-NetBSD");
1696  }
1697  else if (INFILE(_SPDX_BSD_2_Clause_FreeBSD)) {
1698  INTERESTING("BSD-2-Clause-FreeBSD");
1699  }
1700  else if (INFILE(_SPDX_BSD_2_Clause_NetBSD)) {
1701  INTERESTING("BSD-2-Clause-NetBSD");
1702  }
1703  else if (INFILE(_SPDX_BSD_2_Clause_Patent)) {
1704  INTERESTING("BSD-2-Clause-Patent");
1705  }
1706  else if (INFILE(_SPDX_BSD_2_Clause_Views)) {
1707  INTERESTING("BSD-2-Clause-Views");
1708  }
1709  else if (INFILE(_SPDX_BSD_2_Clause_1)) {
1710  INTERESTING("BSD-2-Clause");
1711  }
1712  else if (INFILE(_SPDX_BSD_2_Clause_2)) {
1713  INTERESTING("BSD-2-Clause");
1714  }
1715  else if (INFILE(_PHR_BSD_2_CLAUSE_1)
1716  || INFILE(_PHR_BSD_2_CLAUSE_2)
1717  || INFILE(_PHR_BSD_2_CLAUSE_3)
1718  || INFILE(_PHR_BSD_2_CLAUSE_4)
1719  || INFILE(_PHR_BSD_2_CLAUSE_5)
1720  || INFILE(_PHR_BSD_2_CLAUSE_6)
1721  || INFILE(_PHR_BSD_2_CLAUSE_7)) {
1722  INTERESTING(lDebug ? "BSD(phr1/2/3/4/5/6)" : "BSD-2-Clause");
1723  }
1724  else if (INFILE(_SPDX_BSD_4_Clause_UC)) {
1725  INTERESTING("BSD-4-Clause-UC");
1726  }
1727  else if (INFILE(_SPDX_BSD_4_Clause)) {
1728  INTERESTING("BSD-4-Clause");
1729  }
1730  else if (INFILE(_PHR_BSD_4_CLAUSE_1)) {
1731  INTERESTING(lDebug ? "BSD-4-Clause(phr1)" : "BSD-4-Clause");
1732  }
1733  else if (INFILE(_PHR_BSD_CLEAR_1)) {
1734  INTERESTING(lDebug ? "BSD-Clear(phr1)" : "BSD-3-Clause-Clear");
1735  }
1736  else if (INFILE(_LT_BSD_NUMPY_TERMS)) {
1737  INTERESTING("BSD-3-Clause");
1738  }
1739  else if (INFILE(_PHR_BSD_3_CLAUSE_LBNL)) {
1740  INTERESTING("BSD-3-Clause-LBNL");
1741  }
1742  else if (INFILE(_SPDX_BSD_Protection)) {
1743  INTERESTING("BSD-Protection");
1744  }
1745  else if (INFILE(_SPDX_BSD_Source_Code)) {
1746  INTERESTING("BSD-Source-Code");
1747  }
1748  else if (INFILE(_SPDX_BSD_1_Clause)) {
1749  INTERESTING("BSD-1-Clause");
1750  }
1751  else if (INFILE(_PHR_0BSD)) {
1752  INTERESTING("0BSD");
1753  }
1754  else if (INFILE(_LT_BSDref1)) {
1755  INTERESTING(lDebug ? "BSD(ref1)" : "BSD");
1756  }
1757  else if (INFILE(_LT_BSDref2)) {
1758  INTERESTING(lDebug ? "BSD(ref2)" : "BSD");
1759  }
1760  else if (INFILE(_LT_BSDref3)) {
1761  INTERESTING(lDebug ? "BSD(ref3)" : "BSD");
1762  }
1763  else if (INFILE(_LT_BSDref4)) {
1764  INTERESTING(lDebug ? "BSD(ref4)" : "BSD");
1765  }
1766  else if (INFILE(_LT_BSDref5)) {
1767  INTERESTING(lDebug ? "BSD(ref5)" : "BSD");
1768  }
1769  else if (INFILE(_LT_BSDref6)) {
1770  INTERESTING(lDebug ? "BSD(ref6)" : "BSD");
1771  }
1772  else if (INFILE(_LT_BSDref7)) {
1773  INTERESTING(lDebug ? "BSD(ref7)" : "BSD");
1774  }
1775  else if (INFILE(_LT_BSDref8)) {
1776  INTERESTING(lDebug ? "BSD(ref8)" : "BSD");
1777  }
1778  else if (INFILE(_LT_BSDref9)) {
1779  INTERESTING(lDebug ? "BSD(ref9)" : "BSD");
1780  }
1781  else if (INFILE(_LT_BSDref10)) {
1782  INTERESTING(lDebug ? "BSD(ref10)" : "BSD");
1783  }
1784  else if (INFILE(_LT_BSDref11)) {
1785  INTERESTING(lDebug ? "BSD(ref11)" : "BSD");
1786  }
1787  else if (INFILE(_LT_BSDref12) || HASTEXT(_LT_BSDref13, REG_EXTENDED)) {
1788  INTERESTING(lDebug ? "BSD(ref12)" : "BSD-3-Clause");
1789  }
1790  else if (URL_INFILE(_URL_BSD_1) || URL_INFILE(_URL_BSD_2)) {
1791  INTERESTING(lDebug ? "BSD(url)" : "BSD");
1792  lmem[_fBSD] = 1;
1793  }
1794  else if (INFILE(_LT_BSDref14)) {
1795  INTERESTING(lDebug ? "BSD(ref14)" : "BSD");
1796  lmem[_fBSD] = 1;
1797  }
1798  else if (INFILE(_LT_BSDref15)) {
1799  INTERESTING(lDebug ? "BSD(ref15)" : "BSD");
1800  lmem[_fBSD] = 1;
1801  }
1802  else if (INFILE(_LT_BSDSTYLEref1)) {
1803  INTERESTING(lDebug ? "BSD-st(1)" : "BSD-style");
1804  lmem[_fBSD] = 1;
1805  }
1806  else if (INFILE(_LT_BSDSTYLEref2)) {
1807  INTERESTING(lDebug ? "BSD-st(2)" : "BSD-style");
1808  lmem[_fBSD] = 1;
1809  }
1810  else if (INFILE(_LT_BSDSTYLEref4)) {
1811  INTERESTING(lDebug ? "BSD-st(4)" : "BSD-style");
1812  lmem[_fBSD] = 1;
1813  }
1814  else if (INFILE(_LT_BSDSTYLEref3)) {
1815  INTERESTING(lDebug ? "BSD-st(3)" : "BSD-style");
1816  lmem[_fBSD] = 1;
1817  }
1818  else if (INFILE(_LT_BSD_HTMLAREA_1) || INFILE(_LT_BSD_HTMLAREA_2)) {
1819  INTERESTING(lDebug ? "BSD-htmlArea" : "BSD-3-Clause");
1820  lmem[_fBSD] = 1;
1821  }
1822  else if (INFILE(_FILE_BSD1) || INFILE(_FILE_BSD2)) {
1823  INTERESTING(lDebug ? "BSD(deb)" : "BSD");
1824  }
1825  else if (INFILE(_CR_BSD_PERSONAL)) {
1826  INTERESTING("BSD");
1827  }
1829  /*
1830  * Aptana public license (based on MPL)
1831  */
1832  if (INFILE(_LT_APTANA)) {
1833  if (INFILE(_TITLE_APTANA_V10)) {
1834  INTERESTING("Aptana-1.0");
1835  }
1836  else {
1837  INTERESTING("Aptana");
1838  }
1839  lmem[_mMPL] = 1;
1840  lmem[_mAPTANA] = 1;
1841  }
1842  /*
1843  * PHP variants
1844  */
1845  if (!lmem[_mPHP] && (INFILE(_LT_PHP) || INFILE(_TITLE_PHP301)
1846  || INFILE(_TITLE_PHP30))) {
1847  if (INFILE(_TITLE_PHP301)) {
1848  INTERESTING(lDebug ? "PHP(v3.01#2)" : "PHP-3.01");
1849  }
1850  else if (INFILE(_TITLE_PHP30)) {
1851  INTERESTING(lDebug ? "PHP(v3.0#2)" : "PHP-3.0");
1852  }
1853  else if (INFILE(_TITLE_PHP202)) {
1854  INTERESTING(lDebug ? "PHP(v2.02#3)" : "PHP-2.02");
1855  }
1856  else if (INFILE(_CR_PHP)) {
1857  INTERESTING(lDebug ? "PHP(1)" : "PHP");
1858  }
1859  else {
1860  INTERESTING("PHP-style");
1861  }
1862  lmem[_mPHP] = 1;
1863  }
1864  else if (!lmem[_mPHP] && INFILE(_LT_PHP_V301_1)) {
1865  INTERESTING("PHP-3.01");
1866  lmem[_mPHP] = 1;
1867  }
1868  else if (!lmem[_mPHP] && INFILE(_LT_PHP_V30_1)) {
1869  INTERESTING("PHP-3.0");
1870  lmem[_mPHP] = 1;
1871  }
1872  else if (!lmem[_mPHP] && INFILE(_LT_PHP_V30_2)) {
1873  INTERESTING("PHP-3.0");
1874  lmem[_mPHP] = 1;
1875  }
1876  else if (!lmem[_mPHP] && INFILE(_LT_PHPref1)) {
1877  if (INFILE(_PHR_PHP_V301)) {
1878  INTERESTING(lDebug ? "PHP(ref-3.01)" : "PHP-3.01");
1879  }
1880  else if (INFILE(_PHR_PHP_V20)) {
1881  INTERESTING(lDebug ? "PHP(ref-2.0)" : "PHP-2.0");
1882  }
1883  else {
1884  INTERESTING(lDebug ? "PHP(ref)" : "PHP");
1885  }
1886  lmem[_mPHP] = 1;
1887  }
1888  else if (!lmem[_mPHP] && URL_INFILE(_URL_PHP)) {
1889  INTERESTING(lDebug ? "PHP(url)" : "PHP");
1890  lmem[_mPHP] = 1;
1891  }
1892  else if (INFILE(_LT_PHP_ref)) {
1893  INTERESTING(lDebug ? "PHP(2)" : "PHP");
1894  lmem[_mPHP] = 1;
1895  }
1897  /*
1898  * Licenses between here and all the GPL/LGPL/GFDL/FSF checks (below) MUST
1899  * be tested PRIOR to checking GPL/FSF and friends
1900  */
1901  if ((INFILE(_CR_EASYSW) || INFILE(_TITLE_CUPS)) && INFILE(_LT_CUPS)) {
1902  if (INFILE(_LT_CUPS_COMMERCIAL)) {
1903  INTERESTING("CUPS-EULA");
1904  }
1905  else {
1906  INTERESTING("CUPS");
1907  }
1908  lmem[_mCUPS] = 1;
1909  }
1911  if (INFILE(_LT_HACKTIVISMO)) {
1912  INTERESTING("Hacktivismo");
1913  lmem[_mGPL] = 1; /* don't look for GPL references */
1914  }
1916  if (INFILE(_LT_NESSUS) && INFILE(_TITLE_NESSUS)) {
1917  INTERESTING("NESSUS-EULA");
1918  lmem[_mLGPL] = 1; /* don't look for LGPL references */
1919  lmem[_mGPL] = 1;
1920  }
1922  /*
1923  * Oracle
1924  */
1925  if (INFILE(_LT_ORACLE_PROTO) && INFILE(_TITLE_ORACLE_PROTO)) {
1926  INTERESTING(lDebug ? "Oracle(proto)" : "Oracle-EULA");
1927  lmem[_mGPL] = 1;
1928  }
1929  else if (INFILE(_LT_ORACLE_DEVEL) && INFILE(_TITLE_ORACLE_DEVEL)) {
1930  INTERESTING(lDebug ? "Oracle(dev)" : "Oracle-Dev");
1931  }
1932  else if (URL_INFILE(_URL_ORACLE_BERKELEY_DB)) {
1933  INTERESTING(lDebug ? "URL_ORACLE_BERKELEY_DB" : "Oracle-Berkeley-DB");
1934  }
1935  /* "berkeley" alone falls through to _MIN_BSD */
1936  else if (INFILE(_TITLE_BERKELEY_DB_PRODUCT) || INFILE(_LT_BERKELEY_DB_REF)) {
1937  INTERESTING("Oracle-Berkeley-DB");
1938  }
1940  /*
1941  * DB License
1942  */
1943  if (INFILE(_LT_DATABRICKS_RESTRICTED)) {
1944  INTERESTING("Databricks-DB-License");
1945  }
1947  /*
1948  * CeCILL
1949  * According to digikam-0.9.4/digikam/libs/greycstoration/CImg.h:
1950  * The CeCILL-C (C_V1) license is close to the GNU LGPL
1951  * The CeCILL (V2.0) license is compatible with the GNU GPL
1952  */
1953  if (INFILE(_TITLE_CECILL_V11_2) || INFILE(_SPDX_CECILL_11)) {
1954  INTERESTING(lDebug ? "CeCILL_v1.1(#2)" : "CECILL-1.1");
1955  lmem[_mGPL] = lmem[_mLGPL] = 1;
1956  }
1957  else if (INFILE(_TITLE_CECILL_B) || INFILE(_TITLE_CECILL_B1) || INFILE(_SPDX_CECILL_B)) {
1958  INTERESTING("CECILL-B");
1959  }
1960  else if (INFILE(_TITLE_CECILL_C) || INFILE(_TITLE_CECILL_C1) || INFILE(_SPDX_CECILL_C)) {
1961  INTERESTING("CECILL-C");
1962  }
1963  else if (INFILE(_LT_CECILL_DUALref)) {
1964  INTERESTING("CECILL-dual");
1965  lmem[_mGPL] = lmem[_mLGPL] = 1;
1966  }
1967  else if (INFILE(_SPDX_CECILL_10)) {
1968  INTERESTING("CECILL-1.0");
1969  }
1970  else if (INFILE(_SPDX_CECILL_21)) {
1971  INTERESTING("CECILL-2.1");
1972  }
1973  else if (INFILE(_LT_CECILL_2_ref) || INFILE(_SPDX_CECILL_20)) {
1974  INTERESTING("CECILL-2.0");
1975  }
1976  else if (INFILE(_LT_CECILL_ref2)) {
1977  INTERESTING("CECILL");
1978  }
1979  else if (INFILE(_LT_CECILL_B_ref)) {
1980  INTERESTING("CECILL-B");
1981  }
1982  else if (INFILE(_LT_CECILL_ref) || INFILE(_LT_CECILL_ref1)) {
1983  if (URL_INFILE(_URL_CECILL_C_V11)) {
1984  INTERESTING(lDebug ? "CeCILL_v1.1(url)" : "CECILL-1.1");
1985  }
1986  else if (URL_INFILE(_URL_CECILL_C_V1)) {
1987  INTERESTING(lDebug ? "CeCILL_v1(url)" : "CECILL-1.0");
1988  }
1989  else if (URL_INFILE(_URL_CECILL_V2)) {
1990  INTERESTING(lDebug ? "CeCILL_v2(url)" : "CECILL-2.0");
1991  }
1992  else if (URL_INFILE(_URL_CECILL)) {
1993  INTERESTING(lDebug ? "CeCILL(url)" : "CECILL");
1994  }
1995  else {
1996  INTERESTING(lDebug ? "CeCILL(#3)" : "CECILL");
1997  }
1998  lmem[_mGPL] = 1;
1999  }
2000  else if (INFILE(_LT_CECILL_1)) {
2001  if (INFILE(_TITLE_CECILL_V10)) {
2002  INTERESTING(lDebug ? "CeCILL_v1.0(#1)" : "CECILL-1.0");
2003  }
2004  else if (INFILE(_TITLE_CECILL_V20)) {
2005  INTERESTING(lDebug ? "CeCILL_v2.0(#1)" : "CECILL-2.0");
2006  }
2007  lmem[_mGPL] = 1;
2008  }
2009  else if (INFILE(_LT_CECILL_2) || INFILE(_TITLE_CECILL1) || INFILE(_TITLE_CECILL2)) {
2010  if (INFILE(_TITLE_CECILL_V10)) {
2011  INTERESTING(lDebug ? "CeCILL_v1.0(#2)" : "CECILL-1.0");
2012  }
2013  else if (INFILE(_TITLE_CECILL_V11)) {
2014  INTERESTING(lDebug ? "CeCILL_v1.1(#1)" : "CECILL-1.1");
2015  }
2016  else if (INFILE(_TITLE_CECILL_V20)) {
2017  INTERESTING(lDebug ? "CeCILL_v2.0(#2)" : "CECILL-2.0");
2018  }
2019  else {
2020  INTERESTING(lDebug ? "CeCILL(#2)" : "CECILL");
2021  }
2022  lmem[_mGPL] = 1;
2023  }
2025  /*
2026  * Monash University
2027  */
2028  if (INFILE(_CR_UMONASH) && INFILE(_LT_UMONASH)) {
2029  INTERESTING("U-Monash");
2030  if (INFILE(_PHR_GPL_NO_MORE)) {
2031  lmem[_mGPL] = 1;
2032  }
2033  }
2035  /* Open Font License */
2036  if (INFILE(_LT_OPEN_FONT_V10) || INFILE(_LT_OPEN_FONT_V10_1))
2037  {
2038  INTERESTING("OFL-1.0");
2039  lmem[_fOFL] = 1;
2040  }
2041  else if (INFILE(_SPDX_OFL_10_no_RFN)) {
2042  INTERESTING("OFL-1.0-no-RFN");
2043  }
2044  else if (INFILE(_SPDX_OFL_10_RFN)) {
2045  INTERESTING("OFL-1.0-RFN");
2046  }
2047  else if (INFILE(_SPDX_OFL_10)) {
2048  INTERESTING("OFL-1.0");
2049  }
2050  else if (INFILE(_PHR_OPEN_FONT_V10_1) || INFILE(_PHR_OPEN_FONT_V10_2))
2051  {
2052  INTERESTING("OFL-1.0");
2053  lmem[_fOFL] = 1;
2054  }
2055  else if (INFILE(_LT_OPEN_FONT_V11) || INFILE(_LT_OPEN_FONT_V11_1))
2056  {
2057  INTERESTING("OFL-1.1");
2058  lmem[_fOFL] = 1;
2059  }
2060  else if (INFILE(_SPDX_OFL_11_no_RFN)) {
2061  INTERESTING("OFL-1.1-no-RFN");
2062  }
2063  else if (INFILE(_SPDX_OFL_11_RFN)) {
2064  INTERESTING("OFL-1.1-RFN");
2065  }
2066  else if (INFILE(_SPDX_OFL_11)) {
2067  INTERESTING("OFL-1.1");
2068  }
2069  else if (INFILE(_PHR_OPEN_FONT_V11_1) || INFILE(_PHR_OPEN_FONT_V11_2))
2070  {
2071  INTERESTING("OFL-1.1");
2072  lmem[_fOFL] = 1;
2073  }
2074  else if (INFILE(_TITLE_OFL_11) || URL_INFILE(_URL_OFL))
2075  {
2076  INTERESTING("OFL-1.1");
2077  lmem[_fOFL] = 1;
2078  }
2080  /* Simple Public License 2.0 */
2081  if (INFILE(_TITLE_SimPL_V2)) {
2082  INTERESTING("SimPL-2.0");
2083  lmem[_mGPL] = 1;
2084  }
2086  /* Leptonica license */
2087  if (INFILE(_TITLE_LEPTONICA) && INFILE(_LT_GNU_3)) {
2088  INTERESTING("Leptonica");
2089  }
2091  if (!lmem[_mGPL]) {
2092  if (INFILE(_LT_SPLUNK_SLA)) {
2093  INTERESTING("Splunk");
2094  }
2095  else if (INFILE(_LT_SLF4J_2008)) {
2096  INTERESTING("SLF4J-2008");
2097  }
2098  else if (INFILE(_LT_SHAVLIK_EULA)) {
2099  INTERESTING("Shavlik-Technologies");
2100  }
2101  else if (INFILE(_LT_OPENSSL_EXCEPTION_LGPL)) {
2102  INTERESTING("LGPL-with-OpenSSL-exception");
2103  lmem[_mGPL] = 1;
2104  }
2105  else if (INFILE(_LT_NPSL_EXCEPTION_0_93)) {
2106  INTERESTING("Nmap-NPSL-Exception-0.93");
2107  lmem[_mGPL] = 1;
2108  }
2109  else if (INFILE(_LT_NVIDIA_CUDA_SUPPLEMENT_2020)) {
2110  INTERESTING("NVIDIA-CUDA-Supplement-2020");
2111  }
2112  else if (INFILE(_LT_NERO_EULA)) {
2113  INTERESTING("Nero");
2114  }
2115  else if (INFILE(_LT_MINI_XML)) {
2116  INTERESTING("LGPL-2.0-with-Mini-XML-exception");
2117  lmem[_mGPL] = 1;
2118  }
2119  else if (INFILE(_LT_MEDIAINFO_LIB)) {
2120  INTERESTING("MediaInfoLib");
2121  }
2122  else if (INFILE(_LT_LZMA_SDK_9_22)) {
2123  INTERESTING("LZMA-SDK-9.22");
2124  lmem[_mGPL] = 1;
2125  }
2126  else if (INFILE(_LT_LIBCAP)) {
2127  INTERESTING("libcap");
2128  lmem[_mGPL] = 1;
2129  }
2130  else if (INFILE(_LT_LGPL_3_0_CYGWIN)) {
2131  INTERESTING("LGPL-3.0-or-later-with-Cygwin-exception");
2132  lmem[_mGPL] = 1;
2133  }
2134  else if (INFILE(_LT_GPL_3_0_OPENBD)) {
2135  INTERESTING("GPL-3.0h-with-OpenBD-exception");
2136  lmem[_mGPL] = 1;
2137  }
2138  else if (INFILE(_LT_GPL_2_0_ISO_CPP)) {
2139  INTERESTING("GPL-2.0-with-ISO-C-Library-exception");
2140  lmem[_mGPL] = 1;
2141  }
2142  else if (INFILE(_LT_GPL_2_0_ICE)) {
2143  INTERESTING("GPL-2.0-with-Ice-exception");
2144  lmem[_mGPL] = 1;
2145  }
2146  else if (INFILE(_LT_DUAL_COMMERCIAL_GPL)) {
2147  INTERESTING("Dual-Commercial-GPL");
2148  lmem[_mGPL] = 1;
2149  }
2150  else if (INFILE(_LT_COSLI)) {
2151  INTERESTING("COSLi");
2152  }
2153  else if (INFILE(_LT_CC_GPL_2_0_PT)) {
2154  INTERESTING("CC-GPL-2.0-PT");
2155  lmem[_mGPL] = 1;
2156  }
2157  else if (INFILE(_LT_BACULA_EXCEPTION)) {
2158  INTERESTING("Bacula-exception");
2159  lmem[_mGPL] = 1;
2160  }
2161  else if (INFILE(_LT_ADA_LINKING_EXCEPTION)) {
2162  INTERESTING("GNAT-exception");
2163  lmem[_mGPL] = 1;
2164  }
2165  else if (INFILE(_LT_3DSLICER_1_0)) {
2166  INTERESTING("3D-Slicer-1.0");
2167  }
2168  else if (INFILE(_LT_AC3FILTER)) {
2169  INTERESTING("AC3Filter");
2170  lmem[_mGPL] = 1;
2171  }
2172  else if (INFILE(_LT_ACRONAME_BDK)) {
2173  INTERESTING("Acroname-BDK");
2174  }
2175  else if (INFILE(_LT_ACTIVESTATE_KOMODO_EDIT)) {
2176  INTERESTING("ActiveState-Komodo-Edit");
2177  }
2178  else if (INFILE(_LT_ADI_BSD)) {
2179  INTERESTING("ADI-BSD");
2180  }
2181  else if (INFILE(_LT_ADOBE_INDESIGN_SDK)) {
2182  INTERESTING("Adobe-InDesign-SDK");
2183  }
2184  else if (INFILE(_LT_AGPL_3_0_BACULA)) {
2185  INTERESTING("AGPL-3.0-with-Bacula-exception");
2186  lmem[_mGPL] = 1;
2187  }
2188  else if (INFILE(_LT_ALFRESCO_EXCEPTION_0_5)) {
2189  INTERESTING("Alfresco-FLOSS-Exception-v0.5");
2190  lmem[_mGPL] = 1;
2191  }
2192  else if (INFILE(_LT_AMLOGIC_LINUX_FIRMWARE)) {
2193  INTERESTING("Amlogic-Linux-Firmware");
2194  }
2195  else if (INFILE(_LT_APACHE_PATENT_EXCEPTION)) {
2196  INTERESTING("mxml-exception");
2197  }
2198  else if (INFILE(_LT_APL_1_1)) {
2199  INTERESTING("APL-1.1");
2200  lmem[_mGPL] = 1;
2201  }
2202  else if (INFILE(_LT_APTANA_EXCEPTION_3_0)) {
2203  INTERESTING("Aptana-exception-3.0");
2204  lmem[_mGPL] = 1;
2205  }
2206  else if (INFILE(_LT_ASLP)) {
2207  INTERESTING("Artop-ASLP");
2208  }
2209  else if (INFILE(_LT_ASLR)) {
2210  INTERESTING("Artop-ASLR");
2211  lmem[_mGPL] = 1;
2212  }
2213  else if (INFILE(_LT_ATMOSPHERE_0_4)) {
2214  INTERESTING("atmosphere");
2215  }
2216  else if (INFILE(_LT_AUTOCONF_SIMPLE_EXCEPTION)) {
2217  INTERESTING("Autoconf-exception-generic-3.0");
2218  lmem[_mGPL] = 1;
2219  }
2220  else if (INFILE(_LT_AUTOOPTS_EXCEPTION_2_0)) {
2221  INTERESTING("AutoOpts-exception-2.0");
2222  lmem[_mGPL] = 1;
2223  }
2224  else if (INFILE(_LT_AVISYNTH_C_INTERFACE_EXCEPTION)) {
2225  INTERESTING("Avisynth-C-Interface-Exception");
2226  lmem[_mGPL] = 1;
2227  }
2228  else if (INFILE(_LT_AVISYNTH_LINKING_EXCEPTION)) {
2229  INTERESTING("Avisynth-Linking-Exception");
2230  lmem[_mGPL] = 1;
2231  }
2232  else if (INFILE(_LT_BASH_EXCEPTION_GPL)) {
2233  INTERESTING("GPL-with-Bash-exception");
2234  lmem[_mGPL] = 1;
2235  }
2236  else if (INFILE(_LT_BIGDIGITS)) {
2237  INTERESTING("BigDigits");
2238  }
2239  else if (INFILE(_LT_BOHL_0_2)) {
2240  INTERESTING("BOHL-0.2");
2241  lmem[_mGPL] = 1;
2242  }
2243  else if (INFILE(_LT_BRIAN_GLADMAN_DUAL)) {
2244  INTERESTING("Brian-Gladman-3-Clause");
2245  }
2246  else if (INFILE(_LT_BROADCOM_DUAL)) {
2247  INTERESTING("Broadcom-Dual-GPL-Commercial");
2248  lmem[_mGPL] = 1;
2249  }
2250  else if (INFILE(_LT_BROADCOM_LINKING_EXCEPTION_2_0) &&
2251  NOT_INFILE(_LT_GPL_2_0_BROADCOM_LINKING)) {
2252  INTERESTING("Broadcom-Linking-Exception-2.0");
2253  }
2254  else if (INFILE(_LT_BSD_MYLEX)) {
2255  INTERESTING("BSD-Mylex");
2256  }
2257  else if (INFILE(_LT_BSD_PROTECTION)) {
2258  INTERESTING("BSD-Protection");
2259  lmem[_mGPL] = 1;
2260  }
2261  else if (INFILE(_LT_BSD_TOP_GPL_ADDITION)) {
2262  INTERESTING("BSD-3-Clause-with-GPL-reference");
2263  }
2264  else if (INFILE(_LT_BSL_1_0)) {
2265  INTERESTING("BSL-1.0");
2266  lmem[_mGPL] = 1;
2267  }
2268  else if (INFILE(_LT_BUSL_1_1)) {
2269  INTERESTING("BUSL-1.1");
2270  lmem[_mGPL] = 1;
2271  }
2272  else if (INFILE(_LT_CC_LGPL_2_1_PT)) {
2273  INTERESTING("CC-LGPL-2.1-PT");
2274  lmem[_mGPL] = 1;
2275  }
2276  else if (INFILE(_LT_CCRC_1_0)) {
2277  INTERESTING("Common-Cure-Rights-Commitment-v1.0");
2278  lmem[_mGPL] = 1;
2279  }
2280  else if (INFILE(_LT_CLASSWORLDS)) {
2281  INTERESTING("Classworlds");
2282  }
2283  else if (INFILE(_LT_CLAUSE_6_EXCEPTION_LGPL_2_1)) {
2284  INTERESTING("polyparse-exception");
2285  lmem[_mGPL] = 1;
2286  }
2287  else if (INFILE(_LT_COLT)) {
2288  INTERESTING("Colt");
2289  }
2290  else if (INFILE(_LT_CONCURSIVE_PL_1_0)) {
2291  INTERESTING("Concursive-Public-1.0");
2292  }
2293  else if (INFILE(_LT_CUPS_APPLE_OS_EXCEPTION)) {
2294  INTERESTING("CUPS-Apple-OS-Exception");
2295  lmem[_mGPL] = 1;
2296  }
2297  else if (INFILE(_LT_CUPS_2)) {
2298  INTERESTING("CUPS");
2299  lmem[_mGPL] = 1;
2300  }
2301  else if (INFILE(_LT_CVWL)) {
2302  INTERESTING("Collaborative-Virtual-Workspace");
2303  }
2304  else if (INFILE(_LT_CYGWIN_EXCEPTION_LGPL_3_0_PLUS)) {
2305  INTERESTING("LGPL-3.0-or-later-with-Cygwin-exception");
2306  lmem[_mGPL] = 1;
2307  lmem[_mLGPL] = 1;
2308  }
2309  else if (INFILE(_LT_CYPRESS_LINUX_FIRMWARE)) {
2310  INTERESTING("Cypress-Linux-Firmware");
2311  }
2312  else if (INFILE(_LT_DEFENSIVE_PATENT_1_1)) {
2313  INTERESTING("Defensive-Patent-v1.1");
2314  lmem[_mGPL] = 1;
2315  }
2316  else if (INFILE(_LT_DIGIA_QT_EXCEPTION_LGPL_2_1)) {
2317  INTERESTING("Qt-LGPL-exception-1.1");
2318  lmem[_mGPL] = 1;
2319  lmem[_mLGPL] = 1;
2320  }
2321  else if (INFILE(_LT_PLEXUS)) {
2322  INTERESTING("Plexus");
2323  lmem[_mGPL] = 1;
2324  }
2325  else if (INFILE(_LT_DPL_1_1)) {
2326  INTERESTING("DPL-1.1");
2327  lmem[_mGPL] = 1;
2328  }
2329  else if (INFILE(_LT_DUAL_BSD_GPL)) {
2330  INTERESTING("Dual-BSD-GPL");
2331  }
2332  else if (INFILE(_LT_DUNE_EXCEPTION)) {
2333  INTERESTING("DUNE-exception");
2334  lmem[_mGPL] = 1;
2335  }
2336  else if (INFILE(_LT_ECLIPSE_SUA_2002)) {
2337  INTERESTING("Eclipse-Foundation-Software-User-2002");
2338  lmem[_mGPL] = 1;
2339  }
2340  else if (INFILE(_LT_ECLIPSE_SUA_2003)) {
2341  INTERESTING("Eclipse-Foundation-Software-User-2003");
2342  lmem[_mGPL] = 1;
2343  }
2344  else if (INFILE(_LT_ECLIPSE_SUA_2004)) {
2345  INTERESTING("Eclipse-Foundation-Software-User-2004");
2346  lmem[_mGPL] = 1;
2347  }
2348  else if (INFILE(_LT_ECLIPSE_SUA_2005)) {
2349  INTERESTING("Eclipse-Foundation-Software-User-2005");
2350  lmem[_mGPL] = 1;
2351  }
2352  else if (INFILE(_LT_ECLIPSE_SUA_2010)) {
2353  INTERESTING("Eclipse-Foundation-Software-User-2010");
2354  lmem[_mGPL] = 1;
2355  }
2356  else if (INFILE(_LT_ECLIPSE_SUA_2011)) {
2357  INTERESTING("Eclipse-Foundation-Software-User-2011");
2358  lmem[_mGPL] = 1;
2359  }
2360  else if (INFILE(_LT_ECLIPSE_SUA_2014_11)) {
2361  INTERESTING("Eclipse-Foundation-Software-User-2014-11");
2362  lmem[_mGPL] = 1;
2363  }
2364  else if (INFILE(_LT_ECLIPSE_SUA_2014)) {
2365  INTERESTING("Eclipse-Foundation-Software-User-2014");
2366  lmem[_mGPL] = 1;
2367  }
2368  else if (INFILE(_LT_ECLIPSE_SUA_2017)) {
2369  INTERESTING("Eclipse-Foundation-Software-User-2017");
2370  lmem[_mGPL] = 1;
2371  }
2372  else if (INFILE(_LT_EKIGA_EXCEPTION_2_0_PLUS)) {
2373  INTERESTING("ekiga-exception-2.0-or-later");
2374  lmem[_mGPL] = 1;
2375  }
2376  else if (INFILE(_LT_ELIB_GPL)) {
2377  INTERESTING("GPL-Elib");
2378  lmem[_mGPL] = 1;
2379  }
2380  else if (INFILE(_LT_EMIT)) {
2381  INTERESTING("Enhanced-MIT");
2382  }
2383  else if (INFILE(_LT_EMX_LIBRARY)) {
2384  INTERESTING("EMX-Library");
2385  }
2386  else if (INFILE(_LT_EPO_OSL_2005_1)) {
2387  INTERESTING("EPO-OSL");
2388  lmem[_mGPL] = 1;
2389  }
2390  else if (INFILE(_LT_ERRBOT_EXCEPTION)) {
2391  INTERESTING("Errbot-exception");
2392  }
2393  else if (INFILE(_LT_OML)) {
2394  INTERESTING("OML");
2395  lmem[_mGPL] = 1;
2396  }
2397  else if (INFILE(_LT_FLOWPLAYER_GPL_3_0)) {
2398  INTERESTING("Flowplayer-GPL-3.0-only");
2399  lmem[_mGPL] = 1;
2400  }
2401  else if (INFILE(_LT_FREEIMAGE)) {
2402  INTERESTING("FreeImage");
2403  lmem[_mGPL] = 1;
2404  }
2405  else if (INFILE(_LT_FREEMARKER)) {
2406  INTERESTING("FreeMarker");
2407  }
2408  else if (INFILE(_LT_GCC_COMPILER_EXCEPTION_2_0)) {
2409  INTERESTING("GPL-2.0-only-with-GCC-compiler-exception-2.0");
2410  lmem[_mGPL] = 1;
2411  }
2412  else if (INFILE(_LT_GCC_EXCEPTION_3_0)) {
2413  INTERESTING("GCC-exception-3.0");
2414  lmem[_mGPL] = 1;
2415  }
2416  else if (INFILE(_LT_GENODE_AGPL_3_0_EXCEPTION)) {
2417  INTERESTING("AGPL-3.0-only-with-Genode-exception");
2418  lmem[_mGPL] = 1;
2419  }
2420  else if (INFILE(_LT_GEOSERVER_EXCEPTION_2_0_PLUS)) {
2421  INTERESTING("geoserver-exception-2.0-or-later");
2422  lmem[_mGPL] = 1;
2423  }
2424  else if (INFILE(_LT_GHOSTSCRIPT_1988)) {
2425  INTERESTING("Ghostscript-General-Public-1988");
2426  lmem[_mGPL] = 1;
2427  }
2428  else if (INFILE(_LT_GNU_EMACS_GPL_1988)) {
2429  INTERESTING("GNU-emacs-General-Public-1988");
2430  lmem[_mGPL] = 1;
2431  }
2432  else if (INFILE(_LT_GPL_2_0_ADAPTEC)) {
2433  INTERESTING("GPL-2.0-plus-Adaptec-conditions");
2434  lmem[_mGPL] = 1;
2435  }
2436  /* the footprint is a plain GPL notice */
2437  else if (INFILE(_LT_GPL_2_0_AUTOOPTS) && INFILE(_TEXT_AUTOOPTS)) {
2438  INTERESTING("GPL-2.0-or-later-with-AutoOpts-exception");
2439  lmem[_mGPL] = 1;
2440  }
2441  else if (INFILE(_LT_GPL_2_0_BISON_2_2)) {
2442  INTERESTING("GPL-2.0-or-later WITH Bison-exception-2.2");
2443  lmem[_mGPL] = 1;
2444  }
2445  else if (INFILE(_LT_GPL_2_0_BISON)) {
2446  INTERESTING("gpl-2.0-bison");
2447  lmem[_mGPL] = 1;
2448  }
2449  else if (INFILE(_LT_GPL_2_0_BROADCOM_LINKING)) {
2450  INTERESTING("GPL-2.0-with-Broadcom-Linking-Exception");
2451  lmem[_mGPL] = 1;
2452  }
2453  else if (INFILE(_LT_GPL_2_0_CYGWIN)) {
2454  INTERESTING("GPL-2.0-with-Cygwin-exception");
2455  lmem[_mGPL] = 1;
2456  }
2457  else if (INFILE(_LT_GPL_2_0_DJVU)) {
2458  INTERESTING("GPL-2.0-with-DjVu-Patent-Grant");
2459  lmem[_mGPL] = 1;
2460  }
2461  else if (INFILE(_LT_GPL_2_0_FREERTOS)) {
2462  INTERESTING("GPL-2.0-with-FreeRTOS-exception");
2463  lmem[_mGPL] = 1;
2464  }
2465  else if (INFILE(_LT_GPL_2_0_GCC_COMPILER_EXCEPTION)) {
2466  INTERESTING("GPL-2.0-with-GCC-compiler-exception");
2467  lmem[_mGPL] = 1;
2468  }
2469  else if (INFILE(_LT_GPL_2_0_GLIBC)) {
2470  INTERESTING("GPL-2.0-with-GLibC-exception");
2471  lmem[_mGPL] = 1;
2472  }
2473  else if (INFILE(_LT_GPL_2_0_GUILE)) {
2474  INTERESTING("GPL-2.0-with-GUILE-exception");
2475  lmem[_mGPL] = 1;
2476  }
2477  else if (INFILE(_LT_GPL_2_0_INDEPENDENT_MODULE_LINKING)) {
2478  INTERESTING("gpl-2.0-independent-module-linking");
2479  lmem[_mGPL] = 1;
2480  }
2481  else if (INFILE(_LT_GPL_2_0_IOLIB)) {
2482  INTERESTING("GPL-2.0-with-GNU-IO-Library-exception");
2483  lmem[_mGPL] = 1;
2484  }
2485  else if (INFILE(_LT_GPL_2_0_JAVASCRIPT)) {
2486  INTERESTING("GPL-2.0-with-Javascript-exception");
2487  lmem[_mGPL] = 1;
2488  }
2489  else if (INFILE(_LT_GPL_2_0_KERNEL)) {
2490  INTERESTING("GPL-2.0-with-Kernel-Exception");
2491  lmem[_mGPL] = 1;
2492  }
2493  else if (INFILE(_LT_GPL_2_0_KOTEROV)) {
2494  INTERESTING("GPL-2.0-with-Dmitry-Koterov-additions");
2495  lmem[_mGPL] = 1;
2496  }
2497  else if (INFILE(_LT_GPL_2_0_LIBGIT2)) {
2498  INTERESTING("GPL-2.0-with-libgit2-exception");
2499  lmem[_mGPL] = 1;
2500  }
2501  else if (INFILE(_LT_GPL_2_0_LIBRARY)) {
2502  INTERESTING("GPL-2.0-with-Library-exception");
2503  lmem[_mGPL] = 1;
2504  }
2505  else if (INFILE(_LT_GPL_2_0_LIBTOOL)) {
2506  INTERESTING("GPL-2.0-with-GNU-Libtool-exception");
2507  lmem[_mGPL] = 1;
2508  }
2509  else if (INFILE(_LT_GPL_2_0_LMBENCH)) {
2510  INTERESTING("GPL-2.0-with-LMBench-exception");
2511  lmem[_mGPL] = 1;
2512  }
2513  else if (INFILE(_LT_GPL_2_0_MYSQL_CONNECTOR_ODBC)) {
2514  INTERESTING("GPL-2.0-with-MySQL-Connector-ODBC-exception");
2515  lmem[_mGPL] = 1;
2516  }
2517  else if (INFILE(_LT_GPL_2_0_MYSQL_FLOSS)) {
2518  INTERESTING("GPL-2.0-with-MySQL-FLOSS-exception");
2519  lmem[_mGPL] = 1;
2520  }
2521  else if (INFILE(_LT_GPL_2_0_OPENJDK)) {
2522  INTERESTING("GPL-2.0-with-OpenJDK-Classpath-exception");
2523  lmem[_mGPL] = 1;
2524  }
2525  else if (INFILE(_LT_GPL_2_0_ORACLE_MYSQL_FOSS)) {
2526  INTERESTING("GPL-2.0-with-Oracle-MySQL-FOSS-exception");
2527  lmem[_mGPL] = 1;
2528  }
2529  else if (INFILE(_LT_GPL_2_0_ORACLE_OPENJDK)) {
2530  INTERESTING("gpl-2.0-oracle-openjdk");
2531  lmem[_mGPL] = 1;
2532  }
2533  else if (INFILE(_LT_GPL_2_0_PLUS_EKIGA)) {
2534  INTERESTING("GPL-2.0-or-later-ekiga");
2535  lmem[_mGPL] = 1;
2536  }
2537  else if (INFILE(_LT_GPL_2_0_PLUS_SYNTEXT)) {
2538  INTERESTING("GPL-2.0-or-later-syntext");
2539  lmem[_mGPL] = 1;
2540  }
2541  else if (INFILE(_LT_GPL_2_0_PROGUARD)) {
2542  INTERESTING("GPL-2.0-with-ProGuard-exception");
2543  lmem[_mGPL] = 1;
2544  }
2545  else if (INFILE(_LT_GPL_2_0_QT_QCA)) {
2546  INTERESTING("GPL-2.0-with-Qt-QCA-exception");
2547  lmem[_mGPL] = 1;
2548  }
2549  else if (INFILE(_LT_GPL_2_0_REDHAT)) {
2550  INTERESTING("GPL-2.0-with-Fedora-Red-Hat-Exception");
2551  lmem[_mGPL] = 1;
2552  }
2553  else if (INFILE(_LT_GPL_2_0_RRDTOOL_FLOSS)) {
2554  INTERESTING("GPL-2.0-with-RRDtool-FLOSS-Exception");
2555  lmem[_mGPL] = 1;
2556  }
2557  else if (INFILE(_LT_GPL_2_0_UBOOT)) {
2558  INTERESTING("GPL-2.0-with-U-Boot-exception");
2559  lmem[_mGPL] = 1;
2560  }
2561  else if (INFILE(_LT_GPL_3_0_BISON)) {
2562  INTERESTING("GPL-3.0-or-later-with-Bison-exception");
2563  lmem[_mGPL] = 1;
2564  }
2565  else if (INFILE(_LT_GPL_3_0_CYGWIN)) {
2566  INTERESTING("GPL-3.0-or-later-with-Cygwin-exception");
2567  lmem[_mGPL] = 1;
2568  }
2569  else if (INFILE(_LT_GPL_3_0_FONT)) {
2570  INTERESTING("GPL-3.0-or-later-with-font-exception");
2571  lmem[_mGPL] = 1;
2572  }
2573  else if (INFILE(_LT_GPL_3_0_LINKING_SOURCE_EXCEPTION)) {
2574  INTERESTING("GPL-3.0-linking-source-exception");
2575  lmem[_mGPL] = 1;
2576  }
2577  /* an Affero base is reported by the AGPL path */
2578  else if (INFILE(_LT_GPL_3_0_PLUS_OPENSSL) && NOT_INFILE(_TEXT_AFFERO)) {
2579  INTERESTING("GPL-3.0-or-later-with-openssl-exception");
2580  lmem[_mGPL] = 1;
2581  }
2582  else if (INFILE(_LT_GSTREAMER_EXCEPTION_2_0)) {
2583  INTERESTING("GPL-2.0-or-later-with-GStreamer-exception");
2584  lmem[_mGPL] = 1;
2585  }
2586  else if (INFILE(_LT_GSTREAMER_EXCEPTION_2005)) {
2587  INTERESTING("GStreamer-exception-2005");
2588  }
2589  else if (INFILE(_LT_GSTREAMER_EXCEPTION_2008)) {
2590  INTERESTING("GStreamer-exception-2008");
2591  }
2592  else if (INFILE(_LT_GUILE_EXCEPTION_2_0)) {
2593  INTERESTING("harbour-exception");
2594  lmem[_mGPL] = 1;
2595  }
2596  else if (INFILE(_LT_HACOS_1_2)) {
2597  INTERESTING("HACOS-1.2");
2598  lmem[_mGPL] = 1;
2599  }
2600  else if (INFILE(_LT_HP_ENTERPRISE_EULA)) {
2601  INTERESTING("HP-Enterprise");
2602  }
2603  else if (INFILE(_LT_HP_PROLIANT_ESSENTIALS)) {
2604  INTERESTING("hp-proliant-essentials");
2605  }
2606  else if (INFILE(_LT_HP_SOFTWARE_EULA)) {
2607  INTERESTING("HP-Software");
2608  }
2609  else if (INFILE(_LT_INDEPENDENT_MODULE_LINKING_EXCEPTION)) {
2610  INTERESTING("Independent-modules-exception");
2611  lmem[_mGPL] = 1;
2612  }
2613  else if (INFILE(_LT_INITIAL_DEVELOPER_PUBLIC)) {
2614  INTERESTING("Initial-Developer-Public");
2615  lmem[_mGPL] = 1;
2616  }
2617  else if (INFILE(_LT_INTEL_BSD)) {
2618  INTERESTING("BSD-3-Clause-acpica");
2619  }
2620  else if (INFILE(_LT_INTEL_MASTER_EULA_SW_DEV_2016)) {
2621  INTERESTING("Intel-Master-for-SW-Dev-2016");
2622  }
2623  else if (INFILE(_LT_JAVASCRIPT_EXCEPTION_2_0)) {
2624  INTERESTING("Javascript-exception-2.0");
2625  lmem[_mGPL] = 1;
2626  }
2627  else if (INFILE(_LT_JBOSS_EULA)) {
2628  INTERESTING("JBoss");
2629  }
2630  else if (INFILE(_LT_JELURIDA_PUBLIC_1_1)) {
2631  INTERESTING("Jeulurida-Public-1.1");
2632  lmem[_mGPL] = 1;
2633  }
2634  else if (INFILE(_LT_JPRS_OSCL_1_1)) {
2635  INTERESTING("JPRS-OSCL-1.1");
2636  }
2637  else if (INFILE(_LT_KDE_ACCEPTED_GPL)) {
2638  INTERESTING("KDE-Accepted-GPL");
2639  lmem[_mGPL] = 1;
2640  }
2641  else if (INFILE(_LT_KDE_ACCEPTED_LGPL)) {
2642  INTERESTING("KDE-Accepted-LGPL");
2643  lmem[_mGPL] = 1;
2644  }
2645  else if (INFILE(_LT_KFQF_ACCEPTED_GPL)) {
2646  INTERESTING("KFQF-Accepted-GPL");
2647  lmem[_mGPL] = 1;
2648  }
2649  else if (INFILE(_LT_LDPC_1994)) {
2650  INTERESTING("LDPC-1994");
2651  lmem[_mGPL] = 1;
2652  }
2653  else if (INFILE(_LT_LDPC_1997)) {
2654  INTERESTING("LDPC-1997");
2655  lmem[_mGPL] = 1;
2656  }
2657  else if (INFILE(_LT_LDPC_1999)) {
2658  INTERESTING("LDPC-1999");
2659  lmem[_mGPL] = 1;
2660  }
2661  else if (INFILE(_LT_LDPM_1998)) {
2662  INTERESTING("LDPM-1998");
2663  lmem[_mGPL] = 1;
2664  }
2665  else if (INFILE(_LT_LGPL_2_0_FLTK)) {
2666  INTERESTING("LGPL-2.0-with-FLTK-exception");
2667  lmem[_mGPL] = 1;
2668  lmem[_mLGPL] = 1;
2669  }
2670  else if (INFILE(_LT_LGPL_2_1_NOKIA_QT)) {
2671  INTERESTING("LGPL-2.1-with-Nokia-Qt-Exception");
2672  lmem[_mGPL] = 1;
2673  lmem[_mLGPL] = 1;
2674  }
2675  else if (INFILE(_LT_LGPL_2_1_PLUS_LINKING)) {
2676  INTERESTING("LGPL-2.1-or-later-linking");
2677  lmem[_mGPL] = 1;
2678  }
2679  else if (INFILE(_LT_LGPL_2_1_QT_COMPANY)) {
2680  INTERESTING("LGPL-2.1-with-Qt-Company-Exception");
2681  lmem[_mGPL] = 1;
2682  lmem[_mLGPL] = 1;
2683  }
2684  else if (INFILE(_LT_LGPL_2_1_RXTX)) {
2685  INTERESTING("LGPL-2.1-with-RXTX-exception");
2686  lmem[_mGPL] = 1;
2687  lmem[_mLGPL] = 1;
2688  }
2689  else if (INFILE(_LT_LGPL_3_PLUS_LINKING)) {
2690  INTERESTING("LGPL-3.0-or-later-linking");
2691  lmem[_mGPL] = 1;
2692  lmem[_mLGPL] = 1;
2693  }
2694  else if (INFILE(_LT_LGPL_3_0_ZEROMQ)) {
2695  INTERESTING("LGPL-3.0-with-ZeroMQ-exception");
2696  lmem[_mGPL] = 1;
2697  }
2698  else if (INFILE(_LT_LIBERATION_FONT_EXCEPTION)) {
2699  INTERESTING("Liberation-Font-Exception");
2700  lmem[_mGPL] = 1;
2701  }
2702  else if (INFILE(_LT_LIBWEBSOCKETS_EXCEPTION)) {
2703  INTERESTING("libwebsockets-exception");
2704  lmem[_mGPL] = 1;
2705  lmem[_mLGPL] = 1;
2706  }
2707  else if (INFILE(_LT_LILIQ_R_1_1)) {
2708  INTERESTING("LiLiQ-R-1.1");
2709  lmem[_mGPL] = 1;
2710  }
2711  else if (INFILE(_LT_LILIQ_RPLUS_1_1)) {
2712  INTERESTING("LiLiQ-Rplus-1.1");
2713  lmem[_mGPL] = 1;
2714  }
2715  /* NOTE: linking-exception-lgpl-3.0 text is identical to lgpl-3.0-linking-exception; unreachable */
2716  else if (INFILE(_LT_LLGPL)) {
2717  INTERESTING("LLGPL");
2718  lmem[_mGPL] = 1;
2719  }
2720  else if (INFILE(_LT_LOSLA)) {
2721  INTERESTING("LOSLA");
2722  lmem[_mGPL] = 1;
2723  }
2724  else if (INFILE(_LT_LZMA_SDK_2006)) {
2725  INTERESTING("LZMA-SDK-2006");
2726  lmem[_mGPL] = 1;
2727  }
2728  else if (INFILE(_LT_LZMA_SDK_2008)) {
2729  INTERESTING("LZMA-SDK-2008");
2730  lmem[_mGPL] = 1;
2731  }
2732  else if (INFILE(_LT_LZMA_SDK_ORIGINAL)) {
2733  INTERESTING("LZMA-SDK-Original");
2734  lmem[_mGPL] = 1;
2735  }
2736  else if (INFILE(_LT_MADWIFI_DUAL)) {
2737  INTERESTING("MadWifi-Dual-BSD-GPL");
2738  }
2739  else if (INFILE(_LT_MAGPIE_EXCEPTION_1_0)) {
2740  INTERESTING("Magpie-exception-1.0");
2741  lmem[_mGPL] = 1;
2742  }
2743  else if (INFILE(_LT_MAKE_HUMAN_EXCEPTION)) {
2744  INTERESTING("MakeHuman");
2745  }
2746  else if (INFILE(_LT_XEROX)) {
2747  INTERESTING("Xerox");
2748  lmem[_mGPL] = 1;
2749  }
2750  else if (INFILE(_LT_MIT_NO_ADVERT_EXPORT_CONTROL)) {
2751  INTERESTING("HPND-export2-US");
2752  }
2753  else if (INFILE(_LT_MONETDB_1_1)) {
2754  INTERESTING("MonetDB-1.1");
2755  lmem[_mGPL] = 1;
2756  }
2757  else if (INFILE(_LT_MS_NUGET)) {
2758  INTERESTING("MS-Nuget");
2759  }
2760  else if (INFILE(_LT_MS_VISUAL_STUDIO_CODE)) {
2761  INTERESTING("MS-Visual-Studio-Code");
2762  }
2763  else if (INFILE(_LT_MS_WINDOWS_OS_2018)) {
2764  INTERESTING("MS-Windows-OS-2018");
2765  }
2766  else if (INFILE(_LT_MYSQL_FLOSS_EXCEPTION_2_0)) {
2767  INTERESTING("MySQL-FLOSS-exception-2.0");
2768  lmem[_mGPL] = 1;
2769  }
2770  else if (INFILE(_LT_NANT_EXCEPTION_2_0_PLUS)) {
2771  INTERESTING("nant-exception-2.0-or-later");
2772  lmem[_mGPL] = 1;
2773  }
2774  else if (INFILE(_LT_NETCAT)) {
2775  INTERESTING("Netcat");
2776  }
2777  else if (INFILE(_LT_NEXB_SSLA_1_1_0)) {
2778  INTERESTING("nexB-SSLA-1.1.0");
2779  }
2780  else if (INFILE(_LT_NICTA_EXCEPTION)) {
2781  INTERESTING("NICTA-Exception");
2782  lmem[_mGPL] = 1;
2783  }
2784  else if (INFILE(_LT_NIELS_FERGUSON)) {
2785  INTERESTING("Niels-Ferguson");
2786  }
2787  else if (INFILE(_LT_OCAML_LGPL_LINKING_EXCEPTION)) {
2788  INTERESTING("OCaml-LGPL-linking-exception");
2789  lmem[_mGPL] = 1;
2790  }
2791  else if (INFILE(_LT_OPEN_DIAMETER)) {
2792  INTERESTING("Open-Diameter");
2793  lmem[_mGPL] = 1;
2794  }
2795  else if (INFILE(_LT_OPENJDK_EXCEPTION)) {
2796  INTERESTING("OpenJDK-Exception");
2797  lmem[_mGPL] = 1;
2798  }
2799  else if (INFILE(_LT_OPENMOTIF_EXCEPTION_2_0_PLUS)) {
2800  INTERESTING("openmotif-exception-2.0-or-later");
2801  lmem[_mGPL] = 1;
2802  }
2803  else if (INFILE(_LT_OPENSC_OPENSSL_OPENPACE_EXCEPTION_GPL)) {
2804  INTERESTING("GPL-with-opensc-openssl-openpace-exception");
2805  lmem[_mGPL] = 1;
2806  }
2807  else if (INFILE(_LT_OPENSSL_EXCEPTION_GPL_2_0_PLUS)) {
2808  INTERESTING("GPL-2.0-or-later-with-openssl-exception");
2809  lmem[_mGPL] = 1;
2810  }
2811  else if (INFILE(_LT_OPERA_WIDGET_1_0)) {
2812  INTERESTING("Opera-Widget-1.0");
2813  }
2814  else if (INFILE(_LT_ORACLE_DEVTOOLS_VSNET_DEV)) {
2815  INTERESTING("oracle-devtools-vsnet-dev");
2816  }
2817  else if (INFILE(_LT_ORACLE_JAVA_EE_SDK_2010)) {
2818  INTERESTING("OTN-Developer-for-JAVA-EE-SDK");
2819  }
2820  else if (INFILE(_LT_OSET_PL_2_1)) {
2821  INTERESTING("OSET-PL-2.1");
2822  lmem[_mGPL] = 1;
2823  }
2824  else if (INFILE(_LT_OSSN_3_0)) {
2825  INTERESTING("OSSN-3.0");
2826  lmem[_mGPL] = 1;
2827  }
2828  else if (INFILE(_LT_OTHER_COPYLEFT)) {
2829  INTERESTING("Other-Copyleft-Licenses");
2830  lmem[_mGPL] = 1;
2831  }
2832  else if (INFILE(_LT_OTN_DEV_DIST_2009)) {
2833  INTERESTING("OTN-2009");
2834  }
2835  else if (INFILE(_LT_OTN_DEV_DIST_2014)) {
2836  INTERESTING("OTN-2014");
2837  }
2838  else if (INFILE(_LT_OTN_DEV_DIST)) {
2839  INTERESTING("OTN");
2840  }
2841  else if (INFILE(_LT_OWAL_1_0)) {
2842  INTERESTING("Opera-Web-Applications-1.0");
2843  lmem[_mGPL] = 1;
2844  }
2845  else if (INFILE(_LT_PAINT_NET)) {
2846  INTERESTING("Paint.NET");
2847  }
2848  else if (INFILE(_LT_PCRE)) {
2849  INTERESTING("PCRE");
2850  }
2851  else if (INFILE(_LT_PFTIJAH_1_1)) {
2852  INTERESTING("PfTijah-Public-1.1");
2853  lmem[_mGPL] = 1;
2854  }
2855  else if (INFILE(_LT_POLITEPIX_PL_1_0)) {
2856  INTERESTING("Politepix-Public-1.0");
2857  }
2858  else if (INFILE(_LT_PS_OR_PDF_FONT_EXCEPTION_20170817)) {
2859  INTERESTING("PS-or-PDF-font-exception-20170817");
2860  lmem[_mGPL] = 1;
2861  }
2862  else if (INFILE(_LT_PSUTILS)) {
2863  INTERESTING("psutils");
2864  }
2865  else if (INFILE(_LT_PYTHON_2_0_1)) {
2866  INTERESTING("Python-2.0.1");
2867  }
2868  else if (INFILE(_LT_QCAD_EXCEPTION_GPL)) {
2869  INTERESTING("GPL-with-QCAD-Exception");
2870  lmem[_mGPL] = 1;
2871  }
2872  else if (INFILE(_LT_QT_COMMERCIAL_1_1)) {
2873  INTERESTING("Qt-Commercial-v1.1");
2874  }
2875  else if (INFILE(_LT_QT_KDE_LINKING_EXCEPTION)) {
2876  INTERESTING("GPL-2.0-or-later-with-Qt-Linking-Exception");
2877  lmem[_mGPL] = 1;
2878  }
2879  else if (INFILE(_LT_QT_QCA_EXCEPTION_2_0)) {
2880  INTERESTING("GPL-2.0-only-with-Qt-QCA-exception");
2881  lmem[_mGPL] = 1;
2882  }
2883  else if (INFILE(_LT_QWT_1_0)) {
2884  INTERESTING("Qwt-1.0-Deprecated");
2885  lmem[_mGPL] = 1;
2886  }
2887  else if (INFILE(_LT_RH_EULA_LGPL)) {
2888  INTERESTING("Red-Hat-LGPL-Based");
2889  lmem[_mGPL] = 1;
2890  }
2891  else if (INFILE(_LT_RH_EULA_2)) {
2892  INTERESTING("Red-Hat");
2893  lmem[_mGPL] = 1;
2894  }
2895  else if (INFILE(_LT_SANE_EXCEPTION_2_0_PLUS)) {
2896  INTERESTING("sane-exception-2.0-or-later");
2897  lmem[_mGPL] = 1;
2898  }
2899  else if (INFILE(_LT_SENCHA_APP_FLOSS_EXCEPTION)) {
2900  INTERESTING("Sencha-GPL-3.0-Exception-for-Applications");
2901  lmem[_mGPL] = 1;
2902  }
2903  else if (INFILE(_LT_SENCHA_COMMERCIAL_3_17)) {
2904  INTERESTING("Sencha-Software-v3.17");
2905  }
2906  else if (INFILE(_LT_SENCHA_COMMERCIAL_3_9)) {
2907  INTERESTING("Sencha-Software-3.9");
2908  }
2909  else if (INFILE(_LT_SENCHA_COMMERCIAL)) {
2910  INTERESTING("Sencha-Commercial-1.1");
2911  }
2912  else if (INFILE(_LT_SENCHA_DEV_FLOSS_EXCEPTION)) {
2913  INTERESTING("Sencha-GPL-3.0-Exception-for-Development");
2914  lmem[_mGPL] = 1;
2915  }
2916  else if (INFILE(_LT_IMATIX)) {
2917  INTERESTING("iMatix");
2918  lmem[_mGPL] = 1;
2919  }
2920  else if (INFILE(_LT_SGLIB)) {
2921  INTERESTING("Sglib");
2922  }
2923  else if (INFILE(_LT_SMAIL_GPL)) {
2924  INTERESTING("SMAIL-GPL");
2925  lmem[_mGPL] = 1;
2926  }
2927  else if (INFILE(_LT_SMPPL)) {
2928  INTERESTING("SMPPL");
2929  lmem[_mGPL] = 1;
2930  }
2931  else if (INFILE(_LT_SNIA)) {
2932  INTERESTING("SNIA");
2933  lmem[_mGPL] = 1;
2934  }
2935  else if (INFILE(_LT_SPELL_CHECKER_EXCEPTION_LGPL_2_1_PLUS)) {
2936  INTERESTING("LGPL-2.1-or-later-with-spell-checker-exception");
2937  lmem[_mGPL] = 1;
2938  }
2939  else if (INFILE(_LT_ST_MCD_2_0)) {
2940  INTERESTING("STMicro-Liberty-v2");
2941  }
2942  else if (INFILE(_LT_STATEWIZARD)) {
2943  INTERESTING("StateWizard");
2944  lmem[_mGPL] = 1;
2945  }
2946  else if (INFILE(_LT_STRONGSWAN_EXCEPTION)) {
2947  INTERESTING("GPL-with-strongSwan-exception");
2948  lmem[_mGPL] = 1;
2949  }
2950  /* the footprint is the generic "special exception" opener */
2951  else if (INFILE(_LT_SUBCOMMANDER_EXCEPTION_2_0_PLUS)
2952  && INFILE(_TEXT_SUBCOMMANDER)) {
2953  INTERESTING("subcommander-exception-2.0-or-later");
2954  lmem[_mGPL] = 1;
2955  }
2956  else if (INFILE(_LT_SWIG)) {
2957  INTERESTING("SWIG-Library");
2958  }
2959  else if (INFILE(_LT_SWL)) {
2960  INTERESTING("SWL");
2961  }
2962  else if (INFILE(_LT_SYNTEXT_SERNA_EXCEPTION_1_0)) {
2963  INTERESTING("syntext-serna-exception-1.0");
2964  lmem[_mGPL] = 1;
2965  }
2966  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_0)) {
2967  INTERESTING("Tanuki-Community-1.0");
2968  lmem[_mGPL] = 1;
2969  }
2970  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_1)) {
2971  INTERESTING("Tanuki-Community-1.1");
2972  lmem[_mGPL] = 1;
2973  }
2974  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_2)) {
2975  INTERESTING("Tanuki-Community-1.2");
2976  lmem[_mGPL] = 1;
2977  }
2978  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_3)) {
2979  INTERESTING("Tanuki-Community-1.3");
2980  lmem[_mGPL] = 1;
2981  }
2982  else if (INFILE(_LT_TAPR_OHL_1_0) && NOT_INFILE(_TITLE_TAPR_NCL)) {
2983  /* the Noncommercial variant shares this wording but forbids commercial use */
2984  INTERESTING("TAPR-OHL-1.0");
2985  lmem[_mGPL] = 1;
2986  }
2987  else if (INFILE(_LT_TELERIK_EULA)) {
2988  INTERESTING("Telerik");
2989  lmem[_mGPL] = 1;
2990  }
2991  else if (INFILE(_LT_THOR_PL)) {
2992  INTERESTING("TPL-1.0");
2993  lmem[_mGPL] = 1;
2994  }
2995  else if (INFILE(_LT_TORQUE_1_1)) {
2996  INTERESTING("TORQUE-1.1");
2997  lmem[_mGPL] = 1;
2998  }
2999  else if (INFILE(_LT_TPL_1_0)) {
3000  INTERESTING("TPL-1.0");
3001  lmem[_mGPL] = 1;
3002  }
3003  else if (INFILE(_LT_TROLLTECH_GPL_EXCEPTION_1_0)) {
3004  INTERESTING("Trolltech-GPL-Exception-1.0");
3005  lmem[_mGPL] = 1;
3006  }
3007  else if (INFILE(_LT_TROLLTECH_GPL_EXCEPTION_1_1)) {
3008  INTERESTING("Trolltech-GPL-Exception-1.1");
3009  lmem[_mGPL] = 1;
3010  }
3011  else if (INFILE(_LT_TROLLTECH_GPL_EXCEPTION_1_2)) {
3012  INTERESTING("Trolltech-GPL-Exception-1.2");
3013  lmem[_mGPL] = 1;
3014  }
3015  else if (INFILE(_LT_UBDL)) {
3016  INTERESTING("UBDL-exception");
3017  lmem[_mGPL] = 1;
3018  }
3019  else if (INFILE(_LT_UNLIMITED_LINKING_EXCEPTION_GPL)) {
3020  INTERESTING("GPL-with-Unlimited-linking-exception");
3021  lmem[_mGPL] = 1;
3022  }
3023  else if (INFILE(_LT_UOFU_RFPL)) {
3024  INTERESTING("UURF-Public");
3025  }
3026  else if (INFILE(_LT_VIEWFLOW_AGPL_3_0_EXCEPTION)) {
3027  INTERESTING("AGPL-3.0-only-with-Viewflow-Library-Exception");
3028  lmem[_mGPL] = 1;
3029  }
3030  else if (INFILE(_LT_VUFORIA_2013_07_29)) {
3031  INTERESTING("Vuforia-2013-07-29");
3032  }
3033  else if (INFILE(_LT_WINZIP_EULA)) {
3034  INTERESTING("WinZip");
3035  }
3036  else if (INFILE(_LT_WXWIDGETS)) {
3037  INTERESTING("wxWidgets");
3038  }
3039  else if (INFILE(_LT_WXWINDOWS_R_3_0)) {
3040  INTERESTING("wxWindows-Restricted-3.0");
3041  lmem[_mGPL] = 1;
3042  }
3043  else if (INFILE(_LT_X11_REALMODE)) {
3044  INTERESTING("X11-Style-Realmode");
3045  }
3046  else if (INFILE(_LT_XENOMAI_GPL_EXCEPTION)) {
3047  INTERESTING("Xenomai-GPL-Exception");
3048  lmem[_mGPL] = 1;
3049  }
3050  else if (INFILE(_LT_XMING)) {
3051  INTERESTING("Xming");
3052  }
3053  else if (INFILE(_LT_ZSH)) {
3054  INTERESTING("zsh");
3055  }
3056  } /* end !lmem[_mGPL] guard */
3058  /* copyleft-next license
3059  * It has to be checked before GPL because the license has the reference
3060  * to GPL license which gives a false positive GPL finding.
3061  */
3062  if (INFILE(_TITLE_copyleft_next_030) && INFILE(_PHR_copyleft_next_PARA1) && INFILE(_PHR_copyleft_next_PARA3)) {
3063  INTERESTING("copyleft-next-0.3.0");
3064  lmem[_mGPL] = 1;
3065  }
3066  else if (INFILE(_TITLE_copyleft_next_031) && INFILE(_PHR_copyleft_next_PARA1) && INFILE(_PHR_copyleft_next_PARA3)) {
3067  INTERESTING("copyleft-next-0.3.1");
3068  lmem[_mGPL] = 1;
3069  }
3070  else if (INFILE(_PHR_copyleft_next_030) || INFILE(_SPDX_copyleft_next_030)) {
3071  INTERESTING("copyleft-next-0.3.0");
3072  }
3073  else if (INFILE(_PHR_copyleft_next_031) || INFILE(_SPDX_copyleft_next_031)) {
3074  INTERESTING("copyleft-next-0.3.1");
3075  }
3077  /*
3078  * GPL, LGPL, GFDL
3079  * QUESTION: do we need to check for the FSF copyright since we also
3080  * check for "GNU" or "free"?
3081  */
3082  if ((NOT_INFILE(_LT_FORMER_GNU) && (mCR_FSF() ||
3083  HASTEXT(_TEXT_GNUTERMS, REG_EXTENDED)))) {
3084  /*
3085  * Affero
3086  */
3087  if (INFILE(_PHR_AGPL) && NOT_INFILE(_LT_GPL3ref4)) {
3088  if (INFILE(_LT_AGPL1) || INFILE(_LT_AGPL2) ||
3089  INFILE(_LT_AGPL3)) {
3090  cp = AGPLVERS();
3091  INTERESTING(lDebug ? "Affero(#1)" : cp);
3092  lmem[_mGPL] = 1;
3093  }
3094  else if (INFILE(_LT_AGPLref1)) {
3095  cp = AGPLVERS();
3096  INTERESTING(lDebug ? "Affero(#2)" : cp);
3097  lmem[_mGPL] = 1;
3098  }
3099  else if (INFILE(_LT_AGPLref2) && NOT_INFILE(_LT_NOT_AGPLref1)) {
3100  cp = AGPLVERS();
3101  INTERESTING(lDebug ? "Affero(#3)" : cp);
3102  lmem[_mGPL] = 1;
3103  }
3104  else if (mCR_FSF() && NOT_INFILE(_LT_GPL3_NOT_AGPL)) {
3105  cp = AGPLVERS();
3106  INTERESTING(lDebug ? "Affero(CR)" : cp);
3107  lmem[_mGPL] = 1;
3108  }
3109  /* named, not granted */
3110  else if (NOT_INFILE(_LT_MPL_SECONDARY)
3111  && NOT_INFILE(_PHR_AGPL_REFERENCE_ONLY)) {
3112  /* agplVersion() also returns GPL names; no lmem[_mGPL] here, so a
3113  separate GPL grant still gets reported */
3114  cp = AGPLVERS();
3115  if (strncmp(cp, "AGPL", 4) == 0) {
3116  INTERESTING(lDebug ? "Affero(named)" : cp);
3117  }
3118  }
3119  }
3120  else if (INFILE(_LT_AGPL_NAMED) || INFILE(_LT_AGPL_NAMED_ref)
3121  || INFILE(_LT_AGPL_NAMED_ref2)) {
3122  cp = AGPLVERS();
3123  INTERESTING(lDebug ? "AGPL(named)" : cp);
3124  lmem[_mGPL] = 1;
3125  }
3126 
3127  /*
3128  * Some packages have a single file containing both a GPL and an LGPL
3129  * license. Therefore, these checks should NOT be exclusive.
3130  */
3131  /* * The Nethack General Public License (NGPL) */
3132  else if (INFILE(_TITLE_NGPL)) {
3133  INTERESTING("NGPL");
3134  lmem[_mGPL] = 1;
3135  }
3136  else if (INFILE(_LT_GPL_V1)) {
3137  INTERESTING("GPL-1.0-only");
3138  lmem[_mGPL] = 1;
3139  }
3140  else if (INFILE(_LT_GPL_1) && !HASTEXT(_LT_GPL_EXCEPT_0, REG_EXTENDED)) {
3141  if (INFILE(_PHR_GPL2_OR_LATER_1) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3142  {
3143  INTERESTING(lDebug ? "PHR(GPL2_OR_LATER#1)" : "GPL-2.0-or-later");
3144  lmem[_mGPL] = 1;
3145  }
3146  else if (INFILE(_TITLE_GPL2)) {
3147  INTERESTING(lDebug ? "Title(GPL-2.0-only)" : "GPL-2.0-only");
3148  lmem[_mGPL] = 1;
3149  }
3150  else if (INFILE(_PHR_GPL1_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3151  {
3152  INTERESTING("GPL-1.0-or-later");
3153  lmem[_mGPL] = 1;
3154  }
3155  else if (INFILE(_TITLE_GPL1)) {
3156  INTERESTING("GPL-1.0-only");
3157  lmem[_mGPL] = 1;
3158  }
3159  else {
3160  INTERESTING("GPL");
3161  lmem[_mGPL] = 1;
3162  }
3163  }
3164  else if ((INFILE(_LT_GPL_V2) || INFILE(_LT_GPL_V2_ref) || INFILE(_LT_GPL_V2_ref1) || INFILE(_LT_GPL_V2_ref2) || INFILE(_LT_GPL_V2_as_published)) && !HASTEXT(_LT_GPL_EXCEPT_0, REG_EXTENDED)) {
3165  if (INFILE(_PHR_GPL2_OR_LATER_1) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3166  {
3167  INTERESTING(lDebug ? "PHR(GPL2_OR_LATER#2)" : "GPL-2.0-or-later");
3168  lmem[_mGPL] = 1;
3169  }
3170  else {
3171  INTERESTING(lDebug ? "LT(GPL-V2)" : "GPL-2.0-only");
3172  lmem[_mGPL] = 1;
3173  }
3174  }
3175  else if (INFILE(_PHR_GPL2_OR_LATER_2))
3176  {
3177  INTERESTING(lDebug ? "PHR(GPL2_OR_LATER#2)" : "GPL-2.0-or-later");
3178  lmem[_mGPL] = 1;
3179  }
3180  else if (INFILE(_LT_GPL3_PATENTS)) {
3181  if (INFILE(_TITLE_GPL3)) {
3182  INTERESTING(lDebug ? "GPL_v3(#1)" : "GPL-3.0-only");
3183  lmem[_mGPL] = 1;
3184  }
3185  else {
3186  INTERESTING("GPL-3.0-only-possibility");
3187  lmem[_mGPL] = 1;
3188  }
3189  }
3190  else if (INFILE(_TITLE_GPL3_ref3_later)) {
3191  INTERESTING("GPL-3.0-or-later");
3192  lmem[_mGPL] = 1;
3193  }
3194  else if (INFILE(_TITLE_GPL3_ref4_later)) {
3195  INTERESTING("GPL-3.0-or-later");
3196  lmem[_mGPL] = 1;
3197  }
3198  else if (INFILE(_TITLE_GPL3_ref3)) {
3199  INTERESTING("GPL-3.0-only");
3200  lmem[_mGPL] = 1;
3201  }
3202  if (INFILE(_LT_LGPL_1) || INFILE(_LT_LGPL_2) || INFILE(_LT_LGPL21_OR_LATER_GENERAL)) {
3203  if (INFILE(_PHR_LGPL21_OR_LATER_1) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3204  {
3205  INTERESTING("LGPL-2.1-or-later");
3206  lmem[_mLGPL] = 1;
3207  }
3208  else if (INFILE(_PHR_LGPL2_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3209  {
3210  INTERESTING("LGPL-2.0-or-later");
3211  lmem[_mLGPL] = 1;
3212  }
3213  else if (INFILE(_TITLE_LGPLV21)) {
3214  INTERESTING("LGPL-2.1-only");
3215  lmem[_mLGPL] = 1;
3216  }
3217  else if (INFILE(_TITLE_LGPLV2)) {
3218  INTERESTING("LGPL-2.0-only");
3219  lmem[_mLGPL] = 1;
3220  }
3221  else {
3222  INTERESTING("LGPL");
3223  lmem[_mLGPL] = 1;
3224  }
3225  }
3226  else if (INFILE(_LT_LGPL_3)) {
3227  if ((INFILE(_PHR_LGPL3_OR_LATER)
3228  || INFILE(_PHR_LGPL3_OR_LATER_ref1)
3229  || INFILE(_PHR_LGPL3_OR_LATER_ref2))
3230  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3231  {
3232  INTERESTING("LGPL-3.0-or-later");
3233  lmem[_mLGPL] = 1;
3234  }
3235  else if (INFILE(_TITLE_LGPL3)) {
3236  INTERESTING("LGPL-3.0-only");
3237  lmem[_mLGPL] = 1;
3238  }
3239  else {
3240  INTERESTING("LGPL-3.0-only-possibility");
3241  lmem[_mLGPL] = 1;
3242  }
3243  }
3244  if (INFILE(_LT_GFDL)) {
3245  cp = GFDLVERS();
3246  INTERESTING(lDebug ? "GFDL(#1)" : cp);
3247  lmem[_mGFDL] = 1;
3248  }
3249  if (!lmem[_mLGPL] && NOT_INFILE(_LT_MPL_SECONDARY)) { /* no FSF/GPL-like match yet */
3250  /*
3251  NOTE: search for LGPL before GPL; the latter matches
3252  occurrences of former
3253  */
3254  if (INFILE(_LT_GPL_FONT1) && INFILE(_LT_GPL_FONT2)) {
3255  INTERESTING(lDebug ? "GPL(fonts)" : "GPL-exception");
3256  lmem[_mGPL] = 1;
3257  }
3258  else if (INFILE(_LT_LGPL_ALT)) {
3259  cp = LGPLVERS();
3260  INTERESTING(lDebug ? "LGPL(alternate)" : cp);
3261  lmem[_mLGPL] = 1;
3262  }
3263  else if (INFILE(_LT_LGPL3_ref_later)) {
3264  INTERESTING("LGPL-3.0-or-later");
3265  lmem[_mLGPL] = 1;
3266  }
3267  else if (INFILE(_LT_LGPLref1)) {
3268  cp = LGPLVERS();
3269  INTERESTING(lDebug ? "LGPL(ref1)" : cp);
3270  lmem[_mLGPL] = 1;
3271  }
3272  else if (INFILE(_LT_LGPLref2) &&
3273  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3274  cp = LGPLVERS();
3275  INTERESTING(lDebug ? "LGPL(ref2#1)" : cp);
3276  lmem[_mLGPL] = 1;
3277  }
3278  else if (INFILE(_LT_LGPLref3)) {
3279  cp = LGPLVERS();
3280  INTERESTING(lDebug ? "LGPL(ref3)" : cp);
3281  lmem[_mLGPL] = 1;
3282  }
3283  else if (INFILE(_LT_LGPLref4)) {
3284  cp = LGPLVERS();
3285  INTERESTING(lDebug ? "LGPL(ref4)" : cp);
3286  lmem[_mLGPL] = 1;
3287  }
3288  else if (INFILE(_LT_LGPLref5)) {
3289  cp = LGPLVERS();
3290  INTERESTING(lDebug ? "LGPL(ref5)" : cp);
3291  lmem[_mLGPL] = 1;
3292  }
3293  else if (INFILE(_LT_LGPLref6)) {
3294  cp = LGPLVERS();
3295  INTERESTING(lDebug ? "LGPL(ref6)" : cp);
3296  lmem[_mLGPL] = 1;
3297  }
3298  else if (!lmem[_mLIBRE] && !lmem[_fREAL] &&
3299  INFILE(_LT_LGPLref7) &&
3300  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3301  cp = LGPLVERS();
3302  INTERESTING(lDebug ? "LGPL(ref7)" : cp);
3303  lmem[_mLGPL] = 1;
3304  }
3305  else if (!lmem[_fREAL] && !lmem[_mAPTANA] &&
3306  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_LT_LGPLref8) &&
3307  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3308  cp = LGPLVERS();
3309  INTERESTING(lDebug ? "LGPL(ref8)" : cp);
3310  lmem[_mLGPL] = 1;
3311  }
3312  else if (INFILE(_LT_LGPLref9) &&
3313  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3314  cp = LGPLVERS();
3315  INTERESTING(lDebug ? "LGPL(ref9)" : cp);
3316  lmem[_mLGPL] = 1;
3317  }
3318  else if (INFILE(_LT_LGPLref10) &&
3319  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3320  cp = LGPLVERS();
3321  INTERESTING(lDebug ? "LGPL(ref10)" : cp);
3322  lmem[_mLGPL] = 1;
3323  }
3324  else if (INFILE(_LT_LGPLref11)) {
3325  cp = LGPLVERS();
3326  INTERESTING(lDebug ? "LGPL(ref11)" : cp);
3327  lmem[_mLGPL] = 1;
3328  }
3329  else if (INFILE(_FILE_LGPL1) || INFILE(_FILE_LGPL2)) {
3330  cp = LGPLVERS();
3331  INTERESTING(lDebug ? "LGPL(deb)" : cp);
3332  lmem[_mLGPL] = 1;
3333  }
3334  else if (!LVAL(_TEXT_GNU_LIC_INFO) &&
3335  (URL_INFILE(_URL_LGPL_1) ||
3336  URL_INFILE(_URL_LGPL_2))) {
3337  cp = LGPLVERS();
3338  INTERESTING(lDebug ? "LGPL(url)" : cp);
3339  lmem[_mLGPL] = 1;
3340  }
3341  else if (lmem[_fREAL] && !LVAL(_TEXT_GNU_LIC_INFO) &&
3342  GPL_INFILE(_LT_LGPL_OR)) {
3343  cp = LGPLVERS();
3344  INTERESTING(lDebug ? "LGPL(or)" : cp);
3345  lmem[_mLGPL] = 1;
3346  }
3347  else if (INFILE(_PHR_LGPL21_OR_LATER_2)) {
3348  INTERESTING(lDebug ? "LGPL-2.1-or-later(_LATER_2)" : "LGPL-2.1-or-later");
3349  lmem[_mLGPL] = 1;
3350  }
3351  else if (INFILE(_PHR_LGPL21_ONLY_ref) || INFILE(_TITLE_LGPLV21_2)) {
3352  INTERESTING("LGPL-2.1-only");
3353  lmem[_mLGPL] = 1;
3354  }
3355  else if (INFILE(_TITLE_LGPL_NAMED)) {
3356  cp = LGPLVERS();
3357  INTERESTING(lDebug ? "LGPL(title)" : cp);
3358  lmem[_mLGPL] = 1;
3359  }
3360  }
3361  if (!lmem[_mGPL] && !HASTEXT(_TEXT_GCC, REG_EXTENDED)) {
3362  if (GPL_INFILE(_LT_GPL_ALT) && !INFILE(_LT_LGPL_ALT)) {
3363  cp = GPLVERS();
3364  INTERESTING(lDebug ? "GPL(alternate)" : cp);
3365  lmem[_mGPL] = 1;
3366  }
3367  else if ((GPL_INFILE(_LT_GPL3ref2) || GPL_INFILE(_PHR_GPL3_OR_LATER)
3368  || GPL_INFILE(_PHR_GPL3_OR_LATER_ref1) || GPL_INFILE(_PHR_GPL3_OR_LATER_ref2))
3369  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3370  {
3371  INTERESTING("GPL-3.0-or-later");
3372  lmem[_mGPL] = 1;
3373  }
3374  else if (GPL_INFILE(_LT_GPL3ref)) {
3375  INTERESTING(lDebug ? "GPL_v3(#2)" : "GPL-3.0-only");
3376  lmem[_mGPL] = 1;
3377  }
3378  else if (GPL_INFILE(_LT_GPL3ref3) && NOT_INFILE(_TITLE_LGPL3)) {
3379  INTERESTING("GPL-3.0-only");
3380  lmem[_mGPL] = 1;
3381  }
3382  else if (!lmem[_mLIBRE] && GPL_INFILE(_LT_GPLref1)
3383  && NOT_INFILE(_PHR_NOT_UNDER_GPL)
3384  && NOT_INFILE(_LT_LGPLref2)
3385  && NOT_INFILE(_PHR_GPL_COMPAT_3)) {
3386  /*
3387  * Special exceptions:
3388  * (1) LaTeX uses the following phrase:
3389  * "... why distributing LaTeX under the GNU General Public License (GPL)
3390  * was considered inappropriate".
3391  * (2) Python uses the following phrases:
3392  * "GPL-compatible doesn't mean that we're distributing Python under the GPL"
3393  * AND, "GPL-compatible licenses make it possible to combine Python with
3394  * other software that is released under the GPL.
3395  *****
3396  * These MUST be filtered. Do so by marking the GPL flag but don't assign
3397  * a license component (e.g., ignore GPL for this file)
3398  */
3399  if (INFILE(_PHR_LATEX_GPL_INAPPROPRIATE) ||
3400  INFILE(_PHR_PYTHON_NOTGPL_1) ||
3401  INFILE(_PHR_PYTHON_NOTGPL_2)) {
3402  lmem[_mGPL] = 1;
3403  }
3404  else if (!HASTEXT(_TEXT_GCC, REG_EXTENDED)
3405  && NOT_INFILE(_TITLE_D_FSL_10)){
3406  cp = GPLVERS();
3407  INTERESTING(cp);
3408  lmem[_mGPL] = 1;
3409  }
3410  }
3411  else if (INFILE(_LT_GPL_FSF)) {
3412  cp = GPLVERS();
3413  INTERESTING(lDebug ? "GPL(FSF)" : cp);
3414  lmem[_mGPL] = 1;
3415  }
3416  else if (GPL_INFILE(_LT_GPLref2)) {
3417  cp = GPLVERS();
3418  INTERESTING(lDebug ? "GPL(ref2)" : cp);
3419  lmem[_mGPL] = 1;
3420  }
3421  else if (GPL_INFILE(_LT_GPLref3)) {
3422  cp = GPLVERS();
3423  INTERESTING(lDebug ? "GPL(ref3)" : cp);
3424  lmem[_mGPL] = 1;
3425  }
3426  else if (INFILE(_LT_GPLref4)) {
3427  cp = GPLVERS();
3428  INTERESTING(lDebug ? "GPL(ref4)" : cp);
3429  lmem[_mGPL] = 1;
3430  }
3431  else if (GPL_INFILE(_LT_GPLref5)) {
3432  cp = GPLVERS();
3433  INTERESTING(lDebug ? "GPL(ref5)" : cp);
3434  lmem[_mGPL] = 1;
3435  }
3436  else if (GPL_INFILE(_LT_GPLref6)) {
3437  cp = GPLVERS();
3438  INTERESTING(lDebug ? "GPL(ref6)" : cp);
3439  lmem[_mGPL] = 1;
3440  }
3441  else if (GPL_INFILE(_LT_GPLref7)) {
3442  cp = GPLVERS();
3443  INTERESTING(lDebug ? "GPL(ref7)" : cp);
3444  lmem[_mGPL] = 1;
3445  }
3446  else if (GPL_INFILE(_LT_GPLref8)) {
3447  cp = GPLVERS();
3448  INTERESTING(lDebug ? "GPL(ref8)" : cp);
3449  lmem[_mGPL] = 1;
3450  }
3451  else if (INFILE(_LT_GPLref9)) {
3452  cp = GPLVERS();
3453  INTERESTING(lDebug ? "GPL(ref9)" : cp);
3454  lmem[_mGPL] = 1;
3455  }
3456  else if (GPL_INFILE(_LT_GPLref10)) {
3457  cp = GPLVERS();
3458  INTERESTING(lDebug ? "GPL(ref10)" : cp);
3459  lmem[_mGPL] = 1;
3460  }
3461  else if (INFILE(_LT_GPLref11)) {
3462  cp = GPLVERS();
3463  INTERESTING(lDebug ? "GPL(ref11)" : cp);
3464  lmem[_mGPL] = 1;
3465  }
3466  else if (INFILE(_LT_GPLref12)) {
3467  cp = GPLVERS();
3468  INTERESTING(lDebug ? "GPL(ref12)" : cp);
3469  lmem[_mGPL] = 1;
3470  }
3471  else if (GPL_INFILE(_LT_GPLref13)) {
3472  cp = GPLVERS();
3473  INTERESTING(lDebug ? "GPL(ref13)" : cp);
3474  lmem[_mGPL] = 1;
3475  }
3476  else if (GPL_INFILE(_LT_GPLref14) &&
3477  NOT_INFILE(_LT_LGPLref2)) {
3478  cp = GPLVERS();
3479  INTERESTING(lDebug ? "GPL(ref14)" : cp);
3480  lmem[_mGPL] = 1;
3481  }
3482  else if (INFILE(_LT_GPLref16)) {
3483  cp = GPLVERS();
3484  INTERESTING(lDebug ? "GPL(ref16)" : cp);
3485  lmem[_mGPL] = 1;
3486  }
3487  else if (INFILE(_LT_GPLref18)) {
3488  cp = GPLVERS();
3489  INTERESTING(lDebug ? "GPL(ref18)" : cp);
3490  lmem[_mGPL] = 1;
3491  }
3492  else if (INFILE(_LT_GPLref19)) {
3493  cp = GPLVERS();
3494  INTERESTING(lDebug ? "GPL(ref19)" : cp);
3495  lmem[_mGPL] = 1;
3496  }
3497  else if (INFILE(_LT_GPLref20)) {
3498  cp = GPLVERS();
3499  INTERESTING(lDebug ? "GPL(ref20)" : cp);
3500  lmem[_mGPL] = 1;
3501  }
3502  else if (!LVAL(_TEXT_GNU_LIC_INFO) && NOT_INFILE(_LT_INTEL_7) &&
3503  (URL_INFILE(_URL_GPL_1) ||
3504  URL_INFILE(_URL_GPL_2) ||
3505  URL_INFILE(_URL_GPL_3))) {
3506  cp = GPLVERS();
3507  INTERESTING(lDebug ? "GPL(url)" : cp);
3508  lmem[_mGPL] = 1;
3509  }
3510  else if (URL_INFILE(_URL_AGPL)) {
3511  cp = AGPLVERS();
3512  INTERESTING(lDebug ? "Affero(url)" : cp);
3513  lmem[_mGPL] = 1;
3514  }
3515  else if (!ltsr[_LT_LGPL_3] && INFILE(_LT_GPL_OR)) {
3516  cp = GPLVERS();
3517  INTERESTING(lDebug ? "GPL(or)" : cp);
3518  lmem[_mGPL] = 1;
3519  }
3520  else if (!lmem[_mGPL] && !lmem[_mLGPL] &&
3521  (INFILE(_LT_GNU_1) + INFILE(_LT_GNU_2) +
3522  INFILE(_LT_GNU_3) + INFILE(_LT_GNU_4) > 2)) {
3523  cp = GPLVERS();
3524  INTERESTING(lDebug ? "GPL(GNU)" : cp);
3525  lmem[_mGPL] = 1;
3526  }
3527  else if (!lmem[_mGPL] && !lmem[_mLGPL] &&
3528  INFILE(_LT_SEE_GPL) && INFILE(_LT_RECV_GPL)) {
3529  cp = GPLVERS();
3530  INTERESTING(lDebug ? "GPL(see)" : cp);
3531  lmem[_mGPL] = 1;
3532  }
3533  else if (!lmem[_mGPL] && !lmem[_mLGPL] &&
3534  INFILE(_LT_SEE_LGPL) && INFILE(_LT_RECV_LGPL)) {
3535  cp = LGPLVERS();
3536  INTERESTING(lDebug ? "LGPL(see)" : cp);
3537  lmem[_mLGPL] = 1;
3538  }
3539  }
3540  if (!lmem[_mGFDL] && (INFILE(_LT_GFDLref1) ||
3541  INFILE(_TITLE_GFDL))) {
3542  cp = GFDLVERS();
3543  INTERESTING(lDebug ? "GFDL(#2)" : cp);
3544  lmem[_mGFDL] = 1;
3545  }
3546  /*
3547  * Listed _explictly_ as an exception to the GPL -- this is NOT an 'else'
3548  * clause!
3549  */
3550  if (!lmem[_mGPL] && INFILE(_PHR_GPL_DESCRIPTIONS)) {
3551  INTERESTING(lDebug ? "GPL-kinda" : "GPL");
3552  lmem[_mGPL] = 1;
3553  }
3554  /* checking for FSF */
3555  if (INFILE(_LT_FSF_1)) {
3556  /* the retention notice alone, or with one of its two disclaimers */
3557  int wd = INFILE(_LT_FSFULLRWD), sd = INFILE(_LT_FSFULLRSD);
3558  if (wd) {
3559  INTERESTING("FSFULLRWD");
3560  }
3561  if (sd) {
3562  INTERESTING("FSFULLRSD");
3563  }
3564  if (!wd && !sd) {
3565  INTERESTING(lDebug ? "FSF(1)" : "FSFULLR");
3566  }
3567  lmem[_mLGPL] = 1;
3568  }
3569  else if (INFILE(_LT_FSF_2)) {
3570  INTERESTING(lDebug ? "FSF(2)" : "FSF");
3571  }
3572  else if (INFILE(_LT_FSF_3)) {
3573  INTERESTING(lDebug ? "FSF(3)" : "FSF");
3574  }
3575  else if (mCR_FSF() && INFILE(_LT_FSF_4)) {
3576  INTERESTING(lDebug ? "FSF(4)" : "FSF");
3577  }
3578  else if (!lmem[_mGPL] && mCR_FSF() && INFILE(_LT_FSF_5)) {
3579  INTERESTING(lDebug ? "FSF(5)" : "FSF");
3580  }
3581  else if (!lmem[_mGPL] && INFILE(_LT_FSFUL)) {
3582  INTERESTING("FSFUL");
3583  }
3584  else if (!lmem[_mGPL] && NOT_INFILE(_LT_Autoconf_exception_20) && INFILE(_LT_FSFref1)) {
3585  INTERESTING(lDebug ? "FSF(ref1)" : "FSF");
3586  }
3587  else if (INFILE(_LT_FSFref2)) {
3588  INTERESTING(lDebug ? "FSF(ref2)" : "FSF");
3589  }
3590  else if (INFILE(_LT_LGPLrefFSF) &&
3591  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3592  INTERESTING(lDebug ? "LGPL(FSF)" : "LGPL");
3593  lmem[_mLGPL] = 1;
3594  }
3595  if (!lmem[_mGPL] && !lmem[_mLGPL] && !lmem[_mGFDL]) {
3596  /*
3597  * Check these patterns AFTER checking for FSF and GFDL, and only if the
3598  * CUPS license isn't present.
3599  */
3600  if (!lmem[_mCUPS] ) {
3601  if (GPL_INFILE(_LT_GPLpatt1) &&
3602  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3603  cp = GPLVERS();
3604  INTERESTING(lDebug ? "GPL(patt1)" : cp);
3605  lmem[_mGPL] = 1;
3606  }
3607  else if (GPL_INFILE(_LT_GPLpatt2)) {
3608  cp = GPLVERS();
3609  INTERESTING(lDebug ? "GPL(patt2)" : cp);
3610  lmem[_mGPL] = 1;
3611  }
3612  else if (INFILE(_CR_rms) && INFILE(_LT_GPL_2)) {
3613  INTERESTING("GPL-rms");
3614  lmem[_mGPL] = 1;
3615  }
3616  else if (INFILE(_PHR_GPLISH_SAMPLE)) {
3617  INTERESTING(lDebug ? "GPLISH" : "GPL-possibility");
3618  INTERESTING(lDebug ? "GPLISH" : "LGPL-possibility");
3619  lmem[_mLGPL] = lmem[_mGPL] = 1;
3620  }
3621  }
3622  }
3623  else if (INFILE(_LT_GNU_COPYLEFT)) {
3624  INTERESTING("GNU-copyleft");
3625  lmem[_fGPL] = 1;
3626  }
3627  lmem[_fGPL] = lmem[_mLGPL]+lmem[_mGPL]+lmem[_mGFDL];
3628  }
3630  if (!lmem[_mGPL] && INFILE(_LT_GNU_PROJECTS)) {
3631  cp = GPLVERS();
3632  INTERESTING(lDebug ? "GPL(proj)" : cp);
3633  lmem[_mGPL] = 1;
3634  }
3636  if (HASTEXT(_LT_GPL_V2_NAMED_later, REG_EXTENDED) || HASTEXT(_TITLE_GPL2_ref1_later, REG_EXTENDED))
3637  {
3638  INTERESTING(lDebug ? "GPLV2+(named)" : "GPL-2.0-or-later");
3639  lmem[_mGPL] = 1;
3640  }
3641  else if (INFILE(_LT_TAPJOY) || INFILE(_LT_TAPJOY_ref1)) {
3642  INTERESTING("Tapjoy");
3643  lmem[_fGPL] = 1;
3644  lmem[_mMIT] = 1;
3645  }
3646  else if (!lmem[_mGPL] && !lmem[_mGFDL] && !lmem[_mLGPL] && !lmem[_fZPL]
3647  && (INFILE(_LT_GPL_NAMED)
3648  || INFILE(_LT_GPL_NAMED2)
3649  || HASTEXT(_LT_GPL_NAMED3, REG_EXTENDED))
3650  && !HASTEXT(_PHR_GPL_GHOSTSCRIPT, REG_EXTENDED)
3651  && NOT_INFILE(_LT_MPL_SECONDARY)
3652  && NOT_INFILE(_TEXT_NOT_GPL)
3653  && NOT_INFILE(_TEXT_NOT_GPL2)
3654  && NOT_INFILE(_LT_CNRI_PYTHON_GPL)
3655  && NOT_INFILE(_LT_W3Cref4)
3656  && NOT_INFILE(_LT_GPL_NAMED3_EXHIBIT)
3657  && NOT_INFILE(_LT_GPL_NAMED_COMPATIBLE)
3658  && !HASTEXT(_LT_GPL_NAMED_COMPATIBLE_1, REG_EXTENDED)
3659  && NOT_INFILE(_LT_GPL_NAMED_EXHIBIT)
3660  && NOT_INFILE(_TITLE_D_FSL_10)
3661  && NOT_INFILE(_LT_INTEL_7)
3662  && NOT_INFILE(_PHR_GPL_COMPAT_3)) {
3663  cp = GPLVERS();
3664  INTERESTING(lDebug ? "GPL(named)" : cp);
3665  lmem[_mGPL] = 1;
3666  }
3667  else if ( !lmem[_mGPL] && !INFILE(_TITLE_MIROS) && (INFILE(_LT_GPL_V2_NAMED) || INFILE(_LT_GPL_V2_NAMED_ref1)))
3668  {
3669  INTERESTING(lDebug ? "GPLV2(named)" : "GPL-2.0-only");
3670  lmem[_mGPL] = 1;
3671  }
3672  else if (!lmem[_mGPL] && INFILE(_LT_GPL_V3_NAMED_later))
3673  {
3674  INTERESTING(lDebug ? "GPLV3(named_later)" : "GPL-3.0-or-later");
3675  }
3676  else if (!lmem[_mGPL] && INFILE(_LT_GPL_V3_NAMED))
3677  {
3678  INTERESTING(lDebug ? "GPLV3(named)" : "GPL-3.0-only");
3679  }
3681  if (!lmem[_mLGPL] && (INFILE(_LT_LGPL_NAMED)
3682  || INFILE(_LT_LGPL_NAMED2)) && NOT_INFILE(_LT_GPL_NAMED_EXHIBIT)
3683  && NOT_INFILE(_LT_PHP_V30_2)) {
3684  cp = LGPLVERS();
3685  INTERESTING(lDebug ? "LGPL(named)" : cp);
3686  }
3687 
3689  /*
3690  * MIT, X11, Open Group, NEC -- text is very long, search in 2 parts
3691  */
3692  if (INFILE(_LT_JSON) && INFILE(_LT_MIT_NO_EVIL)) { // JSON license
3693  INTERESTING("JSON");
3694  lmem[_mMIT] = 1;
3695  }
3697  if (!lmem[_mWORDNET] && INFILE(_TITLE_WORDNET))
3698  {
3699  INTERESTING("WordNet-3.0");
3700  }
3702  if (INFILE(_CR_XFREE86_V10) || INFILE(_LT_XFREE86_V10)) {
3703  INTERESTING("XFree86-1.0");
3704  lmem[_mMIT] = 1;
3705  }
3706  else if (INFILE(_CR_XFREE86_V11) || INFILE(_LT_XFREE86_V11)) {
3707  INTERESTING("XFree86-1.1");
3708  lmem[_mMIT] = 1;
3709  }
3710  else if (INFILE(_LT_XFREE86)) {
3711  INTERESTING(lDebug ? "XFree86(1)" : "XFree86");
3712  lmem[_mMIT] = 1;
3713  }
3714  else if (INFILE(_LT_CCAI_1_0)) {
3715  INTERESTING("CCAI-1.0");
3716  lmem[_mMIT] = 1;
3717  }
3718  else if (INFILE(_LT_MODIFIED_MIT)) {
3719  /* modified text, not the pristine license */
3720  INTERESTING("MIT-style");
3721  lmem[_mMIT] = 1;
3722  }
3723  else if (HASTEXT(_LT_BSD_OR_MIT, REG_EXTENDED)) {
3724  INTERESTING("MIT");
3725  INTERESTING("BSD");
3726  lmem[_mMIT] = 1;
3727  }
3728  else if (HASTEXT(_LT_BSD_AND_MIT, REG_EXTENDED)) {
3729  INTERESTING("BSD");
3730  INTERESTING("MIT");
3731  lmem[_mMIT] = 1;
3732  }
3733  /*
3734  * MIT search order changed. First MIT license explicit phrases and references are checked .
3735  */
3736  else if (!lmem[_mMIT] && NOT_INFILE(_TITLE_MIT_EXHIBIT) && NOT_INFILE(_TITLE_SGI) &&
3737  (INFILE(_LT_MIT_1) || (INFILE(_TITLE_MIT) && NOT_INFILE(_PHR_NOT_MIT_LICENSE)))) {
3738  if(INFILE(_LT_MIT_NO_EVIL)) {
3739  INTERESTING(lDebug ? "MIT-style(no evil)" : "JSON");
3740  lmem[_mMIT] = 1;
3741  }
3742  else if (INFILE(_LT_MIT_2)) {
3743  if (INFILE(_LT_ZUORA_SOFTWARE)) {
3744  INTERESTING("Zuora-Software");
3745  lmem[_mMIT] = 1;
3746  }
3747  else if (INFILE(_LT_XILINX_2016)) {
3748  INTERESTING("Xilinx-2016");
3749  lmem[_mMIT] = 1;
3750  }
3751  else if (INFILE(_LT_X11_STANFORD)) {
3752  INTERESTING("X11-Style-Stanford-University");
3753  lmem[_mMIT] = 1;
3754  }
3755  else if (INFILE(_LT_X11_XCONSORTIUM_VEILLARD)) {
3756  INTERESTING("X11-Style-X-Consortium-Veillard");
3757  lmem[_mMIT] = 1;
3758  }
3759  else if (INFILE(_LT_X11_BITSTREAM)) {
3760  INTERESTING("Bitstream-Charter");
3761  lmem[_mMIT] = 1;
3762  }
3763  else if (INFILE(_LT_X11_TEKTRONIX)) {
3764  INTERESTING("X11-Style-Tektronix");
3765  lmem[_mMIT] = 1;
3766  }
3767  else if (INFILE(_LT_X11_IBM)) {
3768  INTERESTING("IBM-Derivative-Works");
3769  lmem[_mMIT] = 1;
3770  }
3771  else if (INFILE(_LT_X11_OAR)) {
3772  INTERESTING("OAR");
3773  lmem[_mMIT] = 1;
3774  }
3775  else if (INFILE(_LT_X11_ADOBE)) {
3776  INTERESTING("Adobe-Display-PostScript");
3777  lmem[_mMIT] = 1;
3778  }
3779  else if (INFILE(_LT_X11_LUCENT_VARIANT)) {
3780  INTERESTING("X11-Style-Lucent-variant");
3781  lmem[_mMIT] = 1;
3782  }
3783  else if (INFILE(_LT_X11_DEC1)) {
3784  INTERESTING("X11-Style-DEC-1");
3785  lmem[_mMIT] = 1;
3786  }
3787  else if (INFILE(_LT_X11_ACER)) {
3788  INTERESTING("X11-Style-Acer");
3789  lmem[_mMIT] = 1;
3790  }
3791  else if (INFILE(_LT_X11_LUCENT)) {
3792  INTERESTING("dtoa");
3793  lmem[_mMIT] = 1;
3794  }
3795  else if (INFILE(_LT_WORDNET_2)) {
3796  INTERESTING("WordNet");
3797  lmem[_mMIT] = 1;
3798  }
3799  else if (INFILE(_LT_WATERFALL_FEED_PARSER)) {
3800  INTERESTING("Waterfall-Feed-Parser");
3801  lmem[_mMIT] = 1;
3802  }
3803  else if (INFILE(_LT_WIDE_LICENSE)) {
3804  INTERESTING("WIDE");
3805  lmem[_mMIT] = 1;
3806  }
3807  else if (INFILE(_LT_WOODRUFF_2002)) {
3808  INTERESTING("Woodruff-Restricted-MIT-2002");
3809  lmem[_mMIT] = 1;
3810  }
3811  else if (INFILE(_LT_TANUKI_DEVELOPMENT)) {
3812  INTERESTING("Tanuki-Development-1.3");
3813  lmem[_mMIT] = 1;
3814  }
3815  else if (INFILE(_LT_TAKAO_ABE)) {
3816  INTERESTING("Takao-Abe");
3817  lmem[_mMIT] = 1;
3818  }
3819  else if (INFILE(_LT_SYNOPSYS_MIT)) {
3820  INTERESTING("Synopsys-MIT");
3821  lmem[_mMIT] = 1;
3822  }
3823  else if (INFILE(_LT_SYNTHESIS_TOOLKIT)) {
3824  INTERESTING("MIT-STK");
3825  lmem[_mMIT] = 1;
3826  }
3827  else if (INFILE(_LT_SUNSOFT)) {
3828  INTERESTING("Sunsoft");
3829  lmem[_mMIT] = 1;
3830  }
3831  else if (INFILE(_LT_SATA)) {
3832  INTERESTING("SATA");
3833  lmem[_mMIT] = 1;
3834  }
3835  else if (INFILE(_LT_SAAS_MIT)) {
3836  INTERESTING("SaaS-MIT");
3837  lmem[_mMIT] = 1;
3838  }
3839  else if (INFILE(_LT_PD_MIT)) {
3840  INTERESTING("Modified-MIT-for-Public-Domain-software");
3841  lmem[_mMIT] = 1;
3842  }
3843  else if (INFILE(_LT_OWTCHART)) {
3844  INTERESTING("OWTChart");
3845  lmem[_mMIT] = 1;
3846  }
3847  else if (INFILE(_LT_NODE_JS)) {
3848  INTERESTING("Node");
3849  lmem[_mMIT] = 1;
3850  }
3851  else if (INFILE(_LT_MIT_WITH_MODIFICATION_OBLIGATIONS)) {
3852  INTERESTING("HPND-export-US-modify");
3853  lmem[_mMIT] = 1;
3854  }
3855  else if (INFILE(_LT_MIT_README)) {
3856  INTERESTING("MIT-README");
3857  lmem[_mMIT] = 1;
3858  }
3859  else if (INFILE(_LT_MIT_OLD_STYLE)) {
3860  INTERESTING("Advanced-Cryptics-Dictionary");
3861  lmem[_mMIT] = 1;
3862  }
3863  else if (INFILE(_LT_MIT_ADDITION)) {
3864  INTERESTING("MIT-Wu");
3865  lmem[_mMIT] = 1;
3866  }
3867  else if (INFILE(_LT_MARKUS_KUHN_LICENSE)) {
3868  INTERESTING("HPND-Markus-Kuhn");
3869  lmem[_mMIT] = 1;
3870  }
3871  else if (INFILE(_LT_LIBGEOTIFF)) {
3872  INTERESTING("libgeoTiff");
3873  lmem[_mMIT] = 1;
3874  }
3875  else if (INFILE(_LT_LIBPBM)) {
3876  INTERESTING("xlock");
3877  lmem[_mMIT] = 1;
3878  }
3879  else if (INFILE(_LT_KHRONOS)) {
3880  INTERESTING("Khronos");
3881  lmem[_mMIT] = 1;
3882  }
3883  else if (INFILE(_LT_IAN_PIUMARTA)) {
3884  INTERESTING("Ian-Piumarta");
3885  lmem[_mMIT] = 1;
3886  }
3887  else if (INFILE(_LT_HIPPOCRATIC_1_2)) {
3888  INTERESTING("Hippocratic-v1.2");
3889  lmem[_mMIT] = 1;
3890  }
3891  else if (INFILE(_LT_HIPPOCRATIC_1_1) || INFILE(_LT_HIPPOCRATIC_1_1_ref)) {
3892  INTERESTING("Hippocratic-1.1");
3893  lmem[_mMIT] = 1;
3894  }
3895  else if (INFILE(_LT_HIPPOCRATIC_1_0)) {
3896  INTERESTING("Hippocratic-1.0");
3897  lmem[_mMIT] = 1;
3898  }
3899  else if (INFILE(_LT_HAPPY_BUNNY)) {
3900  INTERESTING("The-Happy-Bunny");
3901  lmem[_mMIT] = 1;
3902  }
3903  else if (INFILE(_LT_GHOSTPDL_PERMISSIVE)) {
3904  INTERESTING("Ghostpdl-Permissive");
3905  lmem[_mMIT] = 1;
3906  }
3907  else if (INFILE(_LT_FILAMENT_GROUP_MIT)) {
3908  INTERESTING("Filament-Group-MIT");
3909  lmem[_mMIT] = 1;
3910  }
3911  else if (INFILE(_LT_DROPBEAR_2016)) {
3912  INTERESTING("Dropbear-2016");
3913  lmem[_mMIT] = 1;
3914  }
3915  else if (INFILE(_LT_CRCALC)) {
3916  INTERESTING("CRCalc");
3917  lmem[_mMIT] = 1;
3918  }
3919  else if (INFILE(_LT_COMPASS)) {
3920  INTERESTING("Compass");
3921  lmem[_mMIT] = 1;
3922  }
3923  else if (INFILE(_LT_CLICK_LICENSE)) {
3924  INTERESTING("MIT-Click");
3925  lmem[_mMIT] = 1;
3926  }
3927  else if (INFILE(_LT_BSD_X11)) {
3928  INTERESTING("BSD-3-Clause-X11-disclaimer");
3929  lmem[_mMIT] = 1;
3930  }
3931  else if (INFILE(_LT_BPMN_IO)) {
3932  INTERESTING("bpmn.io");
3933  lmem[_mMIT] = 1;
3934  }
3935  else if (mCR_MIT() || (INFILE(_TITLE_MIT) && NOT_INFILE(_PHR_NOT_MIT_LICENSE))) {
3936  INTERESTING(lDebug ? "MIT(1)" : "MIT");
3937  lmem[_mMIT] = 1;
3938  }
3939  else if (INFILE(_TITLE_XNET)) {
3940  INTERESTING("Xnet");
3941  lmem[_mMIT] = 1;
3942  }
3943  else if (INFILE(_CR_X11) || INFILE(_TITLE_X11)) {
3944  INTERESTING(lDebug ? "X11(1)" : "X11");
3945  lmem[_mMIT] = 1;
3946  }
3947  else if (INFILE(_CR_XFREE86)) {
3948  INTERESTING(lDebug ? "XFree86(2)" : "XFree86");
3949  lmem[_mMIT] = 1;
3950  }
3951  /* MIT-advertising License */
3952  else if (INFILE(_LT_MIT_ADVERTISING)) {
3953  INTERESTING("MIT-advertising");
3954  lmem[_mMIT] = 1;
3955  }
3956  /* MIT-enna License */
3957  else if (INFILE(_LT_MIT_ENNA)) {
3958  INTERESTING("MIT-enna");
3959  lmem[_mMIT] = 1;
3960  }
3961  /* MIT-feh License */
3962  else if (INFILE(_LT_MIT_FEH)) {
3963  INTERESTING("MIT-feh");
3964  lmem[_mMIT] = 1;
3965  }
3966  /* MITNFA License */
3967  else if (HASTEXT(_LT_MITNFA, 0)) {
3968  INTERESTING("MITNFA");
3969  lmem[_mMIT] = 1;
3970  }
3971  /* Imlib2 License */
3972  else if (INFILE(_LT_Imlib2)) {
3973  INTERESTING("Imlib2");
3974  lmem[_mMIT] = 1;
3975  }
3976  else if (INFILE(_LT_MIT_13)) {
3977  INTERESTING(lDebug ? "MIT(14)" : "MIT");
3978  lmem[_mMIT] = 1;
3979  }
3980  /* NCSA */
3981  else if (INFILE(_TITLE_NCSA) && NOT_INFILE(_TITLE_NCSA_EXHIBIT)) {
3982  INTERESTING(lDebug ? "NCSA(1)" : "NCSA");
3983  lmem[_mMIT] = 1;
3984  lmem[_fNCSA] = 1;
3985  }
3986  else if (INFILE(_LT_MIT_0)) {
3987  INTERESTING("MIT-0");
3988  lmem[_mMIT] = 1;
3989  }
3990  else if (INFILE(_LT_COMMUNITY_SPEC_1_0)) {
3991  INTERESTING("Community-Spec-1.0");
3992  lmem[_mMIT] = 1;
3993  }
3994  else if (INFILE(_LT_DRL_1_1)) {
3995  INTERESTING("DRL-1.1");
3996  lmem[_mMIT] = 1;
3997  }
3998  else if (INFILE(_LT_DRL_1_0)) {
3999  INTERESTING("DRL-1.0");
4000  lmem[_mMIT] = 1;
4001  }
4002  else if (INFILE(_LT_X11_DISTRIBUTE_MODIFICATIONS_VARIANT)) {
4003  INTERESTING("X11-distribute-modifications-variant");
4004  lmem[_mMIT] = 1;
4005  }
4006  else if (NOT_INFILE(_LT_INTEL_7)) {
4007  INTERESTING(lDebug ? "MIT-style(1)" : "MIT-style");
4008  lmem[_mMIT] = 1;
4009  }
4010  }
4011  else if (INFILE(_LT_BITSTREAM_1)) {
4012  INTERESTING(lDebug ? "Bitstream(1)" : "Bitstream");
4013  lmem[_mMIT] = 1;
4014  }
4015  else if (mCR_X11()) {
4016  INTERESTING(lDebug ? "X11(2)" : "X11");
4017  }
4018  else if (!lmem[_mMPL] && INFILE(_LT_MPL_1)) {
4019  cp = MPLVERS(); /* NPL, too */
4020  INTERESTING(lDebug ? "MPL/NPL#5" : cp);
4021  lmem[_mMPL] = 1;
4022  }
4023  else if (!lmem[_mMIT] && (mCR_MIT() || (INFILE(_TITLE_MIT) && NOT_INFILE(_PHR_NOT_MIT_LICENSE))) && NOT_INFILE(_TITLE_MIT_EXHIBIT)) {
4024  INTERESTING(lDebug ? "MIT(2)" : "MIT");
4025  lmem[_mMIT] = 1;
4026  }
4027  /*
4028  * BOOST (relatively new, circa August 2003)
4029  * hmm, some references have a Copyright Notre Dame, some don't
4030  */
4031  else if (INFILE(_LT_BOOST_1)) {
4032  if (INFILE(_TITLE_BOOST10)) {
4033  INTERESTING("BSL-1.0");
4034  }
4035  else if (INFILE(_CR_NOTREDAME)) {
4036  INTERESTING(lDebug ? "Boost(ND)" : "BSL-1.0");
4037  }
4038  else if (INFILE(_TITLE_BOOST)) {
4039  INTERESTING("BSL-1.0");
4040  }
4041  else {
4042  INTERESTING("BSL-style");
4043  }
4044  }
4045  else if (mCR_MIT()) {
4046  INTERESTING(lDebug ? "MIT(3)" : "MIT");
4047  lmem[_mMIT] = 1;
4048  }
4049  else if (INFILE(_TITLE_ICU) || HASTEXT(_URL_ICU, REG_EXTENDED)) {
4050  INTERESTING(lDebug ? "MIT-style(ICU)" : "ICU");
4051  lmem[_mMIT] = 1;
4052  }
4053  else if (INFILE(_LT_ICU_2) && (INFILE(_CR_IBM_1) || INFILE(_CR_IBM_1))) {
4054  INTERESTING(lDebug ? "MIT-style(ICU)" : "ICU");
4055  lmem[_mMIT] = 1;
4056  }
4057  else if (INFILE(_TITLE_JasPer_20)) {
4058  INTERESTING(lDebug ? "JasPer(title)" : "JasPer-2.0");
4059  lmem[_mMIT] = 1;
4060  }
4061  else if (INFILE(_LT_UNICODE_4)) {
4062  INTERESTING(lDebug ? "MIT-style(Unicode)" : "Unicode");
4063  lmem[_fUNICODE] = 1;
4064  lmem[_mMIT] = 1;
4065  }
4066  /*
4067  * Adobe-Glyph
4068  */
4069  else if (HASTEXT(_LT_ADOBE_GLYPH_1, REG_EXTENDED) && INFILE(_LT_ADOBE_GLYPH_2)) {
4070  INTERESTING("Adobe-Glyph");
4071  }
4072  /*
4073  * Ubuntu Font
4074  */
4075  else if (INFILE(_LT_UBUNTU_FONT)) {
4076  INTERESTING("Ubuntu-font-1.0");
4077  }
4078  /*
4079  * OFL license text has MIT license warranty claims which is identifed as MIT-style
4080  */
4081  else if (!lmem[_fOFL]) {
4082  INTERESTING(lDebug ? "MIT-style(2)" : "MIT-style");
4083  lmem[_mMIT] = 1;
4084  }
4085  }
4086  /*
4087  * Secondly X11 and MIT style phrases are checked.
4088  */
4089  else if (INFILE(_LT_MIT_0) && (INFILE(_LT_MIT_2) || INFILE(_LT_MIT_3) || INFILE(_LT_MIT_4) ||
4090  INFILE(_LT_MIT_5) || INFILE(_LT_MIT_6) || INFILE(_LT_MIT_7))) {
4091  if(INFILE(_LT_MIT_NO_EVIL)) {
4092  INTERESTING(lDebug ? "MIT-style(no evil)" : "JSON");
4093  lmem[_mMIT] = 1;
4094  }
4095  else if (INFILE(_LT_X11_5)) {
4096  if (INFILE(_CR_XFREE86)) {
4097  INTERESTING(lDebug ? "XFree86(3)" : "XFree86");
4098  }
4099  else {
4100  INTERESTING(lDebug ? "X11(3)" : "X11");
4101  }
4102  lmem[_mMIT] = 1;
4103  }
4104  else if (INFILE(_LT_Xnet_STYLE)) {
4105  INTERESTING("Xnet");
4106  lmem[_mMIT] = 1;
4107  }
4108  else if (INFILE(_LT_TAPJOY)) {
4109  INTERESTING("Tapjoy");
4110  lmem[_mMIT] = 1;
4111  }
4112  else {
4113  /*
4114  * SPDX defines curl license. It has very typical MIT-style text. The only way to
4115  * identify it is to use copyright or copyright reference.
4116  */
4117  if (INFILE(_CR_CURL)) {
4118  INTERESTING("curl");
4119  }
4120  else {
4121  INTERESTING(lDebug ? "MIT-style(7)" : "MIT-style");
4122  }
4123  lmem[_mMIT] = 1;
4124  }
4125  }
4126  else if (INFILE(_LT_MIT_5)) {
4127  if (mCR_MIT()) {
4128  INTERESTING(lDebug ? "MIT(4)" : "MIT");
4129  }
4130  else {
4131  INTERESTING(lDebug ? "MIT-style(3)" : "MIT-style");
4132  }
4133  lmem[_mMIT] = 1;
4134  }
4136  /*
4137  * Open Group, NEC, MIT use the same text in licenses
4138  */
4139  if (INFILE(_LT_MIT_6)) {
4140  if (!lmem[_mMIT] && INFILE(_CR_OpenGroup)) {
4141  INTERESTING(lDebug ? "OpenGroup(1)" : "OpenGroup");
4142  lmem[_mMIT] = 1;
4143  }
4144  else if (!lmem[_mCMU] && mCR_CMU()) {
4145  INTERESTING(lDebug ? "CMU(2)" : "CMU-style");
4146  lmem[_mCMU] = 1;
4147  }
4148  else if (!lmem[_mMIT] && mCR_MIT()) {
4149  INTERESTING(lDebug ? "MIT(6)" : "MIT");
4150  lmem[_mMIT] = 1;
4151  }
4152  else if (!lmem[_mMIT] && INFILE(_LT_HPND_1) && INFILE(_LT_HPND_2)) {
4153  INTERESTING("HPND-sell-variant");
4154  lmem[_mMIT] = 1;
4155  }
4156  /*
4157  * _LT_MIT_6 is very similar to _LT_BSD_2 where MIT-CMU licenses
4158  * are also detected. Following else if is the copy from there.
4159  */
4160  else if (!lmem[_mMIT] && INFILE(_LT_CMU_7)) {
4161  if (INFILE(_CR_CMU_1) || INFILE(_CR_CMU_2) || INFILE(_CR_BSDCAL)) {
4162  INTERESTING("MIT-CMU");
4163  }
4164  else {
4165  INTERESTING("MIT-CMU-style");
4166  }
4167  lmem[_mCMU] = 1;
4168  }
4169  else if (!lmem[_mMIT]) {
4170  INTERESTING(lDebug ? "MIT-style(4)" : "MIT-style");
4171  lmem[_mMIT] = 1;
4172  }
4173  }
4174  else if (INFILE(_SPDX_MIT_0)) {
4175  INTERESTING("MIT-0");
4176  }
4177  else if (INFILE(_SPDX_MIT_advertising)) {
4178  INTERESTING("MIT-advertising");
4179  }
4180  else if (INFILE(_SPDX_MIT_enna)) {
4181  INTERESTING("MIT-enna");
4182  }
4183  else if (INFILE(_SPDX_MIT_feh)) {
4184  INTERESTING("MIT-feh");
4185  }
4186  else if (!lmem[_mMIT] && INFILE(_LT_MIT_7)) {
4187  if (INFILE(_CR_OpenGroup)) {
4188  INTERESTING(lDebug ? "OpenGroup(2)" : "OpenGroup");
4189  }
4190  else if (!lmem[_mMIT] && mCR_MIT()) {
4191  INTERESTING(lDebug ? "MIT(7)" : "MIT");
4192  lmem[_mMIT] = 1;
4193  }
4194  else {
4195  INTERESTING(lDebug ? "MIT-style(5)" : "MIT-style");
4196  lmem[_mMIT] = 1;
4197  }
4198  }
4199  else if ((!lmem[_mMIT] || mCR_MIT()) && INFILE(_LT_MITref1)) {
4200  INTERESTING(lDebug ? "MIT(ref1)" : "MIT");
4201  lmem[_mMIT] = 1;
4202  }
4203  else if (!lmem[_mMIT] && INFILE(_LT_MITref2)) {
4204  INTERESTING(lDebug ? "MIT(ref2)" : "MIT");
4205  lmem[_mMIT] = 1;
4206  }
4207  else if (!lmem[_mMIT] && INFILE(_LT_MITref6)) {
4208  INTERESTING(lDebug ? "MIT(ref6)" : "MIT");
4209  lmem[_mMIT] = 1;
4210  }
4211  else if (!lmem[_mMIT] && INFILE(_LT_MITref3)) {
4212  INTERESTING(lDebug ? "MIT(ref3)" : "MIT-style");
4213  lmem[_mMIT] = 1;
4214  }
4215  else if (!lmem[_mMIT] && INFILE(_LT_MITref4)) {
4216  INTERESTING(lDebug ? "MIT(ref4)" : "MIT");
4217  lmem[_mMIT] = 1;
4218  }
4219  else if (!lmem[_mMIT] && (INFILE(_LT_MITref5) || INFILE(_LT_MITref9))) {
4220  INTERESTING(lDebug ? "MIT(ref5)" : "MIT");
4221  lmem[_mMIT] = 1;
4222  }
4223  else if (INFILE(_SPDX_MIT_CMU)) {
4224  INTERESTING("MIT-CMU");
4225  }
4226  /* <MIT> matches inside MIT-Hippocratic-x.y, the hyphen being a boundary */
4227  else if (INFILE(_TITLE_HIPPOCRATIC_NAMED_21)) {
4228  INTERESTING("Hippocratic-2.1");
4229  }
4230  else if (INFILE(_TITLE_HIPPOCRATIC_NAMED_20)) {
4231  INTERESTING("Hippocratic-2.0");
4232  }
4233  else if (INFILE(_TITLE_HIPPOCRATIC_NAMED_12)) {
4234  INTERESTING("Hippocratic-v1.2");
4235  }
4236  else if (!lmem[_fREAL] && (INFILE(_SPDX_MIT))) {
4237  INTERESTING(lDebug ? "MIT(SPDX)" : "MIT");
4238  }
4239  else if (!lmem[_mMIT] && !lmem[_fREAL] && INFILE(_LT_MITref7)) {
4240  INTERESTING(lDebug ? "MIT(ref7)" : "MIT");
4241  lmem[_mMIT] = 1;
4242  }
4243  else if (!lmem[_mMIT] && INFILE(_LT_MITref8)) {
4244  INTERESTING(lDebug ? "MIT(ref8/9)" : "MIT");
4245  lmem[_mMIT] = 1;
4246  }
4247  else if (INFILE(_LT_OpenGroup_1)) {
4248  if (INFILE(_CR_OpenGroup)) {
4249  INTERESTING(lDebug ? "OpenGroup(3)" : "OpenGroup");
4250  }
4251  else {
4252  INTERESTING(lDebug ? "OG-style(3)" : "OpenGroup-style");
4253  }
4254  }
4255  else if (INFILE(_LT_OpenGroup_3)) {
4256  if (INFILE(_CR_OpenGroup)) {
4257  INTERESTING(lDebug ? "OpenGroup(5)" : "OpenGroup");
4258  }
4259  else {
4260  INTERESTING(lDebug ? "OG-style(5)" : "OpenGroup-style");
4261  }
4262  }
4263  else if (INFILE(_LT_OpenGroup_PROP)) {
4264  if (!lmem[_mXOPEN] && INFILE(_CR_XOPEN)) {
4265  INTERESTING("XOPEN-EULA");
4266  lmem[_mXOPEN] = 1;
4267  }
4268  else if (INFILE(_CR_OpenGroup)) {
4269  INTERESTING("OpenGroup-Proprietary");
4270  }
4271  else {
4272  INTERESTING("Proprietary");
4273  }
4274  }
4275  else if (INFILE(_LT_X11_1)) {
4276  if (mCR_X11()) {
4277  INTERESTING(lDebug ? "X11(4)" : "X11");
4278  }
4279  else {
4280  INTERESTING(lDebug ? "X11-style(2)" : "X11-style");
4281  }
4282  }
4283  else if (INFILE(_LT_X11_2)) {
4284  if (mCR_X11()) {
4285  INTERESTING(lDebug ? "X11(5)" : "X11");
4286  }
4287  else {
4288  INTERESTING(lDebug ? "X11-style(3)" : "X11-style");
4289  }
4290  }
4291  else if (INFILE(_LT_X11_3)) {
4292  if (mCR_X11()) {
4293  INTERESTING(lDebug ? "X11(6)" : "X11");
4294  }
4295  /*
4296  * Unix System Laboratories
4297  */
4298  else if (INFILE(_CR_USL_EUR)) {
4299  INTERESTING(lDebug ? "USLE(2)" : "USL-Europe");
4300  }
4301  else {
4302  INTERESTING(lDebug ? "X11-style(4)" : "X11-style");
4303  }
4304  }
4305  else if (INFILE(_LT_X11_4)) {
4306  if (mCR_X11()) {
4307  INTERESTING(lDebug ? "X11(7)" : "X11");
4308  }
4309  else {
4310  INTERESTING(lDebug ? "X11-style(5)" : "X11-style");
4311  }
4312  }
4313  else if (INFILE(_PHR_X11_1) || INFILE(_PHR_X11_2)) {
4314  INTERESTING(lDebug ? "PHR(X11)" : "X11");
4315  }
4316  else if (INFILE(_LT_X11_STYLE)) {
4317  INTERESTING(lDebug ? "X11-style(6)" : "X11-style");
4318  }
4319  /*
4320  * ISC License
4321  */
4322  if (INFILE(_PHR_ISC_1) || INFILE(_PHR_ISC_2) || HASTEXT(_URL_ISC, REG_EXTENDED)
4323  || INFILE(_TITLE_ISC)) {
4324  INTERESTING(lDebug ? "PHR(ISC)" : "ISC");
4325  lmem[_mISC] = 1;
4326  }
4327  else if (INFILE(_LT_MIT_4) && INFILE(_PHR_NO_WARRANTY_12)) {
4328  INTERESTING(lDebug ? "ISC(MIT-style(4))" : "ISC");
4329  lmem[_mISC] = 1;
4330  }
4331  else if (INFILE(_LT_MIT_8) && INFILE(_CR_ISC)) {
4332  INTERESTING(lDebug ? "ISC(MIT-style(8))" : "ISC");
4333  lmem[_mISC] = 1;
4334  }
4336  /*
4337  * NTP License, note that NTP license text is detected with _LT_BSD_2
4338  */
4339  if (INFILE(_TITLE_NTP)) {
4340  INTERESTING("NTP");
4341  lmem[_mNTP] = 1;
4342  }
4344  /* MirOS License (MirOS) */
4345  if (INFILE(_TITLE_MIROS)) {
4346  INTERESTING("MirOS");
4347  lmem[_mMIT] = 1;
4348  }
4350  /* Libpng license */
4351  if (INFILE(_TITLE_LIBPNG) && NOT_INFILE(_TITLE_ZLIB_LIBPNG)) {
4352  INTERESTING("Libpng");
4353  }
4354  else if (INFILE(_LT_W3C_1)) {
4355  if (INFILE(_CR_W3C)) {
4356  INTERESTING(lDebug ? "W3C(1)" : "W3C");
4357  }
4358  else {
4359  INTERESTING(lDebug ? "W3C-style(1)" : "W3C-style");
4360  }
4361  lmem[_fW3C] = 1;
4362  }
4363  else if (!lmem[_mNTP] && !lmem[_mPYTHON] && !lmem[_fBSD] && INFILE(_LT_W3C_2)) {
4364  if (INFILE(_LT_W3C_19980720)) {
4365  INTERESTING("W3C-19980720");
4366  }
4367  else if (INFILE(_CR_W3C)) {
4368  INTERESTING(lDebug ? "W3C(2)" : "W3C");
4369  }
4370  else {
4371  INTERESTING(lDebug ? "W3C-style(2)" : "W3C-style");
4372  }
4373  lmem[_fW3C] = 1;
4374  }
4375  else if (INFILE(_LT_W3C_3)) {
4376  if (INFILE(_LT_W3C_8)) {
4377  if (INFILE(_LT_W3C_20021231)) {
4378  INTERESTING("W3C");
4379  }
4380  else if (INFILE(_LT_W3C_20150513)) {
4381  INTERESTING("W3C-20150513");
4382  }
4383  }
4384  else if (INFILE(_CR_W3C)) {
4385  INTERESTING(lDebug ? "W3C(3)" : "W3C");
4386  }
4387  else if (INFILE(_LT_W3Cref4)) {
4388  INTERESTING(lDebug ? "W3C(ref4)" : "W3C");
4389  }
4390  else {
4391  INTERESTING(lDebug ? "W3C-style(3)" : "W3C-style");
4392  }
4393  lmem[_fW3C] = 1;
4394  }
4395  else if (INFILE(_LT_W3C_4) && NOT_INFILE(_LT_PNG_ZLIB_2)) {
4396  if (INFILE(_CR_W3C)) {
4397  INTERESTING(lDebug ? "W3C(4)" : "W3C");
4398  }
4399  else {
4400  INTERESTING(lDebug ? "W3C-style(4)" : "W3C-style");
4401  }
4402  lmem[_fW3C] = 1;
4403  }
4404  else if (INFILE(_LT_W3C_5)) {
4405  if (INFILE(_CR_W3C)) {
4406  INTERESTING(lDebug ? "W3C(5)" : "W3C");
4407  }
4408  else {
4409  INTERESTING(lDebug ? "W3C-style(5)" : "W3C-style");
4410  }
4411  lmem[_fW3C] = 1;
4412  }
4413  else if (INFILE(_LT_W3C_6)) {
4414  if (INFILE(_CR_W3C)) {
4415  INTERESTING(lDebug ? "W3C(6)" : "W3C");
4416  }
4417  else {
4418  INTERESTING(lDebug ? "W3C-style(6)" : "W3C-style");
4419  }
4420  lmem[_fW3C] = 1;
4421  }
4422  else if (INFILE(_LT_W3C_7)) {
4423  if (INFILE(_CR_W3C)) {
4424  INTERESTING(lDebug ? "W3C(7)" : "W3C");
4425  }
4426  else if (INFILE(_LT_OGC)) {
4427  INTERESTING("OGC");
4428  }
4429  else {
4430  INTERESTING(lDebug ? "W3C-style(7)" : "W3C-style");
4431  }
4432  lmem[_fW3C] = 1;
4433  }
4434  else if (INFILE(_LT_W3Cref1)) {
4435  INTERESTING(lDebug ? "W3C(ref1)" : "W3C");
4436  lmem[_fW3C] = 1;
4437  }
4438  else if (INFILE(_LT_W3Cref2)) {
4439  INTERESTING(lDebug ? "W3C(ref2)" : "W3C");
4440  lmem[_fW3C] = 1;
4441  }
4442  else if (INFILE(_LT_W3Cref3)) {
4443  INTERESTING(lDebug ? "W3C(ref3)" : "W3C");
4444  lmem[_fW3C] = 1;
4445  }
4446  else if (INFILE(_LT_W3Cref4)) {
4447  INTERESTING(lDebug ? "W3C(ref4)" : "W3C");
4448  lmem[_fW3C] = 1;
4449  }
4450  else if (URL_INFILE(_URL_W3C_20021231)) {
4451  INTERESTING(lDebug ? "W3C-20021231(url)" : "W3C");
4452  lmem[_fW3C] = 1;
4453  }
4454  else if (URL_INFILE(_URL_W3C_IP)) {
4455  INTERESTING(lDebug ? "W3C-IP(url)" : "W3C-IP");
4456  lmem[_fW3C] = 1;
4457  }
4458  else if (URL_INFILE(_URL_W3C)) {
4459  INTERESTING(lDebug ? "W3C(url)" : "W3C");
4460  lmem[_fW3C] = 1;
4461  }
4462  else if (INFILE(_TITLE_W3C)) {
4463  INTERESTING(lDebug ? "W3C(title)" : "W3C");
4464  lmem[_fW3C] = 1;
4465  }
4466  else if (!lmem[_mMIT] && INFILE(_LT_MIT_3)) {
4467  if (INFILE(_LT_NTP_0)) {
4468  INTERESTING("NTP-0");
4469  }
4470  else if (mCR_MIT()) {
4471  INTERESTING(lDebug ? "MIT(8)" : "MIT");
4472  }
4473  else {
4474  INTERESTING(lDebug ? "MIT-style(6)" : "MIT-style");
4475  }
4476  lmem[_mMIT] = 1;
4477  }
4478  else if (!lmem[_mMIT] && INFILE(_LT_MIT_4)) {
4479  if (mCR_MIT()) {
4480  INTERESTING(lDebug ? "MIT(9)" : "MIT");
4481  }
4482  else if (!lmem[_mISC] && mCR_FSF()) {
4483  INTERESTING(lDebug ? "FSF(7)" : "FSF");
4484  }
4485  else if (!lmem[_mISC]) {
4486  INTERESTING(lDebug ? "MIT-style(13)" : "MIT-style");
4487  }
4488  lmem[_mMIT] = 1;
4489  }
4490  else if (!lmem[_mMIT] && INFILE(_LT_MIT_8)) {
4491  if (INFILE(_CR_VIXIE)) {
4492  INTERESTING("Vixie");
4493  }
4494  else if (INFILE(_LT_0BSD)) {
4495  INTERESTING("0BSD");
4496  }
4497  else if (mCR_MIT()) {
4498  INTERESTING(lDebug ? "MIT(10)" : "MIT");
4499  }
4500  else if (HASTEXT(_TEXT_TU_BERLIN, 0) && HASTEXT(_LT_FREE_87,0)) {
4501  INTERESTING("TU-Berlin-2.0");
4502  }
4503  else {
4504  INTERESTING(lDebug ? "MIT-style(8)" : "MIT-style");
4505  }
4506  lmem[_mMIT] = 1;
4507  }
4508  else if (INFILE(_LT_MIT_9)) {
4509  if (INFILE(_CR_SLEEPYCAT)) {
4510  MEDINTEREST(lDebug ? "Sleepycat(2)" : "Sleepycat");
4511  }
4512  else if (INFILE(_CR_BSDCAL)) {
4513  INTERESTING(lDebug ? "BSD(mit)" : "BSD");
4514  lmem[_fBSD] = 1;
4515  }
4516  else if (INFILE(_CR_SUN)) {
4517  INTERESTING(lDebug ? "SUN(mit)" : "SUN");
4518  lmem[_fBSD] = 1;
4519  }
4520  else if (!lmem[_mMIT] && mCR_MIT()) {
4521  INTERESTING(lDebug ? "MIT(11)" : "MIT");
4522  lmem[_mMIT] = 1;
4523  }
4524  else if (!lmem[_mMIT]) {
4525  /*
4526  * Tcl/Tk license has MIT phrase
4527  */
4528  if (INFILE(_LT_TCL)) {
4529  INTERESTING("TCL");
4530  lmem[_fTCL] = 1;
4531  }
4532  else {
4533  INTERESTING(lDebug ? "MIT-style(9)" : "MIT-style");
4534  lmem[_mMIT] = 1;
4535  }
4536  }
4537  }
4538  else if (INFILE(_LT_MIT_10)) {
4539  if (!lmem[_mMIT] && mCR_MIT()) {
4540  INTERESTING(lDebug ? "MIT(12)" : "MIT");
4541  lmem[_mMIT] = 1;
4542  }
4543  else {
4544  INTERESTING(lDebug ? "MIT-style(10)" : "MIT-style");
4545  lmem[_mMIT] = 1;
4546  }
4547  }
4548  else if ((INFILE(_LT_MIROS_PREAMBLE) || INFILE(_TITLE_MIROS)) && INFILE(_LT_MIT_11)) {
4549  INTERESTING(lDebug ? "MIT-style(MirOS)" : "MirOS");
4550  lmem[_mMIT] = 1;
4551  }
4552  else if (INFILE(_LT_MIT_11)) {
4553  INTERESTING(lDebug ? "MIT-style(11)" : "MIT-style");
4554  lmem[_mMIT] = 1;
4555  }
4556  else if (!lmem[_mMIT] && INFILE(_LT_MITDOC)) {
4557  if (mCR_MIT()) {
4558  INTERESTING(lDebug ? "MIT(13)" : "MIT");
4559  }
4560  else {
4561  INTERESTING(lDebug ? "MIT-style(12)" : "MIT-style");
4562  }
4563  lmem[_mMIT] = 1;
4564  }
4565  else if (!lmem[_mMIT] && INFILE(_LT_MIT_0) && NOT_INFILE(_LT_ECL)) {
4566  INTERESTING(lDebug ? "MIT(0)" : "MIT-style");
4567  lmem[_mMIT] = 1;
4568  }
4569  else if (INFILE(_LT_MIT_14)) {
4570  INTERESTING(lDebug ? "MIT-style(14)" : "MIT-style");
4571  lmem[_mMIT] = 1;
4572  }
4573  else if (INFILE(_LT_MIT_15)) {
4574  INTERESTING(lDebug ? "MIT-style(15)" : "ISC-style");
4575  lmem[_mMIT] = 1;
4576  }
4577  else if (INFILE(_LT_MPL_OR_MITX)) {
4578  if (!lmem[_mMPL]) {
4579  cp = MPLVERS();
4580  INTERESTING(lDebug ? "MPL(with-MIT)" : cp);
4581  lmem[_mMPL] = 1;
4582  }
4583  if (!lmem[_mMIT]) {
4584  INTERESTING(lDebug ? "MIT(with-MPL)" : "MIT");
4585  lmem[_mMIT] = 1;
4586  }
4587  }
4588  else if (!lmem[_mMIT] && (URL_INFILE(_URL_MIT) || URL_INFILE(_URL_MIT_ROCK))) {
4589  INTERESTING(lDebug ? "MIT(url)" : "MIT");
4590  lmem[_mMIT] = 1;
4591  }
4592  else if (HASTEXT(_TEXT_TU_BERLIN, 0) && HASTEXT(_LT_FREE_87,0)) {
4593  INTERESTING("TU-Berlin-1.0");
4594  }
4595  else if (INFILE(_LT_NIST_1) && INFILE(_LT_NIST_2)) {
4596  INTERESTING(lDebug ? "NIST" : "MIT-style");
4597  }
4598  else if (INFILE(_LT_FSFAP)) {
4599  INTERESTING("FSFAP");
4600  }
4602  /*
4603  * Freeware with attribution (no registered copyright, attribution-only)
4604  */
4605  if (INFILE(_LT_Freeware_Attribution) || INFILE(_LT_Freeware_Attribution_2)) {
4606  INTERESTING("Freeware-Attribution");
4607  }
4609  /*
4610  * Generic CopyLeft licenses
4611  */
4612  if (INFILE(_LT_COPYLEFT_1)) {
4613  INTERESTING("CopyLeft-1");
4614  }
4615  else if (INFILE(_LT_COPYLEFT_2)) {
4616  INTERESTING("CopyLeft-2");
4617  }
4619  /*
4620  * OpenContent license
4621  */
4622  if (INFILE(_LT_OPENCONTENT)) {
4623  if (INFILE(_TITLE_OPENCL10)) {
4624  INTERESTING("OCL-1.0");
4625  }
4626  else if (INFILE(_TITLE_OPENCL)) {
4627  INTERESTING("OCL");
4628  }
4629  else {
4630  INTERESTING("OCL-style");
4631  }
4632  }
4634  /*
4635  * jpeg/netpbm and png/zlib and others...
4636  */
4637  if (INFILE(_TITLE_ZLIB) || INFILE(_PHR_ZLIB_SAME)) {
4638  INTERESTING("Zlib");
4639  }
4640  else if (INFILE (_LT_TRUECRYPT_30)) {
4641  INTERESTING("TrueCrypt-3.0");
4642  }
4643  else if (INFILE(_TITLE_LIBPNG) && NOT_INFILE(_TITLE_ZLIB_LIBPNG)) {
4644  INTERESTING("Libpng");
4645  }
4646  /* IJG */
4647  else if (INFILE(_LT_JPEG_1)) {
4648  INTERESTING(lDebug ? "JPEG(1)" : "IJG");
4649  lmem[_fIJG] = 1;
4650  }
4651  else if (INFILE(_LT_JPEG_2) && HASTEXT(_TITLE_IJG_2, 0)) {
4652  INTERESTING(lDebug ? "JPEG(2)" : "IJG");
4653  lmem[_fIJG] = 1;
4654  }
4655  /* Zlib */
4656  else if (INFILE(_SPDX_zlib_acknowledgement)) {
4657  INTERESTING("zlib-acknowledgement");
4658  }
4659  else if (!lmem[_fREAL] && (INFILE(_SPDX_Zlib))) {
4660  INTERESTING("Zlib");
4661  }
4662  else if (INFILE(_LT_PNG_ZLIB_1) && HASTEXT(_LT_PNG_ZLIB_CLAUSE_1, 0) && HASTEXT(_LT_PNG_ZLIB_CLAUSE_2, REG_EXTENDED) && HASTEXT(_LT_PNG_ZLIB_CLAUSE_3, 0)) {
4663  INTERESTING(lDebug ? "ZLIB(1)" : "Zlib");
4664  }
4665  else if (INFILE(_LT_PNG_ZLIBref4) && NOT_INFILE(_LT_PNG_ZLIBref4_EXHIBIT)) {
4666  INTERESTING(lDebug ? "ZLIB(6)" : "Zlib");
4667  }
4668  else if (!lmem[_fW3C] && INFILE(_LT_PNG_ZLIB_2)) {
4669  if (INFILE(_LT_libmng_2007_Clause_1)) {
4670  if (HASTEXT(_LT_libmng_2007_1, 0)) {
4671  INTERESTING("libmng-2007");
4672  }
4673  else if (INFILE(_LT_libpng_20_Clause_1)) {
4674  INTERESTING("libpng-2.0");
4675  }
4676  }
4677  else {
4678  INTERESTING(lDebug ? "PNG/ZLIB(2)" : "Libpng");
4679  }
4680  }
4681  else if (INFILE(_LT_PNG_ZLIBref1)) {
4682  INTERESTING(lDebug ? "ZLIB(3)" : "Zlib");
4683  }
4684  else if (INFILE(_LT_PNG_ZLIBref2)) {
4685  INTERESTING(lDebug ? "ZLIB(4)" : "Zlib");
4686  }
4687  else if (INFILE(_LT_PNG_ZLIBref3)) { /* might be zlib/libpng license, not sure */
4688  INTERESTING(lDebug ? "ZLIB(5)" : "Zlib-possibility");
4689  }
4690  else if (!LVAL(_TEXT_GNU_LIC_INFO) && (URL_INFILE(_URL_ZLIB_1) || URL_INFILE(_URL_ZLIB_2))) {
4691  INTERESTING(lDebug ? "ZLIB(url)" : "Zlib");
4692  }
4693 
4694  if (INFILE(_LT_INFO_ZIP) || URL_INFILE(_URL_INFO_ZIP)) {
4695  INTERESTING("Info-ZIP");
4696  }
4698  /*
4699  * IETF (primarily docs, RFCs, and protocol/standard proposals) . This
4700  * one is a little strange as text-formatters that print this license
4701  * will occasionally split the text across a page boundary. Here we
4702  * look for 2 separate footprints.
4703  */
4704  if (INFILE(_LT_IETF_1) || INFILE(_LT_IETF_2) || INFILE(_LT_IETF_3) ||
4705  INFILE(_LT_IETF_4)) {
4706  if (mCR_IETF()) {
4707  INTERESTING("IETF");
4708  }
4709  else if (INFILE(_LT_IETF_5)) {
4710  INTERESTING("IETF");
4711  }
4712  else if (HASTEXT(_LT_IETF_7, 0)) {
4713  INTERESTING("IETF");
4714  }
4715  else if (INFILE(_CR_OASIS)) {
4716  INTERESTING("OASIS");
4717  }
4718  else {
4719  INTERESTING("IETF-style");
4720  }
4721  }
4722  /*
4723  * IETF Trust's Legal Provisions
4724  */
4725  else if (INFILE(_LT_IETF_6)) {
4726  INTERESTING("IETF");
4727  }
4728  /*
4729  * Contributions to IETF Standard Process
4730  */
4731  else if (INFILE(_LT_IETF_7)) {
4732  INTERESTING("IETF-contribution");
4733  }
4735  /*
4736  * CDDL
4737  */
4738  if (INFILE(_PHR_CDDL_1) || HASTEXT(_PHR_CDDL_2, REG_EXTENDED)) {
4739  cp = CDDLVERS();
4740  INTERESTING(cp);
4741  lmem[_mCDDL] = 1;
4742  }
4744  /*
4745  * MPL (Mozilla)
4746  * ... Sun SISSL and one Mozilla licensing derivative share wording
4747  */
4748  if (!lmem[_fREAL] && NOT_INFILE(_LT_CPALref) && NOT_INFILE(_TITLE_GSOAP) &&
4749  (INFILE(_LT_MPL_OR) || INFILE(_TITLE_MPL_ref))) {
4750  cp = MPLVERS(); /* NPL, too */
4751  INTERESTING(lDebug ? "MPL/NPL#2" : cp);
4752  lmem[_mMPL] = 1;
4753  }
4754  if (INFILE(_LT_CPALref)) {
4755  if (INFILE(_TITLE_CPAL10)) {
4756  INTERESTING(lDebug ? "CPAL_v1.0(#2)" : "CPAL-1.0");
4757  lmem[_mMPL] = 1;
4758  lmem[_fATTRIB] = 1;
4759  }
4760  else if (INFILE(_TITLE_CPAL)) {
4761  INTERESTING(lDebug ? "CPAL(#2)" : "CPAL");
4762  lmem[_mMPL] = 1;
4763  lmem[_fATTRIB] = 1;
4764  }
4765  }
4766  else if (INFILE(_LT_CPAL_V1_ref)) {
4767  INTERESTING(lDebug ? "CPAL_v1.0(#3)" : "CPAL-1.0");
4768  lmem[_mMPL] = 1;
4769  lmem[_fATTRIB] = 1;
4770  }
4771  else if (INFILE(_TITLE_CPAL10) || INFILE(_TITLE_CPAL_ABBREV)) {
4772  INTERESTING(lDebug ? "CPAL_v1.0(#4)" : "CPAL-1.0");
4773  lmem[_mMPL] = 1;
4774  lmem[_fATTRIB] = 1;
4775  }
4776 
4777  /*
4778  * Server Side Public License
4779  */
4780  if (INFILE(_TITLE_SSPL) || INFILE(_PHR_SSPL_ref) || URL_INFILE(_URL_SSPL)) {
4781  INTERESTING("SSPL-1.0");
4782  }
4783 
4784  /*
4785  * Sonar Source-Available License
4786  */
4787  if (INFILE(_TITLE_SSAL_101)) {
4788  INTERESTING(lDebug ? "SSAL(title)" : "SSAL-1.0.1");
4789  }
4790  else if (INFILE(_TITLE_SSAL_10) || INFILE(_PHR_SSAL_ABBREV)) {
4791  /* v1.0's title is a prefix of v1.0.1's, so this must stay below it */
4792  INTERESTING(lDebug ? "SSAL(title)" : "SSAL-1.0");
4793  }
4794  else if (INFILE(_TITLE_SSAL) || INFILE(_LT_SSAL)) {
4795  /* named or quoted, but with no version anywhere to pin it to */
4796  INTERESTING(lDebug ? "SSAL(bare)" : "SSAL");
4797  }
4798  if (!lmem[_mMPL] && INFILE(_LT_MPL_2)) {
4799  if (INFILE(_TITLE_SISSL)) {
4800  cp = SISSLVERS();
4801  INTERESTING(lDebug ? "SISSL(MPL)" : cp);
4802  lmem[_mSUN] = 1;
4803  }
4804  else if (INFILE(_TITLE_SUN_PL10)) {
4805  INTERESTING("SPL-1.0");
4806  lmem[_mSUN] = 1;
4807  }
4808  else if (INFILE(_TITLE_SUN_PL)) {
4809  INTERESTING("SPL");
4810  lmem[_mSUN] = 1;
4811  }
4812  else if (INFILE(_TITLE_IDPL_V10)) {
4813  INTERESTING("IDPL-1.0");
4814  lmem[_mMPL] = 1;
4815  }
4816  else if (INFILE(_TITLE_IDPL)) {
4817  INTERESTING("IDPL");
4818  lmem[_mMPL] = 1;
4819  }
4820  else if (INFILE(_TITLE_INTERBASE)) {
4821  INTERESTING("Interbase-1.0");
4822  lmem[_mMPL] = 1;
4823  }
4824  else if (INFILE(_TITLE_NETIZEN_V10)) {
4825  INTERESTING("NOSL-1.0");
4826  lmem[_mMPL] = 1;
4827  }
4828  else if (INFILE(_TITLE_NETIZEN)) {
4829  INTERESTING(lDebug ? "NOSL(#1)" : "NOSL");
4830  lmem[_mMPL] = 1;
4831  }
4832  else if (INFILE(_TITLE_TPL10)) {
4833  INTERESTING(lDebug ? "TPL(v1.0#1)" : "MPL.TPL-1.0");
4834  lmem[_mMPL] = 1;
4835  }
4836  else if (INFILE(_TITLE_TPL)) {
4837  INTERESTING(lDebug ? "TPL(#1)" : "MPL.TPL");
4838  lmem[_mMPL] = 1;
4839  }
4840  else if (INFILE(_TITLE_GSOAP_V13)) {
4841  INTERESTING("gSOAP-1.3b");
4842  lmem[_mGSOAP] = 1;
4843  }
4844  else if (INFILE(_TITLE_GSOAP)) {
4845  INTERESTING("gSOAP");
4846  lmem[_mGSOAP] = 1;
4847  }
4848  else if (INFILE(_TITLE_FLASH2XML10)) {
4849  INTERESTING("Flash2xml-1.0");
4850  }
4851  else if (INFILE(_TITLE_NOKIA10A)) {
4852  INTERESTING("Nokia");
4853  lmem[_mMPL] = 1;
4854  }
4855  else if (INFILE(_LT_NOKIA)) {
4856  INTERESTING("Nokia");
4857  lmem[_mMPL] = 1;
4858  }
4859  else if (INFILE(_TITLE_OPENPL10)) {
4860  INTERESTING("OPL-1.0");
4861  }
4862  else if (INFILE(_TITLE_SNIA_V11)) {
4863  INTERESTING("SNIA-1.1");
4864  }
4865  else if (INFILE(_TITLE_SNIA_V10)) {
4866  INTERESTING("SNIA-1.0");
4867  }
4868  else if (INFILE(_TITLE_CPAL10)) {
4869  INTERESTING(lDebug ? "CPAL_v1.0(#1)" : "CPAL-1.0");
4870  lmem[_mMPL] = 1;
4871  lmem[_fATTRIB] = 1;
4872  }
4873  else if (INFILE(_TITLE_CPAL)) {
4874  INTERESTING(lDebug ? "CPAL(#1)" : "CPAL");
4875  lmem[_mMPL] = 1;
4876  lmem[_fATTRIB] = 1;
4877  }
4878  else if (HASTEXT(_TEXT_MOZNET, REG_EXTENDED)) {
4879  if (INFILE(_TITLE_SUGARCRM_PL)) {
4880  INTERESTING("SugarCRM-1.1.3");
4881  lmem[_mMPL] = 1;
4882  lmem[_fATTRIB] = 1;
4883  }
4884  else if (!lmem[_mMPL] && !lmem[_fREAL] && INFILE(_TITLE_MOZNET_PL)) {
4885  cp = MPLVERS(); /* NPL, too */
4886  INTERESTING(lDebug ? "MPL/NPL#1" : cp);
4887  lmem[_mMPL] = 1;
4888  }
4889  }
4890  else if (INFILE(_TITLE_RHeCos_V11)) {
4891  INTERESTING("RHeCos-1.1");
4892  }
4893  else if (INFILE(_TITLE_CYGNUS_ECOS_V10)) {
4894  INTERESTING("Cygnus-eCos-1.0");
4895  }
4896  else if (INFILE(_TITLE_H2_V10)) {
4897  INTERESTING("H2-1.0");
4898  }
4899  else {
4900  if (!lmem[_mCDDL]) {
4901  INTERESTING("MPL-style");
4902  lmem[_mMPL] = 1;
4903  }
4904  }
4905  }
4906  else if (!lmem[_mMPL] && (INFILE(_LT_NPLref) || INFILE(_LT_NPL_1))) {
4907  cp = MPLVERS(); /* NPL, too */
4908  INTERESTING(lDebug ? "MPL/NPL#3" : cp);
4909  lmem[_mMPL] = 1;
4910  }
4911  else if (!lmem[_mMPL] && INFILE(_LT_MPLref1)) {
4912  cp = MPLVERS(); /* NPL, too */
4913  INTERESTING(lDebug ? "MPL/NPL-ref#1" : cp);
4914  lmem[_mMPL] = 1;
4915  }
4916  else if (!lmem[_mMPL] && INFILE(_LT_IDPLref)) {
4917  if (INFILE(_TITLE_IDPL_V10)) {
4918  INTERESTING(lDebug ? "IDPL-v1(ref)" : "IDPL-1.0");
4919  }
4920  else {
4921  INTERESTING(lDebug ? "IDPL(ref)" : "IDPL");
4922  }
4923  lmem[_mMPL] = 1;
4924  }
4925  else if (!lmem[_mMPL] && !lmem[_mLIBRE] && !lmem[_fREAL] &&
4926  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_LT_MPLref2)) {
4927  cp = MPLVERS(); /* NPL, too */
4928  INTERESTING(lDebug ? "MPL/NPL-ref#2" : cp);
4929  lmem[_mMPL] = 1;
4930  }
4931  else if (!lmem[_mMPL] && !lmem[_mLIBRE] && !lmem[_fREAL] &&
4932  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_TITLE_MOZNET_PL)) {
4933  cp = MPLVERS(); /* NPL, too */
4934  INTERESTING(lDebug ? "MPL/NPL#4" : cp);
4935  lmem[_mMPL] = 1;
4936  }
4937  else if (!lmem[_mMPL] && INFILE(_TITLE_NETSCAPE_EULA)) {
4938  INTERESTING("NPL-EULA");
4939  lmem[_mMPL] = 0;
4940  }
4941  else if (INFILE(_LT_NPL_2)) {
4942  INTERESTING(lDebug ? "NPL(#1)" : "NPL");
4943  lmem[_mMPL] = 0;
4944  }
4945  else if (INFILE(_TITLE_OPENPL)) {
4946  INTERESTING(lDebug ? "OPL(title)" : "OPL-style");
4947  }
4949  /*
4950  * Microsoft licenses: open and proprietary/EULA
4951  */
4952  if (INFILE(_LT_MSCORP_SSLref)) {
4953  INTERESTING(lDebug ? "MS-SSL(ref)" : "MS-SSL");
4954  lmem[_fMSCORP] = 1;
4955  }
4956  if (INFILE(_LT_MSCORP_PL)) {
4957  int ms_l = INFILE(_LT_MSCORP_LIMITED);
4958  int ms_r = INFILE(_LT_MSCORP_RL);
4959  if (ms_r && ms_l) {
4960  INTERESTING("MS-LRL");
4961  }
4962  else if (ms_r) {
4963  INTERESTING(lDebug ? "MS-RL(#1)" : "MS-RL");
4964  }
4965  else if (ms_l) {
4966  INTERESTING("MS-LPL");
4967  }
4968  else {
4969  INTERESTING(lDebug ? "MS-PL(#1)" : "MS-PL");
4970  }
4971  }
4972  else if (INFILE(_LT_MSCORP_LIMITEDref1)) {
4973  INTERESTING("MS-LPL");
4974  lmem[_fMSCORP] = 1;
4975  }
4976 
4977  if (INFILE(_TEXT_MICROSOFT)) {
4978  if (INFILE(_LT_MSCORP_INDEMNIFY)) {
4979  INTERESTING("MS-indemnity");
4980  lmem[_fMSCORP] = 1;
4981  }
4982  else if (INFILE(_LT_MSCORP_IP_1)) {
4983  INTERESTING(lDebug ? "MS-IP(1)" : "MS-IP");
4984  lmem[_fMSCORP] = 1;
4985  }
4986  else if (INFILE(_LT_MSCORP_IP_2)) {
4987  INTERESTING(lDebug ? "MS-IP(2)" : "MS-IP");
4988  lmem[_fMSCORP] = 1;
4989  }
4990  else if (INFILE(_LT_MSCORP_PLref1)) {
4991  INTERESTING(lDebug ? "MS-PL(ref1)" : "MS-PL");
4992  lmem[_fMSCORP] = 1;
4993  }
4994  else if (INFILE(_LT_MSCORP_PLref2)) {
4995  INTERESTING(lDebug ? "MS-PL(ref2)" : "MS-PL");
4996  lmem[_fMSCORP] = 1;
4997  }
4998  else if (INFILE(_LT_MSCORP_PLref3)) {
4999  INTERESTING(lDebug ? "MS-PL(ref3)" : "MS-PL");
5000  lmem[_fMSCORP] = 1;
5001  }
5002  else if (INFILE(_LT_MSCORP_RLref)) {
5003  INTERESTING(lDebug ? "MS-RL(ref)" : "MS-RL");
5004  lmem[_fMSCORP] = 1;
5005  }
5006  else if (INFILE(_TITLE_MSCORP_RL)) {
5007  INTERESTING(lDebug ? "MS-RL(title)" : "MS-RL");
5008  lmem[_fMSCORP] = 1;
5009  }
5010  else if (INFILE(_TITLE_MSCORP_PL)) {
5011  INTERESTING(lDebug ? "MS-PL(title)" : "MS-PL");
5012  lmem[_fMSCORP] = 1;
5013  }
5014  else if (INFILE(_LT_MSCORP_REFLIC)) {
5015  INTERESTING("MRL");
5016  lmem[_fMSCORP] = 1;
5017  }
5018  else if (INFILE(_LT_MSCORP_EULA_1) ||
5019  INFILE(_TITLE_MSCORP_EULA)) {
5020  INTERESTING(lDebug ? "MS-EULA(1)" : "MS-EULA");
5021  lmem[_fMSCORP] = 1;
5022  }
5023  else if (INFILE(_LT_MSCORP_EULA_2)) {
5024  INTERESTING(lDebug ? "MS-EULA(2)" : "MS-EULA");
5025  lmem[_fMSCORP] = 1;
5026  }
5027  else if (INFILE(_LT_MSCORP_EULA_3)) {
5028  INTERESTING(lDebug ? "MS-EULA(3)" : "MS-EULA");
5029  lmem[_fMSCORP] = 1;
5030  }
5031  else if (INFILE(_LT_MSCORP_EULA_4)) {
5032  INTERESTING(lDebug ? "MS-EULA(4)" : "MS-EULA");
5033  lmem[_fMSCORP] = 1;
5034  }
5035  else if (INFILE(_LT_MSCORP_EULA_5)) {
5036  INTERESTING(lDebug ? "MS-EULA(5)" : "MS-EULA");
5037  lmem[_fMSCORP] = 1;
5038  }
5039  else if (INFILE(_LT_MSCORP_EULA_6)) {
5040  INTERESTING(lDebug ? "MS-EULA(6)" : "MS-EULA");
5041  lmem[_fMSCORP] = 1;
5042  }
5043  else if (INFILE(_LT_MSCORP_1)) {
5044  INTERESTING(lDebug ? "MS(1)" : "Microsoft");
5045  lmem[_fMSCORP] = 1;
5046  }
5047  else if (INFILE(_LT_MSCORP_2)) {
5048  INTERESTING(lDebug ? "MS(2)" : "Microsoft");
5049  lmem[_fMSCORP] = 1;
5050  }
5051  else if (INFILE(_LT_MSCORP_3)) {
5052  INTERESTING(lDebug ? "MS(3)" : "Microsoft");
5053  lmem[_fMSCORP] = 1;
5054  }
5055  else if (INFILE(_LT_MSCORP_4)) {
5056  INTERESTING(lDebug ? "MS(4)" : "Microsoft");
5057  lmem[_fMSCORP] = 1;
5058  }
5059  else if (INFILE(_LT_MSCORP_5)) {
5060  INTERESTING(lDebug ? "MS(5)" : "Microsoft");
5061  lmem[_fMSCORP] = 1;
5062  }
5063  else if (INFILE(_LT_MSCORPref1)) {
5064  INTERESTING("Microsoft");
5065  lmem[_fMSCORP] = 1;
5066  }
5067  }
5069  /*
5070  * Santa Cruz Operation (SCO)
5071  */
5072  if (INFILE(_LT_SCO_COMM) && INFILE(_CR_SCO)) {
5073  INTERESTING("SCO.commercial");
5074  }
5076  /*
5077  * Zonealarm
5078  */
5079  if (INFILE(_LT_ZONEALARM) && INFILE(_TITLE_ZONEALARM_EULA)) {
5080  INTERESTING("ZoneAlarm-EULA");
5081  }
5083  /*
5084  * Ximian
5085  */
5086  if (HASTEXT(_TEXT_XIMIAN, 0)) {
5087  if (INFILE(_CR_XIMIAN)) {
5088  if (INFILE(_LT_XIMIAN)) {
5089  if (INFILE(_TITLE_XIMIANLOGO10)) {
5090  INTERESTING("Ximian-1.0");
5091  }
5092  else if (INFILE(_TITLE_XIMIANLOGO)) {
5093  INTERESTING("Ximian");
5094  }
5095  }
5096  }
5097  }
5099  /*
5100  * Xerox
5101  */
5102  if (HASTEXT(_TEXT_XEROX, 0)) {
5103  if (INFILE(_LT_XEROX_1) || INFILE(_LT_XEROX_2)) {
5104  if (INFILE(_CR_XEROX_1) || INFILE(_CR_XEROX_2)) {
5105  INTERESTING("Xerox");
5106  }
5107  else {
5108  INTERESTING("Xerox-style");
5109  }
5110  }
5111  }
5113  /*
5114  * Artifex Software
5115  */
5116  if (INFILE(_LT_ARTIFEX) && INFILE(_CR_ARTIFEX)) {
5117  INTERESTING("Artifex");
5118  }
5120  /*
5121  * AGE logic
5122  */
5123  if (INFILE(_LT_AGE) && INFILE(_CR_AGE)) {
5124  INTERESTING("AGE-Logic");
5125  }
5127  /*
5128  * OpenSSL
5129  */
5130  if (INFILE(_LT_OPENSSLref1) || INFILE(_LT_OPENSSLref2) ||
5131  INFILE(_LT_OPENSSLref3) || INFILE(_LT_OPENSSLref4) ||
5132  INFILE(_LT_OPENSSLref6) || INFILE(_LT_OPENSSLref7) ||
5133  INFILE(_LT_OPENSSLref8) || INFILE(_LT_OPENSSLref9) ) {
5134  INTERESTING(lDebug ? "OpenSSL(ref)" : "OpenSSL");
5135  }
5136  else if (INFILE(_SPDX_OpenSSL) || INFILE(_URL_OPENSSL)) {
5137  INTERESTING(lDebug ? "OpenSSL(phr)" : "OpenSSL");
5138  }
5140  /*
5141  * Dual OpenSSL SSLeay
5142  */
5143  if (INFILE(_LT_COMBINED_OPENSSL_SSLEAY)) {
5144  INTERESTING("OpenSSL");
5145  INTERESTING("SSLeay");
5146  }
5148  /*
5149  * Ruby. Ruby is a dual license which allows distribution also under GPL.
5150  * GPL was earlier recognized beside Ruby here but GPL was not identified
5151  * in all Ruby cases. Therefore GPL statements have bee removed.
5152  */
5153  if (INFILE(_LT_RUBY) || INFILE(_TITLE_RUBY) || INFILE(_PHR_RUBY_SAME)) {
5154  INTERESTING("Ruby");
5155  lmem[_fRUBY] = 1;
5156  }
5157  else if (INFILE(_LT_RUBYref1)) {
5158  INTERESTING(lDebug ? "Ruby(ref1)" : "Ruby");
5159  }
5160  else if (INFILE(_LT_RUBYref2)) {
5161  INTERESTING(lDebug ? "Ruby(ref2)" : "Ruby");
5162  }
5163  else if (INFILE(_LT_RUBYref3)) {
5164  INTERESTING(lDebug ? "Ruby(ref3)" : "Ruby");
5165  }
5166  else if (INFILE(_LT_RUBYref4)) {
5167  INTERESTING(lDebug ? "Ruby(ref4)" : "Ruby");
5168  }
5169  else if (INFILE(_LT_RUBYref5)) {
5170  INTERESTING(lDebug ? "Ruby(ref5)" : "Ruby");
5171  }
5172  else if (INFILE(_LT_RUBYref6)) {
5173  INTERESTING(lDebug ? "Ruby(ref6)" : "Ruby");
5174  }
5176  /*
5177  * Python and EGenix.com look a bit alike
5178  * Q: should all these Python rhecks be a family-check like OpenLDAP?
5179  */
5180  if (INFILE(_LT_EGENIX_COM)) {
5181  INTERESTING("eGenix");
5182  }
5183  else if (INFILE(_LT_PYTHON_4)) {
5184  INTERESTING("Python");
5185  lmem[_mPYTHON] = 1;
5186  }
5187  else if (!lmem[_mPYTHON] && lmem[_mPYTH_TEXT]) {
5188  if (INFILE(_LT_PYTHON_1) || INFILE(_LT_PYTHON_2)) {
5189  if (INFILE(_LT_CNRI_PYTHON_GPL)) {
5190  INTERESTING("CNRI-Python-GPL-Compatible");
5191  lmem[_mGPL] = 1;
5192  }
5193  else if (INFILE(_CR_PYTHON) || INFILE(_TITLE_PYTHON)) {
5194  cp = PYTHVERS();
5195  INTERESTING(lDebug ? "Python(1)" : cp);
5196  }
5197  else if (INFILE(_LT_CNRI_PYTHON_1)) {
5198  INTERESTING("CNRI-Python");
5199  }
5200  else if (INFILE(_LT_CNRI_JYTHON)) {
5201  INTERESTING("CNRI-Jython");
5202  }
5203  else {
5204  INTERESTING("Python-style");
5205  }
5206  lmem[_mPYTHON] = 1;
5207  }
5208  else if (INFILE(_SPDX_CNRI_Python_GPL_Compatible)) {
5209  INTERESTING("CNRI-Python-GPL-Compatible");
5210  }
5211  else if (INFILE(_SPDX_CNRI_Python)) {
5212  INTERESTING("CNRI-Python");
5213  }
5214  else if (INFILE(_LT_CNRI_PYTHON_2)) {
5215  INTERESTING("CNRI-Python");
5216  }
5217  else if (INFILE(_LT_PYTHON_3)) {
5218  cp = PYTHVERS();
5219  INTERESTING(lDebug ? "Python(4)" : cp);
5220  lmem[_mPYTHON] = 1;
5221  }
5222  else if (INFILE(_LT_PYTHONSTYLEref)) {
5223  cp = PYTHVERS();
5224  INTERESTING(lDebug ? "Python(ref1)" : "Python-style");
5225  lmem[_mPYTHON] = 1;
5226  }
5227  else if (!lmem[_mLIBRE] && (INFILE(_LT_PYTHONref1) ||
5228  INFILE(_LT_PYTHONref2))) {
5229  cp = PYTHVERS();
5230  INTERESTING(lDebug ? "Python(ref2)" : cp);
5231  lmem[_mPYTHON] = 1;
5232  }
5233  else if (!lmem[_mLIBRE] && !lmem[_fREAL] &&
5234  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_LT_PYTHONref3)) {
5235  cp = PYTHVERS();
5236  INTERESTING(lDebug ? "Python(ref3)" : cp);
5237  lmem[_mPYTHON] = 1;
5238  }
5239  else if (!lmem[_mPYTHON] && URL_INFILE(_URL_PYTHON)) {
5240  cp = PYTHVERS();
5241  INTERESTING(lDebug ? "Python(url)" : cp);
5242  lmem[_mPYTHON] = 1;
5243  }
5244  else if (!lmem[_mPYTHON] && INFILE(_LT_PYTHON22ref)) {
5245  INTERESTING(lDebug ? "Python(22ref)" : "Python-2.2");
5246  lmem[_mPYTHON] = 1;
5247  }
5248  }
5249  if (!lmem[_mPYTHON] && INFILE(_TITLE_PYTHON_20_3)) {
5250  INTERESTING(lDebug ? "Python(title)" : "Python-2.0");
5251  lmem[_mPYTHON] = 1;
5252  }
5254  /*
5255  * Intel
5256  */
5257  if (INFILE(_LT_INTEL) && NOT_INFILE(_LT_REAL_RPSL)) {
5258  INTERESTING(lDebug ? "Intel(8)" : "Intel");
5259  }
5260  else if (INFILE(_LT_INTEL_6)) {
5261  INTERESTING(lDebug ? "Intel(9)" : "Intel-other");
5262  }
5263  else if (INFILE(_LT_INTEL_7)) {
5264  INTERESTING(lDebug ? "Intel(10)" : "Intel-other");
5265  }
5266  else if (INFILE(_LT_INTEL_WLAN)) {
5267  INTERESTING("Intel-WLAN");
5268  }
5269  else if (INFILE(_LT_INTEL_ACPI)) {
5270  INTERESTING("Intel-ACPI");
5271  }
5272  else if (INFILE(_SPDX_Intel_ACPI)) {
5273  INTERESTING("Intel-ACPI");
5274  }
5275  else if (INFILE(_LT_ISSL_1) && INFILE(_LT_ISSL_2)) {
5276  INTERESTING("ISSL");
5277  }
5278  else if (!lmem[_fREAL] && INFILE(_SPDX_Intel)) {
5279  INTERESTING("Intel");
5280  }
5281  else if (HASTEXT(_TEXT_INTELCORP, 0)) {
5282  if (INFILE(_LT_INTEL_1)) {
5283  if (INFILE(_LT_INTEL_FW)) {
5284  INTERESTING(lDebug ? "Intel(2)" : "Intel-only-FW");
5285  }
5286  else {
5287  INTERESTING(lDebug ? "Intel(3)" : "Intel");
5288  }
5289  }
5290  else if (INFILE(_LT_INTEL_2)) {
5291  INTERESTING(lDebug ? "Intel(4)" : "Intel");
5292  }
5293  else if (INFILE(_LT_INTEL_3)) {
5294  INTERESTING(lDebug ? "Intel(5)" : "Intel");
5295  }
5296  else if (INFILE(_LT_INTEL_4)) {
5297  INTERESTING(lDebug ? "Intel(6)" : "Intel");
5298  }
5299  else if (INFILE(_LT_INTEL_RESTRICT)) {
5300  INTERESTING("Intel.RESTRICTED");
5301  }
5302  else if (INFILE(_LT_INTEL_BINARY) && HASTEXT(_TEXT_INTELCORPBINARY, 0) && HASTEXT(_TEXT_NOMODIFICATION, 0)) {
5303  INTERESTING("Intel-Binary");
5304  }
5305  }
5306  else if (INFILE(_LT_INTEL_5)) {
5307  INTERESTING(lDebug ? "CPL(Intel)" : "CPL");
5308  INTERESTING(lDebug ? "Intel(7)" : "Intel");
5309  }
5310  else if (INFILE(_LT_INTEL_EULA)) {
5311  INTERESTING("Intel-EULA");
5312  }
5314  /*
5315  * Bellcore
5316  */
5317  if (INFILE(_LT_BELLCORE)) {
5318  if (INFILE(_CR_BELLCORE)) {
5319  INTERESTING("Bellcore");
5320  }
5321  else {
5322  INTERESTING("Bellcore-style");
5323  }
5324  }
5326  /*
5327  * Purdue
5328  */
5329  if (INFILE(_LT_PURDUE) && INFILE(_CR_PURDUE) && HASTEXT(_TEXT_ALTERED_SOURCE, REG_EXTENDED) && HASTEXT(_TEXT_ORIGIN, 0)) {
5330  INTERESTING("Purdue");
5331  /* flag is set to avoid Cisco-style detection */
5332  lmem[_fPURDUE] = 1;
5333  }
5335  /*
5336  * Cisco systems
5337  */
5338  if (!lmem[_fPURDUE] && INFILE(_LT_CISCO)) {
5339  if (HASTEXT(_LT_PNG_ZLIB_CLAUSE_1, 0) &&
5340  HASTEXT(_LT_PNG_ZLIB_CLAUSE_2, REG_EXTENDED) &&
5341  HASTEXT(_LT_PNG_ZLIB_CLAUSE_3, 0)) {
5342  if (INFILE(_LT_Spencer_86_94_CLAUSE_1) && INFILE(_LT_Spencer_94_CLAUSE_2)) {
5343  INTERESTING("Spencer-94");
5344  }
5345  else {
5346  INTERESTING("Zlib-style");
5347  }
5348  }
5349  else if (INFILE(_CR_CISCO)) {
5350  INTERESTING("Cisco");
5351  }
5352  else {
5353  INTERESTING("Cisco-style");
5354  }
5355  }
5357  /*
5358  * HP
5359  */
5360  if (INFILE(_LT_HP_DEC)) {
5361  if (mCR_HP()) {
5362  INTERESTING(lDebug ? "HP(8)" : "HP");
5363  }
5364  else if (INFILE(_CR_ADOBE)) {
5365  INTERESTING(lDebug ? "Adobe(8)" : "Adobe");
5366  }
5367  else if (INFILE(_LT_GNUPLOT_1) && INFILE(_LT_GNUPLOT_2)) {
5368  INTERESTING("gnuplot");
5369  }
5370  else {
5371  INTERESTING(lDebug ? "HP-DEC-style(1)" : "HP-DEC-style");
5372  }
5373  }
5374  else if (HASTEXT(_TEXT_HP, REG_EXTENDED)) {
5375  if (INFILE(_LT_HP_1)) {
5376  INTERESTING(lDebug ? "HP(2)" : "HP");
5377  }
5378  else if (INFILE(_LT_HP_3) && INFILE(_LT_HP_snmp_pp)) {
5379  INTERESTING(lDebug ? "HP(3)" : "hp-snmp-pp");
5380  }
5381  else if (INFILE(_LT_HP_4)) {
5382  INTERESTING(lDebug ? "HP(4)" : "HP");
5383  }
5384  else if (INFILE(_LT_HP_5)) {
5385  INTERESTING(lDebug ? "HP(5)" : "HP");
5386  }
5387  else if (INFILE(_LT_HP_6)) {
5388  INTERESTING(lDebug ? "HP(6)" : "HP");
5389  }
5390  else if (INFILE(_LT_HP_7)) {
5391  INTERESTING(lDebug ? "HP(7)" : "HP");
5392  }
5393  else if (INFILE(_LT_COMPAQ_1)) {
5394  INTERESTING(lDebug ? "Compaq(1)" : "HP-Compaq");
5395  }
5396  else if (INFILE(_LT_HP_EULA1)) {
5397  INTERESTING(lDebug ? "HP-EULA(1)" : "HP-EULA");
5398  }
5399  else if (INFILE(_LT_HP_EULA2)) {
5400  INTERESTING(lDebug ? "HP-EULA(2)" : "HP-EULA");
5401  }
5402  else if (INFILE(_LT_HP_EULA3)) {
5403  INTERESTING(lDebug ? "HP-EULA(3)" : "HP-EULA");
5404  }
5405  else if (INFILE(_LT_HP_EULA4)) {
5406  INTERESTING(lDebug ? "HP-EULA(4)" : "HP-EULA");
5407  }
5408  else if (INFILE(_LT_COMPAQ_EULA)) {
5409  INTERESTING(lDebug ? "Compaq(EULA)" : "HP-Compaq");
5410  }
5411  else if (INFILE(_LT_HP_PROPRIETARY_1)) {
5412  INTERESTING(lDebug ? "HP-prop(1)" : "HP-Proprietary");
5413  }
5414  else if (INFILE(_LT_HP_PROPRIETARY_2)) {
5415  INTERESTING(lDebug ? "HP-prop(2)" : "HP-Proprietary");
5416  }
5417  else if (INFILE(_LT_HP_PROPRIETARY_3)) {
5418  INTERESTING(lDebug ? "HP-prop(3)" : "HP-Proprietary");
5419  }
5420  else if (INFILE(_LT_HP_IBM_1)) {
5421  INTERESTING(lDebug ? "HP+IBM(1)" : "HP+IBM");
5422  }
5423  else if (INFILE(_LT_HP_IBM_2)) {
5424  INTERESTING(lDebug ? "HP+IBM(2)" : "HP+IBM");
5425  }
5426  else if (!lmem[_mHP] && INFILE(_CR_DEC) && INFILE(_LT_DEC_1)) {
5427  INTERESTING(lDebug ? "HP-DEC(3)" : "HP-DEC");
5428  lmem[_mHP] = 1;
5429  }
5430  else if (!lmem[_mHP] && INFILE(_CR_DEC) && INFILE(_LT_DEC_2)) {
5431  INTERESTING(lDebug ? "HP-DEC(4)" : "HP-DEC");
5432  lmem[_mHP] = 1;
5433  }
5434  else if (INFILE(_LT_EDS_1) && INFILE(_CR_EDS)) {
5435  INTERESTING(lDebug ? "HP-EDS(1)" : "HP");
5436  }
5437  else if (INFILE(_LT_EDS_2) && INFILE(_CR_EDS)) {
5438  INTERESTING(lDebug ? "HP-EDS(2)" : "HP");
5439  }
5440  }
5441  else if (!lmem[_mHP] && INFILE(_LT_DEC_1)) {
5442  INTERESTING(lDebug ? "HP-DEC-style(2)" : "HP-DEC-style");
5443  }
5444  else if (!lmem[_mHP] && INFILE(_LT_DEC_2)) {
5445  INTERESTING(lDebug ? "HP-DEC-style(3)" : "HP-DEC-style");
5446  }
5447  else if (INFILE(_LT_HP_4)) {
5448  INTERESTING(lDebug ? "HP-style(1)" : "HP-style");
5449  }
5450  else if (INFILE(_LT_COMPAQ_1)) {
5451  INTERESTING(lDebug ? "HP-style(2)" : "HP-style");
5452  }
5453  else if (INFILE(_LT_EDS_1)) {
5454  INTERESTING(lDebug ? "HP-EDS(1#2)" : "HP");
5455  }
5456  else if (INFILE(_LT_EDS_2)) {
5457  INTERESTING(lDebug ? "HP-EDS(2#2)" : "HP");
5458  }
5460  /*
5461  * SUN Microsystems
5462  */
5463  if (!lmem[_mSUN] && (INFILE(_CR_SUN) || INFILE(_TEXT_MICROSYSTEMS))) {
5464  if (INFILE(_LT_SUN_PROPRIETARY) || INFILE(_LT_SUN_PROPRIETARY_2) || INFILE(_LT_SUN_PROPRIETARY_3)) {
5465  INTERESTING(lDebug ? "Sun(Prop)" : "Sun-Proprietary");
5466  lmem[_mSUN] = 1;
5467  }
5468  else if (INFILE(_LT_SUN_RPC)) {
5469  INTERESTING("Sun-RPC");
5470  lmem[_mSUN] = 1;
5471  }
5472  else if (INFILE(_LT_SUN_1)) {
5473  if (INFILE(_LT_SUN_FREE)) {
5474  INTERESTING(lDebug ? "Sun(Freeware)" : "Freeware");
5475  }
5476  else {
5477  INTERESTING(lDebug ? "Sun(3)" : "Sun");
5478  }
5479  lmem[_mSUN] = 1;
5480  }
5481  else if (INFILE(_LT_SUN_2)) {
5482  INTERESTING(lDebug ? "Sun(4)" : "Sun-Proprietary");
5483  lmem[_mSUN] = 1;
5484  }
5485  else if (INFILE(_LT_SUN_3)) {
5486  INTERESTING(lDebug ? "Sun(5)" : "Sun");
5487  lmem[_mSUN] = 1;
5488  }
5489  else if (INFILE(_LT_SUN_4)) {
5490  INTERESTING(lDebug ? "Sun(6)" : "Sun");
5491  lmem[_mSUN] = 1;
5492  }
5493  else if (INFILE(_LT_SUN_5)) {
5494  INTERESTING(lDebug ? "Sun(7)" : "Freeware");
5495  lmem[_mSUN] = 1;
5496  }
5497  else if (INFILE(_LT_SUN_6)) {
5498  INTERESTING(lDebug ? "Sun(8)" : "BSD-style");
5499  lmem[_mSUN] = 1;
5500  }
5501  else if (INFILE(_LT_SUN_NC)) {
5502  INTERESTING("Sun.Non-commercial");
5503  lmem[_mSUN] = 1;
5504  }
5505  else if (INFILE(_LT_SUNrestrict)) {
5506  INTERESTING("Sun.RESTRICTED");
5507  lmem[_mSUN] = 1;
5508  }
5509  else if (INFILE(_LT_SUN_BCLA_1) && INFILE(_TITLE_SUN_BCLA)) {
5510  INTERESTING(lDebug ? "BCLA(1)" : "Sun-BCLA");
5511  lmem[_mSUN] = 1;
5512  }
5513  else if (INFILE(_LT_SUN_BCLA_2)) {
5514  INTERESTING(lDebug ? "BCLA(2)" : "Sun-BCLA");
5515  lmem[_mSUN] = 1;
5516  }
5517  else if (INFILE(_LT_SUN_BCLAref)) {
5518  INTERESTING(lDebug ? "BCLA(ref)" : "Sun-BCLA");
5519  lmem[_mSUN] = 1;
5520  }
5521  else if (INFILE(_LT_SUN_ENTITLE)) {
5522  INTERESTING(lDebug ? "Sun(entitlement)" : "Sun");
5523  lmem[_mSUN] = 1;
5524  }
5525  else if (INFILE(_LT_SUN_ANYagreement)) {
5526  INTERESTING("Sun-EULA");
5527  lmem[_mSUN] = 1;
5528  }
5529  else if (INFILE(_LT_SUN_JAVA)) {
5530  INTERESTING("Sun-Java");
5531  lmem[_mSUN] = 1;
5532  }
5533  else if (INFILE(_LT_SUN_IP)) {
5534  INTERESTING("Sun-IP");
5535  lmem[_mSUN] = 1;
5536  lmem[_fIP] = 1;
5537  }
5538  else if (INFILE(_LT_SUN_SCA)) {
5539  INTERESTING("Sun-SCA");
5540  lmem[_mSUN] = 1;
5541  }
5542  else if (INFILE(_LT_SUN_SCSLref)) {
5543  if (INFILE(_TITLE_SCSL_V23)) {
5544  INTERESTING("SCSL-2.3");
5545  }
5546  else if (INFILE(_TITLE_SCSL_V30)) {
5547  INTERESTING("SCSL-3.0");
5548  }
5549  else {
5550  INTERESTING("SCSL");
5551  }
5552  lmem[_mSUN] = 1;
5553  }
5554  else if (INFILE(_TITLE_SUN_SCSL_TSA) &&
5555  INFILE(_LT_SUN_SCSL_TSA)) {
5556  if (INFILE(_TITLE_TSA_10)) {
5557  INTERESTING("SCSL-TSA-1.0");
5558  }
5559  else {
5560  INTERESTING("SCSL-TSA");
5561  }
5562  lmem[_mSUN] = 1;
5563  }
5564  else if (INFILE(_LT_SUN_SISSLref1)
5565  || INFILE(_LT_SUN_SISSLref2)) {
5566  cp = SISSLVERS();
5567  INTERESTING(lDebug ? "SISSL(ref#1)" : cp);
5568  lmem[_mSUN] = 1;
5569  }
5570  }
5571  else if (!lmem[_fREAL] && INFILE(_LT_SUN_PLref)) {
5572  INTERESTING(lDebug ? "Sun-PL(ref)" : "SPL");
5573  lmem[_mSUN] = 1;
5574  }
5575  else if (!lmem[_mSUN] && URL_INFILE(_URL_SUN_BINARY_V150)) {
5576  INTERESTING("Sun-BCLA-1.5.0");
5577  lmem[_mSUN] = 1;
5578  }
5579  else if (!lmem[_mSUN] && URL_INFILE(_URL_SUN_BINARY)) {
5580  INTERESTING(lDebug ? "BCLA(url)" : "Sun-BCLA");
5581  lmem[_mSUN] = 1;
5582  }
5583  else if (!lmem[_mSUN] && INFILE(_LT_SUN_GRAPHICS)) {
5584  INTERESTING(lDebug ? "Sun(8)" : "Sun");
5585  lmem[_mSUN] = 1;
5586  }
5587  else if (!lmem[_mSUN] && INFILE(_LT_SUN_GRAPHICS)) {
5588  INTERESTING(lDebug ? "Sun(9)" : "Sun");
5589  lmem[_mSUN] = 1;
5590  }
5591  else if ((!lmem[_mSUN] && (INFILE(_LT_SUN_SISSLref1)
5592  || INFILE(_TITLE_SISSL_V11) || INFILE(_TITLE_SISSL_V12))) ||
5593  INFILE(_LT_SUN_SISSLref2)) {
5594  cp = SISSLVERS();
5595  INTERESTING(lDebug ? "SISSL(ref#2)" : cp);
5596  lmem[_mSUN] = 1;
5597  }
5598  else if (!lmem[_mSUN] && URL_INFILE(_URL_SISSL)) {
5599  cp = SISSLVERS();
5600  INTERESTING(lDebug ? "SISSL(url)" : cp);
5601  lmem[_mSUN] = 1;
5602  }
5604  if (INFILE(_LT_SUN_PRO)) {
5605  INTERESTING(lDebug ? "SunPro" : "Freeware");
5606  }
5608  /*
5609  * IBM
5610  */
5611  if (INFILE(_TEXT_IBM)) {
5612  if (INFILE(_LT_IBM_RECIP)) {
5613  INTERESTING("IBM-reciprocal");
5614  }
5615  else if (INFILE(_LT_IBM_4)) {
5616  INTERESTING(lDebug ? "IBM(4)" : "IBM-dhcp");
5617  }
5618  else if (INFILE(_LT_IBM_1)) {
5619  INTERESTING(lDebug ? "IBM(1)" : "MIT-style");
5620  }
5621  else if (INFILE(_LT_IBM_3)) {
5622  INTERESTING(lDebug ? "IBM(3)" : "MIT-style");
5623  }
5624  else if (INFILE(_LT_IBM_2)) {
5625  INTERESTING(lDebug ? "IBM(2)" : "IBM");
5626  }
5627  else if (INFILE(_LT_IBM_OWNER)) {
5628  INTERESTING(lDebug ? "IBM(4)" : "IBM");
5629  }
5630  else if (INFILE(_LT_IBM_JIKES)) {
5631  INTERESTING("IBM-JCL");
5632  }
5633  else if (INFILE(_LT_IBM_COURIER)) {
5634  INTERESTING("IBM-Courier");
5635  }
5636  else if (INFILE(_LT_IBM_EULA)) {
5637  INTERESTING(lDebug ? "IBM-EULA(1)" : "IBM-EULA");
5638  }
5639  else if (INFILE(_PHR_IBM_EULA)) {
5640  INTERESTING(lDebug ? "IBM-EULA(2)" : "IBM-EULA");
5641  }
5642  else if (INFILE(_LT_IBM_PIBS)) {
5643  INTERESTING("IBM-pibs");
5644  }
5645  else if (INFILE(_LT_IBM_AS_IS)) {
5646  INTERESTING("IBM-as-is");
5647  }
5648  }
5650  /*
5651  * Motorola
5652  */
5653  if (INFILE(_CR_MOT_1) || INFILE(_CR_MOT_2)) {
5654  if (INFILE(_LT_MOT_1)) {
5655  INTERESTING(lDebug ? "Motorola(1)" : "Motorola");
5656  }
5657  else if (INFILE(_LT_MOT_2)) {
5658  INTERESTING(lDebug ? "Motorola(2)" : "Motorola");
5659  }
5660  }
5661  if (HASTEXT(_TITLE_MOTOROLA_MOBILE, 0)) {
5662  INTERESTING("Motorola-Mobile-SLA");
5663  }
5665  /*
5666  * Java
5667  */
5668  if (INFILE(_LT_JAVA_WSDL4J)) {
5669  INTERESTING("Java-WSDL4J");
5670  }
5671  else if (INFILE(_LT_JAVA_WSDL_SCHEMA)) {
5672  INTERESTING("Java-WSDL-Schema");
5673  }
5674  else if (INFILE(_LT_JAVA_WSDL_POLICY)) {
5675  INTERESTING("Java-WSDL-Policy");
5676  }
5677  else if (INFILE(_LT_JAVA_WSDL_ENUM)) {
5678  INTERESTING("Java-WSDL-Spec");
5679  }
5680  else if (INFILE(_LT_MULTICORP_1)) {
5681  INTERESTING(lDebug ? "Java-Multi(1)" : "Java-Multi-Corp");
5682  }
5683  else if (INFILE(_LT_MULTICORP_2)) {
5684  INTERESTING(lDebug ? "Java-Multi(2)" : "Java-Multi-Corp");
5685  }
5687  /*
5688  * Mibble
5689  */
5690  if (INFILE(_LT_MIBBLE)) {
5691  if (INFILE(_TITLE_MIBBLE_28)) {
5692  INTERESTING("Mibble-2.8");
5693  }
5694  else {
5695  INTERESTING("Mibble");
5696  }
5697  }
5699  /*
5700  * Comtrol Corp
5701  */
5702  if (INFILE(_CR_COMTROL) && INFILE(_LT_COMTROL)) {
5703  INTERESTING("Comtrol");
5704  }
5706  /*
5707  * TrollTech
5708  */
5709  if (INFILE(_LT_TROLLTECH) && INFILE(_CR_TROLLTECH)) {
5710  INTERESTING("Trolltech");
5711  }
5712  else if (INFILE(_LT_QT_COMMref)) {
5713  INTERESTING("QT.Commercial");
5714  }
5715  else if (INFILE(_LT_QT_PROPRIETARY) || INFILE(_TITLE_QT_PROPRIETARY)) {
5716  INTERESTING("QT.Commercial");
5717  }
5719  /*
5720  * SNIA (Storage Network Industry) public license
5721  */
5722  if (!lmem[_mMPL] && !lmem[_mSUN] && INFILE(_LT_SNIA_PL)) {
5723  if (INFILE(_TITLE_SNIA_V11)) {
5724  INTERESTING("SNIA-1.1");
5725  }
5726  else if (INFILE(_TITLE_SNIA_V10)) {
5727  INTERESTING("SNIA-1.0");
5728  }
5729  else {
5730  INTERESTING("SNIA");
5731  }
5732  }
5733  else if (INFILE(_LT_SNIAref)) {
5734  if (INFILE(_TITLE_SNIA_V11)) {
5735  INTERESTING(lDebug ? "SNIA-1.1(ref)" : "SNIA-1.1");
5736  }
5737  else if (INFILE(_TITLE_SNIA_V10)) {
5738  INTERESTING(lDebug ? "SNIA-1.0(ref)" : "SNIA-1.0");
5739  }
5740  else {
5741  INTERESTING(lDebug ? "SNIA(ref)" : "SNIA");
5742  }
5743  }
5744  else if (URL_INFILE(_URL_SNIA_V11)) {
5745  INTERESTING(lDebug ? "SNIA-1.1(url)" : "SNIA-1.1");
5746  }
5747  else if (URL_INFILE(_URL_SNIA)) {
5748  INTERESTING(lDebug ? "SNIA(url)" : "SNIA");
5749  }
5751  /*
5752  * BEA
5753  */
5754  if (HASTEXT(_TEXT_BEASYS, 0)) {
5755  if (INFILE(_LT_BEA_1)) {
5756  INTERESTING(lDebug ? "BEA(1)" : "BEA");
5757  }
5758  else if (INFILE(_LT_BEA_2)) {
5759  INTERESTING(lDebug ? "BEA(2)" : "BEA");
5760  }
5761  }
5763  /*
5764  * ADOBE/FRAME
5765  */
5766  if (HASTEXT(_TEXT_ADOBE_FRAME, REG_EXTENDED)) {
5767  if (INFILE(_LT_ADOBE_1)) {
5768  INTERESTING(lDebug ? "Adobe(1)" : "Adobe");
5769  }
5770  else if (!lmem[_mMIT] && INFILE(_LT_ADOBE_2)) {
5771  INTERESTING(lDebug ? "Adobe(2)" : "Adobe");
5772  }
5773  else if (INFILE(_LT_ADOBE_3)) {
5774  INTERESTING(lDebug ? "Adobe(3)" : "Adobe");
5775  }
5776  else if (INFILE(_LT_ADOBE_4)) {
5777  INTERESTING(lDebug ? "Adobe(4)" : "Adobe-EULA");
5778  }
5779  else if (INFILE(_LT_ADOBE_5)) {
5780  INTERESTING(lDebug ? "Adobe(5)" : "Adobe-EULA");
5781  }
5782  else if (INFILE(_LT_ADOBE_6)) {
5783  INTERESTING(lDebug ? "Adobe(6)" : "Adobe-EULA");
5784  }
5785  else if (INFILE(_LT_ADOBE_7)) {
5786  INTERESTING(lDebug ? "Adobe(7)" : "Adobe-EULA");
5787  }
5788  else if (INFILE(_LT_FRAME)) {
5789  INTERESTING(lDebug ? "Adobe(Frame)" : "Adobe");
5790  }
5791  else if (INFILE(_LT_ADOBE_SRC) || INFILE(_TITLE_ADOBE_SRC)) {
5792  INTERESTING(lDebug ? "Adobe(src)" : "Adobe-2006");
5793  }
5794  else if (INFILE(_LT_ADOBE_DATA)) {
5795  INTERESTING(lDebug ? "Adobe(data)" : "Adobe");
5796  }
5797  else if (INFILE(_LT_ADOBE_EULA)) {
5798  INTERESTING("Adobe-EULA");
5799  }
5800  else if (INFILE(_LT_ADOBE_AFM)) {
5801  INTERESTING("APAFML");
5802  }
5803  else if (INFILE(_LT_ADOBE_DNG_SPEC) || INFILE(_TITLE_ADOBE_DNG_SPEC)) {
5804  INTERESTING("Adobe-DNG-Spec");
5805  }
5806  else if (HASTEXT(_TITLE_ADOBE_DNG, 0)) {
5807  INTERESTING("Adobe-DNG");
5808  }
5809  else if (INFILE(_LT_ADOBE_AFMPARSE_1) && INFILE(_LT_ADOBE_AFMPARSE_2)) {
5810  INTERESTING("Afmparse");
5811  }
5812  else if (INFILE(_LT_ADOBE_OTHER)) {
5813  INTERESTING(lDebug ? "Adobe(other)" : "Adobe");
5814  }
5815  else if (INFILE(_LT_ADOBE_SUB)) {
5816  INTERESTING(lDebug ? "Adobe(sub)" : "Adobe");
5817  }
5818  }
5820  /*
5821  * Docbook and Open Source Metadata Framework
5822  */
5823  if (INFILE(_LT_DOCBOOK)) {
5824  if (HASTEXT(_TEXT_DOCBOOK, 0)) {
5825  INTERESTING("Docbook");
5826  }
5827  else if (HASTEXT(_TEXT_METADATA, 0)) {
5828  INTERESTING("OMF");
5829  }
5830  else {
5831  INTERESTING("DOCBOOK-style");
5832  }
5833  }
5835  /*
5836  * MP3 decoder
5837  */
5838  if (INFILE(_LT_MPEG3)) {
5839  INTERESTING("MPEG3-decoder");
5840  }
5842  /*
5843  * Gutmann License (ASN.1 Object Dumping Code)
5844  */
5845  if (INFILE(_LT_GUTMANN)) {
5846  INTERESTING("Gutmann");
5847  }
5849  /*
5850  * Google
5851  */
5852  if (INFILE(_LT_GOOGLE_1)) {
5853  INTERESTING(lDebug ? "Google(1)" : "Google");
5854  }
5855  else if (INFILE(_LT_GOOGLE_2)) {
5856  INTERESTING(lDebug ? "Google(2)" : "Google");
5857  }
5859  /*
5860  * Mandriva
5861  */
5862  if (INFILE(_LT_MANDRIVA)) {
5863  INTERESTING("Mandriva");
5864  }
5866  /*
5867  * Irondoc
5868  */
5869  if (INFILE(_LT_IRONDOC)) {
5870  INTERESTING("IronDoc");
5871  }
5873  /*
5874  * Quarterdeck Office Systems
5875  */
5876  if (INFILE(_LT_QUARTERDECK) && INFILE(_CR_QUARTERDECK)) {
5877  INTERESTING("QuarterDeck");
5878  }
5880  /*
5881  * Electronic Book Technologies
5882  */
5883  if (INFILE(_LT_EBT)) {
5884  if(INFILE(_CR_EBT)) {
5885  INTERESTING("EBT");
5886  } else {
5887  INTERESTING("EBT-style");
5888  }
5889  }
5891  /*
5892  * SGML
5893  */
5894  if (HASTEXT(_TEXT_SGMLUG, 0) && INFILE(_LT_SGML)) {
5895  INTERESTING("SGML");
5896  }
5898  /*
5899  * LaTeX (KOMA-Script)
5900  */
5901  if (HASTEXT(_TEXT_LATEX, REG_EXTENDED)) {
5902  if (INFILE(_LT_LATEXPL_1) || INFILE(_LT_LATEXPL_2) ||
5903  INFILE(_LT_LATEXPL_3)) {
5904  cp = LPPLVERS();
5905  INTERESTING(lDebug ? "LPPL(1)" : cp);
5906  }
5907  else if (INFILE(_LT_LATEX)) {
5908  cp = LPPLVERS();
5909  INTERESTING(lDebug ? "LPPL(2)" : cp);
5910  }
5911  else if (INFILE(_LT_LATEXPLref1) || INFILE(_LT_LATEXPLref2) ||
5912  INFILE(_LT_LATEXPLref3)) {
5913  cp = LPPLVERS();
5914  INTERESTING(lDebug ? "LPPL(3)" : cp);
5915  }
5916  else if (INFILE(_LT_LATEXref1)) {
5917  cp = LPPLVERS();
5918  INTERESTING(lDebug ? "LPPL(4)" : cp);
5919  }
5920  else if (INFILE(_LT_LATEXref2)) {
5921  cp = LPPLVERS();
5922  INTERESTING(lDebug ? "LPPL(5)" : cp);
5923  }
5924  else if (INFILE(_LT_LATEXref3)) {
5925  cp = LPPLVERS();
5926  INTERESTING(lDebug ? "LPPL(6)" : cp);
5927  }
5928  else if (INFILE(_LT_LATEXref4)) {
5929  cp = LPPLVERS();
5930  INTERESTING(lDebug ? "LPPL(7)" : cp);
5931  }
5932  else if (INFILE(_LT_LATEXref5)) {
5933  cp = LPPLVERS();
5934  INTERESTING(lDebug ? "LPPL(8)" : cp);
5935  }
5936  else if (INFILE(_TITLE_LATEX_PL10) || INFILE(_TITLE_LATEX_PL11) ||
5937  INFILE(_TITLE_LATEX_PL12) || INFILE(_TITLE_LATEX_PL13)) {
5938  cp = LPPLVERS();
5939  INTERESTING(lDebug ? "LPPL(title)" : cp);
5940  }
5941  else if (URL_INFILE(_URL_LATEX)) {
5942  cp = LPPLVERS();
5943  INTERESTING(lDebug ? "LPPL(url)" : cp);
5944  }
5945  }
5947  /*
5948  * QPL
5949  */
5950  if (INFILE(_LT_QPL) || INFILE(_LT_QPLref)) {
5951  if (INFILE(_TITLE_QPL10_1) || INFILE(_TITLE_QPL10_2)) {
5952  INTERESTING("QPL-1.0");
5953  lmem[_mQPL] = 1;
5954  }
5955  else if (INFILE(_TITLE_QPL)) {
5956  INTERESTING("QPL");
5957  lmem[_mQPL] = 1;
5958  }
5959  }
5960  else if (INFILE(_TITLE_QPL10_1) || INFILE(_TITLE_QPL10_2)) {
5961  INTERESTING(lDebug ? "QPL(title)" : "QPL-1.0");
5962  lmem[_mQPL] = 1;
5963  }
5965  /*
5966  * FREE Public License (not really open/free) and GHOSTSCRIPT
5967  */
5968  if (HASTEXT(_TEXT_GHOSTSCRIPT, 0)) {
5969  if (INFILE(_LT_GS)) {
5970  if (INFILE(_TITLE_GS11)) {
5971  INTERESTING("Ghostscript-GPL-1.1");
5972  }
5973  else {
5974  INTERESTING(lDebug ? "GS-GPL(1)" : "Ghostscript-GPL");
5975  }
5976  }
5977  else if (INFILE(_CR_ALADDIN) || INFILE(_CR_ARTOFCODE)) {
5978  if (INFILE(_LT_GS_GNU1) || INFILE(_LT_GS_GNU2)) {
5979  INTERESTING("GNU-Ghostscript");
5980  }
5981  else if (INFILE(_LT_GNU_1) && INFILE(_LT_GNU_2)) {
5982  INTERESTING(lDebug ? "GS-GPL(2)" : "Ghostscript-GPL");
5983  }
5984  else if (INFILE(_LT_FREEPL) || INFILE(_LT_FREEPLref)) {
5985  INTERESTING(lDebug ? "Aladdin(Closed-Source!)" : "Aladdin");
5986  if (INFILE(_PHR_NOT_OPEN)) {
5987  INTERESTING(lDebug ? "Aladdin(Closed-Source!)" : "Aladdin");
5988  lmem[_mALADDIN] = 1;
5989  }
5990  else {
5991  INTERESTING(lDebug ? "Aladdin-Ghostscript" : "Aladdin");
5992  }
5993  }
5994  else if (INFILE(_LT_ALADDIN_RESTRICT)) {
5995  INTERESTING(lDebug ? "Aladdin(RESTRICTED)": "Aladdin");
5996  }
5997  }
5998  else if (INFILE(_LT_AFPL)) {
5999  INTERESTING("AFPL-Ghostscript");
6000  }
6001  }
6002  else if (INFILE(_LT_FREEPLref_1) || INFILE(_TITLE_ALADDIN_NAMED)) {
6003  INTERESTING("Aladdin");
6004  }
6005  else if (INFILE(_LT_FREEPL) || INFILE(_LT_FREEPLref)) {
6006  INTERESTING("Free-PL");
6007  }
6008  /*
6009  * IPTC (International Press Telecommunications Council)
6010  */
6011  else if (INFILE(_TITLE_IPTC) || INFILE(_LT_IPTC_2)) {
6012  INTERESTING("IPTC");
6013  }
6014  else if (INFILE(_LT_IPTC_1) && mCR_IPTC()) {
6015  INTERESTING("IPTC");
6016  }
6017  /*
6018  * Macromedia
6019  */
6020  else if (INFILE(_TITLE_MACROMEDIA_EULA)) {
6021  INTERESTING("MacroMedia-RPSL");
6022  }
6023  /*
6024  * Ontopia
6025  */
6026  else if (INFILE(_LT_ONTOPIA) && INFILE(_TITLE_ONTOPIA)) {
6027  INTERESTING("Ontopia");
6028  }
6030  /*
6031  * Ascender
6032  */
6033  if (INFILE(_LT_ASCENDER_WEBFONT) || INFILE(_LT_ASCENDER_WEBFONT_2) ||
6034  INFILE(_TITLE_ASCENDER_WEBFONT)) {
6035  INTERESTING("Ascender-WebFont-EULA");
6036  }
6037  else if (INFILE(_LT_ASCENDER_EULA) && INFILE(_TITLE_ASCENDER_EULA)) {
6038  INTERESTING("Ascender-EULA");
6039  }
6041  /*
6042  * ADAPTEC
6043  */
6044  if (INFILE(_LT_ADAPTEC_OBJ)) {
6045  INTERESTING("Adaptec.RESTRICTED");
6046  }
6047  else if (INFILE(_CR_ADAPTEC) && INFILE(_LT_ADAPTEC_GPL)) {
6048  INTERESTING("Adaptec-GPL");
6049  }
6051  /*
6052  * Artistic and Perl
6053  */
6054  if (INFILE(_LT_PERL_1)) {
6055  INTERESTING(lDebug ? "Artistic(Perl#1)" : "Artistic-1.0-Perl");
6056  if (!lmem[_mGPL]) {
6057  INTERESTING("Dual-license");
6058  INTERESTING(lDebug ? "GPL(Perl#1)" : "GPL-1.0-or-later");
6059  }
6060  }
6061  else if (INFILE(_LT_PERL_2)) {
6062  INTERESTING(lDebug ? "Artistic(Perl#2)" : "Artistic-1.0-Perl");
6063  if (!lmem[_mGPL]) {
6064  INTERESTING("Dual-license");
6065  INTERESTING(lDebug ? "GPL(Perl#2)" : "GPL-1.0-or-later");
6066  }
6067  }
6068  else if (INFILE(_LT_PERL_3)) {
6069  if (INFILE(_LT_Spencer_86_94_CLAUSE_1) &&
6070  HASTEXT(_LT_PNG_ZLIB_CLAUSE_1, 0) &&
6071  HASTEXT(_LT_PNG_ZLIB_CLAUSE_2, REG_EXTENDED)) {
6072  INTERESTING("Spencer-86");
6073  }
6074  else if (!lmem[_fOPENLDAP] && !TRYGROUP(famOPENLDAP)) {
6075  INTERESTING(lDebug ? "Artistic(Perl#3)" : "Artistic-1.0");
6076  }
6077  }
6078  /*
6079  * Licensed "same as perl itself" will actually be Artistic AND GPL, per
6080  * Larry Wall and the documented licensing terms of "perl"
6081  */
6082  else if (INFILE(_LT_PERLref1)) {
6083  INTERESTING(lDebug ? "Artistic(Perl-ref1)" : "Artistic-1.0-Perl");
6084  if (!lmem[_mGPL]) {
6085  INTERESTING("Dual-license");
6086  INTERESTING(lDebug ? "GPL(Perl-ref1)" : "GPL-1.0-or-later");
6087  }
6088  }
6089  else if (PERL_INFILE(_LT_PERLref2)) {
6090  INTERESTING(lDebug ? "Artistic(Perl-ref2)" : "Artistic-1.0-Perl");
6091  if (!lmem[_mGPL]) {
6092  INTERESTING("Dual-license");
6093  INTERESTING(lDebug ? "GPL(Perl-ref2)" : "GPL-1.0-or-later");
6094  }
6095  }
6096  else if (INFILE(_LT_PERLref3)) {
6097  INTERESTING(lDebug ? "Artistic(Perl-ref3)" : "Artistic-1.0-Perl");
6098  if (!lmem[_mGPL]) {
6099  INTERESTING("Dual-license");
6100  INTERESTING(lDebug ? "GPL(Perl-ref3)" : "GPL-1.0-or-later");
6101  }
6102  }
6103  else if (INFILE(_LT_PERLref4)) {
6104  INTERESTING(lDebug ? "Artistic(Perl-ref4)" : "Artistic-1.0-Perl");
6105  if (!lmem[_mGPL]) {
6106  INTERESTING("Dual-license");
6107  INTERESTING(lDebug ? "GPL(Perl-ref4)" : "GPL-1.0-or-later");
6108  }
6109  }
6110  else if (INFILE(_LT_PERLref5)) {
6111  INTERESTING(lDebug ? "Artistic(Perl-ref5)" : "Artistic-1.0-Perl");
6112  if (!lmem[_mGPL]) {
6113  INTERESTING("Dual-license");
6114  INTERESTING(lDebug ? "GPL(Perl-ref5)" : "GPL-1.0-or-later");
6115  }
6116  }
6117  else if (INFILE(_TITLE_CLARTISTIC)) {
6118  INTERESTING("ClArtistic");
6119  lmem[_fCLA] = 1;
6120  }
6121  else if (!lmem[_fREAL] && !LVAL(_TEXT_GNU_LIC_INFO) &&
6122  (INFILE(_LT_ART_1) || INFILE(_LT_ARTref1) ||
6123  INFILE(_LT_ARTref2) || INFILE(_LT_ARTref3) ||
6124  INFILE(_LT_ARTref4) || PERL_INFILE(_LT_ARTref5) ||
6125  PERL_INFILE(_LT_ARTref6) || INFILE(_TITLE_ART10) ||
6126  INFILE(_TITLE_ART20))) {
6127  if (INFILE(_TITLE_OGTSL)) {
6128  INTERESTING("OGTSL");
6129  }
6130  else if (!lmem[_mLIBRE] && !lmem[_fOPENLDAP] &&
6131  !TRYGROUP(famOPENLDAP)) {
6132  if (INFILE(_LT_ART_V2) || INFILE(_TITLE_ART20)) {
6133  INTERESTING(lDebug ? "Artistic(v2.0#1)" : "Artistic-2.0");
6134  }
6135  else if (INFILE(_PHR_Artistic_20)) {
6136  INTERESTING("Artistic-2.0");
6137  }
6138  else if (INFILE(_TITLE_NBPL_V10)) {
6139  INTERESTING("NBPL-1.0");
6140  lmem[_fARTISTIC] = 1;
6141  }
6142  else if(HASTEXT(_PHR_ARTISTIC_PERL, 0)) {
6143  INTERESTING("Artistic-1.0-Perl");
6144  lmem[_fARTISTIC] = 1;
6145  }
6146  else if (HASTEXT(_PHR_ARTISTIC_CLAUSE8, 0) || INFILE(_TITLE_ART10_CL8))
6147  {
6148  INTERESTING("Artistic-1.0-cl8");
6149  lmem[_fARTISTIC] = 1;
6150  }
6151  else {
6152  INTERESTING(lDebug ? "Artistic(v1.0#other)" : "Artistic-1.0");
6153  lmem[_fARTISTIC] = 1;
6154  }
6155  }
6156  }
6157  else if (INFILE(_LT_ART_2) && INFILE(_TITLE_ART20)) {
6158  INTERESTING(lDebug ? "Artistic(v2.0#2)" : "Artistic-2.0");
6159  }
6160  else if (INFILE(_FILE_ART1) || INFILE(_FILE_ART2)) {
6161  INTERESTING(lDebug ? "Artistic(deb)" : "Artistic-1.0");
6162  }
6163  else if (URL_INFILE(_URL_ART)) {
6164  INTERESTING(lDebug ? "Artistic(url)" : "Artistic-1.0");
6165  }
6167  /*
6168  * LDP, Manpages, OASIS, GPDL, Linux-HOWTO and Linux-doc
6169  */
6170  if (INFILE(_TITLE_LDPL20)) {
6171  INTERESTING("LDPL-2.0");
6172  }
6173  else if (INFILE(_TITLE_LDPL1A)) {
6174  INTERESTING("LDPL-1A");
6175  }
6176  else if (INFILE(_LT_LDPL)) {
6177  INTERESTING(lDebug ? "LDPL(1)" : "LDPL");
6178  }
6179  else if (INFILE(_LT_LDPLref1)) {
6180  INTERESTING(lDebug ? "LDPL(ref1)" : "LDPL");
6181  }
6182  else if (INFILE(_LT_LDPLref2)) {
6183  INTERESTING(lDebug ? "LDPL(ref2)" : "LDPL");
6184  }
6185  else if (INFILE(_LT_LDPLref3)) {
6186  INTERESTING(lDebug ? "LDPL(ref3)" : "LDPL");
6187  }
6188  /*
6189  * GNU-Manpages, Software in the Public Interest (Debian), aka SPI
6190  */
6191  else if (INFILE(_LT_SPI)) {
6192  if (INFILE(_LT_MANPAGE)) {
6193  INTERESTING("GNU-Manpages");
6194  }
6195  else if (!lmem[_fGPL]) {
6196  if (INFILE(_CR_SPI)) {
6197  INTERESTING("Debian-SPI");
6198  }
6199  else {
6200  INTERESTING("Debian-SPI-style");
6201  }
6202  }
6203  }
6204  else if (INFILE(_LT_GPDLref)) {
6205  INTERESTING(lDebug ? "GPDL(1)" : "GPDL");
6206  }
6207  else if (INFILE(_TITLE_GPDL)) {
6208  INTERESTING(lDebug ? "GPDL(2)" : "GPDL");
6209  }
6210  else if (INFILE(_LT_FREEBSD_DOC) && INFILE(_TITLE_FREEBSD_DOC)) {
6211  INTERESTING("FreeBSD-DOC");
6212  }
6213  else if (INFILE(_LT_LINUX_HOWTO)) {
6214  INTERESTING("Linux-HOWTO");
6215  }
6216  else if (INFILE(_LT_LINUXDOC)) {
6217  INTERESTING("LinuxDoc");
6218  }
6219  else if (INFILE(_LT_IEEE_DOC)) {
6220  INTERESTING("IEEE-Doc");
6221  }
6223  /*
6224  * U-Washington
6225  */
6226  if (INFILE(_LT_UW1)) {
6227  if (INFILE(_CR_UWASHINGTON)) {
6228  INTERESTING("U-Wash.Free-Fork");
6229  }
6230  else {
6231  INTERESTING(lDebug ? "U-Wash-style(1)" : "U-Wash-style");
6232  }
6233  }
6234  else if (INFILE(_LT_UW2)) {
6235  if (INFILE(_CR_UWASHINGTON)) {
6236  INTERESTING(lDebug ? "U-Wash(2)" : "U-Washington");
6237  }
6238  else {
6239  INTERESTING(lDebug ? "U-Wash-style(2)" : "U-Wash-style");
6240  }
6241  }
6242  else if (INFILE(_LT_UW3)) {
6243  if (INFILE(_CR_UWASHINGTON)) {
6244  INTERESTING(lDebug ? "U-Wash(3)" : "U-Washington");
6245  }
6246  else {
6247  INTERESTING(lDebug ? "U-Wash-style(3)" : "U-Wash-style");
6248  }
6249  }
6250  else if (INFILE(_LT_UW4)) {
6251  if (INFILE(_CR_UWASHINGTON)) {
6252  INTERESTING(lDebug ? "U-Wash(4)" : "U-Washington");
6253  }
6254  else {
6255  INTERESTING(lDebug ? "U-Wash-style(4)" : "U-Wash-style");
6256  }
6257  }
6259  /*
6260  * WU-ftpd (not the school north of Oregon!
6261  */
6262  if (INFILE(_LT_WU_FTPD)) {
6263  if (INFILE(_TITLE_WU_FTPD) || INFILE(_CR_WASHU)) {
6264  INTERESTING(lDebug ? "Wash-U(1)" : "Wash-U-StLouis");
6265  }
6266  else {
6267  INTERESTING("Wash-U-style");
6268  }
6269  }
6270  else if (INFILE(_LT_WU_FTPDref)) {
6271  INTERESTING(lDebug ? "Wash-U(ref)" : "Wash-U-StLouis");
6272  }
6273  /*
6274  * Delaware
6275  */
6276  else if (INFILE(_LT_DELAWARE)) {
6277  if (INFILE(_CR_DELAWARE)) {
6278  INTERESTING("U-Del");
6279  }
6280  else {
6281  INTERESTING("U-Del-style");
6282  }
6283  }
6284  /*
6285  * Princeton
6286  */
6287  else if (INFILE(_LT_PRINCETON) && NOT_INFILE(_TITLE_WORDNET)) {
6288  if (INFILE(_CR_PRINCETON)) {
6289  INTERESTING("Princeton");
6290  }
6291  else {
6292  INTERESTING("Princeton-style");
6293  }
6294  }
6295  /*
6296  * University of Michigan
6297  */
6298  else if (INFILE(_LT_UMICHIGAN_1)) {
6299  if (INFILE(_CR_MICHIGAN)) {
6300  INTERESTING(lDebug ? "U-Mich(1)" : "U-Michigan");
6301  }
6302  else {
6303  INTERESTING(lDebug ? "U-Mich-style(1)" : "U-Mich-style");
6304  }
6305  }
6306  else if (INFILE(_LT_UMICHIGAN_2)) {
6307  if (INFILE(_CR_MICHIGAN)) {
6308  INTERESTING(lDebug ? "U-Mich(2)" : "U-Michigan");
6309  }
6310  else {
6311  INTERESTING(lDebug ? "U-Mich-style(2)" : "U-Mich-style");
6312  }
6313  }
6314  /*
6315  * Southern Cal
6316  */
6317  else if (INFILE(_LT_USC_NC)) {
6318  if (INFILE(_CR_USC)) {
6319  INTERESTING("USC.Non-commercial");
6320  }
6321  else {
6322  INTERESTING(lDebug ? "NonC(5)" : "Non-commercial");
6323  }
6324  }
6325  else if (INFILE(_LT_USC)) {
6326  if (INFILE(_CR_USC)) {
6327  INTERESTING("USC");
6328  }
6329  else {
6330  INTERESTING("USC-style");
6331  }
6332  }
6333  /*
6334  * Unversity Corporation for Atmospheric Research (UCAR)
6335  */
6336  else if (INFILE(_LT_UCAR_1) && INFILE(_LT_UCAR_2)) {
6337  INTERESTING("UCAR");
6338  }
6339  else if (INFILE(_LT_UCAR_3) && INFILE(_CR_UCAR)) {
6340  if (INFILE(_CR_UCAR)) {
6341  INTERESTING("UCAR");
6342  }
6343  else {
6344  INTERESTING("UCAR-style");
6345  }
6346  }
6347  /*
6348  * Stanford
6349  */
6350  else if (INFILE(_LT_STANFORD)) {
6351  if (INFILE(_CR_STANFORD)) {
6352  INTERESTING("Stanford");
6353  }
6354  else {
6355  INTERESTING("Stanford-style");
6356  }
6357  }
6358  /*
6359  * U-Cambridge
6360  */
6361  else if (INFILE(_LT_CAMBRIDGE)) {
6362  if (HASTEXT(_LT_MSNTP, 0)) {
6363  INTERESTING("MSNTP");
6364  }
6365  else if (INFILE(_CR_CAMBRIDGE_1) || INFILE(_CR_CAMBRIDGE_2)) {
6366  INTERESTING("U-Cambridge");
6367  }
6368  else {
6369  INTERESTING("U-Cambridge-style");
6370  }
6371  }
6372  /*
6373  * Columbia University
6374  */
6375  else if (INFILE(_CR_COLUMBIA) && INFILE(_LT_COLUMBIA)) {
6376  INTERESTING("U-Columbia");
6377  }
6378  /*
6379  * University of Notre Dame (Different from Boost!)
6380  */
6381  if (INFILE(_LT_ND_1)) {
6382  if (INFILE(_CR_NOTREDAME)) {
6383  INTERESTING(lDebug ? "ND(1)" : "NotreDame");
6384  }
6385  else {
6386  INTERESTING(lDebug ? "ND-style(1)" : "NotreDame-style");
6387  }
6388  }
6389  else if (INFILE(_LT_ND_2)) {
6390  if (INFILE(_CR_NOTREDAME)) {
6391  INTERESTING(lDebug ? "ND(2)" : "NotreDame");
6392  }
6393  else {
6394  INTERESTING(lDebug ? "ND-style(2)" : "NotreDame-style");
6395  }
6396  }
6397  else if (INFILE(_LT_ND_3)) {
6398  if (INFILE(_CR_NOTREDAME)) {
6399  INTERESTING(lDebug ? "ND(3)" : "NotreDame");
6400  }
6401  else {
6402  INTERESTING(lDebug ? "ND-style(3)" : "NotreDame-style");
6403  }
6404  }
6406  /*
6407  * Boost references
6408  */
6409  if (!lmem[_mMIT] && INFILE(_LT_BOOST_2)) {
6410  if (INFILE(_CR_BOOST)) {
6411  INTERESTING(lDebug ? "Boost(2)" : "BSL-1.0");
6412  }
6413  else {
6414  INTERESTING(lDebug ? "Boost-style(2)" : "BSL-style");
6415  }
6416  }
6417  else if (INFILE(_LT_BOOSTref1)) {
6418  if (INFILE(_TITLE_BOOST10) || INFILE(_PHR_BOOST_V10) ||
6419  URL_INFILE(_URL_BOOST_10)) {
6420  INTERESTING(lDebug ? "Boost1.0(ref)" : "BSL-1.0");
6421  }
6422  else {
6423  INTERESTING(lDebug ? "Boost(ref)" : "BSL-1.0");
6424  }
6425  }
6426  else if (INFILE(_LT_BOOST_GRAPH)) {
6427  INTERESTING(lDebug ? "Boost(graph)" : "BSL-1.0");
6428  }
6429  else if (INFILE(_TITLE_BOOST10) || INFILE(_TITLE_BOOST)) {
6430  INTERESTING(lDebug ? "Boost(title)" : "BSL-1.0");
6431  }
6432 
6433  /*
6434  * bzip2, named with its version
6435  */
6436  if (INFILE(_TITLE_BZIP2_105)) {
6437  INTERESTING("bzip2-1.0.5");
6438  }
6439  else if (INFILE(_TITLE_BZIP2_106)) {
6440  INTERESTING("bzip2-1.0.6");
6441  }
6442  else if (INFILE(_LT_BOOST_LAMBDA)) {
6443  INTERESTING(lDebug ? "Boost(lambda)" : "BSL-1.0");
6444  }
6445  else if (URL_INFILE(_URL_BOOST_10)) {
6446  INTERESTING(lDebug ? "Boost-1.0(ref)" : "BSL-1.0");
6447  }
6448  /*
6449  * Sleepycat NON-Commerical
6450  */
6451  else if (INFILE(_LT_SLEEPYCAT_NC)) {
6452  INTERESTING("Sleepycat.Non-commercial");
6453  }
6455  /*
6456  * Vim license
6457  */
6458  if ((INFILE(_LT_Vim_1) || INFILE(_LT_Vim_2)) && INFILE(_TITLE_Vim)) {
6459  INTERESTING("Vim");
6460  }
6461  else if (INFILE(_PHR_Vim) || INFILE(_PHR_VIM_SAME) || INFILE(_TITLE_Vim)) {
6462  INTERESTING("Vim");
6463  }
6465  /*
6466  * Vixie license
6467  */
6468  if (INFILE(_LT_VIXIE)) {
6469  INTERESTING("Vixie-license");
6470  }
6472  /*
6473  * Yahoo!
6474  */
6475  if (INFILE(_LT_YAHOO_1)) {
6476  if (INFILE(_LT_YAHOO_BINARY)) {
6477  INTERESTING("Yahoo-EULA");
6478  }
6479  else {
6480  INTERESTING("YPL");
6481  }
6482  }
6483  if(INFILE(_TITLE_YPL_V10)) {
6484  INTERESTING("YPL-1.0");
6485  }
6486  else if(INFILE(_TITLE_YPL_V11)) {
6487  INTERESTING("YPL-1.1");
6488  }
6490  /*
6491  * Public Use
6492  */
6493  if (INFILE(_LT_PUBLIC_USE)) {
6494  if (INFILE(_TITLE_PUBUSE_V10)) {
6495  INTERESTING("Public-Use-1.0");
6496  }
6497  else {
6498  INTERESTING("Public-Use");
6499  }
6500  }
6502  /*
6503  * Apple
6504  */
6505  if (INFILE(_TEXT_APPLE)) {
6506  if (INFILE(_LT_MIT_12)) {
6507  INTERESTING(lDebug ? "Apple MIT License" : "AML");
6508  }
6509  else if (INFILE(_LT_APPLE_1)) {
6510  INTERESTING(lDebug ? "Apple(1)" : "Apple");
6511  }
6512  else if (INFILE(_LT_APPLE_2)) {
6513  INTERESTING(lDebug ? "Apple(2)" : "Apple");
6514  }
6515  else if (INFILE(_LT_APPLE_3)) { /* squeak license */
6516  INTERESTING(lDebug ? "Apple(3)" : "Apple");
6517  }
6518  else if (INFILE(_LT_APPLE_4)) { /* squeak license */
6519  INTERESTING(lDebug ? "Apple(4)" : "Apple-EULA");
6520  }
6521  else if (INFILE(_LT_APPLE_FONTFORGE)) {
6522  INTERESTING("Apple.FontForge");
6523  }
6524  else if (INFILE(_LT_APPLE_SAMPLE)) {
6525  INTERESTING("Apple.Sample");
6526  }
6527  else if (INFILE(_LT_APSLref1) || INFILE(_LT_APSLref2) ||
6528  INFILE(_TITLE_APSL)) {
6529  if (INFILE(_TITLE_APSL20)) {
6530  INTERESTING("APSL-2.0");
6531  }
6532  else if (INFILE(_TITLE_Ferris)) {
6533  INTERESTING(lDebug ? "Ferris-1.2" : "APSL-style");
6534  }
6535  else if (INFILE(_TITLE_APSL_style)) {
6536  INTERESTING("APSL-style");
6537  }
6538  else if (INFILE(_TITLE_APSL12)) {
6539  INTERESTING("APSL-1.2");
6540  }
6541  else if (INFILE(_TITLE_APSL11)) {
6542  INTERESTING("APSL-1.1");
6543  }
6544  else if (INFILE(_TITLE_APSL10)) {
6545  INTERESTING("APSL-1.0");
6546  }
6547  else {
6548  INTERESTING("APSL");
6549  }
6550  }
6551  else if (INFILE(_LT_ACDL)) {
6552  INTERESTING("ACDL");
6553  }
6554  else if (INFILE(_TITLE_APPLE_SLA)) {
6555  INTERESTING(lDebug ? "Apple(SLA)" : "Apple-EULA");
6556  }
6557  else if (URL_INFILE(_URL_APSL)) {
6558  INTERESTING(lDebug ? "APSL(url)" : "APSL");
6559  }
6560  else if (URL_INFILE(_URL_ACDL)) {
6561  INTERESTING(lDebug ? "ACDL(url)" : "ACDL");
6562  }
6563  }
6565  /*
6566  * Redland
6567  */
6568  if (INFILE(_LT_REDLAND)) {
6569  INTERESTING("Redland");
6570  }
6572  /*
6573  * Red Hat and Fedora
6574  */
6575  if (INFILE(_LT_RH_PKGS)) {
6576  if (INFILE(_LT_RH_NONCOMMERCIAL)) {
6577  INTERESTING(lDebug ? "RH(NC)" : "RedHat.Non-commercial");
6578  lmem[_mREDHAT] = 1;
6579  }
6580  else if (INFILE(_LT_RH_FEDORA)) {
6581  INTERESTING(lDebug ? "Fedora(1)" : "Fedora");
6582  lmem[_mREDHAT] = 1;
6583  }
6584  }
6585  else if (INFILE(_LT_RH_REDHAT)) {
6586  INTERESTING(lDebug ? "RH(2)" : "RedHat");
6587  lmem[_mREDHAT] = 1;
6588  }
6589  else if (INFILE(_LT_RH_SPECIFIC)) {
6590  INTERESTING(lDebug ? "RH(4)" : "RedHat-specific");
6591  lmem[_mREDHAT] = 1;
6592  }
6593  else if (INFILE(_LT_FEDORA)) {
6594  INTERESTING(lDebug ? "Fedora(2)" : "Fedora");
6595  lmem[_mREDHAT] = 1;
6596  }
6597  else if (INFILE(_LT_FEDORA_CLA) || INFILE(_TITLE_FEDORA_CLA)) {
6598  INTERESTING("FedoraCLA");
6599  lmem[_mREDHAT] = 1;
6600  }
6601  else if (INFILE(_CR_REDHAT)) {
6602  if (INFILE(_LT_RH_1)) {
6603  INTERESTING(lDebug ? "RH(1)" : "RedHat");
6604  lmem[_mREDHAT] = 1;
6605  }
6606  else if (INFILE(_LT_RH_EULA)) {
6607  INTERESTING("RedHat-EULA");
6608  lmem[_mREDHAT] = 1;
6609  }
6610  }
6612  /*
6613  * SUSE/Novell/UnitedLinux
6614  */
6615  if (INFILE(_CR_SUSE) && INFILE(_PHR_YAST_CR)) {
6616  INTERESTING("YaST.SuSE");
6617  }
6618  else if (INFILE(_TITLE_NOVELL_EULA)) {
6619  INTERESTING("Novell-EULA");
6620  }
6621  else if (INFILE(_TITLE_UL_EULA)) {
6622  INTERESTING("UnitedLinux-EULA");
6623  }
6624  else if (INFILE(_LT_NOVELL)) {
6625  INTERESTING("Novell");
6626  lmem[_fIP] = 1;
6627  }
6628  else if (INFILE(_LT_NOVELL_IP_1)) {
6629  INTERESTING(lDebug ? "Novell-IP(1)" : "Novell-IP");
6630  lmem[_fIP] = 1;
6631  }
6632  else if (INFILE(_LT_NOVELL_IP_2)) {
6633  INTERESTING(lDebug ? "Novell-IP(2)" : "Novell-IP");
6634  lmem[_fIP] = 1;
6635  }
6637  /*
6638  * Epson Public license
6639  */
6640  if (INFILE(_LT_EPSON_PL) && INFILE(_TITLE_EPSON_PL)) {
6641  INTERESTING("Epson-PL");
6642  }
6643  else if (INFILE(_LT_EPSON_EULA) && INFILE(_TITLE_EPSON_EULA)) {
6644  INTERESTING("Epson-EULA");
6645  }
6647  /*
6648  * Open Publication license
6649  */
6650  if (INFILE(_LT_OPENPUBL_1) || INFILE(_LT_OPENPUBL_2)) {
6651  if (INFILE(_TITLE_OPENPUBL04)) {
6652  INTERESTING("Open-PL-0.4");
6653  }
6654  else if (INFILE(_TITLE_OPENPUBL10) || URL_INFILE(_URL_OPEN_PL_V10)) {
6655  INTERESTING("Open-PL-1.0");
6656  }
6657  else if (INFILE(_TITLE_OPENPUBL)) {
6658  INTERESTING("Open-PL");
6659  }
6660  else {
6661  INTERESTING("Open-PL-style");
6662  }
6663  }
6664  else if (INFILE(_LT_OPENPUBLref)) {
6665  if (INFILE(_TITLE_OPENPUBL04)) {
6666  INTERESTING(lDebug ? "Open-PL(ref)" : "Open-PL-0.4");
6667  }
6668  else if (INFILE(_TITLE_OPENPUBL10) || URL_INFILE(_URL_OPEN_PL_V10)) {
6669  INTERESTING(lDebug ? "Open-PL(ref)" : "Open-PL-1.0");
6670  }
6671  else {
6672  INTERESTING(lDebug ? "Open-PL(ref)" : "Open-PL");
6673  }
6674  }
6676  /*
6677  * Free Art License
6678  */
6679  if (INFILE(_LT_FREEART_V10)) {
6680  INTERESTING("FAL-1.0");
6681  }
6682  else if (INFILE(_LT_FREEART_V13)) {
6683  INTERESTING("FAL-1.3");
6684  }
6686  /*
6687  * RSA Security, Inc.
6688  */
6689  if (INFILE(_LT_RSA_4)) {
6690  INTERESTING(lDebug ? "RSA(4)" : "RSA-MD");
6691  }
6692  else if (INFILE(_LT_RSA_5)) {
6693  INTERESTING(lDebug ? "RSA(5)" : "RSA-DNS");
6694  }
6695  else if (INFILE (_LT_RSA_CRYPTOKI_1) && INFILE(_LT_RSA_CRYPTOKI_2)){
6696  INTERESTING("RSA-Cryptoki");
6697  }
6698  else if (INFILE(_LT_RSA_3)) {
6699  INTERESTING(lDebug ? "RSA(3)" : "RSA-Security");
6700  }
6701  else if (INFILE(_CR_RSA)) {
6702  if (INFILE(_LT_RSA_1)) {
6703  INTERESTING(lDebug ? "RSA(1)" : "RSA-Security");
6704  }
6705  else if (INFILE(_LT_RSA_2)) {
6706  INTERESTING(lDebug ? "RSA(2)" : "RSA-Security");
6707  }
6708  }
6709  else if (INFILE(_TITLE_RSA_MD)) {
6710  INTERESTING(lDebug ? "RSA(title)" : "RSA-MD");
6711  }
6713  /* Some licenses only deal with fonts */
6714  if (HASTEXT(_TEXT_FONT, 0)) {
6715  /*
6716  * AGFA Monotype
6717  */
6718  if (INFILE(_LT_AGFA)) {
6719  INTERESTING("AGFA.RESTRICTED");
6720  }
6721  else if (INFILE(_LT_AGFA_EULA)) {
6722  INTERESTING("AGFA-EULA");
6723  }
6724  /*
6725  * Bigelow and Holmes
6726  */
6727  if (INFILE(_LT_BH_FONT)) {
6728  if (INFILE(_CR_BH)) {
6729  INTERESTING("BH-Font");
6730  }
6731  else {
6732  INTERESTING("BH-Font-style");
6733  }
6734  }
6736  /*
6737  * BIZNET
6738  */
6739  if (INFILE(_LT_BIZNET)) {
6740  if (INFILE(_CR_BIZNET)) {
6741  INTERESTING("BIZNET");
6742  }
6743  else {
6744  INTERESTING("BIZNET-style");
6745  }
6746  }
6748  /*
6749  * BITSTREAM
6750  */
6751  if (INFILE(_LT_BITSTREAM_1)) {
6752  INTERESTING(lDebug ? "Bitstream(2)" : "Bitstream");
6753  }
6754  else if (INFILE(_LT_BITSTREAM_2)) {
6755  INTERESTING(lDebug ? "Bitstream(3)" : "Bitstream");
6756  }
6758  /*
6759  * Larabie Fonts
6760  */
6761  if (INFILE(_LT_LARABIE_EULA) && INFILE(_TITLE_LARABIE_EULA)) {
6762  INTERESTING("Larabie-EULA");
6763  }
6765  /*
6766  * Arphic Public License
6767  */
6768  if (INFILE(_LT_ARPHIC)) {
6769  if (INFILE(_CR_ARPHIC)) {
6770  INTERESTING("Arphic-Font-PL");
6771  }
6772  else {
6773  INTERESTING("Arphic-style");
6774  }
6775  }
6776  }
6778  /*
6779  * Baekmuk Fonts and Hwan Design
6780  */
6781  if (INFILE(_LT_BAEKMUK_1)) {
6782  INTERESTING("Baekmuk-Font");
6783  }
6784  else if (INFILE(_LT_BAEKMUK_2)) {
6785  INTERESTING("Baekmuk.Hwan");
6786  }
6788  /*
6789  * Baserow Enterprise Edition License
6790  */
6791  if (INFILE(_LT_BASEROW_EE) || INFILE(_LT_BASEROW_EE_2)) {
6792  INTERESTING("Baserow-EE");
6793  }
6795  /*
6796  * Baserow Premium Edition License
6797  */
6798  if (INFILE(_LT_BASEROW_PE) || INFILE(_LT_BASEROW_PE_2)) {
6799  INTERESTING("Baserow-PE");
6800  }
6802  /*
6803  * Information-Technology Promotion Agency (IPA)
6804  */
6805  if (INFILE(_LT_IPA_EULA)) {
6806  INTERESTING("IPA-Font-EULA");
6807  }
6809  /*
6810  * AT&T
6811  */
6812  if (INFILE(_LT_ATT_1)) {
6813  if (INFILE(_CR_ATT)) {
6814  INTERESTING(lDebug ? "ATT(1)" : "ATT");
6815  }
6816  else {
6817  INTERESTING(lDebug ? "ATT-style(1)" : "ATT-style");
6818  }
6819  }
6820  else if (INFILE(_LT_ATT_2)) {
6821  if (!lmem[_fBSD] && INFILE(_CR_BSDCAL)) {
6822  INTERESTING(lDebug ? "BSD(14)" : "BSD");
6823  lmem[_fBSD] = 1;
6824  }
6825  else if (INFILE(_CR_ATT) || INFILE(_CR_LUCENT)) {
6826  INTERESTING(lDebug ? "ATT(2)" : "ATT");
6827  }
6828  else {
6829  INTERESTING(lDebug ? "ATT-style(2)" : "ATT-style");
6830  }
6831  }
6832  else if (INFILE(_LT_ATT_SRC_1) || INFILE(_LT_ATT_SRC_2)) {
6833  if (INFILE(_TITLE_ATT_SRC_12D)) {
6834  INTERESTING("ATT-Source-1.2d");
6835  }
6836  else if (INFILE(_TITLE_ATT_SRC_10)) {
6837  INTERESTING("ATT-Source-1.0");
6838  }
6839  else {
6840  INTERESTING("ATT-Source");
6841  }
6842  }
6843  else if (INFILE(_LT_ATT_NONCOMMERC1) || INFILE(_LT_ATT_NONCOMMERC2)) {
6844  INTERESTING("ATT.Non-commercial");
6845  }
6847  /*
6848  * Silicon Graphics
6849  */
6850  if (INFILE(_TITLE_SGI_V10)) {
6851  INTERESTING("SGI-B-1.0");
6852  }
6853  else if (INFILE(_TITLE_SGI_V11)) {
6854  INTERESTING("SGI-B-1.1");
6855  }
6856  else if (INFILE(_TITLE_SGI_V20)) {
6857  INTERESTING("SGI-B-2.0");
6858  }
6859  else if (INFILE(_LT_SGI_1)) {
6860  if (HASTEXT(_PHR_SGI_LIBTIFF, REG_EXTENDED)) {
6861  INTERESTING("libtiff");
6862  }
6863  else if (HASTEXT(_PHR_LIBTIFF_STYLE, REG_EXTENDED)) {
6864  INTERESTING("libtiff-style");
6865  }
6866  }
6867  else if (INFILE(_LT_SGI_2)) {
6868  if (INFILE(_LT_SGI_V10)) {
6869  INTERESTING("SGI-B-1.0");
6870  }
6871  else if (INFILE(_LT_SGI_V11)) {
6872  INTERESTING("SGI-B-1.1");
6873  }
6874  else if (INFILE(_LT_SGI_V20)) {
6875  INTERESTING("SGI-B-2.0");
6876  }
6877  else if (INFILE(_CR_SGI) || URL_INFILE(_URL_SGI)) {
6878  INTERESTING("SGI");
6879  }
6880  }
6881  else if (INFILE(_LT_SGI_1)) {
6882  if (INFILE(_CR_SGI) || URL_INFILE(_URL_SGI)) {
6883  INTERESTING("SGI-style");
6884  }
6885  }
6886  else if (INFILE(_LT_SGI_FREEW)) {
6887  INTERESTING("SGI-Freeware");
6888  }
6889  else if (INFILE(_LT_SGI_GLX)) {
6890  if (INFILE(_TITLE_SGI_GLX_V10)) {
6891  INTERESTING(lDebug ? "SGI_GLX(1.0)" : "SGI-GLX-1.0");
6892  }
6893  else {
6894  INTERESTING("SGI-GLX");
6895  }
6896  }
6897  else if (INFILE(_LT_SGI_GLXref) && INFILE(_CR_SGI)) {
6898  if (INFILE(_TITLE_SGI_GLX_V10)) {
6899  INTERESTING(lDebug ? "SGI_GLX(10ref)" : "SGI-GLX-1.0");
6900  }
6901  else {
6902  INTERESTING(lDebug ? "SGI_GLX(ref)" : "SGI-GLX");
6903  }
6904  }
6905  else if (INFILE(_LT_SGI_PROPRIETARY) && INFILE(_CR_SGI)) {
6906  INTERESTING("SGI-Proprietary");
6907  }
6909  /*
6910  * 3DFX (Glide)
6911  */
6912  if (INFILE(_CR_3DFX_1) || INFILE(_CR_3DFX_2)) {
6913  if (INFILE(_LT_GLIDE_3DFX)) {
6914  INTERESTING("Glide");
6915  }
6916  else if (INFILE(_LT_GLIDE_GPL)) {
6917  INTERESTING("3DFX-PL");
6918  }
6919  }
6920  /*
6921  * Nvidia Corp
6922  */
6923  else if (INFILE(_LT_NVIDIA_EULA_3)) {
6924  INTERESTING(lDebug ? "Nvidia(1)" : "Nvidia-EULA-a");
6925  }
6926  else if (INFILE(_CR_NVIDIA) && INFILE(_LT_NVIDIA)) {
6927  INTERESTING(lDebug ? "Nvidia(2)" : "Nvidia");
6928  }
6929  else if (INFILE(_LT_NVIDIA_EULA_2)) {
6930  INTERESTING(lDebug ? "Nvidia(3)" : "Nvidia-EULA-b");
6931  }
6932  else if (INFILE(_LT_NVIDIA_EULA_1) || INFILE(_TITLE_NVIDIA)) {
6933  INTERESTING(lDebug ? "Nvidia(4)" : "Nvidia-EULA-b");
6934  }
6935  else if (INFILE(_LT_NVIDIA_1)) {
6936  INTERESTING(lDebug ? "Nvidia(5)" : "Nvidia");
6937  }
6938  /*
6939  * ATI Corp
6940  */
6941  else if (INFILE(_TITLE_ATI_EULA) && INFILE(_LT_ATI_EULA)) {
6942  INTERESTING("ATI-EULA");
6943  }
6944  /*
6945  * Agere Systems
6946  */
6947  else if (INFILE(_TITLE_AGERE_EULA) && INFILE(_LT_AGERE_EULA)) {
6948  INTERESTING("Agere-EULA");
6949  }
6951  /*
6952  * KD Tools, AB
6953  */
6954  if (INFILE(_TITLE_KDAB_EULA)) {
6955  if (INFILE(_LT_KDAB_1)) {
6956  INTERESTING(lDebug ? "KDAB(1)" : "KD-Tools-EULA");
6957  }
6958  if (INFILE(_LT_KDAB_2)) {
6959  INTERESTING(lDebug ? "KDAB(2)" : "KD-Tools-EULA");
6960  }
6961  }
6963  /*
6964  * KDE
6965  */
6966  if (INFILE(_PHR_KDE_FILE) && INFILE(_LT_KDE)) {
6967  INTERESTING("KDE");
6968  }
6970  /*
6971  * Broadcom
6972  */
6973  if (INFILE(_LT_BROADCOM_EULA) && INFILE(_CR_BROADCOM)) {
6974  INTERESTING("Broadcom-EULA");
6975  }
6977  /*
6978  * DARPA (Defense Advanved Research Projects Agency)
6979  */
6980  if (INFILE(_LT_DARPA_COUGAAR_1)) {
6981  INTERESTING("DARPA-Cougaar");
6982  }
6983  else if (INFILE(_LT_DARPA)) {
6984  INTERESTING("DARPA");
6985  }
6987  /*
6988  * Tektronix
6989  */
6990  if (INFILE(_LT_TEKTRONIX)) {
6991  if (INFILE(_CR_TEKTRONIX)) {
6992  INTERESTING("Tektronix");
6993  }
6994  else {
6995  INTERESTING("Tektronix-style");
6996  }
6997  }
6999  /*
7000  * Alliance for Open Media Patent License
7001  */
7002  if (INFILE(_LT_AOM_Patent)) {
7003  INTERESTING("AOM-Patent-1.0");
7004  }
7006  /*
7007  * Open Market, Inc
7008  */
7009  if (INFILE(_LT_CADENCE) && INFILE(_CR_CADENCE)) {
7010  INTERESTING("Cadence");
7011  }
7013  /*
7014  * Open Market, Inc
7015  */
7016  if (INFILE(_LT_OPENMKT)) {
7017  INTERESTING("OpenMarket");
7018  }
7020  /*
7021  * Unicode
7022  */
7023  if (!lmem[_fUNICODE]) {
7024  if (INFILE(_TITLE_UNICODE)) {
7025  INTERESTING(lDebug ? "Unicode(4)" : "Unicode");
7026  }
7027  else if (INFILE(_LT_UNICODE_1) && INFILE(_CR_UNICODE)) {
7028  INTERESTING(lDebug ? "Unicode(1)" : "Unicode");
7029  }
7030  else if (INFILE(_LT_UNICODE_2)) {
7031  INTERESTING(lDebug ? "Unicode(2)" : "Unicode");
7032  }
7033  else if (INFILE(_LT_UNICODE_3)) {
7034  INTERESTING(lDebug ? "Unicode(3)" : "Unicode");
7035  }
7036  else if (INFILE(_LT_UNICODE_4)) {
7037  INTERESTING(lDebug ? "Unicode(4)" : "Unicode-TOU");
7038  }
7039  else if (URL_INFILE(_URL_UNICODE)) {
7040  INTERESTING(lDebug ? "Unicode(5)" : "Unicode-TOU");
7041  }
7042  else if (INFILE(_TITLE_UNICODE_TOU) && INFILE(_LT_UNICODE_TOU)) {
7043  INTERESTING("Unicode-TOU");
7044  }
7046  }
7047  /*
7048  * Software Research Assoc
7049  */
7050  if (INFILE(_LT_SRA) && INFILE(_CR_SRA)) {
7051  INTERESTING("SW-Research");
7052  }
7054  /*
7055  * MITRE Collaborative Virtual Workspace (CVW) License
7056  */
7057  if (INFILE(_LT_MITRE_1)) {
7058  if (INFILE(_CR_MITRE)) {
7059  INTERESTING(lDebug ? "MitreCVW(1)" : "MitreCVW");
7060  }
7061  else if (INFILE(_TITLE_CVW)) {
7062  INTERESTING(lDebug ? "MitreCVW(2)" : "MitreCVW");
7063  }
7064  else {
7065  INTERESTING("MitreCVW-style");
7066  }
7067  }
7068  else if (INFILE(_LT_MITRE_2)) {
7069  INTERESTING(lDebug ? "Mitre(2)" : "Mitre");
7070  }
7072  /*
7073  * Jabber, Motosoto
7074  */
7075  if (INFILE(_LT_JABBER_1)) {
7076  if (INFILE(_TITLE_MOTOSOTO091)) {
7077  INTERESTING("Motosoto");
7078  }
7079  else if (INFILE(_TITLE_JABBER) && NOT_INFILE(_LT_COGNITIVEWEB_OSL_1_1)) {
7080  /* CognitiveWeb OSL reuses the Jabber wording */
7081  INTERESTING("Jabber");
7082  }
7083  }
7084  else if (INFILE(_LT_JABBER_2)) {
7085  if (INFILE(_TITLE_JABBER_V10)) {
7086  INTERESTING(lDebug ? "Jabber(1.0)" : "Jabber-1.0");
7087  }
7088  else {
7089  INTERESTING(lDebug ? "Jabber(2)" : "Jabber");
7090  }
7091  }
7092  else if (URL_INFILE(_URL_JABBER)) {
7093  INTERESTING(lDebug ? "Jabber(url)" : "Jabber");
7094  }
7096  /*
7097  * CPL, Lucent Public License, Eclipse PL
7098  */
7099  int _epl = 0;
7100  if (INFILE(_LT_CPL_1) || INFILE(_LT_CPL_2) || INFILE(_TITLE_IBM_PL10)
7101  || INFILE(_TITLE_IBM_PL20) || INFILE(_TITLE_IBM_PL)) {
7102  if (INFILE(_TITLE_IBM_PL20)) {
7103  INTERESTING("IPL-2.0");
7104  }
7105  else if (INFILE(_TITLE_IBM_PL10)) {
7106  INTERESTING("IPL-1.0");
7107  }
7108  else if (INFILE(_TITLE_IBM_PL)) {
7109  INTERESTING("IPL");
7110  }
7111  else if (INFILE(_TITLE_OpenGroup)) {
7112  INTERESTING("OpenGroup");
7113  }
7114  else if (INFILE(_TITLE_EPL10)) {
7115  INTERESTING(lDebug ? "Eclipse(v.0#1)" : "EPL-1.0");
7116  _epl = 1;
7117  }
7118  else if (INFILE(_TITLE_EPL20)) {
7119  INTERESTING(lDebug ? "Eclipse(v.2#1)" : "EPL-2.0");
7120  _epl = 1;
7121  }
7122  else if (INFILE(_TITLE_EPL) && NOT_INFILE(_TITLE_EPL_IGNORE)) {
7123  INTERESTING(lDebug ? "Eclipse(#1)" : "EPL");
7124  _epl = 1;
7125  }
7126  else if (INFILE(_TITLE_LUCENT102)) {
7127  INTERESTING("LPL-1.02");
7128  }
7129  else if (INFILE(_TITLE_LUCENT10)) {
7130  INTERESTING("LPL-1.0");
7131  }
7132  else if (NOT_INFILE(_LT_CA)) {
7133  cp = CPLVERS();
7134  INTERESTING(lDebug ? "CPL(#1)" : cp);
7135  }
7136  }
7137  else if (INFILE(_LT_LPL_102)) {
7138  INTERESTING("LPL-1.02");
7139  }
7140  else if (!lmem[_fREAL] && INFILE(_LT_CPLref1) && NOT_INFILE(_TITLE_EPL10)) {
7141  cp = CPLVERS();
7142  INTERESTING(lDebug ? "CPL(ref)" : cp);
7143  }
7144  else if (URL_INFILE(_URL_CPL)) {
7145  cp = CPLVERS();
7146  INTERESTING(lDebug ? "CPL(url)" : cp);
7147  }
7148  else if (INFILE(_PHR_CPL_05)) {
7149  INTERESTING(lDebug ? "CPL(0.5)" : "CPL-0.5");
7150  }
7151  else if (INFILE(_PHR_CPL_10)) {
7152  INTERESTING(lDebug ? "CPL(0.5)" : "CPL-1.0");
7153  }
7154  else if (INFILE(_LT_IBM_PLref1)) {
7155  INTERESTING(lDebug ? "IBM-PL(ref)" : "IPL");
7156  }
7157  else if (NOT_INFILE(_PHR_EUPL_COMPATIBLE_ONLY)
7158  && (INFILE(_TITLE_CPL_10)
7159  /* some EPL headers still link to the cpl-v10 page */
7160  || (URL_INFILE(_URL_CPL10) && NOT_INFILE(_TITLE_EPL10)
7161  && NOT_INFILE(_TITLE_EPL20)))) {
7162  INTERESTING(lDebug ? "CPL(title)" : "CPL-1.0");
7163  }
7164  else if (URL_INFILE(_URL_IBM_PL)) {
7165  INTERESTING(lDebug ? "IBM-PL(url)" : "IPL");
7166  }
7168  /* More EPL cases */
7169  if (!_epl) {
7170  if (INFILE(_LT_EPL20ref_1)) {
7171  INTERESTING(lDebug ? "Eclipse(ref#2)" : "EPL-2.0");
7172  }
7173  else if (INFILE(_LT_EPL10ref_1) || INFILE(_LT_EPL10ref_2) || HASTEXT(_LT_EPL10ref_3, REG_EXTENDED)) {
7174  INTERESTING(lDebug ? "Eclipse(ref#2)" : "EPL-1.0");
7175  }
7176  else if (INFILE(_LT_EPLref)) {
7177  if (INFILE(_TITLE_EPL10)) {
7178  INTERESTING(lDebug ? "Eclipse(v.0#2)" : "EPL-1.0");
7179  }
7180  else if (INFILE(_TITLE_EPL20)) {
7181  INTERESTING(lDebug ? "Eclipse(v.2#2)" : "EPL-2.0");
7182  }
7183  else {
7184  INTERESTING(lDebug ? "Eclipse(#2)" : "EPL");
7185  }
7186  }
7187  else if (INFILE(_LT_EPL10ref_1)) {
7188  INTERESTING(lDebug ? "Eclipse(ref#2)" : "EPL-1.0");
7189  }
7190  else if (INFILE(_LT_EPL) && NOT_INFILE(_TITLE_EPL_IGNORE)) {
7191  if (INFILE(_TITLE_EPL10ref_1)) {
7192  INTERESTING(lDebug ? "Eclipse(v1.0#2)" : "EPL-1.0");
7193  }
7194  if (INFILE(_TITLE_EPL20ref_1)) {
7195  INTERESTING(lDebug ? "Eclipse(v1.0#2)" : "EPL-2.0");
7196  }
7197  }
7198  /* the EUPL appendix lists EPL as merely compatible */
7199  else if (NOT_INFILE(_PHR_EUPL_COMPATIBLE_ONLY)) {
7200  if (INFILE(_TITLE_EPL20) || URL_INFILE(_URL_EPL20)
7201  || INFILE(_TITLE_EPL20ref_1)) {
7202  INTERESTING(lDebug ? "Eclipse(title)" : "EPL-2.0");
7203  }
7204  else if (INFILE(_TITLE_EPL10) || URL_INFILE(_URL_EPL10)
7205  || INFILE(_TITLE_EPL10ref_1)) {
7206  INTERESTING(lDebug ? "Eclipse(title)" : "EPL-1.0");
7207  }
7208  }
7209  }
7211  /*
7212  * SyBase/Watcom
7213  */
7214  if (INFILE(_LT_SYBASE)) {
7215  if (INFILE(_TITLE_SYBASE10)) {
7216  INTERESTING("Watcom-1.0");
7217  }
7218  else {
7219  INTERESTING("Watcom");
7220  }
7221  }
7223  /*
7224  * Ricoh
7225  */
7226  if (INFILE(_LT_RICOH)) {
7227  if (INFILE(_TITLE_RICOH10)) {
7228  INTERESTING("RSCPL");
7229  }
7230  }
7232  /*
7233  * OCLC
7234  */
7235  if (INFILE(_LT_OCLC)) {
7236  if (INFILE(_TITLE_OCLC20)) {
7237  INTERESTING("OCLC-2.0");
7238  }
7239  else if (INFILE(_TITLE_OCLC10)) {
7240  INTERESTING("OCLC-1.0");
7241  }
7242  else {
7243  INTERESTING("OCLC");
7244  }
7245  }
7247  /*
7248  * Educational Community License
7249  */
7250  if (INFILE(_LT_ECL1)) {
7251  INTERESTING("ECL-1.0");
7252  lmem[_mMIT] = 1;
7253  }
7254  else if (INFILE(_LT_ECL2)) {
7255  INTERESTING("ECL-2.0");
7256  lmem[_mMIT] = 1;
7257  }
7258  else if (INFILE(_LT_ECL)) {
7259  INTERESTING(lDebug ? "ECL(1)" : "ECL-1.0");
7260  lmem[_mMIT] = 1;
7261  }
7263  /*
7264  * EU DataGrid and Condor PL
7265  */
7266  if (INFILE(_LT_EU)) {
7267  if (INFILE(_TITLE_CONDOR_V10)) {
7268  INTERESTING("Condor-1.0");
7269  } else if (INFILE(_TITLE_CONDOR_V11)) {
7270  INTERESTING("Condor-1.1");
7271  }
7272  else {
7273  INTERESTING("EUDatagrid");
7274  }
7275  }
7276  else if (URL_INFILE(_URL_EUDatagrid)) {
7277  INTERESTING("EUDatagrid");
7278  }
7280  /*
7281  * Adaptive Public License
7282  */
7283  if (INFILE(_LT_ADAPTIVE)) {
7284  if (INFILE(_TITLE_ADAPTIVE10)) {
7285  INTERESTING("APL-1.0");
7286  }
7287  else {
7288  INTERESTING("APL");
7289  }
7290  lmem[_fAPL] = 1;
7291  }
7293  /*
7294  * gSOAP Public License
7295  */
7296  if (!lmem[_mGSOAP] && (INFILE(_LT_GSOAPref13) || INFILE(_TITLE_GSOAP_V13))) {
7297  INTERESTING("gSOAP-1.3b");
7298  }
7299  else if (!lmem[_mGSOAP] && INFILE(_LT_GSOAPref)) {
7300  INTERESTING("gSOAP");
7301  }
7303  /*
7304  * Computer Associates
7305  */
7306  if (INFILE(_LT_CA)) {
7307  if (INFILE(_TITLE_CA11)) {
7308  INTERESTING("CATOSL-1.1");
7309  }
7310  else {
7311  INTERESTING("CA");
7312  }
7313  }
7314  else if (INFILE(_TITLE_CA)) {
7315  INTERESTING("CATOSL");
7316  }
7318  /*
7319  * Frameworx
7320  */
7321  if (INFILE(_LT_FRAMEWORX)) {
7322  if (INFILE(_TITLE_FRAMEWORX10)) {
7323  INTERESTING("Frameworx-1.0");
7324  }
7325  else {
7326  INTERESTING("Frameworx");
7327  }
7328  }
7330  /*
7331  * NASA
7332  */
7333  if (INFILE(_LT_NASA)) {
7334  if (INFILE(_TITLE_NASA13)) {
7335  INTERESTING("NASA-1.3");
7336  }
7337  else {
7338  INTERESTING("NASA");
7339  }
7340  }
7342  /*
7343  * Freetype
7344  */
7345  if (INFILE(_LT_FREETYPE)) {
7346  if (INFILE(_TITLE_CATHARON)) {
7347  INTERESTING(lDebug ? "Catharon(1)" : "Catharon");
7348  }
7349  else if (INFILE(_CR_CATHARON)) {
7350  INTERESTING(lDebug ? "Catharon(2)" : "Catharon");
7351  }
7352  else if (INFILE(_TITLE_FREETYPE)) {
7353  INTERESTING("FTL");
7354  }
7355  else {
7356  INTERESTING("FTL-style");
7357  }
7358  }
7359  else if (INFILE(_LT_FTL)) {
7360  INTERESTING("FTL");
7361  }
7362  else if (INFILE(_TITLE_FTL)|| INFILE(_SPDX_FTL)) {
7363  INTERESTING("FTL");
7364  }
7365  else if (INFILE(_LT_CATHARON)) {
7366  INTERESTING(lDebug ? "Catharon(3)" : "Catharon");
7367  }
7368  else if (INFILE(_LT_FREETYPEref)) {
7369  INTERESTING(lDebug ? "FTL(ref)" : "FTL");
7370  }
7373  /*
7374  * Eiffel Forum License
7375  */
7376  if (INFILE(_LT_EIFFEL)) {
7377  if (INFILE(_TITLE_EIFFEL2)) {
7378  INTERESTING("EFL-2.0");
7379  }
7380  else if (INFILE(_TITLE_EIFFEL1)) {
7381  INTERESTING("EFL-1.0");
7382  }
7383  else {
7384  INTERESTING("EFL");
7385  }
7386  }
7387  else if (INFILE(_TITLE_EIFFEL2)) {
7388  INTERESTING(lDebug ? "EFL(title)" : "EFL-2.0");
7389  }
7390  else if (INFILE(_LT_EIFFEL_20)) {
7391  INTERESTING("EFL-2.0");
7392  }
7393  else if (INFILE(_LT_EIFFEL_1)) {
7394  INTERESTING("EFL");
7395  }
7397  /*
7398  * BISON, Nethack, etc.
7399  */
7400  if (!lmem[_fGPL] && (INFILE(_LT_BISON) || INFILE(_LT_BISONref))) {
7401  if (INFILE(_TITLE_NETHACK)) {
7402  INTERESTING("NGPL");
7403  }
7404  else {
7405  INTERESTING("BISON");
7406  }
7407  }
7409  /*
7410  * Open Software License (OSL) and Academic Free License (AFL) are similar
7411  */
7412  if (INFILE(_LT_OSL_BAD)) {
7413  cp = (INFILE(_TITLE_AFL) ? AFLVERS() : OSLVERS());
7414  INTERESTING(lDebug? "OSL(bad)" : cp);
7415  }
7416  else if (INFILE(_LT_OSLref1)) {
7417  cp = OSLVERS();
7418  INTERESTING(lDebug? "OSL(ref1)" : cp);
7419  }
7420  else if (INFILE(_LT_OSLref2)) {
7421  cp = OSLVERS();
7422  INTERESTING(lDebug? "OSL(ref2)" : cp);
7423  }
7424  else if (INFILE(_LT_AFL)) {
7425  cp = (INFILE(_TITLE_AFL) ? AFLVERS() : OSLVERS());
7426  INTERESTING(lDebug? "AFL#1" : cp);
7427  }
7428  else if (INFILE(_TITLE_OSL21) && NOT_INFILE(_TITLE_OSL21_EXHIBIT)) {
7429  cp = OSLVERS();
7430  INTERESTING(lDebug? "OSL(T2.1)" : cp);
7431  }
7432  else if (INFILE(_TITLE_AFL21)) {
7433  cp = AFLVERS();
7434  INTERESTING(lDebug? "AFL(T2.1)" : cp);
7435  }
7436  else if (INFILE(_TITLE_OSL30) && NOT_INFILE(_TITLE_OSL30_EXHIBIT)) {
7437  cp = OSLVERS();
7438  INTERESTING(lDebug? "OSL(T3.0)" : cp);
7439  }
7440  else if (INFILE(_TITLE_AFL30)) {
7441  cp = AFLVERS();
7442  INTERESTING(lDebug? "AFL(T3.0)" : cp);
7443  }
7444  else if (INFILE(_TITLE_OSL_EARLY)) {
7445  cp = OSLVERS();
7446  INTERESTING(lDebug? "OSL(Tearly)" : cp);
7447  }
7448  else if (URL_INFILE(_URL_OSL11)) {
7449  INTERESTING(lDebug ? "OSL_v1.1(url)" : "OSL-1.1");
7450  }
7451  else if (URL_INFILE(_URL_OSL)) {
7452  INTERESTING(lDebug ? "OSL(url)" : "OSL");
7453  }
7454  else if (URL_INFILE(_URL_AFL)) {
7455  INTERESTING(lDebug ? "AFL(url)" : "AFL");
7456  }
7458  /*
7459  * There are occasions where something is licensed under *either* AFL
7460  * or OSL, so don't keep AFL-refs in the if-then-else-if chain here.
7461  */
7462  if (INFILE(_LT_AFLref1)) {
7463  cp = AFLVERS();
7464  INTERESTING(lDebug? "AFL(ref1)" : cp);
7465  }
7466  else if (INFILE(_LT_AFLref2)) {
7467  cp = AFLVERS();
7468  INTERESTING(lDebug? "AFL(ref2)" : cp);
7469  }
7471  /*
7472  * Inner Net license
7473  */
7474  if (INFILE(_LT_INNERNET)) {
7475  if (INFILE(_TITLE_INNERNET200)) {
7476  INTERESTING("InnerNet-2.00");
7477  }
7478  else if (HASTEXT(_TEXT_INNERNET, 0)) {
7479  INTERESTING("InnerNet");
7480  }
7481  else {
7482  INTERESTING("InnerNet-style");
7483  }
7484  }
7485  else if (INFILE(_LT_INNERNETref_V2)) {
7486  INTERESTING(lDebug ? "InnetNet(v2ref)" : "InnerNet-2.00");
7487  }
7489  /*
7490  * Open Government Licence
7491  */
7492  if (INFILE(_TITLE_OGL_UK)) {
7493  if (INFILE(_TITLE_OGL_UK_10)) {
7494  INTERESTING("OGL-UK-1.0");
7495  }
7496  else if (INFILE(_TITLE_OGL_UK_20)) {
7497  INTERESTING("OGL-UK-2.0");
7498  }
7499  else if (INFILE(_TITLE_OGL_UK_30)) {
7500  INTERESTING("OGL-UK-3.0");
7501  }
7502  /* Full OGL license texts have reference to Creative Commons */
7503  if (HASTEXT(_LT_CC_ref, REG_EXTENDED) || INFILE(_TITLE_CC_NAMED)) {
7504  lmem[_fCCBY] = 1;
7505  }
7506  }
7508  /*
7509  * Creative Commons Public License, Mindterm, and the Reciprocal PL
7510  */
7511  if (!lmem[_fCCBY] && (HASTEXT(_LT_CC_ref, REG_EXTENDED)
7512  /* a bare license name reaches no verb and no URL */
7513  || ((INFILE(_TITLE_CC_NAMED) || INFILE(_TITLE_CC_PORTED))
7514  && NOT_INFILE(_PHR_CC_COMPATIBLE_ONLY)))) {
7515  cp = CCVERS();
7516  INTERESTING(lDebug ? "CC(ref)" : cp);
7517  }
7518  else if (INFILE(_LT_CCPL)) {
7519  if (INFILE(_LT_RECIP_1) || INFILE(_LT_RECIP_2)) {
7520  if (INFILE(_TITLE_RPL15)) {
7521  INTERESTING(lDebug ? "RPL-1.5#1" : "RPL-1.5");
7522  }
7523  else if (INFILE(_TITLE_RPL11)) {
7524  INTERESTING(lDebug ? "RPL-1.1#1" : "RPL-1.1");
7525  }
7526  else if (INFILE(_TITLE_RPL10)) {
7527  INTERESTING(lDebug ? "RPL-1.0#1" : "RPL-1.0");
7528  }
7529  else {
7530  INTERESTING(lDebug ? "RPL#1" : "RPL");
7531  }
7532  }
7533  }
7534  else if (INFILE(_LT_RECIP15)) {
7535  INTERESTING("RPL-1.5");
7536  }
7537  else if (INFILE(_TITLE_MINDTERM)) {
7538  INTERESTING("Mindterm");
7539  }
7540  else if (INFILE(_LT_RECIP_1) || INFILE(_LT_RECIP_2)) {
7541  if (INFILE(_TITLE_RPL15)) {
7542  INTERESTING(lDebug ? "RPL-1.5#2" : "RPL-1.5");
7543  }
7544  else if (INFILE(_TITLE_RPL11)) {
7545  INTERESTING(lDebug ? "RPL-1.1#2" : "RPL-1.1");
7546  }
7547  else if (INFILE(_TITLE_RPL10)) {
7548  INTERESTING(lDebug ? "RPL-1.0#2" : "RPL-1.0");
7549  }
7550  else {
7551  INTERESTING(lDebug ? "RPL#2" : "RPL");
7552  }
7553  }
7554  /*
7555  * For some reason license text strings were defined for few
7556  * Creative Commons licenses.
7557  */
7558  else if (INFILE(_LT_CC_BY_SA_30)) {
7559  INTERESTING("CC-BY-SA-3.0");
7560  }
7561  else if (INFILE(_LT_CC_BY_SA_25)) {
7562  INTERESTING("CC-BY-SA-2.5");
7563  }
7564  else if (INFILE(_LT_CC_BY_NC_30)) {
7565  INTERESTING("CC-BY-NC-3.0");
7566  }
7567  else if (INFILE(_LT_CC_BY_ND_30)) {
7568  INTERESTING("CC-BY-ND-3.0");
7569  }
7570  else if (INFILE(_PHR_CC_BY_40)) {
7571  INTERESTING("CC-BY-4.0");
7572  }
7574  if (URL_INFILE(_URL_RPL)) {
7575  INTERESTING(lDebug ? "RPL(url)" : "RPL");
7576  }
7577  else if (URL_INFILE(_URL_CCLGPL)) {
7578  cp = LGPLVERS();
7579  INTERESTING(lDebug ? "CC-LGPL(url)" : cp);
7580  }
7581  else if (URL_INFILE(_URL_CCGPL)) {
7582  cp = GPLVERS();
7583  INTERESTING(lDebug ? "CC-GPL(url)" : cp);
7584  }
7586  /*
7587  * SpikeSource
7588  */
7589  if (INFILE(_CR_SPIKESOURCE) && INFILE(_LT_SPIKESOURCE)) {
7590  INTERESTING("Spikesource");
7591  }
7593  /*
7594  * Legato systems
7595  */
7596  if (INFILE(_LT_LEGATO_1) || INFILE(_LT_LEGATO_2)) {
7597  INTERESTING("Legato");
7598  }
7600  /*
7601  * Paradigm associates
7602  */
7603  if (INFILE(_LT_PARADIGM) && INFILE(_CR_PARADIGM)) {
7604  INTERESTING("Paradigm");
7605  }
7607  /*
7608  * Wintertree Software
7609  */
7610  if (INFILE(_LT_WINTERTREE)) {
7611  INTERESTING("Wintertree");
7612  }
7614  /*
7615  * Genivia
7616  */
7617  if (INFILE(_LT_GENIVIAref)) {
7618  INTERESTING("Genivia.Commercial");
7619  }
7621  /*
7622  * Open Directory License
7623  */
7624  if (INFILE(_LT_ODL)) {
7625  INTERESTING("ODL");
7626  }
7628  /*
7629  * Open Directory License
7630  */
7631  if (INFILE(_LT_OSD)) {
7632  INTERESTING("OSD");
7633  }
7635  /*
7636  * Zveno
7637  */
7638  if (INFILE(_LT_ZVENO) && INFILE(_CR_ZVENO)) {
7639  INTERESTING("Zveno");
7640  }
7642  /*
7643  * Brainstorm
7644  */
7645  if (INFILE(_LT_BRAINSTORM_EULA) && INFILE(_TITLE_BRAINSTORM_EULA)) {
7646  INTERESTING("BrainStorm-EULA");
7647  }
7649  /*
7650  * AOL
7651  */
7652  if (INFILE(_LT_AOL_EULA)) {
7653  INTERESTING("AOL-EULA");
7654  }
7656  /*
7657  * Algorithmics
7658  */
7659  if (INFILE(_LT_ALGORITHMICS)) {
7660  INTERESTING("Algorithmics");
7661  }
7663  /*
7664  * Pixware
7665  */
7666  if (INFILE(_LT_PIXWARE_EULA)) {
7667  INTERESTING("Pixware-EULA");
7668  }
7670  /*
7671  * Compuserve
7672  */
7673  if (HASTEXT(_TEXT_COMPUSERVE, 0) && INFILE(_LT_COMPUSERVE)) {
7674  INTERESTING("CompuServe");
7675  }
7677  /*
7678  * Advanved Micro Devices (AMD)
7679  */
7680  if (INFILE(_LT_AMDPLPA) || INFILE(_LT_AMDPLPA_2)) {
7681  INTERESTING("AMDPLPA");
7682  }
7683  else if (INFILE(_LT_RADEON_FIRM) || INFILE(_LT_RADEON_FIRM_2)) {
7684  INTERESTING("Radeon-rlx");
7685  }
7686  else if (INFILE(_LT_AMD_SEV) || INFILE(_LT_AMD_SEV_2) || INFILE(_TITLE_AMD_SEV)) {
7687  INTERESTING("AMD-SEV");
7688  }
7689  else if (INFILE(_LT_AMD)) {
7690  INTERESTING("AMD");
7691  }
7692  else if (INFILE(_LT_AMD_EULA) && INFILE(_TITLE_AMD_EULA)) {
7693  INTERESTING("AMD-EULA");
7694  }
7696  /*
7697  * Acki Nacki Gossip Igniter (ANGI) License
7698  */
7699  if (INFILE(_LT_ANGI) || INFILE(_LT_ANGI_2)) {
7700  INTERESTING("ANGI");
7701  }
7703  /*
7704  * OMRON Corp
7705  */
7706  if ((INFILE(_CR_OMRON_1) || INFILE(_CR_OMRON_2)) &&
7707  (INFILE(_LT_OMRON1) || INFILE(_LT_OMRON2))) {
7708  INTERESTING(lDebug ? "OMRON(2)" : "OMRON");
7709  }
7711  /*
7712  * MetroLink
7713  */
7714  if (INFILE(_TITLE_METROLINK)) {
7715  if (INFILE(_LT_METRO)) {
7716  if (INFILE(_LT_METRO_NONFREE)) {
7717  INTERESTING("MetroLink-nonfree");
7718  }
7719  else {
7720  INTERESTING("MetroLink");
7721  }
7722  }
7723  }
7724  else if (INFILE(_LT_METROLINKref)) {
7725  INTERESTING(lDebug ? "MetroLink(ref)" : "MetroLink");
7726  }
7728  /*
7729  * University of Edinburgh (and a CMU derivative)
7730  */
7731  if (INFILE(_LT_EDINBURGH_1)) {
7732  if (mCR_CMU()) {
7733  INTERESTING(lDebug ? "CMU(3)" : "CMU-style");
7734  lmem[_mCMU] = 1;
7735  }
7736  else if (mCR_EDIN()) {
7737  INTERESTING(lDebug ? "U-Edinburgh(1)" : "U-Edinburgh");
7738  }
7739  else {
7740  INTERESTING(lDebug ? "UE-style(1)" : "U-Edinburgh-style");
7741  }
7742  }
7743  else if (INFILE(_LT_EDINBURGH_2)) {
7744  if (mCR_EDIN()) {
7745  INTERESTING(lDebug ? "U-Edinburgh(2)" : "U-Edinburgh");
7746  }
7747  else {
7748  INTERESTING(lDebug ? "UE-style(2)" : "U-Edinburgh-style");
7749  }
7750  }
7752  /*
7753  * Older CMU (including the weird "fnord" text) licenses.
7754  * Note that SPDX listed MIT-CMU license is detected earlier.
7755  */
7756  if (!lmem[_mCMU] && INFILE(_LT_CMU_1)) {
7757  if (!lmem[_mREDHAT] && INFILE(_CR_REDHAT)) {
7758  INTERESTING(lDebug ? "RH(5)" : "RedHat");
7759  lmem[_mREDHAT] = 1;
7760  }
7761  else if (INFILE(_CR_NRL)) {
7762  INTERESTING("NRL");
7763  }
7764  else if (!lmem[_mCMU] && mCR_CMU()) {
7765  /* Mach grant without the return clause */
7766  INTERESTING(lDebug ? "CMU(5)" : "CMU-style");
7767  lmem[_mCMU] = 1;
7768  }
7769  else {
7770  INTERESTING("CMU-style");
7771  lmem[_mCMU] = 1;
7772  }
7773  }
7774  else if (INFILE(_LT_CMU_3)) {
7775  INTERESTING(lDebug ? "CMU(7)" : "CMU-style");
7776  lmem[_mCMU] = 1;
7777  }
7778  else if (INFILE(_LT_CMU_4)) {
7779  INTERESTING(lDebug ? "CMU(8)" : "CMU-style");
7780  lmem[_mCMU] = 1;
7781  }
7782  else if (INFILE(_LT_CMU_5)) {
7783  INTERESTING(lDebug ? "CMU(9)" : "CMU-style");
7784  lmem[_mCMU] = 1;
7785  }
7786  else if (INFILE(_LT_CMU_6)) {
7787  INTERESTING(lDebug ? "CMU(10)" : "CMU-style");
7788  lmem[_mCMU] = 1;
7789  }
7791  /*
7792  * University of Chicago
7793  */
7794  if (INFILE(_CR_UCHICAGO) && INFILE(_LT_UCHICAGO)) {
7795  INTERESTING("U-Chicago");
7796  }
7798  /*
7799  * University of Utah
7800  */
7801  if (INFILE(_CR_UUTAH) && INFILE(_LT_UUTAH)) {
7802  INTERESTING("U-Utah");
7803  }
7805  /*
7806  * University of British Columbia
7807  */
7808  if (INFILE(_CR_UBC) && INFILE(_LT_UBC)) {
7809  INTERESTING("U-BC");
7810  }
7812  /*
7813  * ImageMagick Studios - DON'T RECALL THE TEXT FOR THIS LICENSE!
7814  */
7815  if (INFILE(_LT_IMAGEMAGICK)) {
7816  if (INFILE(_CR_IMAGEMAGICK)) {
7817  INTERESTING("ImageMagick");
7818  }
7819  else {
7820  INTERESTING("ImageMagick-style");
7821  }
7822  }
7823  else if (URL_INFILE(_URL_IMAGEMAGICK)) {
7824  INTERESTING(lDebug ? "ImageMagick(url)" : "ImageMagick");
7825  }
7827  /*
7828  * Riverbank
7829  */
7830  if (INFILE(_LT_RIVERBANK) && INFILE(_TITLE_RIVERBANK_EULA)) {
7831  INTERESTING("Riverbank-EULA");
7832  }
7834  /*
7835  * Polyserve
7836  */
7837  if (INFILE(_CR_POLYSERVE) && INFILE(_LT_POLYSERVE)) {
7838  INTERESTING("Polyserve-CONFIDENTIAL");
7839  }
7841  /*
7842  * Fujitsu Limited
7843  */
7844  if (INFILE(_CR_FUJITSU) && INFILE(_LT_FUJITSU)) {
7845  INTERESTING("Fujitsu");
7846  }
7848  /*
7849  * Cypress Semiconductor
7850  */
7851  if (INFILE(_CR_CYPRESS) && INFILE(_LT_CYPRESS)) {
7852  INTERESTING("Cypress-FW");
7853  }
7854  /*
7855  * Keyspan
7856  */
7857  else if (INFILE(_CR_KEYSPAN) && INFILE(_LT_KEYSPAN)) {
7858  INTERESTING("Keyspan-FW");
7859  }
7860  /*
7861  * ATMEL
7862  */
7863  else if (INFILE(_LT_ATMEL_LINUX_FW) && INFILE(_LT_ATMEL_LINUX_FW_2)) {
7864  INTERESTING("Atmel-linux-firmware");
7865  }
7866  else if (INFILE(_CR_ATMEL) && INFILE(_LT_ATMEL)) {
7867  INTERESTING("ATMEL-FW");
7868  }
7870  /*
7871  * Quest Software
7872  */
7873  if (INFILE(_LT_QUEST_EULA) && INFILE(_TITLE_QUEST_EULA)) {
7874  INTERESTING("Quest-EULA");
7875  }
7877  /*
7878  * International Organization for Standarization
7879  */
7880  if (INFILE(_LT_IOS) && INFILE(_CR_IOS)) {
7881  INTERESTING("IOS");
7882  }
7884  /*
7885  * Garmin Ltd.
7886  */
7887  if (INFILE(_LT_GARMIN_EULA) && INFILE(_TITLE_GARMIN_EULA)) {
7888  INTERESTING("Garmin-EULA");
7889  }
7891  /*
7892  * AVM GmbH
7893  */
7894  if (INFILE(_CR_AVM)) {
7895  if (INFILE(_LT_AVM_1)) {
7896  INTERESTING(lDebug ? "AVM(1)" : "AVM");
7897  }
7898  else if (INFILE(_LT_AVM_2)) {
7899  INTERESTING(lDebug ? "AVM(2)" : "AVM");
7900  }
7901  }
7902  else if (INFILE(_LT_AVM_3)) {
7903  INTERESTING(lDebug ? "AVM(3)" : "AVM");
7904  }
7906  /*
7907  * Fair license
7908  */
7909  if (INFILE(_LT_FAIR)) {
7910  if (INFILE(_TITLE_FAIR)) {
7911  INTERESTING("Fair");
7912  }
7913  else {
7914  INTERESTING("Fair-style");
7915  }
7916  }
7918  /*
7919  * GCA (Majordomo)
7920  */
7921  if (INFILE(_LT_GCA)) {
7922  if (INFILE(_TITLE_MAJORDOMO11)) {
7923  INTERESTING("Majordomo-1.1");
7924  }
7925  else {
7926  INTERESTING("Majordomo");
7927  }
7928  }
7930  /*
7931  * Zeus Technology -- this one is kind of a corner-case since the wording
7932  * is VERY general. If there's a Zeus copyright with the license text,
7933  * spell it out; else, look for the same text in the "generic" section.
7934  */
7935  if (INFILE(_CR_ZEUS) && INFILE(_LT_ZEUS)) {
7936  INTERESTING("Zeus");
7937  }
7939  /*
7940  * Information-technology promotion agency
7941  */
7942  if (!lmem[_mXOPEN] && INFILE(_LT_XOPEN_1)) {
7943  if (!lmem[_mOSF] && INFILE(_CR_OSF)) {
7944  INTERESTING(lDebug ? "OSF(2)" : "OSF");
7945  lmem[_mOSF] = 1;
7946  }
7947  else if (INFILE(_CR_UI)) {
7948  INTERESTING(lDebug ? "UI(2)" : "Unix-Intl");
7949  }
7950  else if (INFILE(_CR_XOPEN)) {
7951  INTERESTING(lDebug ? "XOpen(2)" : "X-Open");
7952  lmem[_mXOPEN] = 1;
7953  }
7954  else if (INFILE(_CR_IPA)) {
7955  INTERESTING("IPA");
7956  }
7957  else if (!lmem[_mSUN] && INFILE(_CR_SUN)) {
7958  INTERESTING(lDebug ? "Sun(10)" : "Sun");
7959  lmem[_mSUN] = 1;
7960  }
7961  else {
7962  INTERESTING("X-Open-style");
7963  }
7964  }
7965  /* This one is funky - it includes part of the copyright */
7966  else if (!lmem[_mXOPEN] && INFILE(_LT_XOPEN_2)) {
7967  INTERESTING(lDebug ? "XOpen(3)" : "X-Open");
7968  lmem[_mXOPEN] = 1;
7969  }
7971  /*
7972  * Interlink networks EULA (seen in HP proprietary code)
7973  */
7974  if (INFILE(_LT_INTERLINK_EULA) && INFILE(_TITLE_INTERLINK_EULA)) {
7975  INTERESTING("Interlink-EULA");
7976  }
7978  /*
7979  * Mellanox Technologies
7980  */
7981  if (INFILE(_LT_MELLANOX) && INFILE(_CR_MELLANOX)) {
7982  INTERESTING("Mellanox");
7983  }
7985  /*
7986  * nCipher Corp
7987  */
7988  if (INFILE(_LT_NCIPHER) && INFILE(_CR_NCIPHER)) {
7989  INTERESTING("nCipher");
7990  }
7992  /*
7993  * Distributed Processing Technology Corp
7994  */
7995  if (INFILE(_CR_DPTC) && INFILE(_LT_DPTC)) {
7996  INTERESTING("DPTC");
7997  }
7998  /*
7999  * Distributed Management Task Force
8000  */
8001  else if (HASTEXT(_TEXT_REPRODUCED, 0) && INFILE(_CR_DMTF) &&
8002  INFILE(_LT_DMTF)) {
8003  INTERESTING("DMTF");
8004  lmem[_fATTRIB] = 1;
8005  }
8007  /*
8008  * DSC Technologies Corp
8009  */
8010  if (INFILE(_CR_DSCT) && INFILE(_LT_DSCT)) {
8011  INTERESTING("DSCT");
8012  }
8014  /*
8015  * Epinions, Inc.
8016  */
8017  if (INFILE(_CR_EPINIONS) && INFILE(_LT_EPINIONS)) {
8018  INTERESTING("Epinions");
8019  }
8021  /*
8022  * MITEM, Ltd
8023  */
8024  if (INFILE(_CR_MITEM) && INFILE(_LT_MITEM)) {
8025  INTERESTING("MITEM");
8026  }
8028  /*
8029  * Cylink corp
8030  */
8031  if ((INFILE(_LT_CYLINK_ISC_1) || INFILE(_LT_CYLINK_ISC_2))) {
8032  INTERESTING("Cylink-ISC");
8033  }
8035  /*
8036  * SciTech software
8037  */
8038  if (INFILE(_CR_SCITECH) && INFILE(_LT_SCITECH)) {
8039  INTERESTING("SciTech");
8040  }
8042  /*
8043  * OReilly and Associates
8044  */
8045  if (INFILE(_LT_OREILLY_1)) {
8046  if (INFILE(_CR_OREILLY)) {
8047  INTERESTING("OReilly");
8048  }
8049  else {
8050  INTERESTING("OReilly-style");
8051  }
8052  }
8053  else if (INFILE(_LT_OREILLY_2)) {
8054  if (INFILE(_CR_OREILLY)) {
8055  INTERESTING(lDebug ? "OReilly-2" : "OReilly");
8056  }
8057  else {
8058  INTERESTING(lDebug ? "OReilly-st-2" : "OReilly-style");
8059  }
8060  }
8062  /*
8063  * Bit-Torrent
8064  */
8065  if (INFILE(_LT_BITTORRENT)) {
8066  if (INFILE(_TITLE_BITTORRENT11)) {
8067  INTERESTING("BitTorrent-1.1");
8068  }
8069  else if (INFILE(_TITLE_BITTORRENT10)) {
8070  INTERESTING("BitTorrent-1.0");
8071  }
8072  else {
8073  INTERESTING("BitTorrent");
8074  }
8075  }
8076  else if (INFILE(_LT_BITTORRENT_V11)) {
8077  INTERESTING("BitTorrent-1.1");
8078  }
8079  else if (INFILE(_LT_BITTORRENT_V10)) {
8080  INTERESTING("BitTorrent-1.0");
8081  }
8082  else if (INFILE(_LT_BITTORRENTref)) {
8083  INTERESTING(lDebug ? "BitTorrent(ref)" : "BitTorrent");
8084  }
8086  /*
8087  * Open Software Foundation
8088  */
8089  if (INFILE(_LT_OSF_1)) {
8090  if (INFILE(_CR_OSF)) {
8091  INTERESTING(lDebug ? "OSF(3)" : "OSF");
8092  lmem[_mOSF] = 1;
8093  }
8094  else {
8095  INTERESTING(lDebug ? "OSF-style(1)" : "OSF-style");
8096  }
8097  }
8098  else if (INFILE(_LT_OSF_2)) {
8099  if (INFILE(_CR_OSF)) {
8100  INTERESTING(lDebug ? "OSF(4)" : "OSF");
8101  lmem[_mOSF] = 1;
8102  }
8103  else if (INFILE(_LT_CMU_8)) {
8104  INTERESTING(lDebug ? "CMU(11)" : "MIT-CMU-style");
8105  }
8106  else {
8107  INTERESTING(lDebug ? "OSF-style(2)" : "OSF-style");
8108  }
8109  }
8111  /*
8112  * OpenLDAP (if not already determined above -- the OpenLDAP public license
8113  * borrows text from LOTS of different sources)
8114  */
8115  if (!lmem[_fBSD] && lmem[_tOPENLDAP] && !lmem[_fOPENLDAP]) {
8116  if (INFILE(_LT_OPENLDAP_1)) {
8117  if (!TRYGROUP(famOPENLDAP)) {
8118  INTERESTING("OLDAP-style");
8119  }
8120  }
8121  else if (INFILE(_LT_OPENLDAP_2)) {
8122  INTERESTING("OLDAP");
8123  }
8124  else {
8125  (void) TRYGROUP(famOPENLDAP);
8126  }
8127  }
8129  /*
8130  * The Knuth license is sufficiently bizarre enough it belongs down here,
8131  * towards the end of the search
8132  *****
8133  * Lachman Associates - includes a proprietary-to-the-max paragraph
8134  * IoSoft Ltd.
8135  */
8136  if (INFILE(_CR_KNUTH) && INFILE(_LT_KNUTH_1)) {
8137  INTERESTING(lDebug ? "Knuth(1)" : "D.E.Knuth");
8138  }
8139  else if (INFILE(_LT_KNUTH_2)) {
8140  INTERESTING(lDebug ? "Knuth(2)" : "D.E.Knuth");
8141  }
8142  else if (INFILE(_LT_KNUTH_STYLE)) {
8143  INTERESTING("Knuth-style");
8144  }
8145  else if (INFILE(_LT_LACHMAN_SECRET)) {
8146  INTERESTING("Lachman-Proprietary");
8147  }
8148  else if (INFILE(_LT_IOSOFT_SRCONLY)) {
8149  INTERESTING("IoSoft.COMMERCIAL");
8150  }
8152  /*
8153  * The Free Software License
8154  */
8155  if (INFILE(_LT_FREE_SW)) {
8156  INTERESTING("Free-SW");
8157  }
8158  /*
8159  * NOT free software and explicitly free software
8160  */
8161  else if (INFILE(_PHR_NOT_FREE_SW)) {
8162  if (INFILE(_LT_NOT_FREE) && INFILE(_CR_WTI)) {
8163  INTERESTING("WTI.Not-free");
8164  }
8165  else {
8166  INTERESTING("Not-Free");
8167  }
8168  }
8170  /*
8171  * Code Project Open License
8172  */
8173  if (INFILE(_LT_CPOL)) {
8174  if (HASTEXT(_LT_CPOL_V102, REG_EXTENDED)) {
8175  INTERESTING("CPOL-1.02");
8176  } else {
8177  INTERESTING("CPOL");
8178  }
8179  }
8181  /*
8182  * Macrovision
8183  */
8184  if (INFILE(_LT_MACROV_IA) && INFILE(_PHR_MACROVISION)) {
8185  if (INFILE(_PHR_EULA)) {
8186  INTERESTING("Macrovision-EULA");
8187  }
8188  else {
8189  INTERESTING("Macrovision");
8190  }
8191  }
8193  /*
8194  * VMware
8195  */
8196  if (INFILE(_LT_VMWARE) && INFILE(_TITLE_VMWARE)) {
8197  INTERESTING("VMWare-EULA");
8198  }
8200  /*
8201  * UCWARE.com
8202  */
8203  if (INFILE(_LT_UCWARE_EULA_1) || INFILE(_LT_UCWARE_EULA_2)) {
8204  INTERESTING("UCWare-EULA");
8205  }
8207  /*
8208  * InfoSeek Corp
8209  */
8210  if (INFILE(_LT_INFOSEEK) && INFILE(_CR_INFOSEEK)) {
8211  INTERESTING("InfoSeek");
8212  }
8214  /*
8215  * Trident Microsystems
8216  */
8217  if (INFILE(_LT_TRIDENT_EULA) && INFILE(_CR_TRIDENT)) {
8218  INTERESTING("Trident-EULA");
8219  }
8221  /*
8222  * ARJ Software Inc
8223  */
8224  if (INFILE(_LT_ARJ) && INFILE(_CR_ARJ)) {
8225  INTERESTING("ARJ");
8226  }
8228  /*
8229  * ArgoUML license (UC Regents, research-purposes clause)
8230  */
8231  if (INFILE(_LT_ARGOUML) || INFILE(_LT_ARGOUML_2)) {
8232  INTERESTING("ArgoUML");
8233  }
8235  /*
8236  * Piriform Ltd
8237  */
8238  if (INFILE(_LT_PIRIFORM) && INFILE(_CR_PIRIFORM)) {
8239  INTERESTING("Piriform");
8240  }
8242  /*
8243  * Design Science License (DSL)
8244  */
8245  if (INFILE(_LT_DSL)) {
8246  INTERESTING("DSL");
8247  }
8249  /*
8250  * Skype
8251  */
8252  if (INFILE(_TITLE_SKYPE) && INFILE(_LT_SKYPE)) {
8253  INTERESTING("Skype-EULA");
8254  }
8256  /*
8257  * Hauppauge
8258  */
8259  if (INFILE(_LT_HAUPPAUGE)) {
8260  INTERESTING("Hauppauge");
8261  }
8263  /*
8264  * Platform Computing Corp (or a generic on-your-intranet-only restriction)
8265  */
8266  if (INFILE(_LT_INTRANET_ONLY)) {
8267  if (INFILE(_CR_PLATFORM_COMP)) {
8268  INTERESTING(lDebug ? "Platfm(1)" : "Platform-Computing-RESTRICTED");
8269  } else {
8270  MEDINTEREST("Intranet-only");
8271  }
8272  } else if (INFILE(_LT_NOT_INTERNET)) {
8273  if (INFILE(_CR_PLATFORM_COMP)) {
8274  INTERESTING(lDebug ? "Platfm(2)" : "Platform-Computing-RESTRICTED");
8275  } else {
8276  MEDINTEREST("Not-Internet");
8277  }
8278  }
8280  /*
8281  * Curl
8282  */
8283  if (URL_INFILE(_URL_CURL)) {
8284  INTERESTING(lDebug ? "Curl(URL)" : "curl");
8285  }
8287  /*
8288  * ID Software
8289  */
8290  if (INFILE(_LT_ID_EULA)) {
8291  INTERESTING("ID-EULA");
8292  }
8294  /*
8295  * M+ Fonts Project
8296  */
8297  if (INFILE(_LT_MPLUS_FREE_FONT) && INFILE(_CR_MPLUS)) {
8298  INTERESTING("M-Plus");
8299  }
8301  /*
8302  * Powder Development
8303  */
8304  if (INFILE(_LT_POWDER)) {
8305  INTERESTING("Powder-Proprietary");
8306  }
8308  /*
8309  * Against DRM
8310  */
8311  if (INFILE(_LT_AGAINST_DRM)) {
8312  INTERESTING("Against-DRM");
8313  }
8315  /*
8316  * The TeXinfo exception clause
8317  */
8318  if (INFILE(_LT_TEX_EXCEPT)) {
8319  INTERESTING(lDebug ? "TeX-except" : "TeX-exception");
8320  }
8322  /*
8323  * The U.S. Gummint
8324  */
8325  if (INFILE(_LT_USGOVT_1)) {
8326  if (INFILE(_CR_URA)) {
8327  MEDINTEREST("URA.govt");
8328  }
8329  else {
8330  MEDINTEREST(lDebug ? "Govt-Wk(1)" : "Govt-work");
8331  }
8332  }
8333  else if (INFILE(_LT_USGOVT_2)) {
8334  /*
8335  * mpich2
8336  */
8337  if (INFILE(_LT_MPICH2)) {
8338  INTERESTING("mpich2");
8339  }
8340  else {
8341  MEDINTEREST(lDebug ? "Govt-Wk(2)" : "Govt-work");
8342  }
8343  }
8344  else if (INFILE(_LT_USGOVT_RIGHTS1) && INFILE(_LT_PUBLIC)) {
8345  MEDINTEREST(lDebug ? "US-Govt(1)" : "Govt-rights");
8346  }
8347  else if (INFILE(_LT_USGOVT_RIGHTS2)) {
8348  MEDINTEREST(lDebug ? "US-Govt(2)" : "Govt-rights");
8349  }
8351  /*
8352  * AACA (Ada Conformity Assessment Authority)
8353  */
8354  if (INFILE(_LT_ACAA_RIGHTS) && INFILE(_LT_PUBLIC)) {
8355  INTERESTING("ACAA");
8356  }
8358  /*
8359  * Zend Engine License
8360  */
8361  if (INFILE(_LT_ZEND_1) || URL_INFILE(_URL_ZEND)) {
8362  INTERESTING("Zend-2.0");
8363  }
8364  else if (INFILE(_LT_ZEND_2)) {
8365  INTERESTING("Zend-1.0");
8366  }
8368  /*
8369  * WebM
8370  * Changed to BSD-3-Clause, WebM is not OSI nor SPDX recognized license
8371  */
8372  if (URL_INFILE(_URL_WEBM)) {
8373  INTERESTING(lDebug ? "WebM" : "BSD-3-Clause");
8374  }
8376  /* Dyade Public License
8377  * http://old.koalateam.com/jackaroo/DYADE_PUBLIC_LICENSE.TXT
8378  */
8379  if (INFILE(_LT_DYADE) && INFILE(_LT_DYADE_2))
8380  {
8381  INTERESTING("Dyade");
8382  }
8383  /*
8384  * Zimbra
8385  */
8386  if (INFILE(_TITLE_ZIMBRA_13)) {
8387  INTERESTING("Zimbra-1.3");
8388  }
8389  else if (INFILE(_TITLE_ZIMBRA_12)) {
8390  INTERESTING("Zimbra-1.2");
8391  }
8392  else if (INFILE(_TITLE_ZIMBRA)) {
8393  INTERESTING("Zimbra");
8394  }
8396  /*
8397  * Open Database
8398  */
8399  if (INFILE(_TITLE_ODBL)) {
8400  INTERESTING("ODbL-1.0");
8401  lmem[_fODBL] = 1;
8402  }
8404  /*
8405  * Multics
8406  */
8407  if (INFILE(_LT_MULTICS)) {
8408  INTERESTING("Multics");
8409  }
8411  /*
8412  * H2
8413  * Note, H2 title is also checked in MPL section
8414  */
8415  if (INFILE(_TITLE_H2_V10)) {
8416  INTERESTING("H2-1.0");
8417  }
8419  /*
8420  * CRYPTOGAMS
8421  */
8422  if (INFILE(_LT_CRYPTOGAMS)) {
8423  INTERESTING("Cryptogams");
8424  }
8426  /*
8427  * Cygnus-eCos-1.0
8428  * Note, Cygnus-eCos title is also checked in MPL section
8429  */
8430  if (INFILE(_TITLE_CYGNUS_ECOS_V10)) {
8431  INTERESTING("Cygnus-eCos-1.0");
8432  }
8434  /*
8435  * RHeCos-1.1
8436  * Note, RHeCos-1.1 title is also checked in MPL section
8437  */
8438  if (INFILE(_TITLE_RHeCos_V11)) {
8439  INTERESTING("RHeCos-1.1");
8440  }
8442  /*
8443  * TMate
8444  * Note, TMate is also recognized with BSD-2-Clause detection
8445  */
8446  if (INFILE(_TITLE_TMATE)) {
8447  INTERESTING("TMate");
8448  }
8450  /*
8451  * Abstyles
8452  */
8453  if (INFILE(_LT_ABSTYLES_1) && INFILE(_LT_ABSTYLES_2)) {
8454  INTERESTING("Abstyles");
8455  }
8457  if (INFILE(_LT_ABRS)) {
8458  INTERESTING("ABRS");
8459  }
8461  if (INFILE(_LT_ANDRE_ADRIAN_DFS) || INFILE(_LT_ANDRE_ADRIAN_DFS_2)) {
8462  INTERESTING("Andre-Adrian-DFS");
8463  }
8465  if (INFILE(_LT_ACTIVESTATE) || INFILE(_TITLE_ACTIVESTATE)) {
8466  INTERESTING("ActiveState-Community");
8467  }
8469  /*
8470  * Amazon Digital Services License
8471  */
8472  if (INFILE(_LT_ADSL) && (INFILE(_CR_AMAZON) || HASTEXT(_TEXT_AMAZON_DIG, REG_ICASE))) {
8473  INTERESTING("ADSL");
8474  }
8476  /*
8477  * CrystalStacker License
8478  */
8479  if (HASTEXT(_LT_CRYSTALSTACKER, REG_EXTENDED)) {
8480  INTERESTING("CrystalStacker");
8481  }
8483  /*
8484  * 3GPP
8485  */
8486  if (INFILE(_LT_3GPP)) {
8487  INTERESTING("3GPP");
8488  }
8490  /*
8491  * ITU-T
8492  */
8493  if (INFILE(_LT_ITU_T_1) || INFILE(_LT_ITU_T_2) || HASTEXT(_TITLE_ITU_T, 0)) {
8494  INTERESTING("ITU-T");
8495  }
8497  /*
8498  * Sun Public License
8499  */
8500  if (!lmem[_mSUN] && !lmem[_mMPL]) {
8501  if (INFILE(_TITLE_SUN_PL10)) {
8502  INTERESTING("SPL-1.0");
8503  }
8504  else if (!lmem[_fREAL] && INFILE(_TITLE_SUN_PL)) {
8505  INTERESTING("SPL");
8506  }
8507  }
8509  /*
8510  * libtiff, note that license text is detected earlier
8511  */
8512  if (INFILE(_PHR_LIBTIFF)) {
8513  INTERESTING("libtiff");
8514  }
8516  /*
8517  * Imlib2
8518  */
8519  if (INFILE(_PHR_Imlib2)) {
8520  INTERESTING("Imlib2");
8521  }
8523  /*
8524  * Wide Open License (WOL)
8525  */
8526  if (INFILE(_TITLE_WOL) || INFILE(_URL_WOL)) {
8527  INTERESTING("WOL");
8528  }
8530  /*
8531  * naist-2003
8532  */
8533  if (INFILE(_LT_NAIST_2003) && HASTEXT(_TEXT_NAIST, 0)) {
8534  INTERESTING("NAIST-2003");
8535  }
8537  /*
8538  * EDL-1.0
8539  */
8540  if (INFILE(_TITLE_EDL_V10)) {
8541  INTERESTING("EDL-1.0");
8542  }
8544  /*
8545  * HSQLDB
8546  */
8547  if (INFILE(_LT_HSQLDB_1) || INFILE(_LT_HSQLDB_2) || INFILE(_LT_HSQLDB_3)) {
8548  INTERESTING("HSQLDB");
8549  }
8551  /*
8552  * Sony Computer Entertainment (SCEA) Shared Source License
8553  */
8554  if (INFILE(_TITLE_SCEA)) {
8555  INTERESTING("SCEA");
8556  }
8558  /*
8559  * OpenMap
8560  */
8561  if (INFILE(_TITLE_OPENMAP)) {
8562  INTERESTING("OpenMap");
8563  lmem[_fPDDL] = 1;
8564  }
8566  /*
8567  * ICU 1.8.1
8568  */
8569  if (INFILE(_LT_ICU_1) || INFILE(_TITLE_ICU) || INFILE(_SPDX_ICU)
8570  || INFILE(_TITLE_ICU_NAMED)) {
8571  INTERESTING("ICU");
8572  }
8573  else if (INFILE(_PHR_ICU_1)) {
8574  INTERESTING("ICU");
8575  }
8577  /*
8578  * Ubuntu Font License
8579  */
8580  if (INFILE(_TITLE_UBUNTU_FONT)) {
8581  INTERESTING("Ubuntu-font-1.0");
8582  lmem[_fPDDL] = 1;
8583  }
8585  /*
8586  * ODC Attribution License
8587  */
8588  if (INFILE(_LT_ODC)) {
8589  INTERESTING("ODC-By-1.0");
8590  pd = 0;
8591  }
8593  /*
8594  * Community Data License Agreement
8595  */
8596  if (INFILE(_TITLE_CDLA_Permissive_10)) {
8597  INTERESTING("CDLA-Permissive-1.0");
8598  }
8599  else if (INFILE(_TITLE_CDLA_Sharing_10)) {
8600  INTERESTING("CDLA-Sharing-1.0");
8601  }
8603  /*
8604  * Toolbar2000
8605  */
8606  if (INFILE(_TITLE_Toolbar2000) || INFILE(_URL_Toolbar2000)) {
8607  INTERESTING("Toolbar2000");
8608  }
8610  /*
8611  * unboundID-ldap-sdk
8612  */
8613  if (INFILE(_TITLE_unboundID_ldap_sdk) || INFILE(_LT_unboundID_ldap_sdk)) {
8614  INTERESTING("unboundID-ldap-sdk");
8615  }
8617  /*
8618  * BlueOak-1.0.0
8619  */
8620  if (INFILE(_TITLE_BlueOak_100) || URL_INFILE(_URL_BlueOak_100)) {
8621  INTERESTING("BlueOak-1.0.0");
8622  }
8623  else if (INFILE(_LT_BlueOak_100_Purpose) && INFILE(_LT_BlueOak_100_Acceptance)) {
8624  INTERESTING("BlueOak-1.0.0");
8625  }
8627  /*
8628  * CERN-OHL
8629  */
8630  if (INFILE(_TITLE_CERN_OHL_11)) {
8631  INTERESTING("CERN-OHL-1.1");
8632  }
8633  else if (INFILE(_TITLE_CERN_OHL_12)) {
8634  INTERESTING("CERN-OHL-1.2");
8635  }
8637  /*
8638  * MulanPSL
8639  */
8640  /* _URL_MulanPSL also matches the v2 URL */
8641  if (INFILE(_TITLE_MULANPSL_20) || URL_INFILE(_URL_MulanPSL_20)) {
8642  INTERESTING("MulanPSL-2.0");
8643  }
8644  else if (INFILE(_TITLE_MulanPSL_10) || URL_INFILE(_URL_MulanPSL) || INFILE(_LT_MulanPSL_10)) {
8645  INTERESTING("MulanPSL-1.0");
8646  }
8648  /*
8649  * SSH
8650  */
8651  if (INFILE(_LT_FREE_72) && HASTEXT(_LT_SSH, REG_EXTENDED)) {
8652  if (INFILE(_LT_SSH_OpenSSH)) {
8653  INTERESTING("SSH-OpenSSH");
8654  }
8655  else {
8656  INTERESTING("SSH-short");
8657  }
8658  }
8660 
8661  SPDXREF();
8663  EXCEPTIONS();
8665 
8666  /*
8667  * The Stallman paper "Why Software Should Be Free" is a red-herring.
8668  * His 1986 interview in Byte magazine also is, too.
8669  */
8670  if ((INFILE(_TITLE_RMS_WSSBF) && INFILE(_PHR_RMS1) &&
8671  INFILE(_PHR_RMS2)) || INFILE(_TITLE_RMS_BYTE86)) {
8672  if (lDiags) {
8673  printf("... RMS propaganda\n");
8674  }
8675  lmem[_fDOC] = 1;
8676  }
8678  /*
8679  * If there's a no-warranty statement in the file, remember the regex.
8680  * Ditto for phrase stating restrictions.
8681  */
8682  if (maxInterest != IL_HIGH) {
8683  for (i = 0; i < NNOWARRANTY; i++) {
8684  if (INFILE((j = _NO_WARRANTY_first+i))) {
8685  nw = j;
8686  break;
8687  }
8688  }
8689  }
8690  addLicence(cur.theMatches,"NoWarranty");
8691 
8692  /*
8693  * Statements about IP (Intellectual Property) rights
8694  */
8695  if (!lmem[_fIP] && INFILE(_LT_GEN_IP_1)) {
8696  INTERESTING(lDebug ? "IP(1)" : "IP-claim");
8697  }
8698  else if (!lmem[_fIP] && INFILE(_LT_GEN_IP_2) && NOT_INFILE(_TITLE_MIROS)) {
8699  INTERESTING(lDebug ? "IP(2)" : "IP-claim");
8700  }
8701  else if (!lmem[_fIP] && INFILE(_LT_GEN_IP_3)) {
8702  INTERESTING(lDebug ? "IP(3)" : "IP-claim");
8703  }
8705  /*
8706  * Dual licenses
8707  */
8708  if (INFILE(_LT_DUAL_LICENSE_0) && NOT_INFILE(_TITLE_NOSL)) {
8709  MEDINTEREST(lDebug ? "Dual-license(0)" : "Dual-license");
8710  }
8711  else if (INFILE(_LT_DUAL_LICENSE_22)) {
8712  MEDINTEREST(lDebug ? "Dual-license(22)" : "Dual-license");
8713  }
8714  else if (INFILE(_LT_DUAL_LICENSE_1) && NOT_INFILE(_TITLE_NOSL)) {
8715  MEDINTEREST(lDebug ? "Dual-license(1)" : "Dual-license");
8716  }
8717  else if (INFILE(_LT_DUAL_LICENSE_2)) {
8718  MEDINTEREST(lDebug ? "Dual-license(2)" : "Dual-license");
8719  }
8720  else if (INFILE(_LT_DUAL_LICENSE_3) && NOT_INFILE(_LT_DUAL_LICENSE_3_EXHIBIT)) {
8721  MEDINTEREST(lDebug ? "Dual-license(3)" : "Dual-license");
8722  }
8723  else if (INFILE(_LT_DUAL_LICENSE_4)) {
8724  MEDINTEREST(lDebug ? "Dual-license(4)" : "Dual-license");
8725  }
8726  else if (INFILE(_LT_DUAL_LICENSE_5)) {
8727  MEDINTEREST(lDebug ? "Dual-license(5)" : "Dual-license");
8728  }
8729  else if (INFILE(_LT_DUAL_LICENSE_6)) {
8730  MEDINTEREST(lDebug ? "Dual-license(6)" : "Dual-license");
8731  }
8732  else if (INFILE(_LT_DUAL_LICENSE_7)) {
8733  MEDINTEREST(lDebug ? "Dual-license(7)" : "Dual-license");
8734  }
8735  else if (INFILE(_LT_DUAL_LICENSE_8)) {
8736  MEDINTEREST(lDebug ? "Dual-license(8)" : "Dual-license");
8737  }
8738  else if (INFILE(_LT_DUAL_LICENSE_9)) {
8739  MEDINTEREST(lDebug ? "Dual-license(9)" : "Dual-license");
8740  }
8741  else if (INFILE(_LT_DUAL_LICENSE_10)) {
8742  MEDINTEREST(lDebug ? "Dual-license(10)" : "Dual-license");
8743  }
8744  else if (INFILE(_LT_DUAL_LICENSE_11)) {
8745  MEDINTEREST(lDebug ? "Dual-license(11)" : "Dual-license");
8746  }
8747  else if (INFILE(_LT_DUAL_LICENSE_12)) {
8748  MEDINTEREST(lDebug ? "Dual-license(12)" : "Dual-license");
8749  }
8750  else if (INFILE(_LT_DUAL_LICENSE_13)) {
8751  INTERESTING(lDebug ? "Dual-license(13)" : "Dual-license");
8752  INTERESTING("BSD");
8753  INTERESTING("MIT");
8754  /*
8755  * A special case for NomosTestfiles/Dual-license/respond.js
8756  * that has two dual-license statements.
8757  */
8758  if (!lmem[_mGPL]) {
8759  if (INFILE(_LT_DUAL_LICENSE_16)) {
8760  INTERESTING(lDebug ? "GPLV2(Dual-license(16))" : "GPL-2.0-only");
8761  }
8762  }
8763  }
8764  else if (INFILE(_LT_DUAL_LICENSE_14)) {
8765  INTERESTING(lDebug ? "Dual-license(14)" : "Dual-license");
8766  INTERESTING("BSD");
8767  if (!lmem[_mGPL]) {
8768  INTERESTING("GPL");
8769  }
8770  }
8771  else if (INFILE(_LT_DUAL_LICENSE_15)) {
8772  MEDINTEREST(lDebug ? "Dual-license(15)" : "Dual-license");
8773  }
8774  else if (INFILE(_LT_DUAL_LICENSE_16)) {
8775  INTERESTING(lDebug ? "Dual-license(16)" : "Dual-license");
8776  INTERESTING("MIT");
8777  INTERESTING(lDebug ? "GPLV2(Dual-license(16))" : "GPL-2.0-only");
8778  }
8779  else if (INFILE(_LT_DUAL_LICENSE_17)) {
8780  MEDINTEREST(lDebug ? "Dual-license(17)" : "Dual-license");
8781  }
8782  else if (INFILE(_LT_DUAL_LICENSE_18)) {
8783  MEDINTEREST(lDebug ? "Dual-license(18)" : "Dual-license");
8784  }
8785  else if (INFILE(_LT_DUAL_LICENSE_19)) {
8786  MEDINTEREST(lDebug ? "Dual-license(19)" : "Dual-license");
8787  }
8788  else if (INFILE(_LT_DUAL_LICENSE_20)) {
8789  MEDINTEREST(lDebug ? "Dual-license(20)" : "Dual-license");
8790  }
8791  else if (INFILE(_LT_DUAL_LICENSE_21)) {
8792  MEDINTEREST(lDebug ? "Dual-license(21)" : "Dual-license");
8793  }
8794  else if (INFILE(_LT_DUAL_LICENSE_23)) {
8795  MEDINTEREST(lDebug ? "Dual-license(23)" : "Dual-license");
8796  }
8797  else if (INFILE(_LT_DUAL_LICENSE_24)) {
8798  MEDINTEREST(lDebug ? "Dual-license(24)" : "Dual-license");
8799  }
8800  else if (INFILE(_LT_DUAL_LICENSE_25)) {
8801  MEDINTEREST(lDebug ? "Dual-license(25)" : "Dual-license");
8802  }
8803  else if (INFILE(_LT_DUAL_LICENSE_26)) {
8804  MEDINTEREST(lDebug ? "Dual-license(26)" : "Dual-license");
8805  }
8806  else if (INFILE(_LT_DUAL_LICENSE_27)) {
8807  MEDINTEREST(lDebug ? "Dual-license(27)" : "Dual-license");
8808  }
8809  else if (INFILE(_LT_DUAL_LICENSE_28)) {
8810  MEDINTEREST(lDebug ? "Dual-license(28)" : "Dual-license");
8811  }
8812  else if (INFILE(_LT_DUAL_LICENSE_29) && NOT_INFILE(_LT_MPL_SECONDARY_LICENSE)) {
8813  MEDINTEREST(lDebug ? "Dual-license(29)" : "Dual-license");
8814  }
8815  else if (INFILE(_LT_DUAL_LICENSE_30)) {
8816  MEDINTEREST(lDebug ? "Dual-license(30)" : "Dual-license");
8817  }
8818  else if (INFILE(_LT_DUAL_LICENSE_31)) {
8819  MEDINTEREST(lDebug ? "Dual-license(31)" : "Dual-license");
8820  }
8821  else if (INFILE(_LT_DUAL_LICENSE_32)) {
8822  MEDINTEREST(lDebug ? "Dual-license(32)" : "Dual-license");
8823  }
8824  else if (INFILE(_LT_DUAL_LICENSE_33)) {
8825  MEDINTEREST(lDebug ? "Dual-license(33)" : "Dual-license");
8826  }
8827  else if (INFILE(_LT_DUAL_LICENSE_34)) {
8828  MEDINTEREST(lDebug ? "Dual-license(34)" : "Dual-license");
8829  }
8830  else if (HASTEXT(_LT_DUAL_LICENSE_35, 0)) {
8831  MEDINTEREST(lDebug ? "Dual-license(35)" : "Dual-license");
8832  /*
8833  * GPL is not detected correctly in this case, therefore it is set here.
8834  */
8835  INTERESTING("GPL");
8836  }
8837  else if (INFILE(_LT_DUAL_LICENSE_36)) {
8838  MEDINTEREST(lDebug ? "Dual-license(36)" : "Dual-license");
8839  }
8840  else if (INFILE(_LT_DUAL_LICENSE_37)) {
8841  MEDINTEREST(lDebug ? "Dual-license(37)" : "Dual-license");
8842  }
8843  else if (INFILE(_LT_DUAL_LICENSE_38)) {
8844  MEDINTEREST(lDebug ? "Dual-license(38)" : "Dual-license");
8845  }
8846  else if (INFILE(_LT_DUAL_LICENSE_39)) {
8847  MEDINTEREST(lDebug ? "Dual-license(39)" : "Dual-license");
8848  }
8849  else if (INFILE(_LT_DUAL_LICENSE_40)) {
8850  MEDINTEREST(lDebug ? "Dual-license(40)" : "Dual-license");
8851  }
8852  else if (INFILE(_LT_DUAL_LICENSE_41)) {
8853  MEDINTEREST(lDebug ? "Dual-license(41)" : "Dual-license");
8854  }
8855  else if (INFILE(_LT_DUAL_LICENSE_42)) {
8856  MEDINTEREST(lDebug ? "Dual-license(42)" : "Dual-license");
8857  }
8858  else if (INFILE(_LT_DUAL_LICENSE_43)) {
8859  MEDINTEREST(lDebug ? "Dual-license(43)" : "Dual-license");
8860  }
8861  else if (HASTEXT(_LT_DUAL_LICENSE_44, 0)) {
8862  MEDINTEREST(lDebug ? "Dual-license(44)" : "Dual-license");
8863  }
8864  else if (INFILE(_LT_DUAL_LICENSE_45)) {
8865  MEDINTEREST(lDebug ? "Dual-license(45)" : "Dual-license");
8866  INTERESTING("MIT");
8867  }
8868  else if (HASTEXT(_LT_DUAL_LICENSE_46, REG_EXTENDED)) {
8869  MEDINTEREST(lDebug ? "Dual-license(46)" : "Dual-license");
8870  }
8871  else if (HASTEXT(_LT_DUAL_LICENSE_47, REG_EXTENDED) && NOT_INFILE(_LT_MPL_SECONDARY_LICENSE)) {
8872  MEDINTEREST(lDebug ? "Dual-license(47)" : "Dual-license");
8873  }
8874  else if (INFILE(_LT_DUAL_LICENSE_48)) {
8875  MEDINTEREST(lDebug ? "Dual-license(48)" : "Dual-license");
8876  }
8877  else if (HASTEXT(_LT_DUAL_LICENSE_49, REG_EXTENDED)) {
8878  MEDINTEREST(lDebug ? "Dual-license(49)" : "Dual-license");
8879  }
8881  /*
8882  * The Beer-ware license(!)
8883  */
8884  if (INFILE(_LT_BEERWARE) || INFILE(_TITLE_BEERWARE)) {
8885  INTERESTING("Beerware");
8886  }
8888  /*
8889  * CMake license
8890  */
8891  if (URL_INFILE(_URL_CMAKE)) {
8892  INTERESTING("CMake");
8893  }
8895  /*
8896  * unRAR restriction
8897  */
8898  if (INFILE(_LT_UNRARref1) || INFILE(_LT_UNRARref2)) {
8899  INTERESTING("unRAR-restriction");
8900  }
8902  /*
8903  * ANTLR Software Rights Notice
8904  */
8905  if (INFILE(_LT_ANTLR)) {
8906  INTERESTING("ANTLR-PD");
8907  lmem[_fANTLR] = 1;
8908  }
8910  /*
8911  * Creative Commons Zero v1.0 Universal
8912  */
8913  if (INFILE(_SPDX_CC0_10)) {
8914  INTERESTING("CC0-1.0");
8915  }
8916  else if (INFILE(_TITLE_CC0_10_1) || INFILE(_PHR_CC0_1) || INFILE(_PHR_CC0_2)) {
8917  INTERESTING("CC0-1.0");
8918  }
8919  else if (INFILE(_SPDX_CC0)) {
8920  INTERESTING("CC0");
8921  }
8923  /*
8924  * PA Font License (IPA)
8925  */
8926  if (INFILE(_TITLE_IPA)) {
8927  INTERESTING("IPA");
8928  }
8930  /*
8931  * European Union Public Licence
8932  */
8933  if (INFILE(_PHR_EUPL_10) || INFILE(_TITLE_EUPL_10)
8934  || INFILE(_PHR_EUPL_NAMED_10)) {
8935  INTERESTING("EUPL-1.0");
8936  }
8937  else if (INFILE(_PHR_EUPL_11) || INFILE(_TITLE_EUPL_11)
8938  || INFILE(_PHR_EUPL_NAMED_11)) {
8939  INTERESTING("EUPL-1.1");
8940  }
8941  else if (INFILE(_TITLE_EUPL_12) || INFILE(_PHR_EUPL_NAMED_12)) {
8942  INTERESTING("EUPL-1.2");
8943  }
8944  else if (INFILE(_PHR_EUPL)) {
8945  INTERESTING("EUPL");
8946  }
8948  /* University of Illinois/NCSA Open Source License */
8949  if (!lmem[_fNCSA] && INFILE(_TITLE_NCSA) && NOT_INFILE(_TITLE_NCSA_EXHIBIT)) {
8950  INTERESTING(lDebug ? "NCSA(2)" : "NCSA");
8951  /* OZPLB-1.1 refers both to NCSA and OZPLB-1.1 licenses */
8952  if (INFILE(_TITLE_OZPLB_11)) {
8953  INTERESTING("OZPLB-1.1");
8954  }
8955  lmem[_fBSD] = 1;
8956  lmem[_mMIT] = 1;
8957  }
8959  /* ODC Public Domain Dedication & License 1.0 */
8960  if (INFILE(_TITLE_PDDL)) {
8961  INTERESTING("PDDL-1.0");
8962  lmem[_fPDDL] = 1;
8963  }
8965  /* PostgreSQL License */
8966  if (INFILE(_TITLE_POSTGRES) || INFILE(_TITLE_POSTGRES_1)
8967  || INFILE(_TITLE_POSTGRES_2)) {
8968  INTERESTING("PostgreSQL");
8969  lmem[_fBSD] = 1;
8970  }
8972  /* Sax Public Domain Notice */
8973  if (INFILE(_LT_SAX_PD)) {
8974  INTERESTING("SAX-PD");
8975  lmem[_fSAX] = 1;
8976  }
8978  /*
8979  * WTF Public "license"
8980  */
8981  if (INFILE(_LT_WTFPL)) {
8982  INTERESTING("WTFPL");
8983  }
8984  else if (INFILE(_LT_WTFPLref)) {
8985  INTERESTING(lDebug ? "WTFPL(ref)" : "WTFPL");
8986  }
8987  else if (INFILE(_LT_WTFPLref_1)) {
8988  INTERESTING(lDebug ? "WTFPL(ref#1)" : "WTFPL");
8989  }
8990  else if (INFILE(_PHR_WTFPL)) {
8991  INTERESTING(lDebug ? "WTFPL(phr)" : "WTFPL");
8992  }
8993  else if (INFILE(_TITLE_WTFPL) || URL_INFILE(_URL_WTFPL)) {
8994  INTERESTING(lDebug ? "WTFPL(title)" : "WTFPL");
8995  }
8997  /* Independent JPEG Group License */
8998  if (!lmem[_fIJG]) {
8999  if (HASTEXT(_PHR_IJG_1, REG_EXTENDED)) {
9000  INTERESTING("IJG");
9001  }
9002  else if (HASTEXT(_PHR_IJG_2, 0)) {
9003  INTERESTING("IJG");
9004  }
9005  else if (HASTEXT(_TITLE_IJG_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_2, 0)) {
9006  INTERESTING("IJG");
9007  }
9008  /* the license, not the group */
9009  else if (HASTEXT(_TITLE_IJG_LICENSE, 0) && !HASTEXT(_PHR_IJG_INTERFACE_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_2, 0)) {
9010  INTERESTING("IJG");
9011  }
9012  /* Independent JPEG Group can be referenced without IJG license*/
9013  else if (HASTEXT(_TITLE_IJG_2, 0) && !HASTEXT(_PHR_IJG_INTERFACE_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_2, 0)) {
9014  INTERESTING("IJG-possibility");
9015  }
9017  }
9018  /* Netizen Open Source License */
9019  if (!lmem[_mMPL] && INFILE(_TITLE_NOSL)) {
9020  INTERESTING(lDebug ? "NOSL(#2)" : "NOSL");
9021  }
9023  /* Net Boolean Public License v1 */
9024  if (INFILE(_TITLE_NBPL_V10)) {
9025  INTERESTING("NBPL-1.0");
9026  }
9028  /* Flora License */
9029  if (INFILE(_TITLE_Flora_V10)) {
9030  INTERESTING("Flora-1.0");
9031  }
9032  else if (INFILE(_TITLE_Flora_V11)) {
9033  INTERESTING("Flora-1.1");
9034  }
9035  else if (URL_INFILE(_URL_Flora)) {
9036  INTERESTING("Flora");
9037  }
9039  /* Standard ML of New Jersey License */
9040  if (INFILE(_TITLE_SMLNJ)) {
9041  INTERESTING("SMLNJ");
9042  }
9044  /* Mozilla Public License possibility */
9045  if (!lmem[_mMPL]) {
9046  if (INFILE(_TEXT_MPLV2) && INFILE(_URL_MPL20)) {
9047  INTERESTING("MPL-2.0");
9048  lmem[_mMPL] = 1;
9049  }
9050  else if (INFILE(_TEXT_MPL20_UNDER)) {
9051  INTERESTING("MPL-2.0");
9052  lmem[_mMPL] = 1;
9053  }
9054  /* _URL_MPL_LATEST also matches the NPL paths, and lmem[_mMPL] would
9055  then stop mplNplVersion() resolving them */
9056  else if (URL_INFILE(_URL_NPL10)) {
9057  INTERESTING("NPL-1.0");
9058  lmem[_mMPL] = 1;
9059  }
9060  else if (URL_INFILE(_URL_NPL11)) {
9061  INTERESTING("NPL-1.1");
9062  lmem[_mMPL] = 1;
9063  }
9064  else if (URL_INFILE(_URL_MPL20) || INFILE(_TITLE_MPL20_NAMED)) {
9065  INTERESTING(lDebug ? "MPL(2.0 named)" : "MPL-2.0");
9066  lmem[_mMPL] = 1;
9067  }
9068  else if (URL_INFILE(_URL_MPL_LATEST)) {
9069  INTERESTING(lDebug ? "MPL(latest)" : "MPL");
9070  lmem[_mMPL] = 1;
9071  }
9072  }
9074  /* Citrix License */
9075  if (INFILE(_TITLE_CITRIX)) {
9076  INTERESTING("Citrix");
9077  lmem[_fCITRIX] = 1;
9078  }
9080  /* CUA office public license */
9081  if (INFILE(_TITLE_CUA10)) {
9082  INTERESTING("CUA-OPL-1.0");
9083  }
9085  /* the Erlang Public License */
9086  if (INFILE(_TITLE_ERLPL_ref)) {
9087  INTERESTING("ErlPL-1.1");
9088  }
9090  /* German Free Software License */
9091  if (INFILE(_TITLE_D_FSL_10) || INFILE(_TITLE_D_FSL_DE1_10) || INFILE(_TITLE_D_FSL_DE2_10) || INFILE(_TITLE_D_FSL_DE3_10) || INFILE(_TITLE_D_FSL_DE4_10))
9092  {
9093  INTERESTING("D-FSL-1.0");
9094  lmem[_mGPL] = 1;
9095  }
9097  /* CCLRC License */
9098  if (INFILE(_TITLE_CCLRC)) {
9099  INTERESTING("CCLRC");
9100  }
9102 
9103  /* Some GPL cases are still missing */
9104  if (!lmem[_mGPL] && (INFILE(_LT_GPL_V2_ref) || INFILE(_LT_GPL_V2_ref1) || INFILE(_LT_GPL_V2_ref2) || INFILE(_LT_GPL_V2_ref3) || INFILE(_LT_GPL_V2_ref4)))
9105  {
9106  INTERESTING(lDebug ? "GPL_V2_ref" : "GPL-2.0-only");
9107  lmem[_mGPL] = 1;
9108  }
9109  else if (!lmem[_mGPL] && INFILE(_LT_GPL_V3_ref))
9110  {
9111  INTERESTING(lDebug ? "GPL_V3_ref" : "GPL-3.0-only");
9112  lmem[_mGPL] = 1;
9113  }
9114  else if (!lmem[_mGPL] && INFILE(_LT_GPLref22))
9115  {
9116  INTERESTING(lDebug ? "GPLref22" : "GPL");
9117  lmem[_mGPL] = 1;
9118  }
9119  else if (!lmem[_mGPL] && NOT_INFILE(_LT_IGNORE_CLAUSE_2) && INFILE(_LT_GPLref21))
9120  {
9121  INTERESTING(lDebug ? "GPLref21" : "GPL");
9122  lmem[_mGPL] = 1;
9123  }
9124  /*
9125  * SPDX-License-Identifier lines may use a tab separator (e.g. ":\tGPL-2.0"),
9126  * which prevents _LT_GPL_NAMED3 from firing (it requires printable ASCII before
9127  * <gpl>). Check SPDX GPL identifiers directly here so they are not missed.
9128  */
9129  if (!lmem[_mGPL] && HASTEXT(_SPDX_GPL_20_or_later, REG_EXTENDED)
9130  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
9131  INTERESTING(lDebug ? "GPL-2.0-or-later(SPDX-direct)" : "GPL-2.0-or-later");
9132  lmem[_mGPL] = 1;
9133  }
9134  else if (!lmem[_mGPL] && HASTEXT(_SPDX_GPL_20, REG_EXTENDED)) {
9135  INTERESTING(lDebug ? "GPL-2.0-only(SPDX-direct)" : "GPL-2.0-only");
9136  lmem[_mGPL] = 1;
9137  }
9139 
9140  /* MX4J License version 1.0 */
9141  if (INFILE(_LT_MX4J_V10))
9142  {
9143  INTERESTING("MX4J-1.0");
9144  }
9145  else if (INFILE(_LT_MX4J))
9146  {
9147  INTERESTING("MX4J");
9148  }
9150  /* postfix license */
9151  if (INFILE(_TITLE_POSTFIX))
9152  {
9153  INTERESTING("Postfix");
9154  }
9156  /* not public domain */
9157  if (HASTEXT(_LT_PUBDOM_NOTclaim, REG_EXTENDED)) {
9158  if (INFILE(_LT_PUBDOM_CC)) {
9159  INTERESTING(lDebug ? "Pubdom(CC)" : "CC-PDDC");
9160  pd = 1;
9161  }
9162  else {
9163  INTERESTING(LS_NOT_PD);
9164  pd = 0;
9165  }
9166  }
9168  /* LIBGCJ license */
9169  if (INFILE(_LT_LIBGCJ))
9170  {
9171  INTERESTING("LIBGCJ");
9172  }
9174  /* open cascade technology public license */
9175  if (INFILE(_TITLE_OPEN_CASCADE))
9176  {
9177  INTERESTING("OpenCASCADE-PL");
9178  }
9180  /* KnowledgeTree Public License */
9181  if (INFILE(_LT_KnowledgeTree_V11))
9182  {
9183  INTERESTING("KnowledgeTree-1.1");
9184  }
9186  /* Interbase Public License */
9187  if (INFILE(_LT_Interbase_V10))
9188  {
9189  INTERESTING("Interbase-1.0");
9190  }
9192  /* ClearSilver license */
9193  if (INFILE(_LT_ClearSilver))
9194  {
9195  INTERESTING("ClearSilver");
9196  }
9198  /* ACE, TAO, CIAO */
9199  if(INFILE(_LT_ACE)) {
9200  INTERESTING("ACE");
9201  }
9202  else if(INFILE(_LT_FACE)) {
9203  INTERESTING("FaCE");
9204  }
9206  /* JISP */
9207  if(INFILE(_LT_JISP)) {
9208  INTERESTING("JISP");
9209  }
9211  /* Qmail */
9212  if(INFILE(_LT_QMAIL)) {
9213  INTERESTING("Qmail");
9214  }
9216  /* Migemo */
9217  if(INFILE(_LT_MIGEMO)) {
9218  INTERESTING("Migemo");
9219  }
9221  /* Sendmail */
9222  if(INFILE(_LT_Sendmail_title) ) {
9223  INTERESTING("Sendmail");
9224  }
9226  /* Giftware */
9227  if(INFILE(_LT_GIFTWARE)) {
9228  INTERESTING("Giftware");
9229  }
9231  /* Logica opensource */
9232  if(INFILE(_LT_LOGICA)) {
9233  INTERESTING("Logica-OSL-1.0");
9234  }
9236  /* Unidex */
9237  if(INFILE(_LT_UNIDEX)) {
9238  INTERESTING("Unidex");
9239  }
9241  /* TCL License */
9242  if (!lmem[_fTCL]) {
9243  if (INFILE(_TITLE_TCL)) {
9244  INTERESTING("TCL");
9245  }
9246  else if (INFILE(_SPDX_TCL)) {
9247  INTERESTING("TCL");
9248  }
9249  else if (INFILE(_LT_TCL)) {
9250  INTERESTING("TCL");
9251  }
9252  }
9254  /* AndroidSDK-Commercial license */
9255  if (INFILE(_LT_GOOGLE_SDK)) {
9256  INTERESTING("AndroidSDK.Commercial");
9257  }
9259  /* Qhull license */
9260  if (INFILE(_PHR_Qhull)) {
9261  INTERESTING("Qhull");
9262  }
9264  /* OZPLB-1.0 license */
9265  if (INFILE(_PHR_OZPLB_10)) {
9266  INTERESTING("OZPLB-1.0");
9267  }
9269  /* Texas Instruments license */
9270  if (INFILE(_LT_TI_BASE)) {
9271  if (INFILE(_LT_TI_TSPA)) {
9272  INTERESTING("TI-TSPA");
9273  } else if (INFILE(_LT_TI_TFL)) {
9274  INTERESTING("TI-TFL");
9275  }
9276  }
9278 
9279  /*
9280  * Some licenses say "licensed under the same terms as FOO".
9281  */
9282  gl.flags |= FL_SAVEBASE; /* save match buffer (if any) */
9283  if (*licStr == NULL_CHAR) {
9284  i = 0;
9285  if (INFILE(_LT_SAME_LICENSE_1)) {
9286  INTERESTING(lDebug ? "Same-lic-1" : "Same-license-as");
9287  i = 1;
9288  } else if (INFILE(_LT_SAME_LICENSE_2)) {
9289  INTERESTING(lDebug ? "Same-lic-2" : "Same-license-as");
9290  i = 2;
9291  }
9292  if (i) {
9293  if (cur.licPara == NULL_STR) {
9294  saveLicenseParagraph(cur.matchBase, isML, isPS, NO,
9295  cur.regm.rm_so, cur.regm.rm_eo);
9296  }
9297  }
9298  }
9300  gl.flags |= ~FL_SAVEBASE; /* turn off, regardless */
9301  /*
9302  * ... and, there are several generic claims that "you are free to use this
9303  * software".
9304  * We call these claims "Freeware", because you can use the software free of charge,
9305  * but some other copyright holder exclusive rights are not granted in some cases.
9306  */
9307  /* Specific freeware-like licenses */
9308  if (INFILE(_LT_SASH)) {
9309  INTERESTING("Sash-Notice");
9310  }
9311  else if (INFILE(_LT_LILO)) {
9312  INTERESTING("LILO");
9313  }
9314  else if (INFILE(_LT_INNO_SETUP)) {
9315  INTERESTING("InnoSetup");
9316  }
9317  else if (INFILE(_LT_APP_S2P)) {
9318  INTERESTING("App-s2p");
9319  }
9320  else if (INFILE(_LT_FONT_ALIAS)) {
9321  INTERESTING("font-alias");
9322  }
9323  else if (INFILE(_LT_HDPARM)) {
9324  INTERESTING("hdparm");
9325  }
9326  else if (INFILE(_LT_HXD)) {
9327  INTERESTING("HxD");
9328  }
9329  else if (INFILE(_LT_JAM)) {
9330  INTERESTING("Jam");
9331  }
9332  else if (INFILE(_LT_JMAGNETIC)) {
9333  INTERESTING("JMagnetic");
9334  }
9335  else if (INFILE(_LT_PYCRYPTO)) {
9336  INTERESTING("PyCrypto");
9337  }
9338  else if (INFILE(_LT_TESTED_SOFTWARE)) {
9339  INTERESTING("Tested-Software");
9340  }
9341  else if (INFILE(_LT_TSO_LICENSE)) {
9342  INTERESTING("Theodore-Ts-o");
9343  }
9344  if (*licStr == NULL_CHAR || pd >= 0) {
9345  for (i = 0; i < NFREECLAIM; i++) {
9346  if (CANSKIP(i, _KW_permission, _FREE_first_perm,
9347  _FREE_last_perm)) {
9348  i = _FREE_last_perm;
9349  continue;
9350  }
9351  if (CANSKIP(i, _KW_distribut, _FREE_first_dist,
9352  _FREE_last_dist)) {
9353  i = _FREE_last_dist;
9354  continue;
9355  }
9356  if (INFILE(_FREECLAIM_first+i)) {
9357  (void) strcpy(name, "Freeware");
9358  if (lDebug) {
9359  (void) sprintf(name+8, "(%d)", i+1);
9360  }
9361  INTERESTING(name);
9362  break;
9363  }
9364  }
9365  }
9367  /* Specific public-domain-like licenses */
9368  if (INFILE(_LT_ZHORN_STICKIES)) {
9369  INTERESTING("Zhorn-Stickies");
9370  pd = 1;
9371  }
9372  else if (INFILE(_LT_LZMA_SDK_LICENSE)) {
9373  INTERESTING("LZMA-SDK-license");
9374  pd = 1;
9375  }
9376  else if (INFILE(_LT_CRYPTOPP)) {
9377  INTERESTING("Crypto");
9378  pd = 1;
9379  }
9380  else if (INFILE(_LT_BITZI_PD)) {
9381  INTERESTING("Bitzi-PD");
9382  pd = 1;
9383  }
9384  else if (INFILE(_LT_AGENTXPP)) {
9385  INTERESTING("AgentX");
9386  pd = 1;
9387  }
9388  else if (INFILE(_LT_AES_128_3_0)) {
9389  INTERESTING("AES-128-3.0");
9390  pd = 1;
9391  }
9392  else if (INFILE(_LT_ALASIR)) {
9393  INTERESTING("Alasir");
9394  pd = 1;
9395  }
9396  else if (INFILE(_LT_ALTOVA_EULA)) {
9397  INTERESTING("Altova");
9398  pd = 1;
9399  }
9400  else if (INFILE(_LT_AMS_FONTS)) {
9401  INTERESTING("AMSFonts");
9402  pd = 1;
9403  }
9404  else if (INFILE(_LT_BRENT_CORKUM)) {
9405  INTERESTING("Brent-Corkum");
9406  pd = 1;
9407  }
9408  else if (INFILE(_LT_BROADCOM_PROPRIETARY)) {
9409  INTERESTING("Broadcom-Proprietary");
9410  pd = 1;
9411  }
9412  else if (INFILE(_LT_C_UDA_1_0)) {
9413  INTERESTING("C-UDA-1.0");
9414  pd = 1;
9415  }
9416  else if (INFILE(_LT_CDLA_PERMISSIVE_2_0)) {
9417  INTERESTING("CDLA-Permissive-2.0");
9418  pd = 1;
9419  }
9420  else if (INFILE(_LT_DOUG_LEA)) {
9421  INTERESTING("Doug-Lea");
9422  pd = 1;
9423  }
9424  else if (INFILE(_LT_GREGORY_PIETSCH)) {
9425  INTERESTING("Gregory-Pietsch-Liberal");
9426  pd = 1;
9427  }
9428  else if (INFILE(_LT_GUTENBERG_2020)) {
9429  INTERESTING("Gutenberg-2020");
9430  pd = 1;
9431  }
9432  else if (INFILE(_LT_JQUERY_PD)) {
9433  INTERESTING("jQuery-Tools-PD");
9434  pd = 1;
9435  }
9436  else if (INFILE(_LT_MICHAEL_BARR)) {
9437  INTERESTING("Michael-Barr");
9438  pd = 1;
9439  }
9440  else if (INFILE(_LT_NCBI)) {
9441  INTERESTING("NCBI-PD");
9442  pd = 1;
9443  }
9444  else if (INFILE(_LT_NETAPP_SDK_AUG2020)) {
9445  INTERESTING("NetApp-SDK-rev.-Aug2020");
9446  pd = 1;
9447  }
9448  else if (INFILE(_LT_NIST_PD_FALLBACK)) {
9449  INTERESTING("NIST-PD-fallback");
9450  pd = 1;
9451  }
9452  else if (INFILE(_LT_NIST_PD)) {
9453  INTERESTING("NIST-PD");
9454  pd = 1;
9455  }
9456  else if (INFILE(_LT_NUMERICAL_RECIPES_NOTICE)) {
9457  INTERESTING("Numerical-Recipes-Notice");
9458  pd = 1;
9459  }
9460  else if (INFILE(_LT_O_UDA_1_0)) {
9461  INTERESTING("O-UDA-1.0");
9462  pd = 1;
9463  }
9464  else if (INFILE(_LT_OCULUS_SDK_3_5)) {
9465  INTERESTING("Oculus-SDK-v3.5");
9466  pd = 1;
9467  }
9468  else if (INFILE(_LT_OSWEGO_CONCURRENT)) {
9469  INTERESTING("Oswego-Concurrent");
9470  pd = 1;
9471  }
9472  else if (INFILE(_LT_PHIL_BUNCE)) {
9473  INTERESTING("Phil-Bunce");
9474  pd = 1;
9475  }
9476  else if (INFILE(_LT_LIBSELINUX_1_0)) {
9477  INTERESTING("libselinux-1.0");
9478  pd = 1;
9479  }
9480  else if (INFILE(_LT_SNMP4J_SMI)) {
9481  INTERESTING("SNMP4J-SMI");
9482  pd = 1;
9483  }
9484  else if (INFILE(_LT_SPLUNK_MINT_TOS_2018)) {
9485  INTERESTING("Splunk-MINT-TOS-2018");
9486  pd = 1;
9487  }
9488  else if (INFILE(_LT_STANFORD_PVRG)) {
9489  INTERESTING("Stanford-PVRG");
9490  pd = 1;
9491  }
9492  else if (INFILE(_LT_TFL)) {
9493  INTERESTING("TFL");
9494  pd = 1;
9495  }
9496  else if (INFILE(_LT_TIZEN_SDK)) {
9497  INTERESTING("Tizen-SDK");
9498  pd = 1;
9499  }
9500  else if (INFILE(_LT_US_GOVT_PUBLIC_DOMAIN)) {
9501  INTERESTING("US-Government-Public-Domain");
9502  pd = 1;
9503  }
9504  else if (INFILE(_LT_VIC_METCALFE_PD)) {
9505  INTERESTING("Vic-Metcalfe-Public-Domain");
9506  pd = 1;
9507  }
9508  else if (INFILE(_LT_YOLO_2_0)) {
9509  INTERESTING("YOLO-v2");
9510  pd = 1;
9511  }
9512  /* Check for Public Domain */
9513  if (!lmem[_fANTLR] && !lmem[_fCLA] && !lmem[_mPYTHON] && !lmem[_mGFDL] &&
9514  !lmem[_fODBL] && !lmem[_fPDDL] && !lmem[_fRUBY] && !lmem[_fSAX] && !lmem[_fAPL] && !lmem[_mAPACHE] && !lmem[_mAPACHE10] && !lmem[_mAPACHE11] &&
9515  !lmem[_fARTISTIC] && !lmem[_fCITRIX] && !lmem[_mLGPL] && !lmem[_fBSD]&& NOT_INFILE(_TITLE_D_FSL_10)
9516  && !INFILE(_LT_CPOL)) {
9517  pd = checkPublicDomain(filetext, size, score, kwbm, isML, isPS);
9518  }
9520  /*
9521  * Some licenses point you to files/URLs...
9522  */
9523  /* Specific licenses that would otherwise be caught by See-URL */
9524  if (INFILE(_LT_PIXABAY_CONTENT)) {
9525  INTERESTING("Pixabay-Content");
9526  }
9527  else if (INFILE(_LT_MCRAE_PL_4_R53)) {
9528  INTERESTING("McRae-PL-v4.r53");
9529  }
9530  else if (INFILE(_LT_DAY_SPEC)) {
9531  INTERESTING("Day-Specification");
9532  }
9533  else if (INFILE(_LT_996_ICU_1_0)) {
9534  INTERESTING("Anti-996-1.0");
9535  }
9536  else if (INFILE(_LT_ANEPOKIS_1_0)) {
9537  INTERESTING("Anepokis-1.0");
9538  }
9539  else if (INFILE(_LT_ARACHNI_PSL_1_0)) {
9540  INTERESTING("Arachni-PSL-v1.0");
9541  }
9542  else if (INFILE(_LT_ARRAY_INPUT_METHOD_PL)) {
9543  INTERESTING("Array-Input-Method-Public");
9544  }
9545  else if (INFILE(_LT_ATMEL_FIRMWARE)) {
9546  INTERESTING("Atmel-Firmware");
9547  }
9548  else if (INFILE(_LT_BAKOMA_FONTS_1995)) {
9549  INTERESTING("BaKoMa-Fonts-1995");
9550  }
9551  else if (INFILE(_LT_BROADLEAF_FAIR_USE)) {
9552  INTERESTING("Broadleaf-Fair-Use-v1.0");
9553  }
9554  else if (INFILE(_LT_BSD_ARTWORK)) {
9555  INTERESTING("BSD-Artwork");
9556  }
9557  else if (INFILE(_LT_C_FSL_1_1)) {
9558  INTERESTING("C-FSL-1.1");
9559  }
9560  else if (INFILE(_LT_CLASSIC_VB)) {
9561  INTERESTING("Classic-VB");
9562  }
9563  else if (INFILE(_LT_CPM_2022)) {
9564  INTERESTING("CP-M-2022");
9565  }
9566  else if (INFILE(_LT_DUENDE_SLA_2022)) {
9567  INTERESTING("Duende-2022");
9568  }
9569  else if (INFILE(_LT_EGRAPPLER)) {
9570  INTERESTING("eGrappler");
9571  }
9572  else if (INFILE(_LT_FAIR_SOURCE_0_9)) {
9573  INTERESTING("Fair-Source-v0.9");
9574  }
9575  else if (INFILE(_LT_FATFS)) {
9576  INTERESTING("FatFs");
9577  }
9578  else if (INFILE(_LT_FOOBAR2000)) {
9579  INTERESTING("foobar2000");
9580  }
9581  else if (INFILE(_LT_INFONODE_1_1)) {
9582  INTERESTING("InfoNode-Software-1.1");
9583  }
9584  else if (INFILE(_LT_JETTY_CCLA_1_1)) {
9585  INTERESTING("Jetty-CCLA-1.1");
9586  }
9587  else if (INFILE(_LT_JSCHEME)) {
9588  INTERESTING("Jscheme");
9589  }
9590  else if (INFILE(_LT_JSR_107_JCACHE_SPEC_2013)) {
9591  INTERESTING("JSR-107-JCache-Specification-2013");
9592  }
9593  else if (INFILE(_LT_JSR_107_JCACHE_SPEC)) {
9594  INTERESTING("JSR-107-JCache-Specification");
9595  }
9596  else if (INFILE(_LT_LAVANTECH)) {
9597  INTERESTING("LavanTech");
9598  }
9599  else if (INFILE(_LT_LHA)) {
9600  INTERESTING("lha");
9601  }
9602  else if (INFILE(_LT_NORTHWOODS_SLA_2021)) {
9603  INTERESTING("Northwoods-Software-2021");
9604  }
9605  else if (INFILE(_LT_OCSL_1_0)) {
9606  INTERESTING("OCSL-1.0");
9607  }
9608  else if (INFILE(_LT_OCULUS_SDK_2020)) {
9609  INTERESTING("Oculus-SDK-2020");
9610  }
9611  else if (INFILE(_LT_OCULUS_SDK)) {
9612  INTERESTING("Oculus-SDK");
9613  }
9614  else if (INFILE(_LT_OLF_CCLA_1_0)) {
9615  INTERESTING("OLF-CCLA-1.0");
9616  }
9617  else if (INFILE(_LT_OLL_1_0)) {
9618  INTERESTING("OLL-1.0");
9619  }
9620  else if (INFILE(_LT_PDL_1_0)) {
9621  INTERESTING("PDL-1.0");
9622  }
9623  else if (INFILE(_LT_POLYFORM_DEFENSIVE_1_0_0)) {
9624  INTERESTING("PolyForm-Defensive-1.0.0");
9625  }
9626  else if (INFILE(_LT_POLYFORM_FREE_TRIAL_1_0_0)) {
9627  INTERESTING("PolyForm-Free-Trial-1.0.0");
9628  }
9629  else if (INFILE(_LT_POLYFORM_INTERNAL_USE_1_0_0)) {
9630  INTERESTING("PolyForm-Internal-Use-1.0.0");
9631  }
9632  else if (INFILE(_LT_POLYFORM_NONCOMMERCIAL_1_0_0)) {
9633  INTERESTING("PolyForm-Noncommercial-1.0.0");
9634  }
9635  else if (INFILE(_LT_POLYFORM_PERIMETER_1_0_0)) {
9636  INTERESTING("PolyForm-Perimeter-1.0.0");
9637  }
9638  else if (INFILE(_LT_POLYFORM_SHIELD_1_0_0)) {
9639  INTERESTING("PolyForm-Shield-1.0.0");
9640  }
9641  else if (INFILE(_LT_POLYFORM_SMALL_BUSINESS_1_0_0)) {
9642  INTERESTING("PolyForm-Small-Business-1.0.0");
9643  }
9644  else if (INFILE(_LT_POLYFORM_STRICT_1_0_0)) {
9645  INTERESTING("PolyForm-Strict-1.0.0");
9646  }
9647  else if (INFILE(_LT_PROSPERITY_1_0_1)) {
9648  INTERESTING("Prosperity-Public-1.0.1");
9649  }
9650  else if (INFILE(_LT_PROSPERITY_2_0)) {
9651  INTERESTING("Prosperity-Public-2.0");
9652  }
9653  else if (INFILE(_LT_SUSTAINABLE_USE_1_0)) {
9654  INTERESTING("SUL-1.0");
9655  }
9656  else if (INFILE(_LT_TTCL)) {
9657  INTERESTING("Talis-Community");
9658  }
9659  else if (INFILE(_LT_UNSPLASH)) {
9660  INTERESTING("Unsplash");
9661  }
9662  else if (INFILE(_LT_YAHOO_BROWSERPLUS_EULA)) {
9663  INTERESTING("Yahoo-BrowserPlus");
9664  }
9665  if (*licStr == NULL_CHAR) {
9666  checkFileReferences(filetext, size, score, kwbm, isML, isPS);
9667  }
9669  /*
9670  * And, If no other licenses are present but there's a reference to
9671  * something being non-commercial, better note it now.
9672  */
9673 #if 0
9674  if (*licStr == NULL_CHAR && !HASKW(kwbm, _KW_public_domain))
9675 #endif
9676  /* Specific non-commercial license identification */
9677  if (INFILE(_LT_MATTKRUSE)) {
9678  INTERESTING("Matt-Kruse");
9679  }
9680  else if (INFILE(_LT_IMAGEN)) {
9681  INTERESTING("IMAGEN");
9682  }
9683  else if (INFILE(_LT_DYNARCH_LINKWARE)) {
9684  INTERESTING("Dynarch-Linkware");
9685  }
9686  else if (INFILE(_LT_ACTUATE_BIRT_IHUB_FTYPE_SLA)) {
9687  INTERESTING("BIRT-iHub-F-Type-Software");
9688  }
9689  else if (INFILE(_LT_ADOBE_AIR_SDK_2014)) {
9690  INTERESTING("Adobe-AIR-SDK-2014");
9691  }
9692  else if (INFILE(_LT_ADOBE_AIR_SDK)) {
9693  INTERESTING("Adobe-AIR-SDK-2008");
9694  }
9695  else if (INFILE(_LT_ADOBE_FLASH_PLAYER_EULA_21_0)) {
9696  INTERESTING("Adobe-Flash-Player-21.0");
9697  }
9698  else if (INFILE(_LT_ADOBE_FLEX_4_SDK)) {
9699  INTERESTING("Adobe-Flex-4-SDK");
9700  }
9701  else if (INFILE(_LT_ADOBE_GENERAL_TOU)) {
9702  INTERESTING("Adobe-General-TOU");
9703  }
9704  else if (INFILE(_LT_AGO_PRIVATE_1_0)) {
9705  INTERESTING("Ago-Private-1.0");
9706  }
9707  else if (INFILE(_LT_BAPL_1_0)) {
9708  INTERESTING("Booz-Allen-Public-v1.0");
9709  }
9710  else if (INFILE(_LT_BITTORRENT_EULA)) {
9711  INTERESTING("bittorrent-eula");
9712  }
9713  else if (INFILE(_LT_BITWARDEN_1_0)) {
9714  INTERESTING("Bitwarden-v1");
9715  }
9716  else if (INFILE(_LT_BRAD_MARTINEZ_VB_32)) {
9717  INTERESTING("Brad-Martinez-VB-32");
9718  }
9719  else if (INFILE(_LT_BROADCOM_COMMERCIAL)) {
9720  INTERESTING("Broadcom-Commercial-Notice");
9721  }
9722  else if (INFILE(_LT_BROADCOM_WICED)) {
9723  INTERESTING("Broadcom-WICED-SDK");
9724  }
9725  else if (INFILE(_LT_CHRISTOPHER_VELAZQUEZ)) {
9726  INTERESTING("Christopher-Velazquez");
9727  }
9728  else if (INFILE(_LT_COM_OREILLY_SERVLET)) {
9729  INTERESTING("com.oreilly.servlet");
9730  }
9731  else if (INFILE(_LT_COMMONS_CLAUSE)) {
9732  INTERESTING("Commons-Clause");
9733  }
9734  else if (INFILE(_LT_CRASHLYTICS_AGREEMENT_2018)) {
9735  INTERESTING("Crashlytics-2018");
9736  }
9737  else if (INFILE(_LT_DYNAMIC_DRIVE_TOU)) {
9738  INTERESTING("Dynamic-Drive-TOU");
9739  }
9740  else if (INFILE(_LT_ETALAB_2_0_FR)) {
9741  INTERESTING("Etalab-Open-2.0-French");
9742  }
9743  /* NOTE: etalab-2.0 and etalab-2.0-fr are identical bilingual texts; only etalab-2.0-fr fires */
9744  else if (INFILE(_LT_EXAMDIFF)) {
9745  INTERESTING("ExamDiff");
9746  }
9747  else if (INFILE(_LT_FANCYZOOM)) {
9748  INTERESTING("FancyZoom");
9749  }
9750  else if (INFILE(_LT_FIRST_WORKS_APPRECIATIVE_1_2)) {
9751  INTERESTING("First-Works-Appreciative-1.2");
9752  }
9753  else if (INFILE(_LT_GCO_V3_0)) {
9754  INTERESTING("GCO-v3.0");
9755  }
9756  else if (INFILE(_LT_GOAHEAD)) {
9757  INTERESTING("GoAhead");
9758  }
9759  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS_2015)) {
9760  INTERESTING("Google-Analytics-Terms-of-Service-2015");
9761  }
9762  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS_2016)) {
9763  INTERESTING("Google-Analytics-Terms-of-Service-2016");
9764  }
9765  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS_2019)) {
9766  INTERESTING("Google-Analytics-Terms-of-Service-2019");
9767  }
9768  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS)) {
9769  INTERESTING("Google-Analytics-Terms-of-Service");
9770  }
9771  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_02_07)) {
9772  INTERESTING("Google-Maps-Platform-ToS-2018-02-07");
9773  }
9774  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_05_01)) {
9775  INTERESTING("Google-Maps-Platform-ToS-2018-05-01");
9776  }
9777  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_06_07)) {
9778  INTERESTING("Google-Maps-Platform-ToS-2018-06-07");
9779  }
9780  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_07_09)) {
9781  INTERESTING("Google-Maps-Platform-ToS-2018-07-09");
9782  }
9783  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_07_19)) {
9784  INTERESTING("Google-Maps-Platform-ToS-2018-07-19");
9785  }
9786  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_10_01)) {
9787  INTERESTING("Google-Maps-Platform-ToS-2018-10-01");
9788  }
9789  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_10_31)) {
9790  INTERESTING("Google-Maps-Platform-ToS-2018-10-31");
9791  }
9792  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2019_05_02)) {
9793  INTERESTING("Google-Maps-Platform-ToS-2019-05-02");
9794  }
9795  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2019_11_21)) {
9796  INTERESTING("Google-Maps-Platform-ToS-2019-11-21");
9797  }
9798  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2020_04_02)) {
9799  INTERESTING("Google-Maps-Platform-ToS-2020-04-02");
9800  }
9801  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2020_04_27)) {
9802  INTERESTING("Google-Maps-Platform-ToS-2020-04-27");
9803  }
9804  else if (INFILE(_LT_GOOGLE_TOS_2013)) {
9805  INTERESTING("Google-TOS-2013");
9806  }
9807  else if (INFILE(_LT_GOOGLE_TOS_2014)) {
9808  INTERESTING("Google-TOS-2014");
9809  }
9810  else if (INFILE(_LT_GOOGLE_TOS_2017)) {
9811  INTERESTING("Google-TOS-2017");
9812  }
9813  else if (INFILE(_LT_GOOGLE_TOS_2019)) {
9814  INTERESTING("Google-TOS-2019");
9815  }
9816  else if (INFILE(_LT_HELIOS_EULA)) {
9817  INTERESTING("Helios");
9818  }
9819  else if (INFILE(_LT_IRFANVIEW_EULA)) {
9820  INTERESTING("IrfanView");
9821  }
9822  else if (INFILE(_LT_ISO_RECORDER)) {
9823  INTERESTING("ISO-Recorder");
9824  }
9825  else if (INFILE(_LT_ISOTOPE_CLA)) {
9826  INTERESTING("Isotope-Commercial");
9827  }
9828  else if (INFILE(_LT_JAM_STAPL)) {
9829  INTERESTING("Jam-STAPL-Software");
9830  }
9831  else if (INFILE(_LT_JAVA_RESEARCH_1_5)) {
9832  INTERESTING("Java-Research-1.5");
9833  }
9834  else if (INFILE(_LT_JAVA_RESEARCH_1_6)) {
9835  INTERESTING("Java-Research-1.6");
9836  }
9837  else if (INFILE(_LT_JETBRAINS_TOOLBOX_OPEN_SOURCE_3)) {
9838  INTERESTING("JetBrains-Toolbox-Open-Source-v3");
9839  }
9840  else if (INFILE(_LT_JRUNNER)) {
9841  INTERESTING("JRunner");
9842  }
9843  else if (INFILE(_LT_MAME) || INFILE(_TITLE_MAME_NAMED)) {
9844  INTERESTING("MAME");
9845  }
9846  else if (INFILE(_LT_MATTHEW_WELCH_FONT_LICENSE)) {
9847  INTERESTING("Matthew-Welch-Font");
9848  }
9849  else if (INFILE(_LT_METAGEEK_INSSIDER_EULA)) {
9850  INTERESTING("inSSIDer");
9851  }
9852  else if (INFILE(_LT_MIKE95)) {
9853  INTERESTING("Mike95");
9854  }
9855  else if (INFILE(_LT_MS_DEVELOPER_SERVICES_AGREEMENT_2018_06)) {
9856  INTERESTING("MS-Developer-Services-2018-06");
9857  }
9858  else if (INFILE(_LT_MS_INVISIBLE_EULA_1_0)) {
9859  INTERESTING("MS-Invisible-Computing-1.0");
9860  }
9861  else if (INFILE(_LT_MS_RESEARCH_SHARED_SOURCE)) {
9862  INTERESTING("MS-Research-Shared-Source");
9863  }
9864  else if (INFILE(_LT_MS_WINDOWS_CONTAINER_BASE_IMAGE_EULA_2020)) {
9865  INTERESTING("MS-Windows-Container-Base-Image-2020");
9866  }
9867  else if (INFILE(_LT_NVIDIA_ISAAC_EULA_2019_1)) {
9868  INTERESTING("NVIDIA-ISAAC-v2019.1");
9869  }
9870  else if (INFILE(_LT_NVIDIA_NGX_EULA_2019)) {
9871  INTERESTING("NVIDIA-NGX-2019");
9872  }
9873  else if (INFILE(_LT_OCB_NON_MILITARY_2013)) {
9874  INTERESTING("ocb-non-military-2013");
9875  }
9876  else if (INFILE(_LT_ORACLE_BCL_JAVASE_JAVAFX_2012)) {
9877  INTERESTING("Oracle-BCL-for-JavaSE-and-JavaFX-2012");
9878  }
9879  else if (INFILE(_LT_ORACLE_BCL_JAVASE_PLATFORM_JAVAFX_2013)) {
9880  INTERESTING("oracle-bcl-javase-platform-javafx-2013");
9881  }
9882  else if (INFILE(_LT_ORACLE_BCL_JAVASE_PLATFORM_JAVAFX_2017)) {
9883  INTERESTING("oracle-bcl-javase-platform-javafx-2017");
9884  }
9885  else if (INFILE(_LT_ORACLE_WEB_SITES_TOU)) {
9886  INTERESTING("Oracle-Web-Sites-TOU");
9887  }
9888  else if (INFILE(_LT_PFTUS_1_1)) {
9889  INTERESTING("PFTUS-license");
9890  }
9891  else if (INFILE(_LT_PHILIPS_PROPRIETARY_NOTICE_2000)) {
9892  INTERESTING("Philips-Proprietary-Notice-2000");
9893  }
9894  else if (INFILE(_LT_PIVOTAL_TOU)) {
9895  INTERESTING("Pivotal-Software-Terms-of-Use");
9896  }
9897  else if (INFILE(_LT_QUIN_STREET)) {
9898  INTERESTING("QuinStreet");
9899  }
9900  else if (INFILE(_LT_ROGUE_WAVE)) {
9901  INTERESTING("Rogue-Wave-Software");
9902  }
9903  else if (INFILE(_LT_RSA_MD2)) {
9904  INTERESTING("RSA-MD2");
9905  }
9906  else if (INFILE(_LT_RUTE)) {
9907  INTERESTING("Rute-Users-Tutorial-and-Exposition-0.8.0");
9908  }
9909  else if (INFILE(_LT_SCILAB_EN_2005)) {
9910  INTERESTING("SCILAB-en-2005");
9911  }
9912  else if (INFILE(_LT_SCILAB_FR)) {
9913  INTERESTING("SCILAB-FR");
9914  }
9915  else if (INFILE(_LT_SCSL_3_0)) {
9916  INTERESTING("SCSL-3.0");
9917  }
9918  else if (INFILE(_LT_SLYSOFT_EULA)) {
9919  INTERESTING("SlySoft");
9920  }
9921  else if (INFILE(_LT_SMSC_NON_COMMERCIAL_2012)) {
9922  INTERESTING("SMSC-Non-Commercial-2012");
9923  }
9924  else if (INFILE(_LT_STREAM_BENCHMARK)) {
9925  INTERESTING("STREAM-Benchmark");
9926  }
9927  else if (INFILE(_LT_TENABLE_NESSUS)) {
9928  INTERESTING("Tenable-Nessus");
9929  }
9930  else if (INFILE(_LT_TGPPL_1_0)) {
9931  INTERESTING("TGPPL-1.0");
9932  }
9933  else if (INFILE(_LT_THOMAS_BANDT)) {
9934  INTERESTING("Thomas-Bandt");
9935  }
9936  else if (INFILE(_LT_TRIPTRACKER)) {
9937  INTERESTING("TripTracker");
9938  }
9939  else if (INFILE(_LT_VNC_VIEWER_IOS)) {
9940  INTERESTING("VNCViewer-iOS");
9941  }
9942  else if (INFILE(_LT_WIFI_ALLIANCE)) {
9943  INTERESTING("Wi-Fi-Alliance");
9944  }
9945  else if (INFILE(_LT_YAHOO_MESSENGER_EULA)) {
9946  INTERESTING("Yahoo-Messenger");
9947  }
9948  if (maxInterest != IL_HIGH && !HASKW(kwbm, _KW_public_domain) &&
9949  NOT_INFILE(_PHR_COMMERC_NONCOMM)) {
9950  if (INFILE(_LT_NONCOMMERCIAL_1)) {
9951  INTERESTING(lDebug ? "NonC(1)" : "Non-commercial");
9952  }
9953  else if (INFILE(_LT_ZZNON_COMMERC1)) {
9954  INTERESTING(lDebug ? "NonC(2)" : "Non-commercial");
9955  }
9956  else if (INFILE(_LT_ZZNON_COMMERC2)) {
9957  INTERESTING(lDebug ? "NonC(3)" : "Non-commercial");
9958  }
9959  else if (HASTEXT(_TEXT_COMMERC, 0) &&
9960  INFILE(_PHR_NONCOMMERCIAL)) {
9961  INTERESTING(lDebug ? "NonC(4)" : "Non-commercial");
9962  }
9963  }
9964  if (INFILE(_LT_NOT_OPENSOURCE)) {
9965  INTERESTING("Not-OpenSource");
9966  }
9967  listClear(&whereList, NO); /* again, clear "unused" matches */
9969  /*
9970  * Look for footprints that declare something as proprietary... if we such
9971  * a statement, we care about the Copyright owner, too.
9972  */
9973  if (maxInterest != IL_HIGH) { /* if (*licStr == NULL_CHAR) { */
9974  j = 0; /* just a flag */
9975  if (INFILE(_LT_GEN_PROPRIETARY_1)) {
9976  INTERESTING(lDebug ? "Prop(1)" : "COMMERCIAL");
9977  j++;
9978  }
9979  else if (INFILE(_LT_GEN_PROPRIETARY_2)) {
9980  INTERESTING(lDebug ? "Prop(2)" : "COMMERCIAL");
9981  j++;
9982  }
9983  else if (INFILE(_LT_GEN_PROPRIETARY_3)) {
9984  INTERESTING(lDebug ? "Prop(3)" : "COMMERCIAL");
9985  j++;
9986  }
9987  else if (INFILE(_LT_GEN_PROPRIETARY_4)) {
9988  INTERESTING(lDebug ? "Prop(4)" : "COMMERCIAL");
9989  j++;
9990  }
9991  else if (INFILE(_LT_GEN_PROPRIETARY_5)) {
9992  INTERESTING(lDebug ? "Prop(5)" : "COMMERCIAL");
9993  j++;
9994  }
9995  else if (INFILE(_LT_GEN_PROPRIETARY_6)) {
9996  INTERESTING(lDebug ? "Prop(6)" : "COMMERCIAL");
9997  j++;
9998  }
9999  else if (INFILE(_LT_GEN_PROPRIETARY_7)) {
10000  INTERESTING(lDebug ? "Prop(7)" : "COMMERCIAL");
10001  j++;
10002  }
10003  else if (INFILE(_LT_GEN_PROPRIETARY_8)) {
10004  INTERESTING(lDebug ? "Prop(8)" : "COMMERCIAL");
10005  j++;
10006  }
10007  if (j) {
10008  checkCornerCases(filetext, size, score, kwbm, isML,
10009  isPS, nw, YES);
10010  }
10011  }
10012  listClear(&whereList, NO); /* again, clear "unused" matches */
10014  /*
10015  * Haskell Language Report License
10016  */
10017  if (INFILE(_LT_HASKELL_REPORT)) {
10018  INTERESTING("HaskellReport");
10019  }
10021  /*
10022  * Scheme Language Report License
10023  */
10024  if (INFILE(_LT_SCHEME_REPORT)) {
10025  INTERESTING("SchemeReport");
10026  }
10028  /*
10029  * German Data Licences (DL-DE family)
10030  */
10031  if (INFILE(_LT_DL_DE_ZERO_2)) {
10032  INTERESTING("DL-DE-ZERO-2.0");
10033  }
10034  else if (INFILE(_LT_DL_DE_BY_2_EN) || INFILE(_LT_DL_DE_BY_2_DE)) {
10035  INTERESTING("DL-DE-BY-2.0");
10036  }
10037  else if (INFILE(_LT_DL_DE_BY_NC_1_EN) || INFILE(_LT_DL_DE_BY_NC_1_DE)) {
10038  INTERESTING("DL-DE-BY-NC-1.0");
10039  }
10040  else if (INFILE(_LT_DL_DE_BY_1_EN) || INFILE(_LT_DL_DE_BY_1_DE)) {
10041  INTERESTING("DL-DE-BY-1.0");
10042  }
10044  /*
10045  * Norwegian Licence for Open Government Data (NLOD)
10046  */
10047  if (INFILE(_LT_NLOD_20_TEXT)) {
10048  INTERESTING("NLOD-2.0");
10049  }
10050  else if (INFILE(_LT_NLOD_10_TEXT)) {
10051  INTERESTING("NLOD-1.0");
10052  }
10054  /*
10055  * Statistics Canada Open License (SCOLA - French)
10056  */
10057  if (INFILE(_LT_SCOLA_FR)) {
10058  INTERESTING("OGL-Canada-SCOL");
10059  }
10061  /*
10062  * Canadian Open Government Licences
10063  */
10064  if (INFILE(_LT_OGL_TORONTO)) {
10065  INTERESTING("OGL-Toronto-1.0");
10066  }
10067  else if (INFILE(_LT_OGL_ONTARIO)) {
10068  INTERESTING("OGL-Ontario-1.0");
10069  }
10070  else if (INFILE(_LT_OGL_NOVA_SCOTIA)) {
10071  INTERESTING("OGL-Nova-Scotia-1.0");
10072  }
10073  else if (INFILE(_LT_OGL_BC)) {
10074  INTERESTING("OGL-British-Columbia-2.0");
10075  }
10076  else if (INFILE(_LT_OGL_ALBERTA)) {
10077  INTERESTING("OGL-Alberta-2.1");
10078  }
10079  else if (INFILE(_LT_OGL_CANADA_EN) || INFILE(_LT_OGL_CANADA_FR)) {
10080  INTERESTING("OGL-Canada-2.0");
10081  }
10083  /*
10084  * Parity Public License 6.0.0
10085  */
10086  if (INFILE(_LT_PARITY_600)) {
10087  INTERESTING("Parity-6.0.0");
10088  }
10089  else if (INFILE(_LT_PARITY_700)) {
10090  INTERESTING("Parity-7.0.0");
10091  }
10093  /*
10094  * Cryptographic Autonomy License
10095  */
10096  if (INFILE(_LT_CAL_10_CWE)) {
10097  INTERESTING("CAL-1.0-Combined-Work-Exception");
10098  }
10099  else if (INFILE(_LT_CAL_10)) {
10100  INTERESTING("CAL-1.0");
10101  }
10103  /*
10104  * Licence Art Libre 1.3
10105  */
10106  if (INFILE(_LT_LAL_13)) {
10107  INTERESTING("LAL-1.3");
10108  }
10110  /*
10111  * COIL-1.0 (Copyfree Open Innovation License)
10112  */
10113  if (INFILE(_LT_COIL_10)) {
10114  INTERESTING("COIL-1.0");
10115  }
10117  /*
10118  * TTWL (Text-Tabs+Wrap License)
10119  */
10120  if (INFILE(_LT_TTWL)) {
10121  INTERESTING("TTWL");
10122  }
10124  /*
10125  * HIDAPI License
10126  */
10127  if (INFILE(_LT_HIDAPI)) {
10128  INTERESTING("HIDAPI");
10129  }
10131  /*
10132  * ulem License
10133  */
10134  if (INFILE(_LT_ULEM)) {
10135  INTERESTING("ulem");
10136  }
10138  /*
10139  * UnixCrypt License
10140  */
10141  if (INFILE(_LT_UNIXCRYPT)) {
10142  INTERESTING("UnixCrypt");
10143  }
10145  /*
10146  * fwlw License
10147  */
10148  if (INFILE(_LT_FWLW)) {
10149  INTERESTING("fwlw");
10150  }
10152  /*
10153  * McPhee Slideshow License
10154  */
10155  if (INFILE(_LT_MCPHEE_SLIDESHOW)) {
10156  INTERESTING("McPhee-slideshow");
10157  }
10159  /*
10160  * MIPS Computer Systems License
10161  */
10162  if (INFILE(_LT_MIPS_CS)) {
10163  INTERESTING("MIPS");
10164  }
10166  /*
10167  * MPEG Software Simulation Group License
10168  */
10169  if (INFILE(_LT_MPEG_SSG)) {
10170  INTERESTING("MPEG-SSG");
10171  }
10173  /*
10174  * Kastrup License
10175  */
10176  if (INFILE(_LT_KASTRUP)) {
10177  INTERESTING("Kastrup");
10178  }
10180  /*
10181  * swrule License
10182  */
10183  if (INFILE(_LT_SWRULE)) {
10184  INTERESTING("swrule");
10185  }
10187  /*
10188  * softSurfer License
10189  */
10190  if (INFILE(_LT_SOFTSURFER)) {
10191  INTERESTING("softSurfer");
10192  }
10194  /*
10195  * Widget Workshop License
10196  */
10197  if (INFILE(_LT_WIDGET_WORKSHOP)) {
10198  INTERESTING("Widget-Workshop");
10199  }
10201  /*
10202  * LPD-document (Peter Deutsch Document License)
10203  */
10204  if (INFILE(_LT_LPD_DOCUMENT)) {
10205  INTERESTING("LPD-document");
10206  }
10208  /*
10209  * Zeeff License
10210  */
10211  if (INFILE(_LT_ZEEFF)) {
10212  INTERESTING("Zeeff");
10213  }
10215  /*
10216  * DEC-3-Clause License
10217  */
10218  if (INFILE(_LT_DEC_3_CLAUSE)) {
10219  INTERESTING("DEC-3-Clause");
10220  }
10222  /*
10223  * Lucida Bitmap Fonts (Bigelow & Holmes)
10224  */
10225  if (INFILE(_LT_LUCIDA_BITMAP)) {
10226  INTERESTING("Lucida-Bitmap-Fonts");
10227  }
10229  /*
10230  * ISO 8879 Permission
10231  */
10232  if (INFILE(_LT_ISO_8879)) {
10233  INTERESTING("ISO-permission");
10234  }
10236  /*
10237  * threeparttable License
10238  */
10239  if (INFILE(_LT_THREEPARTTABLE)) {
10240  INTERESTING("threeparttable");
10241  }
10243  /*
10244  * OWL-0.9.4 (Open Works License)
10245  */
10246  if (INFILE(_LT_OWL_094)) {
10247  INTERESTING("OWL-0.9.4");
10248  }
10250  /*
10251  * vhfPL 1.1
10252  */
10253  if (INFILE(_LT_VHFPL_11)) {
10254  INTERESTING("vhfPL-1.1");
10255  }
10257  /*
10258  * NXLOG Public License 1.0
10259  */
10260  if (INFILE(_LT_NXLOG_PL_10)) {
10261  INTERESTING("NXLOG-PL-1.0");
10262  }
10264  /*
10265  * Devblocks Public License 1.0
10266  */
10267  if (INFILE(_LT_DEVBLOCKS_10)) {
10268  INTERESTING("Devblocks-1.0");
10269  }
10271  /*
10272  * Treeware License
10273  */
10274  if (INFILE(_LT_TREEWARE_1) || INFILE(_LT_TREEWARE_2) || INFILE(_LT_TREEWARE_OPT2)) {
10275  INTERESTING("Treeware");
10276  }
10278  /*
10279  * AMD ASPF 2023
10280  */
10281  if (INFILE(_LT_AMD_ASPF_2023) && NOT_INFILE(_TITLE_AMD_SEV)) {
10282  INTERESTING("AMD-ASPF-2023");
10283  }
10285  /*
10286  * Bosch Sensortec 2023
10287  */
10288  if (INFILE(_LT_BOSCH_SENSORTEC)) {
10289  INTERESTING("Bosch-Sensortec");
10290  }
10292  /*
10293  * Broadcom firmware licenses
10294  */
10295  if (INFILE(_LT_BROADCOM_RPI)) {
10296  INTERESTING("Broadcom-Raspberry-Pi");
10297  }
10298  else if (INFILE(_LT_BROADCOM_CONFIDENTIAL)) {
10299  INTERESTING("Broadcom-Confidential");
10300  }
10302  /*
10303  * Marvell Firmware 2019
10304  */
10305  if (INFILE(_LT_MARVELL_FW)) {
10306  INTERESTING("Marvell-Firmware-2019");
10307  }
10309  /*
10310  * MediaTek Proprietary 2008
10311  */
10312  if (INFILE(_LT_MEDIATEK_2008)) {
10313  INTERESTING("MediaTek-Proprietary-2008");
10314  }
10316  /*
10317  * Microchip Products 2018
10318  */
10319  if (INFILE(_LT_MICROCHIP_2018)) {
10320  INTERESTING("Microchip-Products-2018");
10321  }
10323  /*
10324  * Motorola License
10325  */
10326  if (INFILE(_LT_MOTOROLA)) {
10327  INTERESTING("Motorola");
10328  }
10330  /*
10331  * Nortel DASA License
10332  */
10333  if (INFILE(_LT_NORTEL_DASA)) {
10334  INTERESTING("Nortel-DASA");
10335  }
10337  /*
10338  * NVIDIA with Government Qualifications
10339  */
10340  if (INFILE(_LT_NVIDIA_GOV)) {
10341  INTERESTING("NVIDIA-Gov");
10342  }
10344  /*
10345  * NXP Linux Firmware
10346  */
10347  if (INFILE(_LT_NXP_LINUX_FW)) {
10348  INTERESTING("NXP-Linux-Firmware");
10349  }
10351  /*
10352  * Rockchip Proprietary (various years)
10353  */
10354  if (INFILE(_LT_ROCKCHIP_2023)) {
10355  INTERESTING("Rockchip-Proprietary-2023");
10356  }
10357  else if (INFILE(_LT_ROCKCHIP_2022)) {
10358  INTERESTING("Rockchip-Proprietary-2022");
10359  }
10360  else if (INFILE(_LT_ROCKCHIP_2019)) {
10361  INTERESTING("Rockchip-Proprietary-2019");
10362  }
10364  /*
10365  * Silicon Image 2007
10366  */
10367  if (INFILE(_LT_SILICON_IMAGE)) {
10368  INTERESTING("Silicon-Image-2007");
10369  }
10371  /*
10372  * Texas Instruments licenses
10373  */
10374  if (INFILE(_LT_TI_RESTRICTED)) {
10375  INTERESTING("TI-Restricted");
10376  }
10377  else if (INFILE(_LT_TI_LINUX_FW) && NOT_INFILE(_LT_TI_TFL)) {
10378  INTERESTING("TI-Linux-Firmware");
10379  }
10381  /*
10382  * Wind River Commercial License
10383  */
10384  if (INFILE(_LT_WIND_RIVER)) {
10385  INTERESTING("Wind-River-Commercial");
10386  }
10388  /*
10389  * BigScience/CreativeML RAIL licenses
10390  */
10391  if (INFILE(_LT_CREATIVEML_RAIL_M2)) {
10392  INTERESTING("CreativeML-OpenRAIL-M2");
10393  }
10394  else if (INFILE(_LT_STABLE_DIFFUSION)) {
10395  INTERESTING("CreativeML-OpenRAIL-M");
10396  }
10397  else if (INFILE(_LT_BIGSCIENCE_RAIL_M)) {
10398  INTERESTING("BigScience-OpenRAIL-M");
10399  }
10400  else if (INFILE(_LT_BIGCODE_RAIL_M_V1)) {
10401  INTERESTING("BigCode-OpenRAIL-M-v1");
10402  }
10403  else if (INFILE(_LT_BIGSCIENCE_RAIL_1_0)) {
10404  INTERESTING("BigScience-RAIL-1.0");
10405  }
10407  if (INFILE(_LT_COCKROACHDB_SOFTWARE)) {
10408  INTERESTING("CockroachDB-Software-License");
10409  }
10411  if (INFILE(_LT_CODE_CREDIT_1_1_0)) {
10412  INTERESTING("Code-Credit-License-1.1.0");
10413  }
10414  else if (INFILE(_LT_CODE_CREDIT_1_0_1)) {
10415  INTERESTING("Code-Credit-License-1.0.1");
10416  }
10417  else if (INFILE(_LT_CODE_CREDIT_1_0_0)) {
10418  INTERESTING("Code-Credit-License-1.0.0");
10419  }
10421  if (INFILE(_LT_COGNITIVEWEB_OSL_1_1)) {
10422  INTERESTING("CognitiveWeb-Open-Source-License-1.1");
10423  }
10425  if (INFILE(_LT_COGVIDEOX)) {
10426  INTERESTING("The-CogVideoX-License");
10427  }
10429  if (INFILE(_LT_CONFLUENT_COMMUNITY_1_0)) {
10430  INTERESTING("Confluent-Community-1.0");
10431  }
10433  if (INFILE(_LT_DEFOLD_1_0)) {
10434  INTERESTING("Defold-1.0");
10435  }
10437  /*
10438  * NYSL 0.9982 (Japanese license)
10439  */
10440  if (INFILE(_LT_NYSL_JP)) {
10441  INTERESTING("NYSL-0.9982");
10442  }
10444  /*
10445  * AI/ML model licenses
10446  */
10447  if (INFILE(_LT_GEMMA_PUP)) {
10448  INTERESTING("Gemma-PUP");
10449  }
10451  if (INFILE(_LT_GEMINI_TOS)) {
10452  INTERESTING("Gemini-API-TOS");
10453  }
10455  if (INFILE(_LT_PLAYGROUND_V2)) {
10456  INTERESTING("Playground-v2-Community");
10457  }
10459  if (INFILE(_LT_SALESFORCE_AI_AUP)) {
10460  INTERESTING("Salesforce-AI-AUP");
10461  }
10463  if (INFILE(_LT_OPENAI_TOU)) {
10464  INTERESTING("OpenAI-TOU");
10465  }
10467  if (INFILE(_LT_GOOGLE_ML_KIT)) {
10468  INTERESTING("Google-ML-Kit-TOS");
10469  }
10471  if (INFILE(_LT_MAX_MOJO)) {
10472  INTERESTING("MAX-Mojo-Community");
10473  }
10475  if (INFILE(_LT_STACK_TOS)) {
10476  INTERESTING("The-Stack-TOS");
10477  }
10479  if (INFILE(_LT_DATABRICKS_DB)) {
10480  INTERESTING("Databricks-DB");
10481  }
10483  /*
10484  * Patent licenses
10485  */
10486  if (INFILE(_LT_CISCO_AVC)) {
10487  INTERESTING("Cisco-AVC-H264");
10488  }
10490  if (INFILE(_LT_XIPH_PATENT)) {
10491  INTERESTING("Xiph-Opus-Patent");
10492  }
10494  /*
10495  * CERN Attribution 1995
10496  */
10497  if (INFILE(_LT_CERN_ATTRIB)) {
10498  INTERESTING("CERN-Attribution-1995");
10499  }
10501  /*
10502  * Font licenses
10503  */
10504  if (INFILE(_LT_KFGQPC)) {
10505  INTERESTING("KFGQPC-Uthmanic-Script");
10506  }
10508  if (INFILE(_LT_MANFRED_KLEIN)) {
10509  INTERESTING("Manfred-Klein-Fonts");
10510  }
10512  if (INFILE(_LT_WADALAB)) {
10513  INTERESTING("Wadalab");
10514  }
10516  if (INFILE(_LT_GENERALUSER_GS)) {
10517  INTERESTING("GeneralUser-GS-2.0");
10518  }
10520  /*
10521  * ASN.1 Object Dumping Code License
10522  */
10523  if (INFILE(_LT_ASN1_DUMP)) {
10524  INTERESTING("ASN1-Object-Dump");
10525  }
10527  /*
10528  * musl attribution exception
10529  */
10530  if (INFILE(_LT_MUSL_EXCEPTION)) {
10531  INTERESTING("musl-exception");
10532  }
10534  /*
10535  * Commercial/proprietary software licenses
10536  */
10537  if (INFILE(_LT_CLEARTHOUGHT_20)) {
10538  INTERESTING("Clearthought-2.0");
10539  }
10541  if (INFILE(_LT_CODEXIA)) {
10542  INTERESTING("Codexia");
10543  }
10545  if (INFILE(_LT_CRUNCHBASE)) {
10546  INTERESTING("Crunchbase-Data");
10547  }
10549  if (INFILE(_LT_CUBIWARE_10)) {
10550  INTERESTING("Cubiware-Software-1.0");
10551  }
10553  if (INFILE(_LT_CWE_TOU)) {
10554  INTERESTING("CWE-TOU");
10555  }
10557  if (INFILE(_LT_DAMAIL)) {
10558  INTERESTING("DAMAIL");
10559  }
10561  if (INFILE(_LT_DATAMEKANIX)) {
10562  INTERESTING("DataMekanix");
10563  }
10565  if (INFILE(_LT_DENNIS_FERGUSON)) {
10566  INTERESTING("Dennis-Ferguson");
10567  }
10569  if (INFILE(_LT_DHTMLAB_PUBLIC)) {
10570  INTERESTING("dhtmlab-Public");
10571  }
10573  if (INFILE(_LT_DOKPLOY_DSAL)) {
10574  INTERESTING("Dokploy-DSAL-1.0");
10575  }
10577  if (INFILE(_LT_DTREE)) {
10578  INTERESTING("dtree");
10579  }
10581  if (INFILE(_LT_ECFONTS)) {
10582  INTERESTING("ECFonts-1.0");
10583  }
10585  if (INFILE(_LT_ECMA_NO_PATENT)) {
10586  INTERESTING("Ecma-No-Patent");
10587  }
10588  else if (INFILE(_LT_ECMA_STD_2024)) {
10589  INTERESTING("Ecma-Standard-2024");
10590  }
10591  else if (INFILE(_LT_ECMA_DOC)) {
10592  INTERESTING("Ecma-Documentation");
10593  }
10595  if (INFILE(_LT_EPAPERPRESS)) {
10596  INTERESTING("ePaperPress");
10597  }
10599  if (INFILE(_LT_EQVSL)) {
10600  INTERESTING("eQVSL-1.0");
10601  }
10603  if (INFILE(_LT_FABIEN_TASSIN)) {
10604  INTERESTING("Fabien-Tassin");
10605  }
10607  if (INFILE(_LT_FLEXBYTE)) {
10608  INTERESTING("Flexbyte");
10609  }
10611  if (INFILE(_LT_FPL)) {
10612  INTERESTING("FPL");
10613  }
10615  if (INFILE(_LT_FTDI)) {
10616  INTERESTING("FTDI");
10617  }
10619  if (INFILE(_LT_GDCL)) {
10620  INTERESTING("GDCL");
10621  }
10623  if (INFILE(_LT_GOOD_BOY)) {
10624  INTERESTING("Good-Boy");
10625  }
10627  if (INFILE(_LT_HACKING_LICENSE)) {
10628  INTERESTING("Hacking-License");
10629  }
10631  if (INFILE(_LT_HERE_PROPRIETARY)) {
10632  INTERESTING("HERE-Proprietary");
10633  }
10634  else if (INFILE(_LT_HERE_DISCLAIMER)) {
10635  INTERESTING("HERE-Disclaimer");
10636  }
10638  if (INFILE(_LT_HOT_POTATO)) {
10639  INTERESTING("Hot-Potato");
10640  }
10642  if (INFILE(_LT_HTML5_SPEC)) {
10643  INTERESTING("HTML5-License");
10644  }
10646  if (INFILE(_LT_IAN_KAPLAN)) {
10647  INTERESTING("Ian-Kaplan");
10648  }
10650  if (INFILE(_LT_ICANN_PUBLIC)) {
10651  INTERESTING("ICANN-Public");
10652  }
10654  if (INFILE(_LT_ISSL_2022)) {
10655  INTERESTING("ISSL-2022");
10656  }
10658  if (INFILE(_LT_JASON_MAYES)) {
10659  INTERESTING("Jason-Mayes");
10660  }
10662  if (INFILE(_LT_JJ2000)) {
10663  INTERESTING("JJ2000");
10664  }
10666  if (INFILE(_LT_JSFROMHELL)) {
10667  INTERESTING("JSFromHell");
10668  }
10670  if (INFILE(_LT_KARL_PETERSON)) {
10671  INTERESTING("Karl-Peterson");
10672  }
10674  if (INFILE(_LT_KEITH_RULE)) {
10675  INTERESTING("Keith-Rule");
10676  }
10678  if (INFILE(_LT_KO_MAN_PAGE)) {
10679  INTERESTING("Korean-Manpage");
10680  }
10682  if (INFILE(_LT_LENS_TOS)) {
10683  INTERESTING("Lens-TOS-2023");
10684  }
10686  if (INFILE(_LT_LINUXHOWTOS)) {
10687  INTERESTING("LinuxHowtos");
10688  }
10690  if (INFILE(_LT_MARKUS_MUMMERT)) {
10691  INTERESTING("Markus-Mummert");
10692  }
10694  if (INFILE(_LT_MATTHEW_KWAN)) {
10695  INTERESTING("Matthew-Kwan");
10696  }
10698  if (INFILE(_LT_NCSC_NL)) {
10699  INTERESTING("NCSC-NL-Disclaimer");
10700  }
10702  if (INFILE(_LT_NEWRAN)) {
10703  INTERESTING("Newran");
10704  }
10706  if (INFILE(_LT_NIST_SRD)) {
10707  INTERESTING("NIST-SRD");
10708  }
10710  if (INFILE(_LT_NWHM)) {
10711  INTERESTING("NWHM");
10712  }
10714  if (INFILE(_LT_OOURA_2001)) {
10715  INTERESTING("OOURA-2001");
10716  }
10718  /*
10719  * Oracle licenses
10720  */
10721  if (INFILE(_LT_ORACLE_MASTER)) {
10722  INTERESTING("Oracle-Master-Agreement");
10723  }
10724  else if (INFILE(_LT_ORACLE_COMM_DB)) {
10725  INTERESTING("Oracle-Commercial-DB-11g2");
10726  }
10727  else if (INFILE(_LT_ORACLE_FREE)) {
10728  INTERESTING("Oracle-Free-2018");
10729  }
10731  if (INFILE(_LT_O_YOUNG_JONG)) {
10732  INTERESTING("O-Young-Jong");
10733  }
10735  if (INFILE(_LT_PAUL_HSIEH_DERIV)) {
10736  INTERESTING("Paul-Hsieh-Derivative");
10737  }
10741  if (INFILE(_LT_PAULO_SOARES)) {
10742  INTERESTING("Paulo-Soares");
10743  }
10745  if (INFILE(_LT_PERL_10)) {
10746  INTERESTING("Perl-1.0");
10747  }
10749  if (INFILE(_LT_PFE_NOTICE)) {
10750  INTERESTING("PFE-Proprietary");
10751  }
10753  if (INFILE(_LT_POKE_WIGGLE)) {
10754  INTERESTING("Poke-Wiggle-Proprietary");
10755  }
10757  if (INFILE(_LT_QUIRKSMODE)) {
10758  INTERESTING("Quirksmode");
10759  }
10761  if (INFILE(_LT_RED_HAT_TM)) {
10762  INTERESTING("Red-Hat-Trademarks");
10763  }
10765  if (INFILE(_LT_RYSZARD_SZOPA)) {
10766  INTERESTING("Ryszard-Szopa");
10767  }
10769  if (INFILE(_LT_SCRIPT_ASYLUM)) {
10770  INTERESTING("Script-Asylum");
10771  }
10773  if (INFILE(_LT_SCRUB)) {
10774  INTERESTING("SCRUB");
10775  }
10777  if (INFILE(_LT_SHITAL_SHAH)) {
10778  INTERESTING("Shital-Shah");
10779  }
10781  if (INFILE(_LT_SNAPEDA_EXCEPTION)) {
10782  INTERESTING("SnapEDA-Design-Exception-1.0");
10783  }
10785  if (INFILE(_LT_STU_NICHOLLS)) {
10786  INTERESTING("Stu-Nicholls");
10787  }
10789  if (INFILE(_LT_TEAMDEV)) {
10790  INTERESTING("TeamDev-Services");
10791  }
10793  if (INFILE(_LT_TCG_SPEC_V2)) {
10794  INTERESTING("TCG-Spec-License-v2");
10795  }
10797  if (INFILE(_LT_TIGER_CRYPTO)) {
10798  INTERESTING("Tiger-Crypto");
10799  }
10801  if (INFILE(_LT_TIGRA_CAL)) {
10802  INTERESTING("Tigra-Calendar-3.2");
10803  }
10805  if (INFILE(_LT_TIMESTAMP_PICKER)) {
10806  INTERESTING("Timestamp-Picker");
10807  }
10809  if (INFILE(_LT_UBC_FREE)) {
10810  INTERESTING("UBC");
10811  }
10813  if (INFILE(_LT_UNPBOOK)) {
10814  INTERESTING("unpbook");
10815  }
10817  if (INFILE(_LT_VBACCELERATOR)) {
10818  INTERESTING("vbAccelerator");
10819  }
10821  if (INFILE(_LT_VISUAL_IDIOT)) {
10822  INTERESTING("Visual-Idiot");
10823  }
10825  if (INFILE(_LT_WHOSONFIRST)) {
10826  INTERESTING("WhosOnFirst");
10827  }
10829  if (INFILE(_LT_WILLIAM_ALEXANDER)) {
10830  INTERESTING("William-Alexander");
10831  }
10833  if (INFILE(_LT_WINK)) {
10834  INTERESTING("Wink");
10835  }
10837  if (INFILE(_LT_WINZIP_SE)) {
10838  INTERESTING("WinZip-Self-Extractor");
10839  }
10841  if (INFILE(_LT_WROX_DOWNLOAD)) {
10842  INTERESTING("Wrox-Download");
10843  }
10845  if (INFILE(_LT_WXWINDOWS_U_30)) {
10846  INTERESTING("wxWindows-Unrestricted-3.0");
10847  }
10849  if (INFILE(_LT_XXD)) {
10850  INTERESTING("xxd");
10851  }
10853  if (INFILE(_LT_YALE_CAS)) {
10854  INTERESTING("Yale-CAS");
10855  }
10857  if (INFILE(_LT_YENSDESIGN)) {
10858  INTERESTING("Yensdesign");
10859  }
10861  if (INFILE(_LT_YOLO_10)) {
10862  INTERESTING("YOLO-1.0");
10863  }
10865  if (INFILE(_LT_ZIPEG)) {
10866  INTERESTING("Zipeg");
10867  }
10869  if (INFILE(_LT_ZUGFERD)) {
10870  INTERESTING("ZUGFeRD-2.2.0");
10871  }
10873  if (INFILE(_LT_CAREWARE)) {
10874  INTERESTING("Careware");
10875  }
10877  if (INFILE(_LT_CCL_2026)) {
10878  INTERESTING("CCL-2026");
10879  }
10881  if (INFILE(_LT_CCLRC)) {
10882  INTERESTING("CCLRC");
10883  }
10885  if (INFILE(_LT_DBAD_11)) {
10886  INTERESTING("DBAD-1.1");
10887  }
10888  else if (INFILE(_LT_DBAD)) {
10889  INTERESTING("DBAD");
10890  }
10892  if (INFILE(_LT_ASWF_DIGITAL_11)) {
10893  INTERESTING("ASWF-Digital-Assets-1.1");
10894  }
10895  else if (INFILE(_LT_ASWF_DIGITAL_10)) {
10896  INTERESTING("ASWF-Digital-Assets-1.0");
10897  }
10899  if (INFILE(_LT_CERN_OHL_S_20)) {
10900  INTERESTING("CERN-OHL-S-2.0");
10901  }
10902  else if (INFILE(_LT_CERN_OHL_W_20)) {
10903  INTERESTING("CERN-OHL-W-2.0");
10904  }
10905  else if (INFILE(_LT_CERN_OHL_P_20)) {
10906  INTERESTING("CERN-OHL-P-2.0");
10907  }
10909  if (INFILE(_LT_ESA_PL_SC_24)) {
10910  INTERESTING("ESA-PL-strong-copyleft-2.4");
10911  }
10912  else if (INFILE(_LT_ESA_PL_PERM_24)) {
10913  INTERESTING("ESA-PL-permissive-2.4");
10914  }
10916  if (INFILE(_LT_ADOBE_UTOPIA)) {
10917  INTERESTING("Adobe-Utopia");
10918  }
10920  if (INFILE(_LT_ALGLIB_DOC)) {
10921  INTERESTING("ALGLIB-Documentation");
10922  }
10924  if (INFILE(_LT_ARPHIC_1999)) {
10925  INTERESTING("Arphic-1999");
10926  }
10928  if (INFILE(_LT_ASPELL_RU)) {
10929  INTERESTING("Aspell-RU");
10930  }
10932  if (INFILE(_LT_ASTERISK_EXCEPTION)) {
10933  INTERESTING("Asterisk-exception");
10934  }
10936  if (INFILE(_LT_BRIAN_GLADMAN)) {
10937  INTERESTING("Brian-Gladman-2-Clause");
10938  }
10940  if (INFILE(_LT_CAPEC_TOU)) {
10941  INTERESTING("CAPEC-tou");
10942  }
10944  if (INFILE(_LT_CHECK_CVS)) {
10945  INTERESTING("check-cvs");
10946  }
10948  if (INFILE(_LT_CRONYX)) {
10949  INTERESTING("Cronyx");
10950  }
10952  if (INFILE(_LT_CVE_TOU)) {
10953  INTERESTING("cve-tou");
10954  }
10956  if (INFILE(_LT_DANTE_TREGLIA)) {
10957  INTERESTING("Game-Programming-Gems");
10958  }
10960  if (INFILE(_LT_FBM)) {
10961  INTERESTING("FBM");
10962  }
10964  if (INFILE(_LT_FREEBSD_DOC)) {
10965  INTERESTING("FreeBSD-DOC");
10966  }
10968  if (INFILE(_LT_GNOME_EXAMPLES_EXCEPTION)) {
10969  INTERESTING("GNOME-examples-exception");
10970  }
10972  if (INFILE(_LT_HYPHEN_BULGARIAN)) {
10973  INTERESTING("hyphen-bulgarian");
10974  }
10976  if (INFILE(_LT_IEC_CODE_EULA)) {
10977  INTERESTING("IEC-Code-Components-EULA");
10978  }
10980  if (INFILE(_LT_JOVE)) {
10981  INTERESTING("jove");
10982  }
10984  if (INFILE(_LT_MAGAZ)) {
10985  INTERESTING("magaz");
10986  }
10988  if (INFILE(_LT_MAILPRIO)) {
10989  INTERESTING("mailprio");
10990  }
10992  if (INFILE(_LT_MINECRAFT_MOD)) {
10993  INTERESTING("MMPL-1.0.1");
10994  }
10996  if (INFILE(_LT_MMIXWARE)) {
10997  INTERESTING("MMIXware");
10998  }
11000  if (INFILE(_LT_MPI_PERMISSIVE)) {
11001  INTERESTING("mpi-permissive");
11002  }
11004  if (INFILE(_LT_MPLUS_FREE_FONT) && NOT_INFILE(_CR_MPLUS)) {
11005  INTERESTING("mplus");
11006  }
11008  if (INFILE(_LT_NTIA_PD)) {
11009  INTERESTING("NTIA-PD");
11010  }
11012  if (INFILE(_LT_OFFIS)) {
11013  INTERESTING("OFFIS");
11014  }
11016  if (INFILE(_LT_OPENVISION)) {
11017  INTERESTING("OpenVision");
11018  }
11020  if (INFILE(_LT_OPL_UK_30)) {
11021  INTERESTING("OPL-UK-3.0");
11022  }
11024  if (INFILE(_LT_PARATYPE_FREE_13)) {
11025  INTERESTING("ParaType-Free-Font-1.3");
11026  }
11028  if (INFILE(_LT_PNMSTITCH)) {
11029  INTERESTING("pnmstitch");
11030  }
11032  if (INFILE(_LT_SSH_KEYSCAN)) {
11033  INTERESTING("ssh-keyscan");
11034  }
11036  if (INFILE(_LT_THIRDEYE)) {
11037  INTERESTING("ThirdEye");
11038  }
11040  if (INFILE(_LT_UNRAR)) {
11041  INTERESTING("UnRAR");
11042  }
11044  if (INFILE(_LT_XZOOM)) {
11045  INTERESTING("xzoom");
11046  }
11048  if (INFILE(_LT_AARDVARK_PY_2014)) {
11049  INTERESTING("Aardvark-I2C-SPI-2014");
11050  }
11052  if (INFILE(_LT_ACCELLERA_SYSTEMC)) {
11053  INTERESTING("SystemC-Open-Source-License-Agreement");
11054  }
11056  if (INFILE(_LT_ACTER_PSL_1_0)) {
11057  INTERESTING("Acter-Public-Source-License-1.0");
11058  }
11060  if (INFILE(_LT_ADAPTEC_EULA)) {
11061  INTERESTING("Adaptec-EULA");
11062  }
11064  if (INFILE(_LT_ADDTHIS_MOBILE_SDK_1_0)) {
11065  INTERESTING("AddThis-Mobile-Application-SDK-License-1.0");
11066  }
11068  if (INFILE(_LT_ADOBE_EULA)) {
11069  INTERESTING("Adobe-EULA");
11070  }
11072  if (INFILE(_LT_AG_GRID_ENTERPRISE)) {
11073  INTERESTING("AG-Grid-Enterprise-License");
11074  }
11076  if (INFILE(_LT_AGTPL)) {
11077  INTERESTING("AGTPL");
11078  }
11080  if (INFILE(_LT_ALEXISISAAC_FREEWARE)) {
11081  INTERESTING("Alexisisaac-Freeware-License");
11082  }
11084  if (INFILE(_LT_AMAZON_REDSHIFT_JDBC)) {
11085  INTERESTING("Amazon-Redshift-JDBC-Driver-License-Agreement");
11086  }
11088  if (INFILE(_LT_AMAZON_SL)) {
11089  INTERESTING("Amazon-Software-License");
11090  }
11092  if (INFILE(_LT_AMD_LINUX_FIRMWARE_EXPORT)) {
11093  INTERESTING("AMD-Linux-Firmware-Export-License");
11094  }
11096  if (INFILE(_LT_ANACONDA_TOS_2024_03_30)) {
11097  INTERESTING("Anaconda-TOS-2024-03-30");
11098  }
11100  if (INFILE(_LT_ANDROID_SDK_PREVIEW_2015)) {
11101  INTERESTING("Android-SDK-Preview-License");
11102  }
11104  if (INFILE(_LT_ANSWERCAREFULLY_TOU_2025)) {
11105  INTERESTING("AnswerCarefully-Dataset-ToU-2025");
11106  }
11108  if (INFILE(_LT_APPFIRE_EULA)) {
11109  INTERESTING("Appfire-EULA");
11110  }
11112  if (INFILE(_LT_APPLE_ATTRIBUTION)) {
11113  INTERESTING("Apple-Attribution-License");
11114  }
11116  if (INFILE(_LT_APPLE_MPEG_4)) {
11117  INTERESTING("Apple-MPEG-4-License");
11118  }
11120  if (INFILE(_LT_APPSFLYER_FRAMEWORK)) {
11121  INTERESTING("AppsFlyer-Framework-License");
11122  }
11124  if (INFILE(_LT_ARM_CORTEX_MX)) {
11125  INTERESTING("ARM-Cortex-Mx-Proprietary");
11126  }
11128  if (INFILE(_LT_ARM_LLVM_SGA)) {
11129  INTERESTING("ARM-LLVM-Grant");
11130  }
11132  if (INFILE(_LT_ASMUS)) {
11133  INTERESTING("ASMUS-License");
11134  }
11136  if (INFILE(_LT_ATLASSIAN_MARKETPLACE_TOU)) {
11137  INTERESTING("Atlassian-Marketplace-Terms-of-Use");
11138  }
11140  if (INFILE(_LT_AUTHORIZENET_SDK)) {
11141  INTERESTING("AuthorizeNet-SDK-License");
11142  }
11144  if (INFILE(_LT_AUTODESK_3D_SFT_3_0)) {
11145  INTERESTING("Autodesk-3D-Studio-File-Toolkit-for-Release-3");
11146  }
11148  if (INFILE(_LT_AUTOIT_EULA)) {
11149  INTERESTING("Autoit-EULA");
11150  }
11152  if (INFILE(_LT_BEA_2_1)) {
11153  INTERESTING("BEA-2.1");
11154  }
11156  if (INFILE(_LT_BEAL_SCREAMER)) {
11157  INTERESTING("Beal-Screamer-License");
11158  }
11160  if (INFILE(_LT_BEEGFS_EULA_2024)) {
11161  INTERESTING("BeeGFS-EULA-2024");
11162  }
11164  if (INFILE(_LT_BINARY_LINUX_FIRMWARE)) {
11165  INTERESTING("Binary-Only-Linux-Firmware-License");
11166  }
11168  if (INFILE(_LT_BIOPYTHON)) {
11169  INTERESTING("Biopython-License");
11170  }
11172  if (INFILE(_LT_BPEL4WS_SPEC)) {
11173  INTERESTING("BPEL4WS-Specification-license");
11174  }
11176  if (INFILE(_LT_BRANKAS_OPEN_LICENSE_1_0)) {
11177  INTERESTING("Brankas-Open-License-1.0");
11178  }
11180  if (INFILE(_LT_BROADCOM_LINUX_FIRMWARE)) {
11181  INTERESTING("Broadcom-Linux-Firmware-License");
11182  }
11184  if (INFILE(_LT_BROADCOM_LINUX_TIMER)) {
11185  INTERESTING("Broadcom-Warranty-Disclaimer");
11186  }
11188  if (INFILE(_LT_BROADCOM_OPUS_PATENT)) {
11189  INTERESTING("Broadcom-Opus-Patent-License");
11190  }
11192  if (INFILE(_LT_BROADCOM_STANDARD_TERMS)) {
11193  INTERESTING("Broadcom-Standard-Terms");
11194  }
11196  if (INFILE(_LT_BROADCOM_UNMODIFIED_EXCEPTIO)) {
11197  INTERESTING("Broadcom-Unmodified-Linking-Exception");
11198  }
11200  if (INFILE(_LT_BSD_DPT)) {
11201  INTERESTING("BSD-DPT");
11202  }
11204  if (INFILE(_LT_BUDIBASE_SQS_2023)) {
11205  INTERESTING("Budibase-SQS-License-2023");
11206  }
11208  if (INFILE(_LT_BUGSENSE_SDK)) {
11209  INTERESTING("BugSense-SDK-License");
11210  }
11212  if (INFILE(_LT_BYTEMARK)) {
11213  INTERESTING("BYTEmark-License");
11214  }
11216  if (INFILE(_LT_CADENCE_LINUX_FIRMWARE)) {
11217  INTERESTING("Cadence-Linux-Firmware-License");
11218  }
11220  if (INFILE(_LT_CAMUNDA_1_0)) {
11221  INTERESTING("Camunda-License-1.0");
11222  }
11224  if (INFILE(_LT_CANONICAL_HA_CLA_ANY_E_V1_2)) {
11225  INTERESTING("Canonical-HA-CLA-ANY-E-v1.2");
11226  }
11228  if (INFILE(_LT_CANONICAL_HA_CLA_ANY_I_V1_2)) {
11229  INTERESTING("Canonical-HA-CLA-ANY-I-v1.2");
11230  }
11232  if (INFILE(_LT_CAVIUM_MALLOC)) {
11233  INTERESTING("Cavium-malloc-License");
11234  }
11236  if (INFILE(_LT_CEXCEPT_2008)) {
11237  INTERESTING("cexcept-License-2008");
11238  }
11240  if (INFILE(_LT_CGIC)) {
11241  INTERESTING("CGIC-License");
11242  }
11244  if (INFILE(_LT_CHILLICREAM_1_0)) {
11245  INTERESTING("ChilliCream-License-1.0");
11246  }
11248  if (INFILE(_LT_CNCF_CORPORATE_CLA_1_0)) {
11249  INTERESTING("CNCF-Corporate-CLA-1.0");
11250  }
11252  if (INFILE(_LT_CNCF_INDIVIDUAL_CLA_1_0)) {
11253  INTERESTING("CNCF-Individual-CLA-1.0");
11254  }
11256  if (INFILE(_LT_CODEGURU_PERMISSIONS)) {
11257  INTERESTING("CodeGuru-Permissions");
11258  }
11260  if (INFILE(_LT_COMMONJ_TIMER)) {
11261  INTERESTING("CommonJ-Timer-License");
11262  }
11264  if (INFILE(_LT_COUCHBASE_COMMUNITY)) {
11265  INTERESTING("Couchbase-Community-Edition-License");
11266  }
11268  if (INFILE(_LT_CPP_CORE_GUIDELINES)) {
11269  INTERESTING("CppCoreGuidelines-License");
11270  }
11272  if (INFILE(_LT_CRAPL_0_1)) {
11273  INTERESTING("CRAPL-v0-BETA-1");
11274  }
11276  if (INFILE(_LT_CSLA)) {
11277  INTERESTING("CSLA-License");
11278  }
11280  if (INFILE(_LT_DCO_1_0)) {
11281  INTERESTING("DCO-1.0");
11282  }
11284  if (INFILE(_LT_DCO_1_1)) {
11285  INTERESTING("DCO-1.1");
11286  }
11288  if (INFILE(_LT_DEEPSEEK_LA_1_0)) {
11289  INTERESTING("DeepSeek-License-Agreement-v1.0");
11290  }
11292  if (INFILE(_LT_DIFFGRAM_DLV2)) {
11293  INTERESTING("Diffgram-DLv2");
11294  }
11296  if (INFILE(_LT_DIVX_OPEN_2_1)) {
11297  INTERESTING("DivX-Open-License-2.1");
11298  }
11300  if (INFILE(_LT_DO_NO_HARM_0_1)) {
11301  INTERESTING("Do-No-Harm");
11302  }
11304  if (INFILE(_LT_DOUGLAS_YOUNG)) {
11305  INTERESTING("Douglas-Young-License");
11306  }
11308  if (INFILE(_LT_DYNARCH_DEVELOPER)) {
11309  INTERESTING("Dynarch-Developer-Agreement");
11310  }
11312  if (INFILE(_LT_ECLIPSE_TCK_1_1)) {
11313  INTERESTING("Eclipse-TCK-v1.1");
11314  }
11316  if (INFILE(_LT_ECMA_PATENT_COC_0)) {
11317  INTERESTING("Ecma-Patent-COC");
11318  }
11320  if (INFILE(_LT_ECMA_PATENT_COC_1)) {
11321  INTERESTING("Ecma-Patent-COC-1.0");
11322  }
11324  if (INFILE(_LT_ECMA_PATENT_COC_2)) {
11325  INTERESTING("Ecma-Patent-COC-2.0");
11326  }
11328  if (INFILE(_LT_ENHYDRA_1_1)) {
11329  INTERESTING("Enhydra-1.1");
11330  }
11332  if (INFILE(_LT_ENISA_LEGAL_NOTICE_2025)) {
11333  INTERESTING("ENISA-Legal-Notice-2025");
11334  }
11336  if (INFILE(_LT_ERIC_GLASS)) {
11337  INTERESTING("Eric-Glass-License");
11338  }
11340  if (INFILE(_LT_ESRI_DEVKIT)) {
11341  INTERESTING("Esri-Developer-Kit-License");
11342  }
11344  if (INFILE(_LT_EXCELSIOR_JET_RUNTIME)) {
11345  INTERESTING("Excelsior-JET-Runtime-License");
11346  }
11348  if (INFILE(_LT_FACEBOOK_NUCLIDE)) {
11349  INTERESTING("Facebook-Nuclide-Software-License");
11350  }
11352  if (INFILE(_LT_FACEBOOK_PATENT_RIGHTS_2)) {
11353  INTERESTING("Facebook-Patent-Rights-2");
11354  }
11356  if (INFILE(_LT_FIRST_EPSS_USAGE)) {
11357  INTERESTING("FIRST-EPSS-Usage-Agreement");
11358  }
11360  if (INFILE(_LT_FISH_AUDIO_RESEARCH_2026_03_)) {
11361  INTERESTING("Fish-Audio-Research-License-Agreement-2026-03-07");
11362  }
11364  if (INFILE(_LT_FRAUNHOFER_ISO_14496_10)) {
11365  INTERESTING("Fraunhofer-ISO-14496-10-License");
11366  }
11368  if (INFILE(_LT_FTPBEAN)) {
11369  INTERESTING("FtpBean-License");
11370  }
11372  if (INFILE(_LT_GARETH_MCCAUGHAN)) {
11373  INTERESTING("Gareth-McCaughan-License");
11374  }
11376  if (INFILE(_LT_GATLING_HIGHCHARTS)) {
11377  INTERESTING("Gatling-Highcharts-License");
11378  }
11380  if (INFILE(_LT_GEMMA_TOU_2024_04_01)) {
11381  INTERESTING("Gemma-ToU-2024-04-01");
11382  }
11384  if (INFILE(_LT_GEMMA_TOU_2025_03_24)) {
11385  INTERESTING("Gemma-ToU-2025-03-24");
11386  }
11388  if (INFILE(_LT_GENERIC_CLA)) {
11389  INTERESTING("Generic-CLA");
11390  }
11392  if (INFILE(_LT_GITHUB_CODEQL_TERMS_2020)) {
11393  INTERESTING("GitHub-CodeQL-Terms-2020");
11394  }
11396  if (INFILE(_LT_GITLEAKS_ACTION_EULA)) {
11397  INTERESTING("Gitleaks-Action-EULA");
11398  }
11400  if (INFILE(_LT_GNU_EMACS_GPL_1985)) {
11401  INTERESTING("GNU-emacs-General-Public-License-1985");
11402  }
11404  if (INFILE(_LT_GOOGLE_APIS_TOS_2021)) {
11405  INTERESTING("Google-APIs-TOS-2021");
11406  }
11408  if (INFILE(_LT_GOOGLE_CLA)) {
11409  INTERESTING("Google-CLA");
11410  }
11412  if (INFILE(_LT_GOOGLE_CORPORATE_CLA)) {
11413  INTERESTING("Google-Corporate-CLA");
11414  }
11416  if (INFILE(_LT_GOOGLE_PATENT_LICENSE_FUCHSI)) {
11417  INTERESTING("Google-Patent-License-for-Fuchsia");
11418  }
11420  if (INFILE(_LT_GOOGLE_PATENT_LICENSE_GOLANG)) {
11421  INTERESTING("Google-Patent-License-for-Go");
11422  }
11424  if (INFILE(_LT_GOOGLE_PATENT_LICENSE)) {
11425  INTERESTING("Google-Patent-License");
11426  }
11428  if (INFILE(_LT_GOOGLE_TOS_2020)) {
11429  INTERESTING("Google-TOS-2020");
11430  }
11432  if (INFILE(_LT_GRADLE_ENTERPRISE_SLA_2022_1)) {
11433  INTERESTING("Gradle-Enterprise-SLA-2022-");
11434  }
11436  if (INFILE(_LT_GRADLE_TOU_2022_01_13)) {
11437  INTERESTING("Gradle-Terms-of-Use-2022-01-13");
11438  }
11440  if (INFILE(_LT_GSAP_STANDARD_NO_CHARGE_2025)) {
11441  INTERESTING("Standard-No-Charge-GSAP-License-2025");
11442  }
11444  if (INFILE(_LT_GTPL_V2)) {
11445  INTERESTING("GTPL-v2");
11446  }
11448  if (INFILE(_LT_HESSLA)) {
11449  INTERESTING("HESSLA");
11450  }
11452  if (INFILE(_LT_HFOIL_1_0)) {
11453  INTERESTING("HFOILv1.0");
11454  }
11456  if (INFILE(_LT_HISTORICAL_NTP)) {
11457  INTERESTING("Historical-Notice-NTP");
11458  }
11460  if (INFILE(_LT_HTTPGET)) {
11461  INTERESTING("httpget-notice-and-disclaimer");
11462  }
11464  if (INFILE(_LT_HUGO)) {
11465  INTERESTING("Hugo-License");
11466  }
11468  if (INFILE(_LT_IBM_DEVELOPERWORKS_COMMUNITY)) {
11469  INTERESTING("IBM-developerWorks-Community-Download-Agreement");
11470  }
11472  if (INFILE(_LT_IBM_EMPLOYEE_WRITTEN)) {
11473  INTERESTING("IBM-Employee-Written-Software-License");
11474  }
11476  if (INFILE(_LT_IBM_SAMPLE)) {
11477  INTERESTING("IBM-Sample-License");
11478  }
11480  if (INFILE(_LT_ICOT_FREE)) {
11481  INTERESTING("ICOT-Free-Software");
11482  }
11484  if (INFILE(_LT_IDT_NOTICE)) {
11485  INTERESTING("IDT-License-Notice");
11486  }
11488  if (INFILE(_LT_INFINEON_FREE)) {
11489  INTERESTING("Infineon-Free-Software-License");
11490  }
11492  if (INFILE(_LT_INSTALLSITE)) {
11493  INTERESTING("InstallSite-License-Agreement");
11494  }
11496  if (INFILE(_LT_INTEL_SAMPLE_SOURCE_CODE_201)) {
11497  INTERESTING("Intel-Sample-Source-Code-2015");
11498  }
11500  if (INFILE(_LT_INTEL_SCL)) {
11501  INTERESTING("Intel-Source-Code-License-Agreement");
11502  }
11504  if (INFILE(_LT_IOZONE)) {
11505  INTERESTING("IOzone-License");
11506  }
11508  if (INFILE(_LT_ISO_14496_10)) {
11509  INTERESTING("ISO-14496-10");
11510  }
11512  if (INFILE(_LT_ISO_SCHEMATRON_19757_3)) {
11513  INTERESTING("ISO-IEC-19757-3");
11514  }
11516  if (INFILE(_LT_ITC_EULA)) {
11517  INTERESTING("ITC-EULA");
11518  }
11520  if (INFILE(_LT_ITU)) {
11521  INTERESTING("ITU-License");
11522  }
11524  if (INFILE(_LT_ITU_T)) {
11525  INTERESTING("ITU-T-License");
11526  }
11528  if (INFILE(_LT_JETBRAINS_PURCHASE_TERMS)) {
11529  INTERESTING("JetBrains-Purchase-Terms");
11530  }
11532  if (INFILE(_LT_JGRAPH_GENERAL)) {
11533  INTERESTING("JGraph-General-License");
11534  }
11536  if (INFILE(_LT_JIDE_SLA)) {
11537  INTERESTING("JIDE-SLA");
11538  }
11540  if (INFILE(_LT_JOINBASE_CELA_2022)) {
11541  INTERESTING("JoinBase-Community-Edition-License-2022");
11542  }
11544  if (INFILE(_LT_JPEGXR)) {
11545  INTERESTING("JPEG-XR-License");
11546  }
11548  if (INFILE(_LT_KEVAN_STANNARD)) {
11549  INTERESTING("Kevan-Stannard-License");
11550  }
11552  if (INFILE(_LT_KUMAR_ROBOTICS)) {
11553  INTERESTING("Kumar-Robotics-License");
11554  }
11556  if (INFILE(_LT_LARABIE)) {
11557  INTERESTING("Larabie-Fonts-EULA");
11558  }
11560  if (INFILE(_LT_LATTICE_OSL_2017)) {
11561  INTERESTING("Lattice-Open-Source-License-2017");
11562  }
11564  if (INFILE(_LT_LCS_TELEGRAPHICS)) {
11565  INTERESTING("LCS-Telegraphics-License");
11566  }
11568  if (INFILE(_LT_LIBRATO_EXCEPTION)) {
11569  INTERESTING("Librato-Open-License-1.0");
11570  }
11572  if (INFILE(_LT_LIFERAY_EE)) {
11573  INTERESTING("Liferay-Portal-EE-License");
11574  }
11576  if (INFILE(_LT_LIFERAY_MARKETPLACE_TOS)) {
11577  INTERESTING("Liferay-Marketplace-TOS");
11578  }
11580  if (INFILE(_LT_LINUX_DEVICE_DRIVERS)) {
11581  INTERESTING("Linux-Device-Drivers");
11582  }
11584  if (INFILE(_LT_LIVEKIT_MODEL_2024)) {
11585  INTERESTING("LiveKit-Model-License-Agreement-2024");
11586  }
11588  if (INFILE(_LT_LLAMA_2_LICENSE_2023)) {
11589  INTERESTING("Llama-2-Community-License-Agreement-2023");
11590  }
11592  if (INFILE(_LT_LLAMA_3_1_LICENSE_2024)) {
11593  INTERESTING("Llama-3.1-Community-License-Agreement-2024");
11594  }
11596  if (INFILE(_LT_LLAMA_3_2_LICENSE_2024)) {
11597  INTERESTING("Llama-3.2-Community-License-Agreement-2024");
11598  }
11600  if (INFILE(_LT_LLAMA_3_3_LICENSE_2024)) {
11601  INTERESTING("Llama-3.3-Community-License-Agreement-2024");
11602  }
11604  if (INFILE(_LT_LLAMA_4_CLA_2025)) {
11605  INTERESTING("Llama-4-Community-License-Agreement-2025");
11606  }
11608  if (INFILE(_LT_LLAMA_4_LICENSE_2025)) {
11609  INTERESTING("Llama-4-Acceptable-Use-Policy-2025");
11610  }
11612  if (INFILE(_LT_MAPBOX_TOS_2021)) {
11613  INTERESTING("Mapbox-TOS-2021");
11614  }
11616  if (INFILE(_LT_MAPBOX_TOS_2024)) {
11617  INTERESTING("Mapbox-TOS-2024");
11618  }
11620  if (INFILE(_LT_MARVELL_FIRMWARE)) {
11621  INTERESTING("Marvell-Firmware-License");
11622  }
11624  if (INFILE(_LT_MATT_GALLAGHER_ATTRIBUTION)) {
11625  INTERESTING("Matt-Gallagher-Attribution-License");
11626  }
11628  if (INFILE(_LT_MCAFEE_TOU)) {
11629  INTERESTING("McAfee-Free-License");
11630  }
11632  if (INFILE(_LT_MEDIATEK_NO_WARRANTY)) {
11633  INTERESTING("MediaTek-No-Warranty-Clause");
11634  }
11636  if (INFILE(_LT_MEDIATEK_PROPRIETARY_2005)) {
11637  INTERESTING("Mediatek-Proprietary-License-2005");
11638  }
11640  if (INFILE(_LT_MEDIATEK_PROPRIETARY_2010)) {
11641  INTERESTING("Mediatek-Proprietary-License-2010");
11642  }
11644  if (INFILE(_LT_MEDIATEK_PROPRIETARY_2016)) {
11645  INTERESTING("Mediatek-Proprietary-License-2016");
11646  }
11648  if (INFILE(_LT_MELANGE)) {
11649  INTERESTING("Melange-Public-License");
11650  }
11652  if (INFILE(_LT_MICROCHIP_ENC28J60_2009)) {
11653  INTERESTING("Microchip-ENC28J60-License-2009");
11654  }
11656  if (INFILE(_LT_MICROCHIP_LINUX_FIRMWARE)) {
11657  INTERESTING("Microchip-Linux-Firmware-License");
11658  }
11660  if (INFILE(_LT_MICROCHIP_PK2CMD_2009)) {
11661  INTERESTING("Microchip-pk2cmd-License-2009");
11662  }
11664  if (INFILE(_LT_MICROSOFT_ENTERPRISE_LIBRARY)) {
11665  INTERESTING("MS-Enterprise-Library-EULA");
11666  }
11668  if (INFILE(_LT_MINIMAX_MODEL_M2_5)) {
11669  INTERESTING("MiniMax-Model-License-M2.5");
11670  }
11672  if (INFILE(_LT_MIT_NAGY)) {
11673  INTERESTING("MIT-Nagy-Variant");
11674  }
11676  if (INFILE(_LT_MODERNE_SALA_2024)) {
11677  INTERESTING("Moderne-Source-Available-License-2024");
11678  }
11680  if (INFILE(_LT_MOE_SPEECH)) {
11681  INTERESTING("MoeSpeech-License");
11682  }
11684  if (INFILE(_LT_MOV_AI_1_0)) {
11685  INTERESTING("Mov.AI-License-version-1.0");
11686  }
11688  if (INFILE(_LT_MOXA_LINUX_FIRMWARE)) {
11689  INTERESTING("Moxa-Linux-Firmware-License");
11690  }
11692  if (INFILE(_LT_MPEG_7)) {
11693  INTERESTING("MPEG-7-License");
11694  }
11696  if (INFILE(_LT_MPEG_ISO)) {
11697  INTERESTING("MPEG-2-NBC-MPEG-4-Audio-ISO");
11698  }
11700  if (INFILE(_LT_MS_ASP_NET_AJAX_SUPPLEMENTAL)) {
11701  INTERESTING("MS-Supplemental-License-ASP.NET-2.0-AJAX-EXT");
11702  }
11704  if (INFILE(_LT_MS_AZURE_RTOS)) {
11705  INTERESTING("MS-Azure-RTOS");
11706  }
11708  if (INFILE(_LT_MS_AZURE_RTOS_2023_05)) {
11709  INTERESTING("MS-Azure-RTOS-2023-05");
11710  }
11712  if (INFILE(_LT_MS_CONTAINER_EULA)) {
11713  INTERESTING("Microsoft-Container-EULA");
11714  }
11716  if (INFILE(_LT_MS_DIRECT3D_D3D120N7_1_1_0)) {
11717  INTERESTING("MS-Direct3D-D3D12On7-1.1.0");
11718  }
11720  if (INFILE(_LT_MS_DXSDK_D3DX_9_29_952_3)) {
11721  INTERESTING("MS-DXSDK.D3DX-9.29.952.3");
11722  }
11724  if (INFILE(_LT_MS_ENTITY_FRAMEWORK_5)) {
11725  INTERESTING("MS-Entity-Framework-5-License");
11726  }
11728  if (INFILE(_LT_MS_IIS_CONTAINER_IMAGES_EULA)) {
11729  INTERESTING("MS-IIS-Container-Images-EULA-2020");
11730  }
11732  if (INFILE(_LT_MSJ_SAMPLE_CODE)) {
11733  INTERESTING("MS-Systems-Journal-Sample-Code-License");
11734  }
11736  if (INFILE(_LT_MS_LIMITED_COMMUNITY)) {
11737  INTERESTING("MS-Limited-Community-License");
11738  }
11740  if (INFILE(_LT_MS_NET_LIBRARY_2019_06)) {
11741  INTERESTING("MS-.NET-Library-License-2019-06");
11742  }
11744  if (INFILE(_LT_MS_OFFICE_SYSTEM_PROGRAMS_EU)) {
11745  INTERESTING("MS-Office-System-Programs-Software-EULA");
11746  }
11748  if (INFILE(_LT_MS_OPUS_PATENT_2012)) {
11749  INTERESTING("MS-Opus-Patent-Terms-2012");
11750  }
11752  if (INFILE(_LT_MS_PATENT_PROMISE)) {
11753  INTERESTING("MS-Patent-Promise-for-.NET");
11754  }
11756  if (INFILE(_LT_MS_PATENT_PROMISE_MONO)) {
11757  INTERESTING("Microsoft-Patent-Promise-for-Mono");
11758  }
11760  if (INFILE(_LT_MS_PYTHON_VSCODE_PYLANCE_202)) {
11761  INTERESTING("MS-Pylance-Extension-for-VSCode-License");
11762  }
11764  if (INFILE(_LT_MS_SSPL)) {
11765  INTERESTING("MS-SS-PL");
11766  }
11768  if (INFILE(_LT_MSTAR_2007)) {
11769  INTERESTING("MStar-Proprietary-License-2007");
11770  }
11772  if (INFILE(_LT_MSTAR_2012)) {
11773  INTERESTING("MStar-Proprietary-License-2012");
11774  }
11776  if (INFILE(_LT_MTX_LICENSING_STATEMENT)) {
11777  INTERESTING("MicroType-Express-MTX");
11778  }
11780  if (INFILE(_LT_MUT_LICENSE)) {
11781  INTERESTING("muT-License");
11782  }
11784  if (INFILE(_LT_MYSQL_LINKING_EXCEPTION_2018)) {
11785  INTERESTING("MySQL-linking-exception-2018");
11786  }
11788  if (INFILE(_LT_NAUGHTER)) {
11789  INTERESTING("Naughter-Software-License");
11790  }
11792  if (INFILE(_LT_NEMOTRON_OPEN_MODEL_2025_12_)) {
11793  INTERESTING("NVIDIA-Nemotron-Open-Model-2025-12-15");
11794  }
11796  if (INFILE(_LT_NETCOMPONENTS)) {
11797  INTERESTING("NetComponents-License");
11798  }
11800  if (INFILE(_LT_NETDATA_NCUL1)) {
11801  INTERESTING("Netdata-Cloud-UI-NCUL1-v1.0");
11802  }
11804  if (INFILE(_LT_NETRONOME_FIRMWARE)) {
11805  INTERESTING("Netronome-Firmware-License");
11806  }
11808  if (INFILE(_LT_NEW_RELIC)) {
11809  INTERESTING("New-Relic-License");
11810  }
11812  if (INFILE(_LT_NON_VIOLENT_4_0)) {
11813  INTERESTING("NVPL-4.0");
11814  }
11816  if (INFILE(_LT_NON_VIOLENT_7_0) && NOT_INFILE(_LT_NON_VIOLENT_4_0) &&
11817  NOT_INFILE(_LT_NON_VIOLENT_6_0)) {
11818  INTERESTING("NVPL-7.0");
11819  }
11821  if (INFILE(_LT_NTLM)) {
11822  INTERESTING("NTLM-License");
11823  }
11825  if (INFILE(_LT_NVIDIA_APEX_SDK_EULA_2011)) {
11826  INTERESTING("NVIDIA-APEX-SDK-EULA-2011");
11827  }
11829  if (INFILE(_LT_NVIDIA_MODEL_TRAINING_2025)) {
11830  INTERESTING("NVIDIA-Data-Agreement-for-Model-Training-2025");
11831  }
11833  if (INFILE(_LT_NVIDIA_OPEN_MODEL_2025_04_28)) {
11834  INTERESTING("NVIDIA-Open-Model-License-Agreement-2025-04-28");
11835  }
11837  if (INFILE(_LT_NXP_FIRMWARE_PATENT)) {
11838  INTERESTING("NXP-Firmware-with-Patent-License");
11839  }
11841  if (INFILE(_LT_NXP_MC_FIRMWARE)) {
11842  INTERESTING("NXP-MC-Firmware-License");
11843  }
11845  if (INFILE(_LT_NXP_WARRANTY_DISCLAIMER)) {
11846  INTERESTING("NXP-Warranty-Disclaimer");
11847  }
11849  if (INFILE(_LT_NYSL_0_9982)) {
11850  INTERESTING("NYSL-0.9982");
11851  }
11853  if (INFILE(_LT_ODIN_2000)) {
11854  INTERESTING("Odin-Software-License-2000");
11855  }
11857  if (INFILE(_LT_ODMG)) {
11858  INTERESTING("ODMG-License");
11859  }
11861  if (INFILE(_LT_OGL_1_0A)) {
11862  INTERESTING("OGL-1.0a");
11863  }
11865  if (INFILE(_LT_OKNOSOFT_2021)) {
11866  INTERESTING("Oknosoft-License-2021");
11867  }
11869  if (INFILE(_LT_ON2_PATENT)) {
11870  INTERESTING("On2-VP3-Codec-Software-Patent-grant");
11871  }
11873  if (INFILE(_LT_OPENAI_TOU_20241211)) {
11874  INTERESTING("OpenAI-Terms-of-Use-20241211");
11875  }
11877  if (INFILE(_LT_OPENATOM_MODEL_1_0)) {
11878  INTERESTING("OpenAtom-Model-License-1.0");
11879  }
11881  if (INFILE(_LT_OPENVPN_AS_EULA)) {
11882  INTERESTING("OpenVPN-AS-EULA");
11883  }
11885  if (INFILE(_LT_OPEN_WEIGHTS_PERMISSIVE_1_0_)) {
11886  INTERESTING("Open-Weights-Permissive-License-v1.0.0");
11887  }
11889  if (INFILE(_LT_OPERA_EULA_2018)) {
11890  INTERESTING("Opera-EULA-2018");
11891  }
11893  if (INFILE(_LT_OPERA_EULA_EEA_2018)) {
11894  INTERESTING("Opera-EULA-EEA-2018");
11895  }
11897  if (INFILE(_LT_OPNL_1_0)) {
11898  INTERESTING("OPNL-1.0");
11899  }
11901  if (INFILE(_LT_OPNL_2_0)) {
11902  INTERESTING("OPNL-2.0");
11903  }
11905  if (INFILE(_LT_ORACLE_ENTITLEMENT_05_15)) {
11906  INTERESTING("Oracle-Entitlement-5-plus-15");
11907  }
11909  if (INFILE(_LT_ORACLE_GFTC_2023_06_12)) {
11910  INTERESTING("Oracle-GFTC-2023-06-12");
11911  }
11913  if (INFILE(_LT_ORACLE_NFTC_2021)) {
11914  INTERESTING("Oracle-NFTC-2021");
11915  }
11917  if (INFILE(_LT_ORACLE_OTN_JAVASE_2019)) {
11918  INTERESTING("OTN-for-Oracle-Java-SE-2019");
11919  }
11921  if (INFILE(_LT_ORACLE_SQL_DEVELOPER)) {
11922  INTERESTING("Oracle-SQL-Developer-License-Terms");
11923  }
11925  if (INFILE(_LT_OREILLY_NOTICE)) {
11926  INTERESTING("OReilly-Code-Sample-Notice");
11927  }
11929  if (INFILE(_LT_OSGI_SPEC_2_0)) {
11930  INTERESTING("OSGi-Specification-License-2.0");
11931  }
11933  if (INFILE(_LT_OS_MAINTENANCE_FEE_EULA)) {
11934  INTERESTING("Open-Source-Maintenance-Fee-EULA");
11935  }
11937  if (INFILE(_LT_OTN_DEV_DIST_2016)) {
11938  INTERESTING("OTN-License-2016");
11939  }
11941  if (INFILE(_LT_OTNLA_2016_11_30)) {
11942  INTERESTING("OTNLA-2016-11-30");
11943  }
11945  if (INFILE(_LT_OWFA_1_0_2023_05)) {
11946  INTERESTING("OWFa-1.0-Patent-and-Copyright-Grants-2023-05");
11947  }
11949  if (INFILE(_LT_OWFA_1_0)) {
11950  INTERESTING("OWFa-1.0-Patent-and-Copyright-Grants");
11951  }
11953  if (INFILE(_LT_OWFA_1_0_PATENT_ONLY)) {
11954  INTERESTING("OWFa-1.0-Patent-Only");
11955  }
11957  if (INFILE(_LT_OWF_CLA_1_0_COPYRIGHT)) {
11958  INTERESTING("OWF-CLA-1.0-Copyright");
11959  }
11961  if (INFILE(_LT_OWF_CLA_1_0_COPYRIGHT_PATENT)) {
11962  INTERESTING("OWF-CLA-1.0-Copyright-and-Patent");
11963  }
11965  if (INFILE(_LT_OXYGEN_XML_WEBHELP_EULA)) {
11966  INTERESTING("Oxygen-XML-WebHelp-EULA");
11967  }
11969  if (INFILE(_LT_PAOLO_MESSINA_2000)) {
11970  INTERESTING("Paolo-Messina-2000");
11971  }
11973  if (INFILE(_LT_PAYPAL_SDK_2013_2016)) {
11974  INTERESTING("PayPal-SDK-License-2013-2016");
11975  }
11977  if (INFILE(_LT_PDF_CREATOR_PILOT)) {
11978  INTERESTING("PDF-Creator-Pilot-License-Agreement");
11979  }
11981  if (INFILE(_LT_PD_PROGRAMMING)) {
11982  INTERESTING("PDProgramming-License");
11983  }
11985  if (INFILE(_LT_PHASER_CCP4)) {
11986  INTERESTING("Phaser-Commercial-EULA-CCP4");
11987  }
11989  if (INFILE(_LT_PHASER_PHENIX)) {
11990  INTERESTING("Phaser-Commercial-EULA-Phenix");
11991  }
11993  if (INFILE(_LT_PHILIPPE_DE_MUYTER)) {
11994  INTERESTING("Philippe-De-Muyter-License");
11995  }
11997  if (INFILE(_LT_PLANET_SOURCE_CODE)) {
11998  INTERESTING("Planet-Source-Code-License");
11999  }
12001  if (INFILE(_LT_PLASTIMATCH_1_0)) {
12002  INTERESTING("Plastimatch-1.0");
12003  }
12005  if (INFILE(_LT_PML_2020)) {
12006  INTERESTING("Amazon-PML-2020");
12007  }
12009  if (INFILE(_LT_PNGSUITE)) {
12010  INTERESTING("PngSuite-License");
12011  }
12013  if (INFILE(_LT_POWERVR_TOOLS_SOFTWARE_EULA)) {
12014  INTERESTING("PowerVR-Tools-Software-EULA");
12015  }
12017  if (INFILE(_LT_PROPRIETARY_LICENSE)) {
12018  INTERESTING("Proprietary-License");
12019  }
12021  if (INFILE(_LT_PSION_S3AEMUL)) {
12022  INTERESTING("Psion-User-LIcence-for-S3AEMUL");
12023  }
12025  if (INFILE(_LT_PSION_SIEMUL)) {
12026  INTERESTING("Psion-User-LIcence-for-SiEMUL");
12027  }
12029  if (INFILE(_LT_PSION_WRKAEMUL)) {
12030  INTERESTING("Psion-User-LIcence-for-WrkAEmul");
12031  }
12033  if (INFILE(_LT_PSYTEC_FREESOFT)) {
12034  INTERESTING("Psytec-Free-Software-License");
12035  }
12037  if (INFILE(_LT_QAPLUG)) {
12038  INTERESTING("QAPlug-License");
12039  }
12041  if (INFILE(_LT_QCA_LINUX_FIRMWARE)) {
12042  INTERESTING("QCA-Linux-Firmware-License");
12043  }
12045  if (INFILE(_LT_QCA_TECHNOLOGY)) {
12046  INTERESTING("QCA-Technology-License");
12047  }
12049  if (INFILE(_LT_QTI_LINUX_FIRMWARE)) {
12050  INTERESTING("QTI-Linux-Firmware");
12051  }
12053  if (INFILE(_LT_QUALCOMM_ISO)) {
12054  INTERESTING("Qualcomm-ISO-IEC-MPEG-B-DASH");
12055  }
12057  if (INFILE(_LT_QUICKNET_DOCUMENT_1999)) {
12058  INTERESTING("Quicknet-Document-License-1999");
12059  }
12061  if (INFILE(_LT_QWEN_2024)) {
12062  INTERESTING("Qwen-License-Agreement-2024");
12063  }
12065  if (INFILE(_LT_RACKSPACE)) {
12066  INTERESTING("Rackspace-License");
12067  }
12069  if (INFILE(_LT_REDIS_SOURCE_AVAILABLE_1_0)) {
12070  INTERESTING("Redis-Source-Available-License-1.0");
12071  }
12073  if (INFILE(_LT_RESPONSIBLE_AI_SOURCE_1_0)) {
12074  INTERESTING("RAIL-S-1.0");
12075  }
12077  if (INFILE(_LT_RESPONSIBLE_AI_SOURCE_1_1)) {
12078  INTERESTING("RAIL-S-1.1");
12079  }
12081  if (INFILE(_LT_RAIL_A)) {
12082  INTERESTING("RAIL-A");
12083  }
12085  if (INFILE(_LT_RETYPE_3_7_0)) {
12086  INTERESTING("Retype-Software-License-Agreement-v3.7.0");
12087  }
12089  if (INFILE(_LT_RICHARD_BLACK)) {
12090  INTERESTING("Richard-Black-License");
12091  }
12093  if (INFILE(_LT_ROOT_CERT_3_0)) {
12094  INTERESTING("Root-Certificate-License-Agreement-v3.0");
12095  }
12097  if (INFILE(_LT_RSA_DEMO)) {
12098  INTERESTING("RSA-Demo-License");
12099  }
12101  if (INFILE(_LT_RUBYENCODER_COMMERCIAL)) {
12102  INTERESTING("RubyEncoder-Commercial-Licence");
12103  }
12105  if (INFILE(_LT_RUBYENCODER_LOADER)) {
12106  INTERESTING("RubyEncoder-Loader-Licence");
12107  }
12109  if (INFILE(_LT_SAFECOPY_EULA)) {
12110  INTERESTING("SafeCopy-EULA");
12111  }
12113  if (INFILE(_LT_SALESFORCESANS_FONT)) {
12114  INTERESTING("SalesforceSans-Font-License");
12115  }
12117  if (INFILE(_LT_SAM_2025_11_19)) {
12118  INTERESTING("SAM-License-2025-11-19");
12119  }
12121  if (INFILE(_LT_SANDEEP)) {
12122  INTERESTING("Sandeep-License");
12123  }
12125  if (INFILE(_LT_SCANLOGD_LICENSE)) {
12126  INTERESTING("scanlogd-License");
12127  }
12129  if (INFILE(_LT_SCOLA_EN)) {
12130  INTERESTING("Statistics-Canada-Open-Licence-Agreement");
12131  }
12133  if (INFILE(_LT_SCRIPT_NIKHILK)) {
12134  INTERESTING("ScriptSharp-License");
12135  }
12137  if (INFILE(_LT_SEMGREP_REGISTRY)) {
12138  INTERESTING("Semgrep-Registry-License");
12139  }
12141  if (INFILE(_LT_SEMGREP_RULES_1_0)) {
12142  INTERESTING("Semgrep-Rules-License-v.1.0");
12143  }
12145  if (INFILE(_LT_SERVICE_COMP_ARCH)) {
12146  INTERESTING("Service-Component-Architecture-License");
12147  }
12149  if (INFILE(_LT_SGI_CID_1_0)) {
12150  INTERESTING("SGI-CID-Font-Code-Public-License-1.0");
12151  }
12153  if (INFILE(_LT_SLINT_COMMERCIAL_2_0)) {
12154  INTERESTING("Slint-Commercial-License-2.0");
12155  }
12157  if (INFILE(_LT_SMARTLABS_FREEWARE)) {
12158  INTERESTING("SmartLabs-Freeware-License");
12159  }
12161  if (INFILE(_LT_SOCKETXX_2003)) {
12162  INTERESTING("Socketxx-License-2003");
12163  }
12165  if (INFILE(_LT_SOFTFLOAT_2C)) {
12166  INTERESTING("SoftFloat-Legal-Notice-2c");
12167  }
12169  if (INFILE(_LT_SPARK_JIVE)) {
12170  INTERESTING("Spark-Jive-License");
12171  }
12173  if (INFILE(_LT_SPLUNK_3PP_EULA)) {
12174  INTERESTING("Splunk-EULA-for-Third-Party-Content");
12175  }
12177  if (INFILE(_LT_SQUARE_CLA)) {
12178  INTERESTING("Square-CLA");
12179  }
12181  if (INFILE(_LT_STABILITY_AI_COMMUNITY_2024)) {
12182  INTERESTING("Stability-AI-Community-License-Agreement-2024");
12183  }
12185  if (INFILE(_LT_STMICROELECTRONICS_LINUX_FIR)) {
12186  INTERESTING("STMicroelectronics-Linux-Firmware-License");
12187  }
12189  if (INFILE(_LT_SUN_BCL_JAVA_SERVLET_IMP_2_1)) {
12190  INTERESTING("Sun-BCL-Java-Servlet-Implementation-2.1.1");
12191  }
12193  if (INFILE(_LT_SUN_BSD_EXTRA)) {
12194  INTERESTING("Sun-BSD-Style-with-Additional-Restrictions");
12195  }
12197  if (INFILE(_LT_SUN_CC_PP_1_0)) {
12198  INTERESTING("Sun-CC-PP-Processing-License-1.0");
12199  }
12201  if (INFILE(_LT_SUN_EJB_SPEC_3_0)) {
12202  INTERESTING("Sun-EJB-Specification-3.0");
12203  }
12205  if (INFILE(_LT_SUN_GLASSFISH)) {
12206  INTERESTING("Sun-GlassFish-License");
12207  }
12209  if (INFILE(_LT_SUN_JAVAMAIL)) {
12210  INTERESTING("Sun-JavaMail");
12211  }
12213  if (INFILE(_LT_SUN_JAVA_TRANSACTION_API)) {
12214  INTERESTING("Sun-Java-Transaction-API-License");
12215  }
12217  if (INFILE(_LT_SUN_JSR_SPEC_04_2006)) {
12218  INTERESTING("Sun-JSR-Specification-04-2006");
12219  }
12221  if (INFILE(_LT_SUN_JTA_SPEC_1_0_1B)) {
12222  INTERESTING("Sun-JTA-Specification-License-1.0.1B");
12223  }
12225  if (INFILE(_LT_SUN_NO_HIGH_RISK_ACTIVITIES)) {
12226  INTERESTING("Sun-No-High-Risk-Activities-License");
12227  }
12229  if (INFILE(_LT_SYNOPSYS_ATTRIBUTION)) {
12230  INTERESTING("Synopsys-Attribution-License");
12231  }
12233  if (INFILE(_LT_TALIGENT_JDK)) {
12234  INTERESTING("Taligent-JDK-Proprietary-Notice");
12235  }
12237  if (INFILE(_LT_TANUKI_MAINTENANCE)) {
12238  INTERESTING("Tanuki-Maintenance-Addendum-1.3");
12239  }
12241  if (INFILE(_LT_TENCENT_HUNYUAN_IMAGE_3_0_CL)) {
12242  INTERESTING("Tencent-Hunyuan-Image-3.0-CLA");
12243  }
12245  if (INFILE(_LT_T_ENGINE_PUBLIC)) {
12246  INTERESTING("T-Engine-Public-License");
12247  }
12249  if (INFILE(_LT_TI_BROADBAND_APPS)) {
12250  INTERESTING("TI-Broadband-Applications-License");
12251  }
12253  if (INFILE(_LT_T_LICENSE_1_0)) {
12254  INTERESTING("T-License-1.0");
12255  }
12257  if (INFILE(_LT_T_LICENSE_2_0)) {
12258  INTERESTING("T-License-2.0");
12259  }
12261  if (INFILE(_LT_T_LICENSE_2_1)) {
12262  INTERESTING("T-License-2.1");
12263  }
12265  if (INFILE(_LT_T_LICENSE_2_2)) {
12266  INTERESTING("T-License-2.2");
12267  }
12269  if (INFILE(_LT_T_LICENSE_AMP_T_KERNEL)) {
12270  INTERESTING("T-License-for-AMP-T-Kernel");
12271  }
12273  if (INFILE(_LT_T_LICENSE_AMP_TKSE)) {
12274  INTERESTING("T-License-for-AMP-TKSE");
12275  }
12277  if (INFILE(_LT_T_LICENSE_SMP_T_KERNEL)) {
12278  INTERESTING("T-License-for-SMP-T-Kernel");
12279  }
12281  if (INFILE(_LT_T_LICENSE_SMP_TKSE)) {
12282  INTERESTING("T-License-for-SMP-TKSE");
12283  }
12285  if (INFILE(_LT_T_LICENSE_TKSE)) {
12286  INTERESTING("T-License-for-TKSE");
12287  }
12289  if (INFILE(_LT_TONGYI_QIANWEN_2023)) {
12290  INTERESTING("Tongyi-Qianwen-License-Agreement-2023");
12291  }
12293  if (INFILE(_LT_TOPPERS_EDUCATIONAL)) {
12294  INTERESTING("TOPPERS-Educational");
12295  }
12297  if (INFILE(_LT_TOPPERS_LICENSE)) {
12298  INTERESTING("TOPPERS-License");
12299  }
12301  if (INFILE(_LT_TRCA_ODL_1_0)) {
12302  INTERESTING("TRCA-Open-Data-Licence-1.0");
12303  }
12305  if (INFILE(_LT_TREEVIEW_DEVELOPER)) {
12306  INTERESTING("TreeView-Developer-License");
12307  }
12309  if (INFILE(_LT_TREEVIEW_DISTRIBUTOR)) {
12310  INTERESTING("TreeView-Distributor-License");
12311  }
12313  if (INFILE(_LT_TRENDMICRO_CL_1_0)) {
12314  INTERESTING("Trend-Micro-Community-License-1.0");
12315  }
12317  if (INFILE(_LT_TRUSTONIC_PROPRIETARY_2013)) {
12318  INTERESTING("Trustonic-Proprietary-License-2013");
12319  }
12321  if (INFILE(_LT_TXL_10_5)) {
12322  INTERESTING("TXL-10.5-License");
12323  }
12325  if (INFILE(_LT_CCAI_CLAUSE)) {
12326  INTERESTING("CCAI-clause");
12327  }
12329  /* FatFs uses this same wording */
12330  if (INFILE(_LT_UGUI) && NOT_INFILE(_LT_FATFS)) {
12331  INTERESTING("UGUI-License");
12332  }
12334  if (INFILE(_LT_UNLIMITED_BINARY_USE_EXCEPTI)) {
12335  INTERESTING("Unlimited-Binary-Use-Exception");
12336  }
12338  if (INFILE(_LT_UNPUBLISHED_SOURCE)) {
12339  INTERESTING("Unpublished-Source-License");
12340  }
12342  if (INFILE(_LT_US_GOVT_GEOTRANFORM)) {
12343  INTERESTING("US-Government-GeoTransform");
12344  }
12346  if (INFILE(_LT_USROBOTICS_PERMISSIVE)) {
12347  INTERESTING("USRobotics-Permissive-License");
12348  }
12350  if (INFILE(_LT_UTAH_CSL)) {
12351  INTERESTING("Utah-CSL-License");
12352  }
12354  if (INFILE(_LT_VCALENDAR)) {
12355  INTERESTING("VCalendar-License");
12356  }
12358  if (INFILE(_LT_VERISIGN)) {
12359  INTERESTING("VeriSign-License");
12360  }
12362  if (INFILE(_LT_VICOMSOFT_SOFTWARE)) {
12363  INTERESTING("Vicomsoft-Software-License");
12364  }
12366  if (INFILE(_LT_VISUAL_NUMERICS)) {
12367  INTERESTING("Visual-Numerics-License");
12368  }
12370  if (INFILE(_LT_VITA_NUOVA_LIBERAL)) {
12371  INTERESTING("Vita-Nuova-Liberal-Source-License");
12372  }
12374  if (INFILE(_LT_VITESSE_PROP)) {
12375  INTERESTING("Vitesse-Proprietary-Notice");
12376  }
12378  if (INFILE(_LT_VPL_1_1)) {
12379  INTERESTING("VPL-1.1");
12380  }
12382  if (INFILE(_LT_VPL_1_2)) {
12383  INTERESTING("VPL-1.2");
12384  }
12386  if (INFILE(_LT_VS10X_CODE_MAP)) {
12387  INTERESTING("VS10x-Code-Map");
12388  }
12390  if (INFILE(_LT_W3C_COMMUNITY_CLA)) {
12391  INTERESTING("W3C-Community-CLA");
12392  }
12394  if (INFILE(_LT_W3C_COMMUNITY_FINAL_SPEC)) {
12395  INTERESTING("W3C-Community-Final-Specification-Agreement");
12396  }
12398  if (INFILE(_LT_WINCE_50_SHARED_SOURCE)) {
12399  INTERESTING("MS-Windows-CE-5.0-Shared-Source-License");
12400  }
12402  if (INFILE(_LT_WINIDEA_SDK_2025)) {
12403  INTERESTING("winIDEA-SDK-2025");
12404  }
12406  if (INFILE(_LT_XMOS_COMMERCIAL_2017)) {
12407  INTERESTING("XMOS-Commercial-2017");
12408  }
12410  if (INFILE(_LT_ZAPATEC_CALENDAR)) {
12411  INTERESTING("Zapatec-Calendar-License");
12412  }
12414  if (INFILE(_LT_ZEUSBENCH)) {
12415  INTERESTING("ZeusBench-notice");
12416  }
12418  if (INFILE(_LT_ZIPLIST5_GEOCODE_DUPLICATION)) {
12419  INTERESTING("ZIPList5-Geocode-Duplication-Addendum");
12420  }
12422  if (INFILE(_LT_ZVENO_RESEARCH)) {
12423  INTERESTING("Zveno-Research-License");
12424  }
12426  if (INFILE(_LT_EJ_TECHNOLOGIES_EULA)) {
12427  INTERESTING("ej-technologies-EULA");
12428  }
12430  if (INFILE(_LT_HUGO_LICENSE) && NOT_INFILE(_LT_HUGO)) {
12431  INTERESTING("Hugo-License");
12432  }
12434  if (INFILE(_LT_MOVAI_1_0)) {
12435  INTERESTING("Mov.AI-1.0");
12436  }
12438  if (INFILE(_LT_SBIA_B)) {
12439  INTERESTING("SBIA-B");
12440  }
12442  if (INFILE(_LT_YANDEXGPT_2025)) {
12443  INTERESTING("YandexGPT-5-Lite-8B-2025");
12444  }
12446  if (INFILE(_LT_ACTIVESTATE_COMMUNITY)) {
12447  INTERESTING("ActiveState-Community");
12448  }
12450  if (INFILE(_LT_CHRIS_STOY)) {
12451  INTERESTING("Chris-Stoy-Attribution");
12452  }
12454  if (INFILE(_LT_GLWTPL)) {
12455  INTERESTING("GLWTPL");
12456  }
12458  if (INFILE(_LT_RED_HAT_TRADEMARKS)) {
12459  INTERESTING("Red-Hat-Trademarks");
12460  }
12462  if (INFILE(_LT_RTOOLS_UTIL)) {
12463  INTERESTING("RTools-Util");
12464  }
12466  if (INFILE(_LT_TGC_SPEC_V2)) {
12467  INTERESTING("TCG-Spec-License-v2");
12468  }
12470  if (INFILE(_LT_TIGRA_CALENDAR_32)) {
12471  INTERESTING("Tigra-Calendar-3.2");
12472  }
12474  if (INFILE(_LT_TIM_JANIK_2003)) {
12475  INTERESTING("Tim-Janik-License-2003");
12476  }
12478  if (INFILE(_LT_ATMEL_FW_LINUX)) {
12479  INTERESTING("Atmel-linux-firmware");
12480  }
12484  if (INFILE(_LT_KFGQPC_UTHMANIC)) {
12485  INTERESTING("KFGQPC-Uthmanic-Script-HAFS");
12486  }
12488  if (INFILE(_LT_KICAD_LIB_EXC)) {
12489  INTERESTING("KiCad-libraries-exception");
12490  }
12492  if (INFILE(_LT_QPL_INRIA_2004)) {
12493  INTERESTING("QPL-1.0-INRIA-2004-exception");
12494  }
12496  if (INFILE(_LT_BITSTREAM_CHARTER)) {
12497  INTERESTING("Bitstream-Charter");
12498  }
12500  if (INFILE(_LT_GRAPHICS_GEMS)) {
12501  INTERESTING("Graphics-Gems");
12502  }
12504  if (INFILE(_LT_KNUTH_CTAN)) {
12505  INTERESTING("Knuth-CTAN");
12506  }
12508  if (INFILE(_LT_LAL_12)) {
12509  INTERESTING("LAL-1.2");
12510  }
12512  if (INFILE(_LT_LILIQ_P_11)) {
12513  INTERESTING("LiLiQ-P-1.1");
12514  }
12516  if (INFILE(_LT_NLPL_PROSE)) {
12517  INTERESTING("NLPL");
12518  }
12520  if (INFILE(_LT_OSC_10)) {
12521  INTERESTING("OSC-1.0");
12522  }
12524  if (INFILE(_LT_SGP4_LIC)) {
12525  INTERESTING("SGP4");
12526  }
12528  if (INFILE(_LT_SL_LIC)) {
12529  INTERESTING("SL");
12530  }
12532  if (INFILE(_LT_FMT_EXCEPTION)) {
12533  INTERESTING("fmt-exception");
12534  }
12536  if (INFILE(_LT_ADVANCED_CRYPTICS)) {
12537  INTERESTING("Advanced-Cryptics-Dictionary");
12538  }
12540  if (INFILE(_LT_CFITSIO)) {
12541  INTERESTING("CFITSIO");
12542  }
12544  if (INFILE(_LT_ELASTIC_20) || INFILE(_TITLE_ELASTIC_20_NAMED)) {
12545  INTERESTING("Elastic-2.0");
12546  }
12548  if (INFILE(_LT_OPENMDW_10)) {
12549  INTERESTING("OpenMDW-1.0");
12550  }
12552  if (INFILE(_LT_TPDL)) {
12553  INTERESTING("TPDL");
12554  }
12556  if (INFILE(_LT_WTFNMFPL)) {
12557  INTERESTING("WTFNMFPL");
12558  }
12560  /*
12561  * END of license-footprint checking of known patterns/strings
12562  ******
12563  * Plan-B: look for things attorneys generally believe aren't "overly
12564  * legally-binding" or "uninterestring from a license perspective':
12565  * ... notable references to commercial, non-commercial, not-for-profit,
12566  * not-an-open-source-license, etc.
12567  */
12568  if (maxInterest != IL_HIGH) {
12569  if (INFILE(_LT_COMMERCIAL_1)) {
12570  INTERESTING(lDebug ? "COMM(1)" : "COMMERCIAL");
12571  }
12572  else if (INFILE(_LT_COMMERCIAL_2)) {
12573  INTERESTING(lDebug ? "COMM(2)" : "COMMERCIAL");
12574  }
12575  else if (HASTEXT(_LT_COMMERCIAL_3, REG_EXTENDED)) {
12576  if (HASTEXT(_LT_COMMERCIAL_Intel, REG_EXTENDED)) {
12577  INTERESTING("Intel.Commercial");
12578  } else if (HASTEXT(_LT_COMMERCIAL_Broadcom, REG_EXTENDED)) {
12579  INTERESTING("Broadcom.Commercial");
12580  } else {
12581  INTERESTING(lDebug ? "COMM(3)" : "COMMERCIAL");
12582  }
12583  }
12584  else if (INFILE(_LT_COMMERCIAL_4)) {
12585  if (HASTEXT(_LT_COMMERCIAL_Android_Fraunhofer, 0)) {
12586  INTERESTING("AndroidFraunhofer.Commercial");
12587  } else {
12588  INTERESTING(lDebug ? "COMM(4)" : "COMMERCIAL");
12589  }
12590  }
12591  else if (HASTEXT(_TEXT_BOOK, 0) && INFILE(_LT_BOOKPURCHASE)) {
12592  INTERESTING(lDebug ? "PurchBook" : "COMMERCIAL");
12593  }
12594  else if (INFILE(_LT_COMMERCIAL_5)) {
12595  INTERESTING(lDebug ? "COMM(5)" : "COMMERCIAL");
12596  }
12597  else if (INFILE(_LT_COMMERCIAL_6)) {
12598  INTERESTING(lDebug ? "COMM(6)" : "COMMERCIAL");
12599  }
12600  else if (INFILE(_LT_COMMERCIAL_7)) {
12601  INTERESTING(lDebug ? "COMM(7)" : "COMMERCIAL");
12602  }
12603  if (INFILE(_LT_NONPROFIT_1)) {
12604  MEDINTEREST(lDebug ? "NonP(1)" : "Non-profit");
12605  }
12606  else if (!lmem[_mPYTH_TEXT] && HASTEXT(_TEXT_PROFIT, 0) &&
12607  INFILE(_PHR_NONPROFIT)) {
12608  if (!(lmem[_fIETF] + lmem[_fDOC])) {
12609  MEDINTEREST(lDebug ? "NonP(2)" : "Non-profit");
12610  }
12611  }
12612  if (INFILE(_PHR_NO_SALE)) {
12613  MEDINTEREST("Not-for-sale");
12614  }
12615  if (!lmem[_mALADDIN] && INFILE(_PHR_NOT_OPEN)) {
12616  MEDINTEREST("NOT-Open-Source");
12617  }
12618  if (HASKW(kwbm, _KW_patent) && INFILE(_PHR_PATENT) && NOT_INFILE(_PHR_PATENT_NOT)) {
12619  MEDINTEREST("Patent-ref");
12620  }
12621  if (INFILE(_PHR_RESTRICT_RIGHTS)) {
12622  if (INFILE(_PHR_USGOVT_RESTRICT)) {
12623  MEDINTEREST("Govt-restrict");
12624  }
12625  else {
12626  MEDINTEREST("Restricted-rights");
12627  }
12628  }
12629  if (INFILE(_LT_EXPORTS_USA)) {
12630  MEDINTEREST("US-Export-restrict");
12631  }
12632  if (pd < 0) {
12633  checkPublicDomain(filetext, size, score, kwbm, isML, isPS);
12634  }
12635  }
12636  listClear(&whereList, NO); /* again, clear "unused" matches */
12638  /*
12639  * These "minimal-reference possibilities" MUST adhere to a prescribed
12640  * format: the name to be used MUST be the first of several name to match:
12641  * "(NAME identifier|NAME license|license NAME)"
12642  *****
12643  * Furthermore, licenses should be ordered from the most-specific to the
12644  * least-specific; e.g., look for LGPL_v3 before looking for LGPL -- the
12645  * strGrep() calls below ensure reporting only more-specific license
12646  * versions if found. For instance, if you order LGPL *before* LGPL_v3
12647  * we'll get both LGPLv3 and LGPL, which is redundant AND looks stupid.
12648  */
12649  if (*licStr == NULL_CHAR && HASKW(kwbm, _KW_license)) {
12650  for (i = 0, j = _MINlicense_first; i < NMINlicense; i++, j++) {
12651  if (dbgIdxGrep(j, filetext, lDiags)) {
12652  cp = strchr(_REGEX(j), ' ');
12653  if (cp == NULL_STR) {
12654  Assert(NO, "Bad reference[1] %d", j);
12655  continue;
12656  }
12657  *cp = NULL_CHAR;
12658  if (!(*licStr) || !strGrep(_REGEX(j)+1, licStr,
12659  REG_ICASE)) {
12660  (void) sprintf(name, "%s-possibility",
12661  _REGEX(j)+1);
12662  LOWINTEREST(name);
12663  }
12664  *cp = ' ';
12665  }
12666  }
12667  }
12668  listClear(&whereList, NO); /* again, clear "unused" matches */
12670  if (*licStr == NULL_CHAR && HASTEXT(_TEXT_SOURCE, 0)) {
12671  for (i = 0, j = _MINsource_first; i < NMINsource; i++, j++) {
12672  if (dbgIdxGrep(j, filetext, lDiags)) {
12673  cp = strchr(_REGEX(j), ' ');
12674  if (cp == NULL_STR) {
12675  Assert(NO, "Bad reference[2] %d", j);
12676  continue;
12677  }
12678  *cp = NULL_CHAR;
12679  if (!(*licStr) || !strGrep(_REGEX(j)+1, licStr,
12680  REG_ICASE)) {
12681  (void) sprintf(name, "%s-possibility",
12682  _REGEX(j)+1);
12683  LOWINTEREST(name);
12684  }
12685  *cp = ' ';
12686  }
12687  }
12688  }
12689  listClear(&whereList, NO); /* again, clear "unused" matches */
12691  if (*licStr == NULL_CHAR && HASTEXT(_KW_copyright, 0)) {
12692  for (i = 0, j = _MINcpyrt_first; i < NMINcpyrt; i++, j++) {
12693  if (dbgIdxGrep(j, filetext, lDiags)) {
12694  cp = strchr(_REGEX(j), ' ');
12695  if (cp == NULL_STR) {
12696  Assert(NO, "Bad reference[2] %d", j);
12697  continue;
12698  }
12699  *cp = NULL_CHAR;
12700  if (!(*licStr) || !strGrep(_REGEX(j)+1, licStr,
12701  REG_ICASE)) {
12702  (void) sprintf(name, "%s-possibility",
12703  _REGEX(j)+1);
12704  LOWINTEREST(name);
12705  }
12706  *cp = ' ';
12707  }
12708  }
12709  }
12710  listClear(&whereList, NO); /* again, clear "unused" matches */
12712  /*
12713  * NOW look for unclassified licenses, if we haven't found anything yet.
12714  * And avoid checking .po files -- message catalogues are known to have
12715  * false-positives.
12716  *****
12717  * FIX-ME: if a file contains ONLY a "no warranty" description/clause, it
12718  * will (currently) get flagged as an UnclassifiedLicense (so the check
12719  * for no-warranty was moved ABOVE this check in case we can use that info)
12720  */
12721  if (maxInterest != IL_HIGH && !lmem[_fDOC]) {
12722  if (!pd &&
12723  checkUnclassified(filetext, size, scp->score, isML,
12724  isPS, nw)) {
12725  strcpy(name, LS_UNCL);
12726  if (isPS) {
12727  strcat(name, "-PS");
12728  }
12729  MEDINTEREST(name);
12730  checkCornerCases(filetext, size, score, kwbm, isML, isPS, nw, YES);
12731  }
12732 #ifdef UNKNOWN_CHECK_DEBUG
12733  else {
12734  printf("... NOT an Unclassified license, NW %d PD %d\n",
12735  nw, pd);
12736  }
12737 #endif /* UNKNOWN_CHECK_DEBUG */
12738  }
12739  /* title-only names; runs late so it cannot displace a fuller match */
12740  if (NOT_INFILE(_PHR_RPSL_COMPATIBLE_ONLY)
12741  && NOT_INFILE(_PHR_CC_COMPATIBLE_ONLY)
12742  && NOT_INFILE(_PHR_EUPL_COMPATIBLE_ONLY)) {
12743  if (NOT_INFILE(_PHR_APSL_DERIVED)) {
12744  if (INFILE(_TITLE_APSL12)) {
12745  INTERESTING(lDebug ? "APSL(title)" : "APSL-1.2");
12746  }
12747  else if (INFILE(_TITLE_APSL11)) {
12748  INTERESTING(lDebug ? "APSL(title)" : "APSL-1.1");
12749  }
12750  else if (INFILE(_TITLE_APSL10)) {
12751  INTERESTING(lDebug ? "APSL(title)" : "APSL-1.0");
12752  }
12753  }
12754  if (INFILE(_TITLE_LUCENT102)) {
12755  INTERESTING(lDebug ? "LPL(title)" : "LPL-1.02");
12756  }
12757  if (INFILE(_TITLE_VOVIDA)) {
12758  INTERESTING(lDebug ? "VSL(title)" : "VSL-1.0");
12759  }
12760  if (INFILE(_TITLE_SMLNJ_NAMED)) {
12761  INTERESTING(lDebug ? "SMLNJ(title)" : "SMLNJ");
12762  }
12763  if (INFILE(_TITLE_SLEEPYCAT_NAMED)) {
12764  MEDINTEREST(lDebug ? "Sleepycat(title)" : "Sleepycat");
12765  }
12766  if (INFILE(_TITLE_CPOL_102)) {
12767  INTERESTING(lDebug ? "CPOL(title)" : "CPOL-1.02");
12768  }
12769  if (INFILE(_TITLE_OCLC20)) {
12770  INTERESTING(lDebug ? "OCLC(title)" : "OCLC-2.0");
12771  }
12772  else if (INFILE(_TITLE_OCLC10)) {
12773  INTERESTING(lDebug ? "OCLC(title)" : "OCLC-1.0");
12774  }
12775  if (INFILE(_TITLE_NASA13)) {
12776  INTERESTING(lDebug ? "NASA(title)" : "NASA-1.3");
12777  }
12778  if (INFILE(_TITLE_ODC_BY_10)) {
12779  INTERESTING(lDebug ? "ODC(title)" : "ODC-By-1.0");
12780  }
12781  if (INFILE(_TITLE_BUSL_11)) {
12782  INTERESTING(lDebug ? "BUSL(title)" : "BUSL-1.1");
12783  }
12784  if (INFILE(_TITLE_NAIST_2003)) {
12785  INTERESTING(lDebug ? "NAIST(title)" : "NAIST-2003");
12786  }
12787  if (INFILE(_TITLE_ETALAB_20)) {
12788  INTERESTING(lDebug ? "Etalab(title)" : "etalab-2.0");
12789  }
12790  if (INFILE(_TITLE_SIMPL_20)) {
12791  INTERESTING(lDebug ? "SimPL(title)" : "SimPL-2.0");
12792  }
12793  /* the ECL block sets _mMIT */
12794  if (!lmem[_mMIT] && INFILE(_TITLE_ECL_20)) {
12795  INTERESTING(lDebug ? "ECL(title)" : "ECL-2.0");
12796  }
12797  else if (!lmem[_mMIT] && INFILE(_TITLE_ECL_10)) {
12798  INTERESTING(lDebug ? "ECL(title)" : "ECL-1.0");
12799  }
12800  if (INFILE(_TITLE_FREEBSD_DOC)) {
12801  INTERESTING(lDebug ? "FreeBSD-DOC(title)" : "FreeBSD-DOC");
12802  }
12803  if (INFILE(_TITLE_BITSTREAM_VERA)) {
12804  INTERESTING(lDebug ? "Bitstream(title)" : "Bitstream-Vera");
12805  }
12806  if (INFILE(_TITLE_C_UDA_10)) {
12807  INTERESTING(lDebug ? "C-UDA(title)" : "C-UDA-1.0");
12808  }
12809  if (INFILE(_TITLE_SAX_PD_NAMED)) {
12810  INTERESTING(lDebug ? "SAX(title)" : "SAX-PD");
12811  }
12812  if (INFILE(_TITLE_OGDL_TAIWAN_10)) {
12813  INTERESTING(lDebug ? "OGDL(title)" : "OGDL-Taiwan-1.0");
12814  }
12815  if (INFILE(_TITLE_GD)) {
12816  INTERESTING(lDebug ? "GD(title)" : "GD");
12817  }
12818  if (INFILE(_TITLE_CDL_10)) {
12819  INTERESTING(lDebug ? "CDL(title)" : "CDL-1.0");
12820  }
12821  if (INFILE(_PHR_LIBPNG_SAME) && NOT_INFILE(_TITLE_ZLIB_LIBPNG)) {
12822  INTERESTING(lDebug ? "Libpng(same)" : "Libpng");
12823  }
12824  /* the Entessa branch sits inside the BSD chain */
12825  if (maxInterest != IL_HIGH && INFILE(_TITLE_ENTESSA)) {
12826  INTERESTING(lDebug ? "Entessa(title)" : "Entessa");
12827  }
12828  if (INFILE(_TITLE_INTERBASE)) {
12829  INTERESTING(lDebug ? "Interbase(title)" : "Interbase-1.0");
12830  }
12831  /* all of these have a body-text path that already reports them */
12832  if (maxInterest != IL_HIGH) {
12833  if (INFILE(_TITLE_NLOD_20)) {
12834  INTERESTING(lDebug ? "NLOD(title)" : "NLOD-2.0");
12835  }
12836  else if (INFILE(_TITLE_NLOD_10)) {
12837  INTERESTING(lDebug ? "NLOD(title)" : "NLOD-1.0");
12838  }
12839  if (INFILE(_TITLE_LPL_10)) {
12840  INTERESTING(lDebug ? "LPL(title)" : "LPL-1.0");
12841  }
12842  if (INFILE(_TITLE_WATCOM_10)) {
12843  INTERESTING(lDebug ? "Watcom(title)" : "Watcom-1.0");
12844  }
12845  if (INFILE(_TITLE_RPSL_10)) {
12846  INTERESTING(lDebug ? "RPSL(title)" : "RPSL-1.0");
12847  }
12848  if (INFILE(_TITLE_PCRE_NAMED)) {
12849  INTERESTING(lDebug ? "PCRE(title)" : "PCRE");
12850  }
12851  if (INFILE(_TITLE_AFL)) {
12852  cp = AFLVERS();
12853  INTERESTING(lDebug ? "AFL(title)" : cp);
12854  }
12855  if (INFILE(_TITLE_BITTORRENT_11)) {
12856  INTERESTING(lDebug ? "BitTorrent(title)" : "BitTorrent-1.1");
12857  }
12858  if (INFILE(_TITLE_OCCT_EXC_10)) {
12859  INTERESTING(lDebug ? "OCCT(title)" : "OCCT-exception-1.0");
12860  }
12861  if (INFILE(_TITLE_AUTOCONF_EXC_30)) {
12862  INTERESTING(lDebug ? "Autoconf(title)" : "Autoconf-exception-3.0");
12863  }
12864  if (INFILE(_TITLE_UNIFOSS_EXC_10)) {
12865  INTERESTING(lDebug ? "UniFOSS(title)" : "Universal-FOSS-exception-1.0");
12866  }
12867  if (INFILE(_TITLE_CATOSL_11)) {
12868  INTERESTING(lDebug ? "CATOSL(title)" : "CATOSL-1.1");
12869  }
12870  if (INFILE(_TITLE_FRAMEWORX_10)) {
12871  INTERESTING(lDebug ? "Frameworx(title)" : "Frameworx-1.0");
12872  }
12873  if (INFILE(_TITLE_EFL_10)) {
12874  INTERESTING(lDebug ? "EFL(title)" : "EFL-1.0");
12875  }
12876  }
12877  /* the v1.1 text carries a v1.0 notice template in Exhibit A */
12878  if (INFILE(_TITLE_BITTORRENT_10)
12879  && NOT_INFILE(_TITLE_BITTORRENT_11)) {
12880  INTERESTING(lDebug ? "BitTorrent(title)" : "BitTorrent-1.0");
12881  }
12882  if (INFILE(_TITLE_BLUEOAK_100)) {
12883  INTERESTING(lDebug ? "BlueOak(title)" : "BlueOak-1.0.0");
12884  }
12885  if (INFILE(_TITLE_ADOBE_GLYPH)) {
12886  INTERESTING(lDebug ? "AdobeGlyph(title)" : "Adobe-Glyph");
12887  }
12888  if (INFILE(_TITLE_ADSL)) {
12889  INTERESTING(lDebug ? "ADSL(title)" : "ADSL");
12890  }
12891  if (INFILE(_TITLE_APAFML)) {
12892  INTERESTING(lDebug ? "APAFML(title)" : "APAFML");
12893  }
12894  if (INFILE(_TITLE_CNRI_JYTHON)) {
12895  INTERESTING(lDebug ? "CNRI-Jython(title)" : "CNRI-Jython");
12896  }
12897  if (INFILE(_TITLE_OSET_PL_21)) {
12898  INTERESTING(lDebug ? "OSET(title)" : "OSET-PL-2.1");
12899  }
12900  if (INFILE(_TITLE_NBPL_10)) {
12901  INTERESTING(lDebug ? "NBPL(title)" : "NBPL-1.0");
12902  }
12903  /* accents do not survive doctoring;
12904  "reciprocite forte" contains "reciprocite" */
12905  if (HASTEXT(_TITLE_LILIQ_RPLUS_11, REG_EXTENDED)) {
12906  INTERESTING(lDebug ? "LiLiQ(title)" : "LiLiQ-Rplus-1.1");
12907  }
12908  else if (HASTEXT(_TITLE_LILIQ_R_11, REG_EXTENDED)) {
12909  INTERESTING(lDebug ? "LiLiQ(title)" : "LiLiQ-R-1.1");
12910  }
12911  else if (HASTEXT(_TITLE_LILIQ_P_11, REG_EXTENDED)) {
12912  INTERESTING(lDebug ? "LiLiQ(title)" : "LiLiQ-P-1.1");
12913  }
12914  if (INFILE(_TITLE_NTP_0)) {
12915  INTERESTING(lDebug ? "NTP-0(title)" : "NTP-0");
12916  }
12917  if (INFILE(_TITLE_SPENCER_86)) {
12918  INTERESTING(lDebug ? "Spencer(title)" : "Spencer-86");
12919  }
12920  if (INFILE(_TITLE_SHL_051)) {
12921  INTERESTING(lDebug ? "SHL(title)" : "SHL-0.51");
12922  }
12923  else if (INFILE(_TITLE_SHL_05)) {
12924  INTERESTING(lDebug ? "SHL(title)" : "SHL-0.5");
12925  }
12926  if (INFILE(_TITLE_RPL_11)) {
12927  INTERESTING(lDebug ? "RPL(title)" : "RPL-1.1");
12928  }
12929  if (INFILE(_TITLE_OUDA_10)) {
12930  INTERESTING(lDebug ? "O-UDA(title)" : "O-UDA-1.0");
12931  }
12932  if (INFILE(_TITLE_TORQUE_11)) {
12933  INTERESTING(lDebug ? "TORQUE(title)" : "TORQUE-1.1");
12934  }
12935  if (INFILE(_TITLE_ZEND_20)) {
12936  INTERESTING(lDebug ? "Zend(title)" : "Zend-2.0");
12937  }
12938  if (INFILE(_TITLE_PSF_20)) {
12939  INTERESTING(lDebug ? "PSF(title)" : "PSF-2.0");
12940  }
12941  if (INFILE(_TITLE_UBOOT_EXC_20)) {
12942  INTERESTING(lDebug ? "U-Boot(title)" : "u-boot-exception-2.0");
12943  }
12944  if (INFILE(_TITLE_QWT_EXC_10)) {
12945  INTERESTING(lDebug ? "Qwt(title)" : "Qwt-exception-1.0");
12946  }
12947  if (INFILE(_TITLE_SYSCALL_NOTE)) {
12948  INTERESTING(lDebug ? "Syscall(title)" : "Linux-syscall-note");
12949  }
12950  if (INFILE(_TITLE_389_EXC)) {
12951  INTERESTING(lDebug ? "389(title)" : "389-exception");
12952  }
12953  if (INFILE(_TITLE_BISON_EXC)) {
12954  INTERESTING(lDebug ? "Bison(title)" : "Bison-exception-2.2");
12955  }
12956  if (INFILE(_TITLE_LLVM_EXC)) {
12957  INTERESTING(lDebug ? "LLVM(title)" : "LLVM-exception");
12958  }
12959  if (INFILE(_TITLE_LIBTOOL_EXC)) {
12960  INTERESTING(lDebug ? "Libtool(title)" : "Libtool-exception");
12961  }
12962  if (INFILE(_TITLE_SWIFT_EXC)) {
12963  INTERESTING(lDebug ? "Swift(title)" : "Swift-exception");
12964  }
12965  if (INFILE(_TITLE_DIGIRULE_EXC)) {
12966  INTERESTING(lDebug ? "DigiRule(title)" : "DigiRule-FOSS-exception");
12967  }
12968  if (INFILE(_TITLE_MIF_EXC)) {
12969  INTERESTING(lDebug ? "mif(title)" : "mif-exception");
12970  }
12971  if (INFILE(_TITLE_WXWIN_EXC_31)) {
12972  INTERESTING(lDebug ? "WxWin(title)" : "WxWindows-exception-3.1");
12973  }
12974  if (INFILE(_TITLE_BOOTLOADER_EXC)) {
12975  INTERESTING(lDebug ? "Bootloader(title)" : "Bootloader-exception");
12976  }
12977  if (INFILE(_TITLE_PSPDF_FONT_EXC)) {
12978  INTERESTING(lDebug ? "PSPDF(title)" : "PS-or-PDF-font-exception-20170817");
12979  }
12980  if (INFILE(_TITLE_ERLPL_11)) {
12981  INTERESTING(lDebug ? "ErlPL(title)" : "ErlPL-1.1");
12982  }
12983  if (INFILE(_TITLE_CONDOR_11)) {
12984  INTERESTING(lDebug ? "Condor(title)" : "Condor-1.1");
12985  }
12986  if (INFILE(_TITLE_CURL_NAMED)) {
12987  INTERESTING(lDebug ? "curl(title)" : "curl");
12988  }
12989  if (INFILE(_TITLE_SPENCER_94)) {
12990  INTERESTING(lDebug ? "Spencer(title)" : "Spencer-94");
12991  }
12992  if (INFILE(_TITLE_IMATIX)) {
12993  INTERESTING(lDebug ? "iMatix(title)" : "iMatix");
12994  }
12995  if (INFILE(_TITLE_TAPR_OHL_10)) {
12996  INTERESTING(lDebug ? "TAPR(title)" : "TAPR-OHL-1.0");
12997  }
12998  if (INFILE(_TITLE_OGC_10)) {
12999  INTERESTING(lDebug ? "OGC(title)" : "OGC-1.0");
13000  }
13001  if (INFILE(_TITLE_DRL_10)) {
13002  INTERESTING(lDebug ? "DRL(title)" : "DRL-1.0");
13003  }
13004  if (INFILE(_TITLE_CSL_10)) {
13005  INTERESTING(lDebug ? "CSL(title)" : "Community-Spec-1.0");
13006  }
13007  if (INFILE(_TITLE_APL_10)) {
13008  INTERESTING(lDebug ? "APL(title)" : "APL-1.0");
13009  }
13010  if (INFILE(_TITLE_UCL_10)) {
13011  INTERESTING(lDebug ? "UCL(title)" : "UCL-1.0");
13012  }
13013  if (INFILE(_TITLE_TUB_20)) {
13014  INTERESTING(lDebug ? "TUB(title)" : "TU-Berlin-2.0");
13015  }
13016  else if (INFILE(_TITLE_TUB_10)) {
13017  INTERESTING(lDebug ? "TUB(title)" : "TU-Berlin-1.0");
13018  }
13019  if (INFILE(_TITLE_PARITY_600)) {
13020  INTERESTING(lDebug ? "Parity(title)" : "Parity-6.0.0");
13021  }
13022  if (INFILE(_TITLE_JSON_NAMED)) {
13023  INTERESTING(lDebug ? "JSON(title)" : "JSON");
13024  }
13025  if (INFILE(_TITLE_JASPER_NAMED)) {
13026  INTERESTING(lDebug ? "JasPer(title)" : "JasPer-2.0");
13027  }
13028  if (INFILE(_TITLE_POLYFORM_SB_100)) {
13029  INTERESTING(lDebug ? "PolyForm(title)" : "PolyForm-Small-Business-1.0.0");
13030  }
13031  if (INFILE(_TITLE_POLYFORM_NC_100)) {
13032  INTERESTING(lDebug ? "PolyForm(title)" : "PolyForm-Noncommercial-1.0.0");
13033  }
13034  if (INFILE(_TITLE_PARITY_700)) {
13035  INTERESTING(lDebug ? "Parity(title)" : "Parity-7.0.0");
13036  }
13037  if (INFILE(_PHR_USGOVT_WORK)) {
13038  MEDINTEREST(lDebug ? "Govt-Wk(title)" : "Govt-work");
13039  }
13040  if (INFILE(_TITLE_OPENPUBL10)) {
13041  INTERESTING(lDebug ? "OpenPubl(title)" : "Open-PL-1.0");
13042  }
13043  if (INFILE(_TITLE_UPL_10)) {
13044  INTERESTING(lDebug ? "UPL(title)" : "UPL-1.0");
13045  }
13046  if (INFILE(_TITLE_HTMLTIDY)) {
13047  INTERESTING(lDebug ? "Tidy(title)" : "HTMLTIDY");
13048  }
13049  if (INFILE(_TITLE_SUGARCRM_113)) {
13050  INTERESTING(lDebug ? "SugarCRM(title)" : "SugarCRM-1.1.3");
13051  }
13052  if (INFILE(_TITLE_SHL_21)) {
13053  INTERESTING(lDebug ? "SHL(title)" : "SHL-2.1");
13054  }
13055  else if (INFILE(_TITLE_SHL_20)) {
13056  INTERESTING(lDebug ? "SHL(title)" : "SHL-2.0");
13057  }
13058  if (INFILE(_TITLE_RPL15)) {
13059  INTERESTING(lDebug ? "RPL(title)" : "RPL-1.5");
13060  }
13061  if (INFILE(_TITLE_HIPPOCRATIC_21)) {
13062  INTERESTING(lDebug ? "Hippocratic(title)" : "Hippocratic-2.1");
13063  }
13064  if (INFILE(_TITLE_APSL20)) {
13065  INTERESTING(lDebug ? "APSL(title)" : "APSL-2.0");
13066  }
13067  /* doubles up with the BSD name a fuller match already gave */
13068  if (maxInterest != IL_HIGH && URL_INFILE(_URL_FREEBSD_LICENSE)) {
13069  INTERESTING(lDebug ? "FreeBSD(url)" : "BSD-2-Clause-Views");
13070  }
13071  if (INFILE(_TITLE_BSD_4CLAUSE_UC)) {
13072  INTERESTING(lDebug ? "BSD-UC(title)" : "BSD-4-Clause-UC");
13073  }
13074  else if (INFILE(_TITLE_BSD_4CLAUSE_NAMED)) {
13075  INTERESTING(lDebug ? "BSD4(title)" : "BSD-4-Clause");
13076  }
13077  if (INFILE(_TITLE_ZLIB_ACK)) {
13078  INTERESTING(lDebug ? "zlib-ack(title)" : "zlib-acknowledgement");
13079  }
13080  else if (INFILE(_TITLE_NUNIT)) {
13081  INTERESTING(lDebug ? "Nunit(title)" : "Nunit");
13082  }
13083  if (URL_INFILE(_URL_CDDL_ALT)) {
13084  INTERESTING(lDebug ? "CDDL(url)" : "CDDL-1.0");
13085  }
13086  }
13088  listClear(&whereList, NO); /* clear "unused" matches */
13090  /*
13091  * If we still haven't found anything, check for the really-low interest
13092  * items such as copyrights, and references to keywords (patent/trademark)
13093  */
13094  if (maxInterest != IL_HIGH && pd <= 0) {
13095  checkCornerCases(filetext, size, score, kwbm, isML, isPS,
13096  nw, NO);
13097  }
13098 #ifdef MEMSTATS
13099  printf("DEBUG: static lists in parseLicenses():\n");
13100  listDump(&searchList, -1);
13101  memStats("parseLicenses: pre-Free");
13102 #endif /* MEMSTATS */
13103  listClear(&searchList, NO);
13104 #ifdef MEMSTATS
13105  memStats("parseLicenses: EOP");
13106 #endif /* MEMSTATS */
13107 #ifdef LTSR_DEBUG
13108  showLTCache("LTSR-results AFTER:");
13109 #endif /* LTSR_DEBUG */
13110 #ifdef FLAG_NO_COPYRIGHT
13111  if (!SEEN(_CR_ZZZANY)) {
13112  (void) INFILE(_CR_ZZZANY);
13113  }
13114  if (!SEEN(_CR_ZZZWRONG_1)) {
13115  (void) INFILE(_CR_ZZZWRONG_1);
13116  }
13117  if (LVAL(_CR_ZZZANY)+LVAL(_CR_ZZZWRONG_1)+
13118  HASREGEX(_CR_ZZZWRONG_2, filetext) == 0) {
13119  gl.flags |= FL_NOCOPYRIGHT;
13120  }
13121 #endif /* FLAG_NO_COPYRIGHT */
13122  listClear(&whCacheList, NO);
13123  if (whereList.used) {
13124  listClear(&whereList, NO); /* may already be cleared! */
13125  }
13126  return(licStr+1); /* don't include the leading comma */
13127 }
13128 
13137 char *sisslVersion(char *filetext, int size, int isML, int isPS)
13138 {
13139  char *lstr = NULL_STR;
13140 
13141 #ifdef PROC_TRACE
13142  traceFunc("== sisslVersion()\n");
13143 #endif /* PROC_TRACE */
13144 
13145  if (INFILE(_TITLE_SISSL_V11)) {
13146  lstr = "SISSL-1.1";
13147  }
13148  else if (INFILE(_TITLE_SISSL_V12)) {
13149  lstr = "SISSL-1.2";
13150  } else {
13151  lstr = "SISSL";
13152  }
13153  return lstr;
13154 }
13155 
13164 char *aslVersion(char *filetext, int size, int isML, int isPS)
13165 {
13166  char *lstr = NULL_STR;
13167 
13168 #ifdef PROC_TRACE
13169  traceFunc("== aslVersion()\n");
13170 #endif /* PROC_TRACE */
13171 
13172  /*
13173  * Exclude first non-Apache licenses
13174  */
13175  if (INFILE(_TITLE_PHORUM) || INFILE(_CR_PHORUM)) {
13176  lstr = "Phorum";
13177  lmem[_mAPACHE] = 1;
13178  }
13179  else if (INFILE(_CR_IMAGEMAGICK)) {
13180  lstr = "ImageMagick-Apache";
13181  lmem[_mAPACHE] = 1;
13182  }
13183  else if (INFILE(_LT_MODIFIED_APACHE)) {
13184  /* modified text, not the pristine license */
13185  lstr = "Apache-style";
13186  lmem[_mAPACHE] = 1;
13187  }
13188  /*
13189  * Apache-2.0 cases
13190  */
13191  else if (INFILE(_SPDX_Apache_20)) {
13192  lstr = (lDebug ? "Apache-2.0(SPDX)" : "Apache-2.0");
13193  lmem[_mAPACHE] = 1;
13194  }
13195  else if (INFILE(_TITLE_Apache_20)) {
13196  lstr = (lDebug ? "Apache-2(f)" : "Apache-2.0");
13197  lmem[_mAPACHE] = 1;
13198  }
13199  else if (INFILE(_PHR_Apache_20_ref1) || INFILE(_PHR_Apache_20_ref2) || INFILE(_PHR_Apache_20_ref3))
13200  {
13201  lstr = (lDebug ? "PHR_Apache_20_ref(1-5)" : "Apache-2.0");
13202  lmem[_mAPACHE] = 1;
13203  }
13204  else if (URL_INFILE(_URL_Apache_20)) {
13205  lstr = (lDebug ? "Apache-2.0(u)" : "Apache-2.0");
13206  lmem[_mAPACHE] = 1;
13207  }
13208  else if (INFILE(_LT_Apache_20) && NOT_INFILE(_TITLE_Flora_V10) && NOT_INFILE(_TITLE_Flora_V11) && !URL_INFILE(_URL_Flora))
13209  {
13210  lstr = (lDebug ? "Apache(2.0#2)" : "Apache-2.0");
13211  lmem[_mAPACHE] = 1;
13212  }
13213  else if (INFILE(_PHR_Apache_20_ref4) || INFILE(_PHR_Apache_20_ref5) || INFILE(_PHR_Apache_20_ref6) || INFILE(_PHR_Apache_20_ref7)) {
13214  lstr = (lDebug ? "Apache(2.0#3)" : "Apache-2.0");
13215  lmem[_mAPACHE] = 1;
13216  }
13217  else if (INFILE(_TITLE_Apache_20)) {
13218  lstr = (lDebug ? "Apache(2.0#4)" : "Apache-2.0");
13219  lmem[_mAPACHE] = 1;
13220  }
13221  else if (URL_INFILE(_URL_Apache_20_1)) {
13222  lstr = (lDebug ? "Apache2(url#1)" : "Apache-2.0");
13223  lmem[_mAPACHE] = 1;
13224  }
13225  else if (URL_INFILE(_URL_Apache_20_2)) {
13226  lstr = (lDebug ? "Apache2(url#2)" : "Apache-2.0");
13227  lmem[_mAPACHE] = 1;
13228  }
13229  /*
13230  * Apache-1.1 cases
13231  */
13232  else if (INFILE(_SPDX_Apache_11)) {
13233  lstr = (lDebug ? "Apache-1.1(SPDX)" : "Apache-1.1");
13234  lmem[_mAPACHE11] = 1;
13235  }
13236  else if (INFILE(_TITLE_Apache_11)) {
13237  lstr = (lDebug ? "Apache-1.1(f)" : "Apache-1.1");
13238  lmem[_mAPACHE11] = 1;
13239  }
13240  else if (URL_INFILE(_URL_Apache_11)) {
13241  lstr = (lDebug ? "Apache-1.1(u)" : "Apache-1.1");
13242  lmem[_mAPACHE11] = 1;
13243  }
13244  else if (INFILE(_LT_Apache_11_CLAUSE_3) && INFILE(_LT_Apache_11_CLAUSE_4) && INFILE(_LT_Apache_11_CLAUSE_5)) {
13245  lstr = (lDebug ? "Apache-1.1(clauses)" : "Apache-1.1");
13246  lmem[_mAPACHE11] = 1;
13247  }
13248  else if (INFILE(_PHR_Apache_11_ref1)) {
13249  lstr = (lDebug ? "Apache(1.1#phr)" : "Apache-1.1");
13250  lmem[_mAPACHE11] = 1;
13251  }
13252  /*
13253  * Apache-1.0 cases
13254  */
13255  else if (INFILE(_SPDX_Apache_10)) {
13256  lstr = (lDebug ? "Apache-1.0(SPDX)" : "Apache-1.0");
13257  lmem[_mAPACHE10] = 1;
13258  }
13259  else if (INFILE(_PHR_Apache_ref2)) {
13260  lstr = (lDebug ? "Apache-1.0(f)" : "Apache-1.0");
13261  lmem[_mAPACHE10] = 1;
13262  }
13263  else if (INFILE(_LT_Apache_10_CLAUSE_4)) {
13264  lstr = (lDebug ? "Apache-1.0(g)" : "Apache-1.0");
13265  lmem[_mAPACHE10] = 1;
13266  }
13267  else if (URL_INFILE(_URL_Apache_10)) {
13268  lstr = (lDebug ? "Apache-1.0(u)" : "Apache-v1.0");
13269  lmem[_mAPACHE10] = 1;
13270  }
13271  /*
13272  * BSD-style cases
13273  */
13274  else if (INFILE(_LT_BSD_1)) {
13275  if (INFILE(_CR_APACHE) || INFILE(_TITLE_Apache)) {
13276  if (INFILE(_PHR_Apache_20_ref6)) {
13277  lstr = (lDebug ? "Apache-20_ref6" : "Apache-2.0");
13278  lmem[_mAPACHE] = 1;
13279  }
13280  else if (INFILE(_PHR_Apache_11_ref2)) {
13281  lstr = (lDebug ? "Apache(1.1#2)" : "Apache-1.1");
13282  lmem[_mAPACHE11] = 1;
13283  }
13284  else if ((INFILE(_PHR_Apache_ref2) || INFILE(_LT_Apache_10_CLAUSE_4))) {
13285  lstr = (lDebug ? "Apache(1.0#2)" : "Apache-1.0");
13286  lmem[_mAPACHE10] = 1;
13287  }
13288  else {
13289  lstr = (lDebug ? "Apache(title)" : "Apache");
13290  lmem[_mAPACHE] = 1;
13291  }
13292  }
13293  }
13294  /*
13295  * Apache without versions
13296  */
13297  else if (!lmem[_fREAL] && INFILE(_SPDX_Apache)) {
13298  lstr = (lDebug ? "Apache(SPDX)" : "Apache");
13299  lmem[_mAPACHE] = 1;
13300  }
13301  else if (INFILE(_PHR_Apache_ref1)) {
13302  INTERESTING(lDebug ? "Apache(ref#1)" : "Apache");
13303  lmem[_mAPACHE] = 1;
13304  }
13305  else if (INFILE(_PHR_Apache_ref4)) {
13306  lstr = (lDebug ? "Apache(ref#3)" : "Apache");
13307  lmem[_mAPACHE] = 1;
13308  }
13309  else if (INFILE(_PHR_Apache_ref3)) {
13310  lstr = (lDebug ? "Apache(ref#4)" : "Apache");
13311  lmem[_mAPACHE] = 1;
13312  }
13313  else if (URL_INFILE(_URL_Apache_1)) {
13314  lstr = (lDebug ? "Apache(url#1)" : "Apache");
13315  lmem[_mAPACHE] = 1;
13316  }
13317  else if (URL_INFILE(_URL_Apache_2)) {
13318  lstr = (lDebug ? "Apache(url#2)" : "Apache");
13319  lmem[_mAPACHE] = 1;
13320  }
13321  else if (INFILE(_PHR_Apache_ref6)) {
13322  lstr = (lDebug ? "Apache(ref#6)" : "Apache");
13323  lmem[_mAPACHE] = 1;
13324  }
13325  /*
13326  * _LT_Apache_1 and _2 cannot be identified in any Apache license
13327  * versions. They have been defined in very early nomos versions. They
13328  * are kept here, although, there are no special test cases for them.
13329  */
13330  else if (INFILE(_LT_Apache_1)) {
13331  lstr = (lDebug ? "Apache(1)" : "Apache");
13332  lmem[_mAPACHE] = 1;
13333  }
13334  else if (INFILE(_LT_Apache_2)) {
13335  lstr = (lDebug ? "Apache(2)" : "Apache");
13336  lmem[_mAPACHE] = 1;
13337  }
13338  else if (INFILE(_LT_APACHESTYLEref)) {
13339  lstr = ("Apache-style");
13340  lmem[_mAPACHE] = 1;
13341  }
13342  return lstr;
13343 }
13344 
13353 char *mplNplVersion(char *filetext, int size, int isML, int isPS)
13354 {
13355  char *lstr = NULL_STR;
13356 
13357 #ifdef PROC_TRACE
13358  traceFunc("== mplNplVersion()\n");
13359 #endif /* PROC_TRACE */
13360 
13361  if (INFILE(_TITLE_MPL11_OR_LATER)) {
13362  lstr = "MPL-1.1+";
13363  }
13364  else if (INFILE(_LT_MPL11_ref)) {
13365  lstr = "MPL-1.1";
13366  }
13367  else if (INFILE(_TITLE_NPL11_MPL)) {
13368  lstr = "NPL-1.1";
13369  }
13370  else if (INFILE(_TITLE_MPL11) && INFILE(_TITLE_MPL_style)) {
13371  lstr = "MPL-1.1-style";
13372  }
13373  else if (INFILE(_TITLE_SUGARCRM_PL)) {
13374  lstr = "SugarCRM-1.1.3";
13375  lmem[_mMPL] = 1;
13376  lmem[_fATTRIB] = 1;
13377  }
13378  else if (INFILE(_TITLE_MPL11) && !HASTEXT(_LT_NP_AME, REG_EXTENDED)) {
13379  lstr = "MPL-1.1";
13380  }
13381  else if ((INFILE(_TITLE_MPL20_EXCEPTION) || INFILE(_TITLE_MPL20_NO_COPYLEFT_NAMED))
13382  && NOT_INFILE(_LT_MPL20_BODY)) {
13383  lstr = "MPL-2.0-no-copyleft-exception";
13384  }
13385  else if (INFILE(_TITLE_MPL20) || URL_INFILE(_URL_MPL20) || HASTEXT(_LT_MPL20_ref, REG_EXTENDED)) {
13386  lstr = "MPL-2.0";
13387  }
13388  else if (INFILE(_TITLE_MPL10) && INFILE(_TITLE_ERLPL)) {
13389  lstr = "ErlPL-1.1";
13390  }
13391  else if (INFILE(_TITLE_MPL10)) {
13392  lstr = "MPL-1.0";
13393  }
13394  else if (INFILE(_TITLE_MPL_EULA_30)) {
13395  lstr = "MPL-EULA-3.0";
13396  }
13397  else if (INFILE(_TITLE_MPL_EULA_20)) {
13398  lstr = "MPL-EULA-2.0";
13399  }
13400  else if (INFILE(_TITLE_MPL_EULA_11)) {
13401  lstr = "MPL-EULA-1.1";
13402  }
13403  else if (URL_INFILE(_URL_NPL10)) {
13404  lstr = (lDebug ? "NPL1.0(url)" : "NPL-1.0");
13405  }
13406  else if (URL_INFILE(_URL_NPL11)) {
13407  lstr = (lDebug ? "NPL1.1(url)" : "NPL-1.1");
13408  }
13409  else if (URL_INFILE(_URL_MPL10)) {
13410  lstr = (lDebug ? "MPL1.0(url)" : "MPL-1.0");
13411  }
13412  else if (URL_INFILE(_URL_MPL11)) {
13413  lstr = (lDebug ? "MPL1.1(url)" : "MPL-1.1");
13414  }
13415  else if (INFILE(_FILE_MPL10)) {
13416  lstr = (lDebug ? "MPL1.0(file)" : "MPL-1.0");
13417  }
13418  else if (INFILE(_FILE_MPL11)) {
13419  lstr = (lDebug ? "MPL1.1(file)" : "MPL-1.1");
13420  }
13421  else if (INFILE(_TITLE_NPL11_OR_LATER)) {
13422  lstr = "NPL-1.1+";
13423  }
13424  else if (INFILE(_TITLE_NPL11)) {
13425  lstr = "NPL-1.1";
13426  }
13427  else if (INFILE(_TITLE_NPL10)) {
13428  lstr = "NPL-1.0";
13429  }
13430  else if (URL_INFILE(_URL_NPL)) {
13431  lstr = (lDebug ? "NPL(url)" : "NPL");
13432  }
13433  else if (INFILE(_SPDX_MPL_10)) {
13434  lstr = "MPL-1.0";
13435  }
13436  else if (INFILE(_SPDX_MPL_11)) {
13437  lstr = "MPL-1.1";
13438  }
13439  else if (INFILE(_SPDX_MPL_20_no_copyleft_exception)) {
13440  lstr = "MPL-2.0-no-copyleft-exception";
13441  }
13442  else if (INFILE(_SPDX_MPL_20)) {
13443  lstr = "MPL-2.0";
13444  }
13445  else if (URL_INFILE(_URL_MPL_LATEST)) {
13446  lstr = (lDebug ? "MPL(latest)" : "MPL");
13447  }
13448  else if (URL_INFILE(_URL_MPL)) {
13449  lstr = (lDebug ? "MPL(url)" : "MPL");
13450  }
13451  else if (INFILE(_TITLE_NPL)) {
13452  lstr = "NPL";
13453  }
13454  else if (INFILE(_TITLE_MPL)) {
13455  lstr = "MPL";
13456  }
13457  else {
13458  lstr = (lDebug ? "MPL(last)" : "MPL");
13459  }
13460  return lstr;
13461 }
13462 
13471 char *realVersion(char *filetext, int size, int isML, int isPS, int ref)
13472 {
13473  char *lstr = NULL_STR;
13474 
13475 #ifdef PROC_TRACE
13476  traceFunc("== realVersion()\n");
13477 #endif /* PROC_TRACE */
13478 
13479  if (ref == _TITLE_RPSL) {
13480  if (INFILE(_TITLE_RPSL_V30)) {
13481  lstr = "RPSL-3.0";
13482  }
13483  else if (INFILE(_TITLE_RPSL_V20)) {
13484  lstr = "RPSL-2.0";
13485  }
13486  else if (INFILE(_TITLE_RPSL_V10)) {
13487  lstr = "RPSL-1.0";
13488  }
13489  else if (INFILE(_TITLE_RPSL)) {
13490  lstr = "RPSL";
13491  }
13492  }
13493  else if (ref == _TITLE_RCSL) {
13494  if (INFILE(_TITLE_RCSL_V30)) {
13495  lstr = "RCSL-3.0";
13496  }
13497  else if (INFILE(_TITLE_RCSL_V20)) {
13498  lstr = "RCSL-2.0";
13499  }
13500  else if (INFILE(_TITLE_RCSL_V10)) {
13501  lstr = "RCSL-1.0";
13502  }
13503  else if (INFILE(_TITLE_RCSL)) {
13504  lstr = "RCSL";
13505  }
13506  }
13507  else {
13508  lstr = "RealNetworks-Unknown";
13509  }
13510  return lstr;
13511 }
13512 
13521 char *pythonVersion(char *filetext, int size, int isML, int isPS)
13522 {
13523  char *lstr = NULL_STR;
13524 
13525 #ifdef PROC_TRACE
13526  traceFunc("== pythonVersion()\n");
13527 #endif /* PROC_TRACE */
13528 
13529  if (INFILE(_TITLE_PYTHON201)) {
13530  lstr = "Python-2.0.1";
13531  }
13532  else if (INFILE(_TITLE_PYTHON202)) {
13533  lstr = "Python-2.0.2";
13534  }
13535  else if (INFILE(_TITLE_PYTHON211)) {
13536  lstr = "Python-2.1.1";
13537  }
13538  else if (INFILE(_TITLE_PYTHON213)) {
13539  lstr = "Python-2.1.3";
13540  }
13541  else if (INFILE(_TITLE_PYTHON223)) {
13542  lstr = "Python-2.2.3";
13543  }
13544  else if (INFILE(_TITLE_PYTHON227)) {
13545  lstr = "Python-2.2.7";
13546  }
13547  else if (INFILE(_TITLE_PYTHON237)) {
13548  lstr = "Python-2.3.7";
13549  }
13550  else if (INFILE(_TITLE_PYTHON244)) {
13551  lstr = "Python-2.4.4";
13552  }
13553  else if (INFILE(_TITLE_PYTHON22)) {
13554  lstr = "Python-2.2";
13555  }
13556  else if (INFILE(_TITLE_PYTHON23)) {
13557  lstr = "Python-2.3";
13558  }
13559  else if (INFILE(_TITLE_PYTHON_20_1) || INFILE(_TITLE_PYTHON_20_2)) {
13560  lstr = "Python-2.0";
13561  }
13562  else {
13563  lstr = "Python";
13564  }
13565  return lstr;
13566 }
13567 
13576 char *aflVersion(char *filetext, int size, int isML, int isPS)
13577 {
13578  char *lstr = NULL_STR;
13579 
13580 #ifdef PROC_TRACE
13581  traceFunc("== aflVersion()\n");
13582 #endif /* PROC_TRACE */
13583 
13584  if (INFILE(_TITLE_AFL30)) {
13585  lstr = lDebug? "AFL(v3.0#1)" : "AFL-3.0";
13586  }
13587  else if (INFILE(_TITLE_AFL21)) {
13588  lstr = lDebug? "AFL(v2.1#1)" : "AFL-2.1";
13589  }
13590  else if (INFILE(_TITLE_AFL20)) {
13591  lstr = lDebug? "AFL(v2.0#1)" : "AFL-2.0";
13592  }
13593  else if (INFILE(_TITLE_AFL12)) {
13594  lstr = lDebug? "AFL(v1.2#1)" : "AFL-1.2";
13595  }
13596  else if (INFILE(_TITLE_AFL11)) {
13597  lstr = lDebug? "AFL(v1.1#1)" : "AFL-1.1";
13598  }
13599  else if (INFILE(_TITLE_AFL10)) {
13600  lstr = lDebug? "AFL(v1.0#1)" : "AFL-1.0";
13601  }
13602  else {
13603  lstr = "AFL";
13604  }
13605  return lstr;
13606 }
13607 
13616 char *oslVersion(char *filetext, int size, int isML, int isPS)
13617 {
13618  char *lstr = NULL_STR;
13619  /* */
13620 #ifdef PROC_TRACE
13621  traceFunc("== oslVersion()\n");
13622 #endif /* PROC_TRACE */
13623  /* */
13624  if (INFILE(_TITLE_NON_PROFIT_OSL30)) {
13625  lstr = "NPOSL-3.0";
13626  }
13627  else if (INFILE(_TITLE_OSL30)) {
13628  lstr = lDebug? "OSL(v3.0#1)" : "OSL-3.0";
13629  }
13630  else if (INFILE(_TITLE_OSL21)) {
13631  lstr = lDebug? "OSL(v2.1#1)" : "OSL-2.1";
13632  }
13633  else if (INFILE(_TITLE_OSL20)) {
13634  lstr = lDebug? "OSL(v2.0#1)" : "OSL-2.0";
13635  }
13636  else if (INFILE(_TITLE_OSL11)) {
13637  lstr = lDebug? "OSL(v1.1#1)" : "OSL-1.1";
13638  }
13639  else if (INFILE(_TITLE_OSL10)) {
13640  lstr = lDebug? "OSL(v1.0#1)" : "OSL-1.0";
13641  }
13642  else {
13643  lstr = "OSL";
13644  }
13645  return lstr;
13646 }
13647 
13656 char *cddlVersion(char *filetext, int size, int isML, int isPS)
13657 {
13658  char *lstr = NULL_STR;
13659  /* */
13660 #ifdef PROC_TRACE
13661  traceFunc("== cddlVersion()\n");
13662 #endif /* PROC_TRACE */
13663  /* */
13664  if (INFILE(_TITLE_CDDL_10)) {
13665  lstr = "CDDL-1.0";
13666  }
13667  else if (INFILE(_SPDX_CDDL_10)) {
13668  INTERESTING("CDDL-1.0");
13669  }
13670  else if (URL_INFILE(_URL_CDDL_10)) {
13671  lstr = "CDDL-1.0";
13672  }
13673  else if (INFILE(_TITLE_CDDL_11)) {
13674  lstr = "CDDL-1.1";
13675  }
13676  else if (INFILE(_SPDX_CDDL_11)) {
13677  INTERESTING("CDDL-1.1");
13678  }
13679  else if (URL_INFILE(_URL_CDDL)) {
13680  lstr = "CDDL";
13681  }
13682  else {
13683  lstr = "CDDL";
13684  }
13685  return lstr;
13686 }
13687 
13696 char *lpplVersion(char *filetext, int size, int isML, int isPS)
13697 {
13698  char *lstr = NULL_STR;
13699  /* */
13700 #ifdef PROC_TRACE
13701  traceFunc("== lpplVersion()\n");
13702 #endif /* PROC_TRACE */
13703  /* */
13704  if (INFILE(_PHR_LATEX_PL13A_OR_LATER_1) ||
13705  INFILE(_PHR_LATEX_PL13A_OR_LATER_2)) {
13706  if (INFILE(_LT_LATEX_PREAMBLE)) {
13707  lstr = lDebug ? "LPPL-v1.3a(#1)" : "LPPL-1.3a";
13708  }
13709  else {
13710  lstr = "LPPL-1.3a+";
13711  }
13712  }
13713  else if (INFILE(_TITLE_LATEX_PL13A) || INFILE(_PHR_LATEX_PL13A)) {
13714  lstr = lDebug ? "LPPL-v1.3a(#2)" : "LPPL-1.3a";
13715  }
13716  else if (INFILE(_PHR_LATEX_PL13B_OR_LATER_1) ||
13717  INFILE(_PHR_LATEX_PL13B_OR_LATER_2)) {
13718  if (INFILE(_LT_LATEX_PREAMBLE)) {
13719  lstr = lDebug ? "LPPL-v1.3b(#1)" : "LPPL-1.3b";
13720  }
13721  else {
13722  lstr = "LPPL-1.3b+";
13723  }
13724  }
13725  else if (INFILE(_TITLE_LATEX_PL13B) || INFILE(_PHR_LATEX_PL13B)) {
13726  lstr = lDebug ? "LPPL-v1.3b(#2)" : "LPPL-1.3b";
13727  }
13728  else if (INFILE(_PHR_LATEX_PL13C_OR_LATER_1) ||
13729  INFILE(_PHR_LATEX_PL13C_OR_LATER_2)) {
13730  if (INFILE(_LT_LATEX_PREAMBLE)) {
13731  lstr = lDebug ? "LPPL-v1.3c(#1)" : "LPPL-1.3c";
13732  }
13733  else {
13734  lstr = "LPPL-1.3c+";
13735  }
13736  }
13737  else if (INFILE(_TITLE_LATEX_PL13C) || INFILE(_PHR_LATEX_PL13C)) {
13738  lstr = lDebug ? "LPPL-v1.3c(#2)" : "LPPL-1.3c";
13739  }
13740  else if (INFILE(_PHR_LATEX_PL13_OR_LATER_1) ||
13741  INFILE(_PHR_LATEX_PL13_OR_LATER_2)) {
13742  if (INFILE(_LT_LATEX_PREAMBLE)) {
13743  lstr = lDebug ? "LPPL-v1.3(#1)" : "LPPL-1.3";
13744  }
13745  else {
13746  lstr = "LPPL-1.3+";
13747  }
13748  }
13749  else if (INFILE(_TITLE_LATEX_PL13) || INFILE(_PHR_LATEX_PL13)) {
13750  lstr = lDebug ? "LPPL-v1.3(#2)" : "LPPL-1.3";
13751  }
13752  else if (INFILE(_PHR_LATEX_PL12_OR_LATER_1) ||
13753  INFILE(_PHR_LATEX_PL12_OR_LATER_2)) {
13754  if (INFILE(_LT_LATEX_PREAMBLE)) {
13755  lstr = lDebug ? "LPPL-v1.2(#1)" : "LPPL-1.2";
13756  }
13757  else {
13758  lstr = "LPPL-1.2+";
13759  }
13760  }
13761  else if (INFILE(_TITLE_LATEX_PL12) || INFILE(_PHR_LATEX_PL12)) {
13762  lstr = lDebug ? "LPPL-v1.2(#2)" : "LPPL-1.2";
13763  }
13764  else if (INFILE(_PHR_LATEX_PL11_OR_LATER_1) ||
13765  INFILE(_PHR_LATEX_PL11_OR_LATER_2)) {
13766  if (INFILE(_LT_LATEX_PREAMBLE)) {
13767  lstr = lDebug ? "LPPL-v1.1(#1)" : "LPPL-1.1";
13768  }
13769  else {
13770  lstr = "LPPL-1.1+";
13771  }
13772  }
13773  else if (INFILE(_TITLE_LATEX_PL11) || INFILE(_PHR_LATEX_PL11)) {
13774  lstr = lDebug ? "LPPL-v1.1(#2)" : "LPPL-1.1";
13775  }
13776  else if (INFILE(_PHR_LATEX_PL10_OR_LATER_1) ||
13777  INFILE(_PHR_LATEX_PL10_OR_LATER_2)) {
13778  if (INFILE(_LT_LATEX_PREAMBLE)) {
13779  lstr = lDebug ? "LPPL-v1.0(#1)" : "LPPL-1.0";
13780  }
13781  else {
13782  lstr = "LPPL-1.0+";
13783  }
13784  }
13785  else if (INFILE(_TITLE_LATEX_PL10) || INFILE(_PHR_LATEX_PL10)) {
13786  lstr = lDebug ? "LPPL-v1.0(#2)" : "LPPL-1.0";
13787  }
13788  else {
13789  lstr = "LPPL";
13790  }
13791  return lstr;
13792 }
13793 
13802 char *agplVersion(char *filetext, int size, int isML, int isPS)
13803 {
13804  char *lstr = NULL_STR;
13805  /* */
13806 #ifdef PROC_TRACE
13807  traceFunc("== agplVersion()\n");
13808 #endif /* PROC_TRACE */
13809  /* */
13810  /*
13811  * Look for version 1 BEFORE version 3; the text of version 1 license says
13812  * you can also license it under GPL version 3... same reasoning goes with
13813  * the actual v3 license (vs the reference).
13814  */
13815  /* v2 text grants v3-or-later, so test it before the v1 and v3 patterns */
13816  if (INFILE(_LT_AGPL_20)) {
13817  lstr = "AGPL-2.0";
13818  }
13819  else if (INFILE(_PHR_AGPL_10_or_later)
13820  || INFILE(_TITLE_AGPL_10_or_later)
13821  || INFILE(_TITLE_AGPL_10_NAMED_or_later)
13822  || INFILE(_SPDX_AGPL_10_or_later)
13823  || HASTEXT(_SPDX_AGPL_10plus, REG_EXTENDED)
13824  || HASTEXT(_PHR_AGPL_10plus, REG_EXTENDED))
13825  {
13826  lstr = "AGPL-1.0-or-later";
13827  }
13828  else if (INFILE(_PHR_FSF_V1_ONLY)
13829  || INFILE(_TITLE_AGPL_10_only)
13830  || INFILE(_SPDX_AGPL_10))
13831  {
13832  lstr = "AGPL-1.0-only";
13833  }
13834  else if (INFILE(_PHR_AGPL_30_or_later)
13835  || INFILE(_TITLE_AGPL_30_or_later_ref1)
13836  || INFILE(_TITLE_AGPL_30_or_later)
13837  || INFILE(_TITLE_AGPL_30_NAMED_or_later)
13838  || INFILE(_SPDX_AGPL_30_or_later)
13839  || HASTEXT(_SPDX_AGPL_30plus, REG_EXTENDED)
13840  || HASTEXT(_PHR_AGPL_30plus, REG_EXTENDED))
13841  {
13842  if (INFILE(_LT_AGPL_30)) {
13843  lstr = lDebug ? "Affero-v3(#1)" : "AGPL-3.0-only";
13844  }
13845  else {
13846  lstr = "AGPL-3.0-or-later";
13847  }
13848  }
13849  else if (HASTEXT(_PHR_AGPL_30_1, REG_EXTENDED) || INFILE(_SPDX_AGPL_30)) {
13850  lstr = "AGPL-3.0-only";
13851  }
13852  else if (GPL_INFILE(_PHR_FSF_V3_ONLY)) {
13853  if (INFILE(_TITLE_GPL3)) {
13854  lstr = lDebug ? "GPLv3(Affero#1)" : "GPL-3.0-only";
13855  }
13856  else if (INFILE(_LT_GPL3ref3)){
13857  lstr = lDebug ? "GPLv3(special)" : "GPL-3.0-only";
13858  }
13859  else {
13860  lstr = lDebug ? "Affero-v3(#2)" : "AGPL-3.0-only";
13861  }
13862  }
13863  else if (INFILE(_TITLE_AGPL_30_only)) {
13864  lstr = lDebug ? "Affero-v3(#3)" : "AGPL-3.0-only";
13865  }
13866  else if (INFILE(_TITLE_GPL3)) {
13867  lstr = lDebug ? "GPLv3(Affero#2)" : "GPL-3.0-only";
13868  }
13869  else if (URL_INFILE(_URL_AGPL3)) {
13870  lstr = lDebug ? "Affero-v3(url)" : "AGPL-3.0-only";
13871  }
13872  else {
13873  lstr = "AGPL";
13874  }
13875  return lstr;
13876 }
13877 
13886 char *gfdlVersion(char *filetext, int size, int isML, int isPS)
13887 {
13888  char *lstr = NULL_STR;
13889  /* */
13890 #ifdef PROC_TRACE
13891  traceFunc("== gfdlVersion()\n");
13892 #endif /* PROC_TRACE */
13893  /* */
13894  /*
13895  * Have to be careful here; the text of the 1.2 license says it's licensed
13896  * under 1.1 or later - have to be careful what we're looking for, and in a
13897  * specific order
13898  */
13899  if (INFILE(_TITLE_GFDL_V13_FULL_LICENSE)) {
13900  lstr = "GFDL-1.3-only";
13901  /* Full GFDL-1.3 license text has a reference to Creative Commons */
13902  if (HASTEXT(_LT_CC_ref, REG_EXTENDED)) {
13903  lmem[_fCCBY] = 1;
13904  }
13905  }
13906  else if (INFILE(_TITLE_GFDL_V13_OR_LATER)) {
13907  lstr = "GFDL-1.3-or-later";
13908  }
13909  else if (INFILE(_TITLE_GFDL_V13_ONLY)) {
13910  lstr = lDebug ? "GFDL-1.3-only(#1)" : "GFDL-1.3-only";
13911  }
13912  else if (INFILE(_TITLE_GFDL_V12_FULL_LICENSE)) {
13913  lstr = lDebug ? "GFDL-1.2-only(#1)" : "GFDL-1.2-only";
13914  }
13915  else if (INFILE(_PHR_FSF_V12_OR_LATER) ||
13916  INFILE(_TITLE_GFDL_V12_OR_LATER)) {
13917  lstr = "GFDL-1.2-or-later";
13918  }
13919  else if (INFILE(_TITLE_GFDL_V12_ONLY)) {
13920  lstr = lDebug ? "GFDL-1.2-only(#1)" : "GFDL-1.2-only";
13921  }
13922  else if (INFILE(_TITLE_GFDL_V11_FULL_LICENSE)) {
13923  lstr = lDebug ? "GFDL-1.1-only(#1)" : "GFDL-1.1-only";
13924  }
13925  else if (INFILE(_PHR_FSF_V11_OR_LATER) ||
13926  INFILE(_TITLE_GFDL_V11_OR_LATER)) {
13927  lstr = "GFDL-1.1-or-later";
13928  }
13929  else if (INFILE(_TITLE_GFDL_V11_ONLY)) {
13930  lstr = lDebug ? "GFDL-1.1-only(#1)" : "GFDL-1.1-only";
13931  }
13932  else if (INFILE(_PHR_FSF_V12_ONLY)) {
13933  lstr = lDebug ? "GFDL-1.2-only(#2)" : "GFDL-1.2-only";
13934  }
13935  else if (INFILE(_PHR_FSF_V11_ONLY)) {
13936  lstr = lDebug ? "GFDL-1.1-only(#2)" : "GFDL-1.1-only";
13937  }
13938  else {
13939  lstr = "GFDL";
13940  }
13941  return lstr;
13942 }
13943 
13952 char *lgplVersion(char *filetext, int size, int isML, int isPS)
13953 {
13954  char *lstr = NULL_STR;
13955  /* */
13956 #ifdef PROC_TRACE
13957  traceFunc("== lgplVersion()\n");
13958 #endif /* PROC_TRACE */
13959  /* */
13960  if ((INFILE(_PHR_LGPL21_OR_LATER_1)
13961  || INFILE(_PHR_LGPL21_OR_LATER_2)
13962  || HASTEXT(_PHR_LGPL21_OR_LATER_3, REG_EXTENDED)
13963  || HASTEXT(_PHR_LGPL21_OR_LATER_4, REG_EXTENDED))
13964  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
13965  {
13966  if (INFILE(_TITLE_LGPL_KDE)) {
13967  lstr = "LGPL-2.1-or-later-KDE-exception";
13968  }
13969  else {
13970  lstr = "LGPL-2.1-or-later";
13971  }
13972  }
13973  else if ((INFILE(_PHR_LGPL3_OR_LATER)
13974  || INFILE(_PHR_LGPL3_OR_LATER_ref1)
13975  || INFILE(_PHR_LGPL3_OR_LATER_ref2)
13976  || HASTEXT(_PHR_LGPL3_OR_LATER_ref3, REG_EXTENDED)
13977  || HASTEXT(_SPDX_LGPL_30plus, REG_EXTENDED)
13978  || HASTEXT(_PHR_LGPL_30plus, REG_EXTENDED))
13979  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
13980  {
13981  lstr = "LGPL-3.0-or-later";
13982  }
13983  else if (INFILE(_LT_LGPL3ref) && NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
13984  lstr = "LGPL-3.0-only";
13985  lmem[_mLGPL] = 1;
13986  }
13987  else if (GPL_INFILE(_PHR_LGPL3_ONLY)
13988  || INFILE(_FILE_LGPLv3)
13989  || GPL_INFILE(_PHR_LGPL3_ONLY_ref1)
13990  || GPL_INFILE(_PHR_LGPL3_ONLY_ref2))
13991  {
13992  lstr = "LGPL-3.0-only";
13993  }
13994  else if (INFILE(_PHR_LGPL21_ONLY)
13995  || INFILE(_FILE_LGPLv21)
13996  || URL_INFILE(_URL_LGPL_V21)
13997  || INFILE(_PHR_LGPL21_ONLY_ref)
13998  || INFILE(_PHR_LGPL21_ONLY_ref2)
13999  || INFILE(_PHR_LGPL21_ONLY_ref3)
14000  || INFILE(_PHR_LGPL21_ONLY_ref4))
14001  {
14002  lstr = "LGPL-2.1-only";
14003  }
14004  else if ((INFILE(_PHR_LGPL2_OR_LATER)
14005  || HASTEXT(_PHR_LGPL2_OR_LATER_2, REG_EXTENDED)
14006  || HASTEXT(_PHR_LGPL2_OR_LATER_3, REG_EXTENDED))
14007  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
14008  {
14009  lstr = "LGPL-2.0-or-later";
14010  }
14011  else if (RM_INFILE(_PHR_LGPL2_ONLY) || RM_INFILE(_PHR_LGPL2_ONLY_ref1) || INFILE(_FILE_LGPLv2)) {
14012  lstr = "LGPL-2.0-only";
14013  }
14014  else if (INFILE(_PHR_LGPL1_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
14015  lstr = "LGPL-1.0-or-later";
14016  }
14017  else if (INFILE(_PHR_LGPL1_ONLY) || INFILE(_PHR_FSF_V1_ONLY)) {
14018  lstr = "LGPL-1.0-only";
14019  }
14020  else if (URL_INFILE(_URL_CCLGPL_V21)) {
14021  lstr = lDebug ? "CC-LGPL-2.1" : "LGPL-2.1-only";
14022  }
14023  else if (INFILE(_LT_CC_GPL) || INFILE(_TITLE_CC_LGPL)) {
14024  lstr = "CC-LGPL";
14025  }
14026  else if (NY_INFILE(_TEXT_LGPLV3) && NOT_INFILE(_TEXT_LGPLV3_FOOTNOTE) &&
14027  HASREGEX(_TEXT_LGPLV3, filetext)) {
14028  lstr = lDebug ? "LGPL-v3(#2)" : "LGPL-3.0-only";
14029  }
14030  else if (INFILE(_TEXT_LGPLV21) &&
14031  HASREGEX(_TEXT_LGPLV21, filetext)) {
14032  lstr = lDebug ? "LGPL-v2.1(#2)" : "LGPL-2.1-only";
14033  }
14034  else if (INFILE(_TEXT_LGPLV2) &&
14035  HASREGEX(_TEXT_LGPLV2, filetext)) {
14036  lstr = lDebug ? "LGPL-v2(#2)" : "LGPL-2.0-only";
14037  }
14038  else if (INFILE(_SPDX_LGPL_20)) {
14039  lstr = "LGPL-2.0-only";
14040  }
14041  else if (INFILE(_SPDX_LGPL_21)) {
14042  lstr = "LGPL-2.1-only";
14043  }
14044  else if (INFILE(_SPDX_LGPL_30)) {
14045  lstr = "LGPL-3.0-only";
14046  }
14047  else {
14048  lstr = "LGPL";
14049  }
14050  return lstr;
14051 }
14052 
14061 char *gplVersion(char *filetext, int size, int isML, int isPS)
14062 {
14063  char *cp, *lstr = NULL_STR;
14064  /* */
14065 #ifdef PROC_TRACE
14066  traceFunc("== gplVersion()\n");
14067 #endif /* PROC_TRACE */
14068  /* */
14069 
14070  /*
14071  * GPL-3.0-only cases
14072  */
14073  if (GPL_INFILE(_PHR_GPL3_OR_LATER_ref2)
14074  || GPL_INFILE(_PHR_GPL3_OR_LATER_ref3)
14075  || GPL_INFILE(_PHR_GPL3_OR_LATER)
14076  || GPL_INFILE(_PHR_GPL3_OR_LATER_ref1)
14077  || HASTEXT(_SPDX_GPL_30plus, REG_EXTENDED)
14078  || HASTEXT(_PHR_GPL_30plus, REG_EXTENDED))
14079  {
14080  if (!HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
14081  lstr = "GPL-3.0-or-later";
14082  if (INFILE(_PHR_GPL2_OR_LATER_1)) {
14083  lstr = "GPL-2.0-or-later,GPL-3.0-or-later";
14084  }
14085  }
14086  }
14087  else if (GPL_INFILE(_PHR_FSF_V3_ONLY)
14088  || GPL_INFILE(_PHR_GPL3_ONLY)
14089  || INFILE(_FILE_GPLv3)
14090  || GPL_INFILE(_PHR_GPL3_ONLY_ref1)
14091  || GPL_INFILE(_PHR_GPL3_ONLY_ref2)) {
14092  lstr = lDebug ? "GPL-v3(#2)" : "GPL-3.0-only";
14093  if (INFILE(_PHR_GPL2_OR_LATER_1))
14094  {
14095  lstr = "GPL-2.0-or-later,GPL-3.0-only";
14096  }
14097  }
14098  else if (NY_INFILE(_TEXT_GPLV3) && NOT_INFILE(_TEXT_GPLV3_FOOTNOTE) &&
14099  HASREGEX(_TEXT_GPLV3, filetext)) {
14100  lstr = lDebug ? "GPL-v3(#3)" : "GPL-3.0-only";
14101  }
14102  /*
14103  * GPL-2.0-only cases
14104  */
14105  else if (HASTEXT(_LT_GPL_V2_NAMED_later, REG_EXTENDED) || INFILE(_TITLE_GPL2_ref1_later)) {
14106  lstr = lDebug ? "GPLV2+(named)" : "GPL-2.0-or-later";
14107  }
14108  else if (HASTEXT(_SPDX_GPL_20_or_later, REG_EXTENDED)) {
14109  lstr = lDebug ? "GPL-2.0-or-later(SPDX)" : "GPL-2.0-or-later";
14110  }
14111  else if (INFILE(_PHR_GPL2_OR_LATER_1)) {
14112  if (INFILE(_TITLE_GPL_KDE)) {
14113  lstr = "GPL-2.0-or-later-with-KDE-upgrade-clause";
14114  }
14115  /* _PHR_GPL2_OR_LATER_1 also fires on "and no later version" */
14116  else if (INFILE(_PHR_GPL2_ONLY_2) || INFILE(_PHR_GPL2_ONLY_3)
14117  || INFILE(_PHR_GPL2_ONLY_6)) {
14118  lstr = "GPL-2.0-only";
14119  }
14120  else if (!HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
14121  lstr = lDebug ? "PHR(GPL2_OR_LATER#3)" : "GPL-2.0-or-later";
14122  }
14123  else if (INFILE(_TITLE_GPL2_ref1) || INFILE(_TITLE_GPL2_ref2)) {
14124  lstr = lDebug ? "GPL-2.0-only(title)" : "GPL-2.0-only";
14125  }
14126  }
14127  else if (HASTEXT(_SPDX_GPL_20, REG_EXTENDED)) {
14128  lstr = lDebug ? "GPL-2.0-only(SPDX)" : "GPL-2.0-only";
14129  }
14130  else if (INFILE(_PHR_GPL2_ONLY_4)) {
14131  lstr = "GPL-2.0-only";
14132  }
14133  else if (INFILE(_PHR_GPL2_ONLY_5)) {
14134  lstr = "GPL-2.0-only";
14135  }
14136  else if (GPL_INFILE(_PHR_GPL2_OR_GPL3)) {
14137  lstr = "GPL-2.0-only,GPL-3.0-only";
14138  }
14139  else if (INFILE(_PHR_FSF_V2_ONLY) || INFILE(_PHR_GPL2_ONLY) || INFILE(_PHR_GPL2_ONLY_1) ||
14140  INFILE(_FILE_GPLv2) || INFILE(_LT_GPL_V2_NAMED)) {
14141  lstr = lDebug ? "GPL-v2(#2)" : "GPL-2.0-only";
14142  }
14143  else if (INFILE(_LT_GPL_V2_ref5)) {
14144  lstr = lDebug ? "GPL-2.0-only(ref5)" : "GPL-2.0-only";
14145  }
14146  else if (NY_INFILE(_TEXT_GPLV2)) {
14147  lstr = lDebug ? "GPL-v2(#3)" : "GPL-2.0-only";
14148  }
14149  /*
14150  * GPL-1.0-only cases
14151  */
14152  else if (GPL_INFILE(_PHR_FSF_V1_OR_LATER)
14153  || INFILE(_PHR_GPL1_OR_LATER)
14154  || HASTEXT(_SPDX_GPL_10plus, REG_EXTENDED)
14155  || HASTEXT(_PHR_GPL_10plus, REG_EXTENDED))
14156  {
14157  if (INFILE(_TITLE_GPL1)) {
14158  lstr = lDebug ? "GPL-v1(#1)" : "GPL-1.0-only";
14159  }
14160  else if (!HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
14161  lstr = "GPL-1.0-or-later";
14162  }
14163  }
14164  else if (INFILE(_PHR_FSF_V1_ONLY) || INFILE(_PHR_GPL1_ONLY)) {
14165  lstr = lDebug ? "GPL-v1(#2)" : "GPL-1.0-only";
14166  }
14167  else if (URL_INFILE(_URL_CCGPL_V2)) {
14168  lstr = "GPL-2.0-only";
14169  }
14170  else if (INFILE(_LT_CC_GPL) || INFILE(_TITLE_CC_GPL)) {
14171  lstr = lDebug ? "GPL(CC_GPL)" : "GPL";
14172  }
14173  else if (NY_INFILE(_TEXT_GPLV1) &&
14174  HASREGEX(_TEXT_GPLV1, filetext)) {
14175  lstr = lDebug ? "GPL-v1(#3)" : "GPL-1.0-only";
14176  }
14177  else if (HASTEXT(_SPDX_GPL_10, REG_EXTENDED)) {
14178  lstr = lDebug ? "GPL-1.0-only(SPDX)" : "GPL-1.0-only";
14179  }
14180  else if (HASTEXT(_SPDX_GPL_30, REG_EXTENDED)) {
14181  lstr = lDebug ? "GPL-3.0-only(SPDX)" : "GPL-3.0-only";
14182  }
14183  /* special case for Debian copyright files
14184  Moved from the beginning here under else if ... is this anymore needed
14185  */
14186  else if (INFILE(_TEXT_GPLV3_CR) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
14187  lstr = "GPL-3.0-only";
14188  }
14189  else if (INFILE(_FILE_GPL1) || INFILE(_FILE_GPL2)) {
14190  lstr = lDebug ? "GPL(deb)" : "GPL";
14191  }
14192  /*
14193  * MODULE("GPL") cannot be unambiguously interpreted as GPL-2.0-only
14194  * license. Same statement is used also outside Linux kernel.
14195  * Furthermore, many of the files which have this MODULE statement,
14196  * have explicit GPL license statement. Therefore this is changed
14197  * to GPL.
14198  */
14199  else if (INFILE(_TITLE_MODULE_LICENSE_GPL)) {
14200  lstr = lDebug ? "GPL(linux-kernel)" : "GPL";
14201  }
14202  /*
14203  * Finally let's see if there is a type error in license version
14204  */
14205  else if (INFILE(_PHR_GPL21_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
14206  lstr = "GPL-2.1-or-later-sic";
14207  }
14208  else if (INFILE(_PHR_FSF_V21_ONLY) || INFILE(_PHR_GPL21_ONLY)) {
14209  lstr = lDebug ? "GPL-v2.1[sic]" : "GPL-2.1-sic";
14210  }
14211  /*
14212  * Special case, HACK: "Debian packaging ... licensed under GPL"
14213  *****
14214  * IF we've scanned the regex that might contain it, then kludge.buf != NULL.
14215  * Make darn sure that pointer IS set to NULL before leaving this routine.
14216  */
14217  if (lstr == NULL_STR && kludge.base != NULL_STR) {
14218 #ifdef PHRASE_DEBUG
14219  printf("GPL-META-CHECK: base %p, so %d eo %d\n",
14220  kludge.base, kludge.sso, kludge.seo);
14221 #endif /* PHRASE_DEBUG */
14222  cp = kludge.base + (kludge.sso < 256 ? 0 : kludge.sso-256);
14223  if (HASREGEX(_LT_GPL_META_DEBIAN, cp)) {
14224  lstr = "GPL-Meta";
14225  }
14226  kludge.base = NULL_STR;
14227  }
14228  if (lstr == NULL_STR && NOT_INFILE(_PHR_JYTHON_NOTGPL) && !HASTEXT(_TITLE_QT_GPL_EXCEPTION_10, 0) && !HASTEXT(_LT_OPENBSD_GPL_EXCEPTION, 0)) {
14229  lstr = lDebug ? "GPL(NULL)" : "GPL";
14230  }
14231  return lstr;
14232 }
14233 
14242 char *cplVersion(char *filetext, int size, int isML, int isPS)
14243 {
14244  char *lstr = NULL_STR;
14245  /* */
14246 #ifdef PROC_TRACE
14247  traceFunc("== cplVersion()\n");
14248 #endif /* PROC_TRACE */
14249  /* */
14250  if (INFILE(_TITLE_CPL_10)) {
14251  lstr = "CPL-1.0";
14252  }
14253  else if (URL_INFILE(_URL_CPL_10)) {
14254  lstr = "CPL-1.0";
14255  }
14256  else if (INFILE(_TITLE_CPL_05)) {
14257  lstr = "CPL-0.5";
14258  }
14259  else {
14260  lstr = "CPL";
14261  }
14262  return lstr;
14263 }
14264 
14273 char *ccVersion(char *filetext, int size, int isML, int isPS)
14274 {
14275  char *lstr = NULL_STR;
14276  /* */
14277 #ifdef PROC_TRACE
14278  traceFunc("== ccVersion()\n");
14279 #endif /* PROC_TRACE */
14280  /* ports start with the unported name, so test them first */
14281  if (INFILE(_TITLE_CC_BY_25_AU)) {
14282  lstr = "CC-BY-2.5-AU";
14283  }
14284  else if (INFILE(_TITLE_CC_BY_30_AT)) {
14285  lstr = "CC-BY-3.0-AT";
14286  }
14287  else if (INFILE(_TITLE_CC_BY_30_AU)) {
14288  lstr = "CC-BY-3.0-AU";
14289  }
14290  else if (INFILE(_TITLE_CC_BY_30_DE)) {
14291  lstr = "CC-BY-3.0-DE";
14292  }
14293  else if (INFILE(_TITLE_CC_BY_30_IGO)) {
14294  lstr = "CC-BY-3.0-IGO";
14295  }
14296  else if (INFILE(_TITLE_CC_BY_30_NL)) {
14297  lstr = "CC-BY-3.0-NL";
14298  }
14299  else if (INFILE(_TITLE_CC_BY_30_US)) {
14300  lstr = "CC-BY-3.0-US";
14301  }
14302  else if (INFILE(_TITLE_CC_BY_NC_30_DE)) {
14303  lstr = "CC-BY-NC-3.0-DE";
14304  }
14305  else if (INFILE(_TITLE_CC_BY_NC_ND_30_DE)) {
14306  lstr = "CC-BY-NC-ND-3.0-DE";
14307  }
14308  else if (INFILE(_TITLE_CC_BY_NC_ND_30_IGO)) {
14309  lstr = "CC-BY-NC-ND-3.0-IGO";
14310  }
14311  else if (INFILE(_TITLE_CC_BY_NC_SA_20_DE)) {
14312  lstr = "CC-BY-NC-SA-2.0-DE";
14313  }
14314  else if (INFILE(_TITLE_CC_BY_NC_SA_20_FR)) {
14315  lstr = "CC-BY-NC-SA-2.0-FR";
14316  }
14317  else if (INFILE(_TITLE_CC_BY_NC_SA_20_UK)) {
14318  lstr = "CC-BY-NC-SA-2.0-UK";
14319  }
14320  else if (INFILE(_TITLE_CC_BY_NC_SA_30_DE)) {
14321  lstr = "CC-BY-NC-SA-3.0-DE";
14322  }
14323  else if (INFILE(_TITLE_CC_BY_NC_SA_30_IGO)) {
14324  lstr = "CC-BY-NC-SA-3.0-IGO";
14325  }
14326  else if (INFILE(_TITLE_CC_BY_ND_30_DE)) {
14327  lstr = "CC-BY-ND-3.0-DE";
14328  }
14329  else if (INFILE(_TITLE_CC_BY_SA_20_UK)) {
14330  lstr = "CC-BY-SA-2.0-UK";
14331  }
14332  else if (INFILE(_TITLE_CC_BY_SA_21_JP)) {
14333  lstr = "CC-BY-SA-2.1-JP";
14334  }
14335  else if (INFILE(_TITLE_CC_BY_SA_30_AT)) {
14336  lstr = "CC-BY-SA-3.0-AT";
14337  }
14338  else if (INFILE(_TITLE_CC_BY_SA_30_DE)) {
14339  lstr = "CC-BY-SA-3.0-DE";
14340  }
14341  else if (INFILE(_TITLE_CC_BY_SA_30_IGO)) {
14342  lstr = "CC-BY-SA-3.0-IGO";
14343  }
14344  /*
14345  * Creative Commons Attribution-ShareAlike
14346  */
14347  else if (INFILE(_TITLE_CC_BY_SA_10) || URL_INFILE(_URL_CC_BY_SA_10)) {
14348  lstr = "CC-BY-SA-1.0";
14349  }
14350  else if (INFILE(_TITLE_CC_BY_SA_20) || URL_INFILE(_URL_CC_BY_SA_20)) {
14351  lstr = "CC-BY-SA-2.0";
14352  }
14353  else if (INFILE(_TITLE_CC_BY_SA_25) || URL_INFILE(_URL_CC_BY_SA_25)) {
14354  lstr = "CC-BY-SA-2.5";
14355  }
14356  else if (INFILE(_TITLE_CC_BY_SA_30) || URL_INFILE(_URL_CC_BY_SA_30)) {
14357  lstr = "CC-BY-SA-3.0";
14358  }
14359  else if (INFILE(_PHR_CC_BY_SA_30)) {
14360  lstr = "CC-BY-SA-3.0";
14361  }
14362  else if (INFILE(_TITLE_CC_BY_SA_40) || URL_INFILE(_URL_CC_BY_SA_40)) {
14363  lstr = "CC-BY-SA-4.0";
14364  }
14365  else if (URL_INFILE(_URL_CC_BY_SA_20)) {
14366  lstr = "CC-BY-SA-2.0";
14367  }
14368  else if (INFILE(_TITLE_CC_BY_SA) || URL_INFILE(_URL_CC_BY_SA)) {
14369  lstr = lDebug ? "CCA-SA(1)" : "CC-BY-SA";
14370  }
14371  /*
14372  * Creative Commons Attribution-NonCommercial-ShareAlike
14373  */
14374  else if (INFILE(_TITLE_CC_BY_NC_SA_40) || URL_INFILE(_URL_CC_BY_NC_SA_40)) {
14375  lstr = "CC-BY-NC-SA-4.0";
14376  }
14377  else if (INFILE(_TITLE_CC_BY_NC_SA_30) || URL_INFILE(_URL_CC_BY_NC_SA_30)) {
14378  lstr = "CC-BY-NC-SA-3.0";
14379  }
14380  else if (INFILE(_TITLE_CC_BY_NC_SA_25) || URL_INFILE(_URL_CC_BY_NC_SA_25)) {
14381  lstr = "CC-BY-NC-SA-2.5";
14382  }
14383  else if (INFILE(_TITLE_CC_BY_NC_SA_20) || URL_INFILE(_URL_CC_BY_NC_SA_20)) {
14384  lstr = "CC-BY-NC-SA-2.0";
14385  }
14386  else if (INFILE(_TITLE_CC_BY_NC_SA_10) || URL_INFILE(_URL_CC_BY_NC_SA_10)) {
14387  lstr = "CC-BY-NC-SA-1.0";
14388  }
14389  /*
14390  * Creative Commons NonCommercial NoDerivs
14391  */
14392  else if (INFILE(_TITLE_CC_BY_NC_ND_40) || URL_INFILE(_URL_CC_BY_NC_ND_40)) {
14393  lstr = "CC-BY-NC-ND-4.0";
14394  }
14395  else if (INFILE(_TITLE_CC_BY_NC_ND_30) || INFILE(_TITLE_CC_BY_NC_ND_30_1) || URL_INFILE(_URL_CC_BY_NC_ND_30)) {
14396  lstr = "CC-BY-NC-ND-3.0";
14397  }
14398  else if (INFILE(_TITLE_CC_BY_NC_ND_25) || INFILE(_TITLE_CC_BY_NC_ND_25_1) || URL_INFILE(_URL_CC_BY_NC_ND_25)) {
14399  lstr = "CC-BY-NC-ND-2.5";
14400  }
14401  else if (INFILE(_TITLE_CC_BY_NC_ND_20) || INFILE(_TITLE_CC_BY_NC_ND_20_1) || URL_INFILE(_URL_CC_BY_NC_ND_20)) {
14402  lstr = "CC-BY-NC-ND-2.0";
14403  }
14404  else if (INFILE(_TITLE_CC_BY_NC_ND_10) || INFILE(_TITLE_CC_BY_NC_ND_10_1) || INFILE(_TITLE_CC_BY_NC_ND_10_2) || URL_INFILE(_URL_CC_BY_NC_ND_10)) {
14405  lstr = "CC-BY-NC-ND-1.0";
14406  }
14407  /*
14408  * Creative Commons NonCommercial
14409  */
14410  else if (INFILE(_TITLE_CC_BY_NC_40) || URL_INFILE(_URL_CC_BY_NC_40)) {
14411  lstr = "CC-BY-NC-4.0";
14412  }
14413  else if (INFILE(_TITLE_CC_BY_NC_30) || URL_INFILE(_URL_CC_BY_NC_30)) {
14414  lstr = "CC-BY-NC-3.0";
14415  }
14416  else if (INFILE(_TITLE_CC_BY_NC_25) || URL_INFILE(_URL_CC_BY_NC_25)) {
14417  lstr = "CC-BY-NC-2.5";
14418  }
14419  else if (INFILE(_TITLE_CC_BY_NC_20) || URL_INFILE(_URL_CC_BY_NC_20)) {
14420  lstr = "CC-BY-NC-2.0";
14421  }
14422  else if (INFILE(_TITLE_CC_BY_NC_10) || URL_INFILE(_URL_CC_BY_NC_10)) {
14423  lstr = "CC-BY-NC-1.0";
14424  }
14425  /*
14426  * Creative Commons Attribution-NoDerivatives
14427  */
14428  else if (INFILE(_TITLE_CC_BY_ND_40) || URL_INFILE(_URL_CC_BY_ND_40)) {
14429  lstr = "CC-BY-ND-4.0";
14430  }
14431  else if (INFILE(_TITLE_CC_BY_ND_30) || URL_INFILE(_URL_CC_BY_ND_30)) {
14432  lstr = "CC-BY-ND-3.0";
14433  }
14434  else if (INFILE(_TITLE_CC_BY_ND_25) || URL_INFILE(_URL_CC_BY_ND_25)) {
14435  lstr = "CC-BY-ND-2.5";
14436  }
14437  else if (INFILE(_TITLE_CC_BY_ND_20) || URL_INFILE(_URL_CC_BY_ND_20)) {
14438  lstr = "CC-BY-ND-2.0";
14439  }
14440  else if (INFILE(_TITLE_CC_BY_ND_10) || URL_INFILE(_URL_CC_BY_ND_10)) {
14441  lstr = "CC-BY-ND-1.0";
14442  }
14443  /*
14444  * Creative Commons Attribution
14445  */
14446  else if (INFILE(_TITLE_CC_BY_10) || URL_INFILE(_URL_CC_BY_10)) {
14447  lstr = "CC-BY-1.0";
14448  }
14449  else if (INFILE(_TITLE_CC_BY_20) || URL_INFILE(_URL_CC_BY_20)) {
14450  lstr = "CC-BY-2.0";
14451  }
14452  else if (INFILE(_TITLE_CC_BY_25) || URL_INFILE(_URL_CC_BY_25)) {
14453  lstr = "CC-BY-2.5";
14454  }
14455  else if (INFILE(_TITLE_CC_BY_30) || URL_INFILE(_URL_CC_BY_30)) {
14456  lstr = "CC-BY-3.0";
14457  }
14458  else if (INFILE(_PHR_CC_BY_40) || INFILE(_TITLE_CC_BY_40) || URL_INFILE(_URL_CC_BY_40)) {
14459  lstr = "CC-BY-4.0";
14460  }
14461  /*
14462  * Creative Commons CC0
14463  */
14464  else if (INFILE(_TITLE_CC0_10_2)) {
14465  lstr = lDebug ? "CC0(2)" : "CC0-1.0";
14466  }
14467  else if (INFILE(_PHR_CC0_2)) {
14468  lstr = lDebug ? "CC0(2)" : "CC0-1.0";
14469  }
14470  else if (URL_INFILE(_URL_CC0)) {
14471  lstr = lDebug ? "CC0(URL)" : "CC0-1.0";
14472  }
14473  else if (URL_INFILE(_URL_CC_PDDC)) {
14474  lstr = lDebug ? "CC(PD)" : "CC-PDDC";
14475  pd = 1;
14476  }
14477  else if (INFILE(_TITLE_CCPL)) {
14478  INTERESTING("CCPL");
14479  }
14480  else if (INFILE(_TITLE_CC_BY) && NOT_INFILE(_TITLE_CC_RESTRICTED)) {
14481  lstr = lDebug ? "CCA(1)" : "CC-BY";
14482  }
14483  else {
14484  /* unidentified Creative Commons: report the family, not CC-BY */
14485  lstr = lDebug ? "CCA(def)" : "CCPL";
14486  }
14487  lmem[_fCCBY] = 1;
14488  return lstr;
14489 }
14490 
14507 int findPhrase(int index, char *filetext, int size, int isML, int isPS,
14508  int qType)
14509 {
14510  char *ptr = NULL_STR;
14511  char *q = ltsr+index;
14512  char *cp = 0;
14513  int ret;
14514  int i;
14515  int j;
14516  int n;
14517  int wordMatch = 0;
14518  int metaKludge = 0;
14519  int saved = 0;
14520  int sso;
14521  int seo;
14522  item_t *sp;
14523  item_t *op;
14524  list_t *lp;
14525  licText_t *ltp;
14526 #ifdef PARSE_STOPWATCH
14527  DECL_TIMER; /* timer declaration */
14528  char timerName[64];
14529 #endif /* PARSE_STOPWATCH */
14530 
14531 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG) || defined(DOCTOR_DEBUG)
14532  traceFunc("== findPhrase(%d, %p, %d, %d, %d, %d)\n", index, filetext,
14533  size, isML, isPS, qType);
14534  traceFunc("... (regex) \"%s\"\n", _REGEX(index));
14535  traceFunc("... (seed) \"%s\"\n", _SEED(index));
14536 #endif /* PROC_TRACE || PHRASE_DEBUG || DOCTOR_DEBUG */
14537 
14538  ltp = licText + index; /* &licText[index] */
14539  if (ltp->tseed == NULL_STR) {
14540  LOG_FATAL("Regex #%d not suitable for findPhrase()", index)
14541  Bail(-__LINE__);
14542  }
14543  *q |= LTSR_SMASK; /* init: tested, no match */
14544 #ifdef PARSE_STOPWATCH
14545  (void) sprintf(timerName, "findPhrase(%03d): ", index);
14546  START_TIMER;
14547 #endif /* PARSE_STOPWATCH */
14548 #if (DEBUG > 5)
14549  printf("findPhrase: firstword[%d] == \"%s\", used = %d\n", index,
14550  ltp->tseed, searchList.used);
14551 #endif /* DEBUG > 5 */
14552  /*
14553  * See if the first-word of the requested entry has been searched
14554  * previously. The entry we get from listGetItem() refCount (val) field is:
14555  * =0 if this is the first search for this word (non-zero == "seen it"!)
14556  * <0 if the word was NOT FOUND
14557  * >0 if we have doctored-text results cached
14558  */
14559  if ((sp = listGetItem(&searchList, ltp->tseed)) == NULL_ITEM) {
14560  LOG_FATAL("search cache")
14561  Bail(-__LINE__);
14562  }
14563  if (sp->refCount < 0) { /* tseed not found in text */
14564  sp->refCount--;
14565 #ifdef PARSE_STOPWATCH
14566  END_TIMER; /* stop the timer */
14567  (void) strcat(timerName, "Cache-NO - ");
14568  (void) strcat(timerName, ltp->tseed);
14569  PRINT_TIMER(timerName, 0);
14570 #endif /* PARSE_STOPWATCH */
14571  return(0);
14572  }
14573  else if (sp->refCount == 0) { /* e.g., first occurence */
14574 
14575  /*
14576  * Since this is the first search of this word, see if it's in the text.
14577  * NOTE: getInstances() returns a pointer to static (non-allocated) storage
14578  */
14579  if ((cur.nLines) <= 5) {
14580  i = 1;
14581  j = 2;
14582  } else if ((size / cur.nLines) <= 10) {
14583  i = 2;
14584  j = 4;
14585  } else {
14586  i = 3;
14587  j = 6;
14588  }
14589 
14590  /* change to not get record offsets since there is a good sized memory
14591  leak in that code */
14592  //ptr = getInstances(filetext, size, i, j, sp->str, YES);
14593  ptr = getInstances(filetext, size, i, j, sp->str, NO);
14594 
14595  if (ptr == NULL_STR) {
14596  sp->refCount = -1;
14597  /* sp->buf = NULL_STR; */
14598 #ifdef PARSE_STOPWATCH
14599  END_TIMER; /* stop the timer */
14600  (void) strcat(timerName, "tseed-NO - ");
14601  (void) strcat(timerName, ltp->tseed);
14602  PRINT_TIMER(timerName, 0);
14603 #endif /* PARSE_STOPWATCH */
14604  return(0); /* known !match */
14605  }
14606  sp->buf = copyString(ptr, "paragraph");
14607 #ifdef MEMSTATS
14608  printf("... adding %d bytes (search-lookup: \"%s\")\n",
14609  strlen(sp->buf), sp->str);
14610 #endif /* MEMSTATS */
14611  /*
14612  * If the search-seed and regex are the same, we found what we're looking
14613  * for. Else, use doctorBuffer() to strip out punctuation, XML/HTML
14614  * directives, etc.
14615  */
14616 #ifdef PARSE_STOPWATCH
14617  START_TIMER;
14618 #endif /* PARSE_STOPWATCH */
14619 #ifdef DOCTOR_DEBUG
14620  printf(" ... doctoring buffer for \"%s\"\n", sp->str);
14621 #endif /* DOCTOR_DEBUG */
14622  (void) doctorBuffer(sp->buf, isML, isPS, NO);
14623 #ifdef PARSE_STOPWATCH
14624  RESET_TIMER;
14625  (void) sprintf(timerName, "... doctor(%03d): %s (%d)",
14626  index, ltp->tseed, strlen(sp->buf));
14627  PRINT_TIMER(timerName, 0);
14628 #endif /* PARSE_STOPWATCH */
14629  }
14630  sp->refCount++; /* incr ref-count for this seed */
14631  /*
14632  * We need populate the list of "paragraph matches" with offsets in the
14633  * doctored-up buffers; this seems the best place to do it.
14634  */
14635  op = listGetItem(&cur.offList, sp->str);
14636  if (op->nMatch <= 0) {
14637  LOG_FATAL("File-offset list, nMatch(%s): bad entry", sp->str)
14638  Bail(-__LINE__);
14639  }
14640 #if DEBUG>5
14641  printf("matches for key \"%s\": %d\n", sp->str, op->nMatch);
14642 #endif /* DEBUG>5 */
14643  n = strlen(sp->buf);
14644  lp = (list_t *)op->bList;
14645  if ((lp) && (lp->items[0].bDocLen == 0)) {
14646  if (op->nMatch == 1) {
14647  lp->items[0].bDocLen = n;
14648  } else {
14649  ptr = sp->buf;
14650  i = j = 0; /* i is index, j is total offset */
14651  while (strGrep(" xyzzy ", ptr, REG_ICASE)) {
14652  lp->items[i++].bDocLen = j + cur.regm.rm_so;
14653  ptr += cur.regm.rm_eo;
14654  j += (cur.regm.rm_eo + 7); /* strlen(" xyzzy ") */
14655  }
14656  lp->items[i].bDocLen = n + 7; /* last paragraph */
14657  }
14658  }
14659  if (ltp->tseed == ltp->regex) { /* e.g., regex IS seed/key */
14660  wordMatch++;
14661  ret = 1;
14662  } else {
14663  metaKludge = ((qType == 2) && (index == _LT_GPLref1));
14664  if (metaKludge || qType == 4) {
14665  saved = 1;
14666  gl.flags |= FL_SAVEBASE;
14667  }
14668  ret = HASREGEX_RI(index, sp->buf);
14669  if (saved) {
14670  if (ret) {
14671  kludge.base = cur.matchBase;
14672  kludge.sso = cur.regm.rm_so;
14673  kludge.seo = cur.regm.rm_eo;
14674  }
14675  gl.flags &= ~FL_SAVEBASE;
14676  }
14677  }
14678  sso = cur.regm.rm_so; /* do NOT modify this!! */
14679  seo = cur.regm.rm_eo; /* ... or this, either! */
14680  if (ret && !wordMatch) {
14681  *q = LTSR_YES; /* remember this "yes" search result */
14682 
14683  /*
14684  * VERY low-level string-search kludges happen here. This is VERY ugly!!
14685  *****
14686  * If we used idxGrep to search for "GPL" in a "doctored" buffer, we do NOT
14687  * want to match "lesser GPL" or "library GPL" in our searches (it's the
14688  * wrong license name/title). Unfortunately, two aliases for LGPL are
14689  * exactly those above. If we match "GPL" with a wildcard preceeding it, it
14690  * JUST MIGHT BE those words. Rather than perform 2 exclusionary searches
14691  * one for "lesser gpl" and another for "library gpl", look here and if we
14692  * find it, (ugh) KLUDGE the return value to indicate "no match"...
14693  *****
14694  * However, since it's here, it's now extensible. Next search-string kludge
14695  * (that cannot be quickly fixed via changing a regex) should be number 2.
14696  * Just make a new macro (defined above parseLicenses), ala GPL_INFILE().
14697  */
14698  if ((qType > 0) && !wordMatch) {
14699  if ((qType > 4) || (qType < 0)) {
14700  LOG_FATAL("Unknown string-search kludge %d", qType)
14701  Bail(-__LINE__);
14702  }
14703  /*
14704  * Special filter #1: over-write matched text with commas -- this choice is
14705  * significant because doctorBuffer() ensures 'stripped' text has no commas
14706  */
14707  if (qType == 1) { /* destroy text-match */
14708  cp = sp->buf+seo;
14709  ptr = sp->buf+sso;
14710  ltsr[index] = 0; /* reset search cache */
14711  while (ptr <= cp) {
14712  *ptr++ = ',';
14713  }
14714 #ifdef DEBUG
14715  if (lDiags) {
14716  printf("Now, buf %p contains:\n%s\n",
14717  sp->buf, (char *)sp->buf);
14718  }
14719 #endif /* DEBUG */
14720  /*
14721  * Special filter #2: various checks to make sure LGPL/GFDL/GPL license
14722  * references are not confused -- they CAN look quite similar. Specifically
14723  * we don't want to confuse a SINGLE reference to the LGPL as a reference to
14724  * the GPL. BUT -- sometimes references to BOTH are in the same file.
14725  */
14726  }
14727  if ((qType == 2) &&
14728  HASREGEX(_TEXT_LGPL_NOT_GPL, sp->buf+sso) &&
14729  !HASREGEX(_TEXT_GPL_NOT_LGPL, sp->buf+sso) &&
14730  NOT_INFILE(_TEXT_LGPL_DETAILS) &&
14731  NOT_INFILE(_TEXT_LICSET)) {
14732  if (lDiags) {
14733  printf("... \"GPL\" -> LGPL (%d)\n",
14734  index);
14735  }
14736  ltsr[_TEXT_LGPL_NOT_GPL] = LTSR_YES;
14737  ret = 0;
14738  *q = LTSR_NO; /* oops, make that a "no" */
14739  } else if ((qType == 2) &&
14740  HASREGEX(_TEXT_GFDL_NOT_GPL, sp->buf+sso)) {
14741  if (lDiags) {
14742  printf("... \"GPL\" -> GFDL (%d)\n",
14743  index);
14744  }
14745  ltsr[_TEXT_GFDL_NOT_GPL] = LTSR_YES;
14746  ret = 0;
14747  *q = LTSR_NO;
14748  } else if ((index == _LT_GPL3ref) && (qType == 2)) {
14749  if (HASREGEX(_PHR_QEMU_NOT_GPLV3, sp->buf+sso)) {
14750  if (lDiags) {
14751  printf("... \"GPL\" -> QEMU\n");
14752  }
14753  ltsr[_PHR_QEMU_NOT_GPLV3] = LTSR_YES;
14754  ret = 0;
14755  *q = LTSR_NO;
14756  } else if (INFILE(_PHR_SCF_HOWTO)) {
14757  if (lDiags) {
14758  printf("... SCF-Howto\n");
14759  }
14760  ret = 0;
14761  *q = LTSR_NO;
14762  } else if (HASREGEX(_TEXT_DRBD_NOT_GPL3, sp->buf)) {
14763  if (lDiags) {
14764  printf("... mysgl/DRBD\n");
14765  }
14766  ltsr[_TEXT_DRBD_NOT_GPL3] = LTSR_YES;
14767  ret = 0;
14768  *q = LTSR_NO;
14769  }
14770 #ifdef GPLV2_BEATS_GPLV3
14771  else if (strNbuf(sp->buf+sso, "version 2")) {
14772  if (sp->buf + sso + cur.regm.rm_eo <
14773  sp->buf + seo) {
14774  if (lDiags) {
14775  printf("... v%c!\n", *cp);
14776  }
14777  ret = 0;
14778  *q = LTSR_NO;
14779  }
14780  }
14781 #endif /* GPLV2_BEATS_GPLV3 */
14782  } else if ((index == _PHR_GPL3_OR_LATER) &&
14783  (qType == 2) &&
14784  strNbuf(sp->buf+sso, "v2 ")) {
14785  if (lDiags) {
14786  printf("... v2 and version 3\"\n");
14787  }
14788  ret = 0;
14789  *q = LTSR_NO;
14790  } else if ((index == _PHR_GPL3_OR_LATER) &&
14791  (qType == 2) &&
14792  HASREGEX(_TEXT_NOT_GPLV3_DRAFT, sp->buf+sso)) {
14793  if (lDiags) {
14794  printf("... exclude \"GPLv3 draft\"\n");
14795  }
14796  ltsr[_TEXT_NOT_GPLV3_DRAFT] = LTSR_YES;
14797  ret = 0;
14798  *q = LTSR_NO;
14799  } else if ((index == _PHR_GPL3_ONLY) &&
14800  (qType == 2) &&
14801  HASREGEX(_TEXT_NOT_LIBSTDC, sp->buf+sso)) {
14802  if (lDiags) {
14803  printf("... exclude libstdc vers\"\n");
14804  }
14805  ltsr[_TEXT_NOT_LIBSTDC] = LTSR_YES;
14806  ret = 0;
14807  *q = LTSR_NO;
14808  }
14809  /*
14810  * POSIX regex matches the longest string possible, and a '3' can follow a
14811  * "version 2 or later phrase" -- we want to match the '2'. "Vim" has this:
14812  *****
14813  * e) When the GNU General Public License (GPL) applies to the changes,
14814  * you may distribute the modified code under the GNU GPL version 2 or
14815  * any later version.
14816  * 3) A message must be added, at least in the output of the ":version"
14817  * command and in the intro screen, such that the user ...
14818  *****
14819  * So... if there's a NUMBER (!= '3') between the word "version" and the
14820  * end-of-match (at sp->buf+seo), that matches the number AND NOT the 3.
14821  */
14822  else if ((qType == 2) &&
14823  ((index == _PHR_GPL3_ONLY) || (index == _PHR_LGPL3_ONLY))) {
14824  if (strNbuf(sp->buf+sso, "version") ||
14825  strNbuf(sp->buf+sso, "v3")) {
14826  cp = sp->buf + cur.regm.rm_eo;
14827  } else {
14828  cp = sp->buf + seo; /* "nil" loop */
14829  }
14830  for (ptr = sp->buf+seo; cp < ptr; cp++) {
14831  if (isdigit(*cp) && *cp != '3') {
14832  if (lDiags) {
14833  printf("... vers %c!\n",
14834  *cp);
14835  }
14836  ret = 0;
14837  *q = LTSR_NO;
14838  break;
14839  }
14840  }
14841  } else if (index == _PHR_FSF_V3_ONLY && qType == 2) {
14842  if (strNbuf(sp->buf+sso, "version")) {
14843 #ifdef GPLV2_BEATS_GPLV3
14844  ptr = sp->buf + sso + cur.regm.rm_so + 7;
14845 #endif /* GPLV2_BEATS_GPLV3 */
14846  cp = strchr(sp->buf+sso, '3');
14847  if (strncasecmp(cp, "3 tlb", 5) == 0) {
14848  if (lDiags) {
14849  printf("... v3 tlb\n");
14850  }
14851  ret = 0;
14852  *q = LTSR_NO;
14853  }
14854 #ifdef GPLV2_BEATS_GPLV3
14855  else if ((*ptr == ' ') && (*(ptr+1) == '2')) {
14856  if (lDiags) {
14857  printf("... v2, !v3\n");
14858  }
14859  ret = 0;
14860  *q = LTSR_NO;
14861  }
14862 #endif /* GPLV2_BEATS_GPLV3 */
14863  }
14864  else if (strNbuf(sp->buf+sso, "v3")) {
14865  cp = sp->buf + sso + cur.regm.rm_so;
14866  if (strncasecmp(cp-4, "arm ", 4) == 0) {
14867  if (lDiags) {
14868  printf("... arm v3\n");
14869  }
14870  ret = 0;
14871  *q = LTSR_NO;
14872  } else if (strncasecmp(cp, "v3020 ",
14873  6) == 0) {
14874  if (lDiags) {
14875  printf("... v3020\n");
14876  }
14877  ret = 0;
14878  *q = LTSR_NO;
14879  }
14880  }
14881  } else if ((index == _LT_LGPL_OR) &&
14882  (strncasecmp(sp->buf+sso, "or fitness f", 12) == 0)) {
14883  if (lDiags) {
14884  printf("... merch-or-fitness\n");
14885  }
14886  ret = 0;
14887  *q = LTSR_NO;
14888  } else if ((index == _LT_GPLref1) &&
14889  (qType == 2) &&
14890  INFILE(_PHR_LIC_CHANGE)) {
14891  if (lDiags) {
14892  printf("... exclude lic-change\"\n");
14893  }
14894  ret = 0;
14895  *q = LTSR_NO;
14896  } else if ((qType == 2) && (sso > 4)) {
14897  cp = sp->buf+sso-4;
14898  if (strncasecmp(cp, "not ", 4) == 0) {
14899  if (lDiags) {
14900  printf("... NOT l?gpl-ish\n");
14901  }
14902  ret = 0;
14903  *q = LTSR_NO; /* "no" */
14904  }
14905  } else if (qType == 3 && INFILE(_PHR_ARTISTIC_DESC1)) {
14906  /*
14907  Special filter #3: match specific versions of Perl
14908  references, but not all
14909  */
14910  if (lDiags) {
14911  printf("... exclude artistic defn\"\n");
14912  }
14913  ret = 0;
14914  *q = LTSR_NO;
14915  } else if (qType == 4) {
14916  /*
14917  Special filter #4: look for a numerical version
14918  number IFF NOT IN a string of (at least) 4 numerical
14919  characters (signifying a year/datestamp)
14920  */
14921  char *x;
14922  x = cp = cur.matchBase + sso;
14923  ptr = cp - (sso < 100 ? sso : 100);
14924  while (!isdigit(*cp)) {
14925  cp++;
14926  }
14927  if (isdigit(*(cp+1)) && isdigit(*(cp+2)) && isdigit(*(cp+3))) {
14928  if (lDiags) {
14929  printf("... don't want year\n");
14930  }
14931  ret = 0;
14932  *q = LTSR_NO;
14933  } else if (HASREGEX(_TEXT_GNU_HELLO_23, ptr)) {
14934  if (lDiags) {
14935  printf("... gnu example\n");
14936  }
14937  ret = 0;
14938  *q = LTSR_NO;
14939  }
14940 #ifdef GPLV2_BEATS_GPLV3
14941  else if (strncasecmp(x-5, "v2 or ", 5) == 0) {
14942  if (lDiags) {
14943  printf("... v2 or v3\n");
14944  }
14945  ret = 0;
14946  *q = LTSR_NO;
14947  }
14948 #endif /* GPLV2_BEATS_GPLV3 */
14949  /*
14950  * Special case - don't know where better to look for this... other strings
14951  * match TEXT_GPLV3 and should be filtered. This should be a fairly low
14952  * frequency check.
14953  */
14954  else if (index == _TEXT_GPLV3) {
14955  x = cur.matchBase + seo;
14956  if (isdigit(*x) && *x != '0') {
14957  if (lDiags) {
14958  printf("... v3#!0\n");
14959  }
14960  ret = 0;
14961  *q = LTSR_NO;
14962  }
14963  }
14964  }
14965  }
14966 #if (DEBUG > 5)
14967  printf(">>===> \"%s\"\n", ltp->regex);
14968 #endif /* DEBUG > 5 */
14969  }
14970 #ifdef PARSE_STOPWATCH
14971  END_TIMER; /* stop the timer */
14972  (void) sprintf(timerName, "findPhrase(%03d): RET=%d (%s:%d)", index,
14973  ret, ltp->tseed, strlen(sp->buf));
14974  PRINT_TIMER(timerName, 0);
14975 #endif /* PARSE_STOPWATCH */
14976  if (lDiags && ret) {
14977  printRegexMatch(index, NO);
14978  /* locateRegex(filetext, op, index, size, sso, seo); */
14979  }
14980  return(ret);
14981 }
14982 
14997 void locateRegex(char *text, item_t *op, int index, int size, int sso, int seo)
14998 {
14999  int i;
15000  int j;
15001  int n;
15002  int off;
15003  int len;
15004  item_t *sp;
15005  list_t *lp = (list_t *)op->bList;
15006  char *cp;
15007  char *ptr;
15008  char *start;
15009  char save;
15010 
15011 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG)
15012  traceFunc("== locateRegex(%p, %p, %d, %d, %d, %d)\n", text, op, index,
15013  size, sso, seo);
15014 #endif /* PROC_TRACE || PHRASE_DEBUG */
15015 
15016  /*
15017  * First step, simplest case - try to locate the regex in the file. It
15018  * *might* be that easy (but not very often, it turns out).
15019  */
15020  if (idxGrep(index, text, REG_ICASE|REG_EXTENDED)) {
15021  saveRegexLocation(index, cur.regm.rm_so,
15022  cur.regm.rm_eo - cur.regm.rm_so, YES);
15023  return;
15024  }
15025  /*
15026  * Regex is not directly in the raw text file, so now we need to try to
15027  * map a location from a 'doctored buffer' to a location in the original
15028  * text file. Not impossible, yet not overly straight-forward.
15029  */
15030 #ifdef DEBUG
15031  listDump(lp, NO);
15032  printf("Doc-buffer match @ %d:%d\n", sso, seo);
15033  printf("Possible \"%s\" entries to search: %d (%d)\n", op->str,
15034  op->nMatch, lp->used);
15035  for (n = i = 0; (sp=listIterate(lp)); i++) {
15036  printf("Ent[%d]: bDocLen %d (len %d) == file %d+%d (%d)\n",
15037  i, sp->bDocLen, (sp->bDocLen)-n, sp->bStart, sp->bLen,
15038  sp->bStart+sp->bLen);
15039  n = sp->bDocLen;
15040  }
15041 #endif /* DEBUG */
15042  /*
15043  * At this point, the matched phrase should be bounded by {sso} and {seo}
15044  * as offsets within the doctored buffer we're scanning. We also have a
15045  * mapping of offsets within the doctored buffer to more-or-less where it
15046  * exists in the original (raw text) file -- so go find it. Walk through the
15047  * offsets-list; the entry with the LOWEST end-of-doctored-buffer offset
15048  * exceeding the value of 'sso' IS the paragraph where we found the regex.
15049  */
15050  i = -1;
15051  j = -1;
15052  n = 0;
15053  while ((sp = listIterate(lp))) {
15054  if (sso > sp->bDocLen) {
15055  n = sp->bDocLen;
15056  continue;
15057  }
15058  i = sp->bStart;
15059  j = sp->bLen;
15060 #ifdef DEBUG
15061  printf("sso(%d), limit(%d), Possible: @%d+%d\n", sso,
15062  sp->bDocLen, i, j);
15063 #endif /* DEBUG */
15064  listIterationReset(lp);
15065  break;
15066  }
15067  if (i < 0) { /* something is wrong... */
15068  LOG_FATAL("Cannot map reduced-text to raw file contents (#%d)", index)
15069  Bail(-__LINE__);
15070  }
15071  /*
15072  * Remember, the length of text matched in the doctored-buffer will likely
15073  * not match the length of the "same" (unmodified) text in the raw file!
15074  * And, an offset within the doctored buffer CANNOT be any larger than the
15075  * corresponding text segment in the raw file (we only _remove_ characters).
15076  * Next, find the last occurrence (in the raw file) of the last word in
15077  * the license-footprint
15078  */
15079  sso -= n;
15080  seo -= n;
15081  off = i + sso;
15082  len = j - sso;
15083 #ifdef DEBUG
15084  printf("WINDOW-first: offset %d, len %d\n", off, len);
15085 #endif /* DEBUG */
15086  /*printf("BUF: %s\n", sp->buf);*/
15087  start = _REGEX(index);
15088  cp = start + licSpec[index].text.csLen - 1; /* 'end' of regex */
15089 #ifdef DEBUG
15090  printf("EO-Regex, cp == '%c'\n", *cp);
15091 #endif /* DEBUG */
15092  n = 0;
15093  while (*cp == ' ') {
15094  cp--;
15095  }
15096  while ((n == 1) || ((cp != start) && (*cp != ' ') && (*cp != ')') &&
15097  (*cp != '}'))) {
15098  if (*cp == ']') {
15099  n = 1;
15100  } else if (*cp == '[') {
15101  n = 0;
15102  }
15103  if (cp == _REGEX(index)) {
15104  cp = ":no:match";
15105  break;
15106  }
15107  cp--;
15108  }
15109  if (*cp == ')') {
15110  cp--;
15111  n = 1;
15112  while (n) {
15113  if (*cp == '(') {
15114  n--;
15115  } else if (*cp == ')') {
15116  n++;
15117  }
15118  /*printf("'%c' -- n %d\n", *cp, n);*/
15119  if (cp != start) {
15120  cp--;
15121  }
15122  }
15123  while ((cp != start) && (*cp != ' ') && (*cp != '.') && (*cp != ')')
15124  && (*cp != ']') && (*cp != '}')) {
15125  /*printf("skip '%c'...\n", *cp);*/
15126  cp--;
15127  }
15128 #ifdef DEBUG
15129  printf("_END_@%ld '%c'\n", cp-_REGEX(index), *cp);
15130 #endif /* DEBUG */
15131  }
15132  if (cp != start) {
15133  if (*cp != '.') {
15134  cp++;
15135  }
15136  if ((*cp == '?') || (*cp == '+')) {
15137  cp++;
15138  }
15139  }
15140  ptr = sp->buf + sso;
15141  i = j = 0;
15142 #ifdef DEBUG
15143  printf("SEARCH @foot is now \"%s\"\n", cp);
15144 #endif /* DEBUG */
15145  while (strGrep(cp, ptr, REG_ICASE|REG_EXTENDED)) {
15146  i++;
15147  ptr += cur.regm.rm_eo;
15148  j += cur.regm.rm_eo;
15149 #ifdef DEBUG
15150  printf("Found match (%d bytes) @ offset %d (%d tot)\n",
15151  cur.regm.rm_eo - cur.regm.rm_so, cur.regm.rm_so, j);
15152 #endif /* DEBUG */
15153  }
15154 #ifdef DEBUG
15155  printf("Total # of matches == %d\n", i);
15156 #endif /* DEBUG */
15157  if (i && j) {
15158  len = j;
15159 #ifdef DEBUG
15160  printf("WINDOW-adjst: offset %d, len %d\n", off, len);
15161 #endif /* DEBUG */
15162  } else {
15163  Assert(NO, "Regex \"%s\" (foot-end) not in raw text", cp);
15164  }
15165  /*
15166  * Then, find the first occurrence (in the raw file) of the first word
15167  * in the license-footprint; the exception here is that if the "last word"
15168  * turned out to be the entire regex, then the "first word" will be, too.
15169  */
15170  if (cp != start) {
15171  cp = _REGEX(index);
15172  j = 1;
15173 #ifdef DEBUG
15174  printf("BO-Regex, cp == '%c'\n", *cp);
15175 #endif /* DEBUG */
15176  while (*cp == ' ') {
15177  cp++;
15178  }
15179  while (*cp && (*cp != ' ') && (*cp != '.') && (*cp != '(') &&
15180  (*cp != '{')) {
15181  if (*cp == '[') {
15182  if (*(cp + 1) == '^') {
15183  j = 0;
15184  }
15185  while (*cp && (*cp != ']')) {
15186  cp++;
15187  }
15188  if (*(cp+1) && (*(cp+1) == '?')) {
15189  cp++;
15190  }
15191  if (j) {
15192  cp++;
15193  break;
15194  }
15195  }
15196  cp++;
15197  }
15198  if (*cp == '(') {
15199  /*printf("Start@%d '%c'\n", cp-_REGEX(index), *cp);*/
15200  for (n = 1, cp++; n; cp++) {
15201  /*printf("... '%c'\n", *cp);*/
15202  if ((*cp == '(') && (*(cp-1) != '\\')) {
15203  n++;
15204  } else if ((*cp == ')') && (*(cp-1) != '\\')) {
15205  n--;
15206  }
15207  }
15208  while (*cp && (*cp != ' ') && (*cp != '.') && (*cp != '(') &&
15209  (*cp != '[')) {
15210  cp++;
15211  }
15212  /*printf("_END_@%d '%c'\n", cp-_REGEX(index), *cp);*/
15213  }
15214  if ((*cp == '?') ||
15215  (*cp == '+') ||
15216  ((*cp == '.') && (*(cp-1) == '\\'))) {
15217  cp++;
15218  }
15219  if (*cp) {
15220  save = *cp;
15221  *cp = NULL_CHAR;
15222 #ifdef DEBUG
15223  printf("SEARCH @head is now \"%s\"\n", _REGEX(index));
15224 #endif /* DEBUG */
15225  ptr = sp->buf+sso;
15226  if (strGrep(_REGEX(index), ptr,
15227  REG_ICASE|REG_EXTENDED)) {
15228  len -= cur.regm.rm_so;
15229  off += cur.regm.rm_so;
15230  } else {
15231  LOG_NOTICE("Regex \"%s\" (foot-start) not in raw text", _REGEX(index));
15232  }
15233  *cp = save; /* restore to original text */
15234  }
15235 #ifdef DEBUG
15236  else {
15237  LOG_NOTICE("Nothing to trim from the front (*cp == NULL)");
15238  }
15239 #endif /* DEBUG */
15240  }
15241 #ifdef DEBUG
15242  else {
15243  printf("Hey, last-word IS the entire regex!\n");
15244  }
15245 #endif /* DEBUG */
15246  saveRegexLocation(index, off, len, YES);
15247 #ifdef DEBUG
15248  printf("WINDOW-FINAL: offset %d, len %d\n", off, len);
15249 #endif /* DEBUG */
15250  /*
15251  * At this point, the window is as small as we can (reasonably) make it,
15252  * given that we mundged the original file-text and didn't make a complete
15253  * map of every character. The variable off contains the start of the
15254  * window (the absolute offset within the raw file) and the variable len
15255  * contains the length of the text window.
15256  *****
15257  * DON'T FORGET that some license-footprints are determined merely by
15258  * searching for a string in the raw-text file (calling idxGrep()), e.g.,
15259  * not using the doctored buffers. See fileHasPatt() for details.
15260  *****
15261  * And finally, note how the list of entries matched (in 'whereList') is
15262  * manipulated -- see the very bottom of "addRef()".
15263  */
15264  if ((off + len) > size) {
15265  LOG_FATAL("off %d + len %d (== %d) exceeds filesize %d!", off, len, off + len, size);
15266  Bail(-__LINE__);
15267  }
15268  return;
15269 }
15270 
15278 void saveRegexLocation(int index, int offset, int length, int saveCache)
15279 {
15280  item_t *ip;
15281  item_t *sp;
15282 
15283 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG)
15284  traceFunc("== saveRegexLocation(%d, %d, %d, %d)\n", index, offset, length,
15285  saveCache);
15286 #endif /* PROC_TRACE || PHRASE_DEBUG */
15287 
15288  (void) sprintf(name, "reg%04d", index);
15289  sp = listGetItem(&whereList, name);
15290  sp->bIndex = whereList.used;
15291  sp->bStart = offset;
15292  sp->bLen = length;
15293  if (saveCache) {
15294  ip = listGetItem(&whCacheList, name);
15295  ip->bIndex = index;
15296  ip->bStart = offset;
15297  ip->bLen = length;
15298  }
15299  return;
15300 }
15301 
15302 
15303 void saveUnclBufLocation(int bufNum)
15304 {
15305  item_t *p;
15306  item_t *bp;
15307  list_t *lp;
15308 
15309 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG)
15310  traceFunc("== saveUnclBufLocation(%d, %d, %d, %d)\n", bufNum);
15311 #endif /* PROC_TRACE || PHRASE_DEBUG */
15312 
15313  listClear(&whereList, NO); /* empty all prior matches */
15314  p = listGetItem(&cur.offList, _REGEX(_LEGAL_first));
15315  lp = (list_t *) p->bList;
15316  (void) sprintf(name, "buf%05d", bufNum);
15317  p = listGetItem(lp, name);
15318  bp = listGetItem(&whereList, LS_UNCL);
15319  bp->bStart = p->bStart;
15320  bp->bLen = p->bLen;
15321  bp->bIndex = -1;
15322  return;
15323 }
15324 
15330 void addRef(char *str, int interest)
15331 {
15332  item_t *p;
15333  char *bp;
15334  char *sp = str;
15335  if(!(str && str[0]))
15336  return;
15337 
15338 #ifdef PROC_TRACE
15339  traceFunc("== addRef(\"%s\", %d)\n", str, interest);
15340 #endif /* PROC_TRACE */
15341 
15342 #if defined(DEBUG)
15343  listDump(&whereList, YES);
15344 #endif /* DEBUG */
15345  /*
15346  * Add this to the list of individual pieces found, and mark the license
15347  * to make generating a license-summary easier. The general strategy is
15348  * to COMPLETELY ignore anything NOT considered 'noteworthy'. So if the
15349  * license is noteworthy, we add one to the count, so that we can call
15350  * listCount() on the list to find if there's a 'real license' in here.
15351  * see makeLicenseSummary() in license.c for more details.
15352  *****
15353  * This little trick is also used in distroReport() and rawSourceReport(),
15354  * see report.c
15355  */
15356  if (str == NULL_STR) {
15357  Assert(YES, "license detected != NULL");
15358  }
15359  if (*str == NULL_CHAR) {
15360  Assert(YES, "license string not start with NULL");
15361  }
15362  bp = licStr+refOffset;
15363  *bp++ = ',';
15364  /*
15365  CDB - Opportunity for optimization via memcpy
15366  */
15367  while (*sp) {
15368  *bp++ = *sp++;
15369  }
15370  *bp = NULL_CHAR;
15371  refOffset = bp - licStr;
15372  /*
15373  * Stuff this license in to several lists:
15374  * - parseList is used to create a package "computed license summary"
15375  * - briefList is used to compute a "terse/brief" license summary
15376  */
15377  p = listGetItem(&cur.parseList, str);
15378  if (interest) {
15379  p->iFlag++;
15380  if (interest > IL_LOW) {
15381  p->iLevel = interest;
15382  }
15383  }
15384  if (interest > maxInterest) {
15385  maxInterest = interest;
15386  }
15387  if (lDiags && whereList.used) {
15388  int i = 0;
15389  listSort(&whereList, SORT_BY_COUNT_ASC);
15390  printf("WINDOW for \"%s\": ", str);
15391  while ((p = listIterate(&whereList))) {
15392  if (i++ > 0) {
15393  printf(", ");
15394  }
15395  printf("%d+%d", p->bStart, p->bLen);
15396  }
15397  printf("\n");
15398  }
15399  listClear(&whereList, NO);
15400 #ifdef DEBUG
15401  if (lDiags) {
15402  printf("++ \"%s\" [int=%d]\n", str, interest);
15403  }
15404 #endif /* DEBUG */
15405 
15406  addLicence(cur.theMatches,str);
15407 
15408  return;
15409 }
15410 
15416 int famOPENLDAP(char *filetext, int size, int isML, int isPS)
15417 {
15418  int ret = 0;
15419 
15420  if (lmem[_tOPENLDAP]) {
15421  if (INFILE(_TITLE_OPENLDAP25)) {
15422  INTERESTING("OLDAP-2.5");
15423  ret = 1;
15424  }
15425  else if (INFILE(_TITLE_OPENLDAP26)) {
15426  INTERESTING("OLDAP-2.6");
15427  ret = 1;
15428  }
15429  else if (INFILE(_TITLE_OPENLDAP27)) {
15430  INTERESTING("OLDAP-2.7");
15431  ret = 1;
15432  }
15433  else if (INFILE(_TITLE_OPENLDAP28)) {
15434  INTERESTING("OLDAP-2.8");
15435  ret = 1;
15436  }
15437  else if (INFILE(_TITLE_OPENLDAP201)) {
15438  INTERESTING("OLDAP-2.0.1");
15439  ret = 1;
15440  }
15441  else if (INFILE(_TITLE_OPENLDAP20)) {
15442  INTERESTING("OLDAP-2.0");
15443  ret = 1;
15444  }
15445  else if (INFILE(_TITLE_OPENLDAP21)) {
15446  INTERESTING("OLDAP-2.1");
15447  ret = 1;
15448  }
15449  else if (INFILE(_TITLE_OPENLDAP221) || INFILE(_SPDX_OLDAP_221)) {
15450  INTERESTING("OLDAP-2.2.1");
15451  ret = 1;
15452  }
15453  else if (INFILE(_TITLE_OPENLDAP222) || INFILE(_SPDX_OLDAP_222)) {
15454  INTERESTING("OLDAP-2.2.2");
15455  ret = 1;
15456  }
15457  else if (INFILE(_TITLE_OPENLDAP22)) {
15458  INTERESTING("OLDAP-2.2");
15459  ret = 1;
15460  }
15461  else if (INFILE(_TITLE_OPENLDAP11)) {
15462  INTERESTING("OLDAP-1.1");
15463  ret = 1;
15464  }
15465  else if (INFILE(_TITLE_OPENLDAP23)) {
15466  INTERESTING("OLDAP-2.3");
15467  ret = 1;
15468  }
15469  else if (INFILE(_TITLE_OPENLDAP24)) {
15470  INTERESTING("OLDAP-2.4");
15471  ret = 1;
15472  }
15473  else if (INFILE(_TITLE_OPENLDAP12)) {
15474  INTERESTING("OLDAP-1.2");
15475  ret = 1;
15476  }
15477  else if (INFILE(_TITLE_OPENLDAP13)) {
15478  INTERESTING("OLDAP-1.3");
15479  ret = 1;
15480  }
15481  else if (INFILE(_TITLE_OPENLDAP14)) {
15482  INTERESTING("OLDAP-1.4");
15483  ret = 1;
15484  }
15485  else if (INFILE(_CR_OPENLDAP) && INFILE(_TITLE_OPENLDAP)) {
15486  INTERESTING("OLDAP");
15487  ret = 1;
15488  }
15489  }
15490  lmem[_fOPENLDAP] = ret;
15491  return(ret);
15492 }
15493 
15494 
15518 int checkUnclassified(char *filetext, int size, int score,
15519  int isML, int isPS, int nw)
15520 {
15521  char *buf;
15522  char *curptr;
15523  char *cp;
15524  int m = 0;
15525 #ifdef UNKNOWN_CHECK_DEBUG
15526  int pNum = 0;
15527 #endif /* UNKNOWN_CHECK_DEBUG */
15528  int i = 0;
15529 
15530 #ifdef PROC_TRACE
15531  traceFunc("== checkUnclassified(%p, %d, %d, %d, %d, %d)\n", filetext,
15532  size, score, isML, isPS, nw);
15533 #endif /* PROC_TRACE */
15534 
15535  /*
15536  * Based on experience, this is a good place to look for false-positives:
15537  *****
15538  * Occasionally IETF documents (RFCs, technical descriptions and the like)
15539  * have enough text to trip the unclassified-license detector falsely.
15540  * As a first quick check, see if there's an IETF copyright in the file
15541  * and if so, avoid this (somewhat expensive) check.
15542  *****
15543  * The "Debian social contract" has some very legal-looking verbage, too.
15544  */
15545  if (mCR_IETF()) {
15546  return(0);
15547  }
15548  if (INFILE(_LT_DEB_CONTRACT) || INFILE(_LT_DEB_CONTRACTref)){
15549  INTERESTING("Debian-social-DFSG");
15550  return(0);
15551  }
15552  if (INFILE(_LT_TROLLTECH)) {
15553  return(1);
15554  }
15555 
15556  /*
15557  * A Generic EULA 'qualifies' as an UnclassifiedLicense, or the clause 'License agreement' as an UnclassifiedLicense, check this
15558  * one before trying the word-matching magic checks (below).
15559  */
15560  gl.flags |= FL_SAVEBASE; /* save match buffer (if any) */
15561  m = INFILE(_LT_GEN_EULA) || INFILE(_LT_LG) || INFILE(_LT_GENERIC_UNCLASSIFIED);
15562  /* gl.flags & ~FL_SAVEBASE; CDB -- This makes no sense, given line above */
15563  if (m) {
15564  if (cur.licPara == NULL_STR && cur.matchBase) {
15565  saveLicenseParagraph(cur.matchBase, isML, isPS, NO,
15566  cur.regm.rm_so, cur.regm.rm_eo);
15567  }
15568  return(1);
15569  }
15570  checknw = nw;
15571  /*
15572  * Look for paragraphs of text that could be licenses. We'll check the
15573  * resulting text for 4 types of different words (all in proximity leads
15574  * us to believe it's a license of some sort). If we don't get a paragraph
15575  * to search based on the first set of words, look no further.
15576  */
15577 #ifdef UNKNOWN_CHECK_DEBUG
15578  printf("... first regex: \"%s\"\n", _REGEX(_LEGAL_first));
15579 #endif /* UNKNOWN_CHECK_DEBUG */
15580  if ((buf = getInstances(filetext, size, gl.uPsize, gl.uPsize,
15581  _REGEX(_LEGAL_first), YES)) == NULL_STR) {
15582 #ifdef UNKNOWN_CHECK_DEBUG
15583  printf("... getInstances returns NULL\n");
15584 #endif /* UNKNOWN_CHECK_DEBUG */
15585  return(0);
15586  }
15587  if (lDiags) {
15588  printRegexMatch(_LEGAL_first, NO);
15589  }
15590  /*
15591  * Without examining each paragraph, make sure the file contains the
15592  * components we're looking for... if not, don't check any further.
15593  */
15594  if (/*size > 102400 && */
15595  !match3(_LEGAL_first, buf, score, NO, isML, isPS)) {
15596 #ifdef UNKNOWN_CHECK_DEBUG
15597  printf("... first check fails\n");
15598 #endif /* UNKNOWN_CHECK_DEBUG */
15599  return(0);
15600  }
15601  /*
15602  * buf now points to a series of paragraphs that have 6 lines above
15603  * AND below the regex we've matched, PLUS a separator line between
15604  * each paragraph. The LAST paragraph doesn't have a separator-line.
15605  *****
15606  * For the sake of the search, make the separator line 'disappear'.
15607  */
15608  curptr = buf;
15609  while (idxGrep(_UTIL_XYZZY, curptr, 0)) {
15610  cp = curptr + cur.regm.rm_so;
15611  *cp = NULL_CHAR;
15612 #ifdef UNKNOWN_CHECK_DEBUG
15613  printf("DEBUG: paragraph #%d:\n[START-PARA]\n%s\n[END-PARA]\n",
15614  ++pNum, curptr);
15615 #endif /* UNKNOWN_CHECK_DEBUG */
15616  i++;
15617  /*
15618  * Now that we have our 'paragraph span', check the contents of the
15619  * paragraph for the other 3 groups of words. A match in EACH group
15620  * (plus other criteria checked, of course) means we've likely found
15621  * as-of-yet unclassified license.
15622  *****
15623  * A generic "no warranty" paragraph also looks like a license, so in
15624  * that case don't return a false positive.
15625  */
15626  if (match3(_LEGAL_first, curptr, score, YES, isML, isPS)) {
15627  saveUnclBufLocation(i);
15628  return(1);
15629  }
15630 #ifdef UNKNOWN_CHECK_DEBUG
15631  else {
15632  printf("DEBUG: match() returns 0, look again\n");
15633  }
15634 #endif /* UNKNOWN_CHECK_DEBUG */
15635  /*
15636  * NO-match means this paragraph doesn't contain the magic words we
15637  * seek. However, this file still _may_ contain the magic paragraph --
15638  * it'll be searched in this while-loop until either the magic OR
15639  * end-of-file is found)...
15640  */
15641  *cp++ = '='; /* reset line */
15642  if ((cp = findEol(cp)) == NULL_STR) {
15643  LOG_FATAL("Cannot find delimeter!")
15644  Bail(-__LINE__);
15645  }
15646  curptr = cp+1;
15647  }
15648  /*
15649  * One last buffer to try...
15650  */
15651 #ifdef UNKNOWN_CHECK_DEBUG
15652  printf("DEBUG: %s paragraph (#%d):\n[START-PARA]\n%s\n[END-PARA]\n",
15653  pNum == 0 ? "ONLY" : "LAST", ++pNum, curptr);
15654 #endif /* UNKNOWN_CHECK_DEBUG */
15655  if (match3(_LEGAL_first, curptr, score, YES, isML, isPS)) {
15656  saveUnclBufLocation(++i);
15657  return(1);
15658  }
15659  return(0);
15660 }
15661 
15662 
15666 void checkFileReferences(char *filetext, int size, int score, int kwbm,
15667  int isML, int isPS)
15668 {
15669  int i;
15670 
15671 #ifdef PROC_TRACE
15672  traceFunc("== checkFileReferences(%p, %d, %d, 0x%x, %d, %d)\n", filetext,
15673  size, score, kwbm, isML, isPS);
15674 #endif /* PROC_TRACE */
15675  for (i = 0; i < NSEECOPYING; i++) {
15676  if (INFILE(_SEECOPYING_first+i)) {
15677  if (lDebug) {
15678  (void) sprintf(name, "Gen-CPY-%d", ++i);
15679  INTERESTING(name);
15680  } else {
15681  INTERESTING("See-file.COPYING");
15682  }
15683  return;
15684  }
15685  }
15686  /* */
15687  for (i = 0; i < NSEELICENSE; i++) {
15688  if (INFILE(_SEELICENSE_first+i)) {
15689  if (lDebug) {
15690  (void) sprintf(name, "Gen-CPY-%d", ++i);
15691  INTERESTING(name);
15692  } else {
15693  INTERESTING("See-file.LICENSE");
15694  }
15695  return;
15696  }
15697  }
15698  /* */
15699  for (i = 0; i < NSEEREADME; i++) {
15700  if (INFILE(_SEEREADME_first+i)) {
15701  if (lDebug) {
15702  (void) sprintf(name, "Gen-CPY-%d", ++i);
15703  INTERESTING(name);
15704  } else {
15705  INTERESTING("See-file.README");
15706  }
15707  return;
15708  }
15709  }
15710  /* */
15711  for (i = 0; i < NSEEOTHER; i++) {
15712  if (INFILE(_SEEOTHER_first+i)) {
15713  if (lDebug) {
15714  (void) sprintf(name, "Gen-CPY-%d", ++i);
15715  INTERESTING(name);
15716  } else {
15717  INTERESTING("See-doc.OTHER");
15718  }
15719  return;
15720  }
15721  }
15722  /* */
15723  if (INFILE(_LT_SEE_OUTPUT_1)) {
15724  INTERESTING(lDebug ? "Gen-EXC-1" : "GNU-style.EXECUTE");
15725  }
15726 #if 0
15727  else if (INFILE(_LT_SEE_OUTPUT_2)) {
15728  INTERESTING(lDebug ? "Gen-EXC-2" : "Free-SW.run-COMMAND");
15729  } else if (INFILE(_LT_SEE_OUTPUT_3)) {
15730  INTERESTING(lDebug ? "Gen-EXC-3" : "Free-SW.run-COMMAND");
15731  }
15732 #endif
15733  if(HASTEXT(_LT_SEE_COPYING_LICENSE_1, REG_EXTENDED) || HASTEXT(_LT_SEE_COPYING_LICENSE_2, REG_EXTENDED)) {
15734  INTERESTING("See-file");
15735  }
15736  else if (HASTEXT(_LT_SEE_URL, REG_EXTENDED) || HASTEXT(_LT_SEE_URL_ref1, REG_EXTENDED) || HASTEXT(_LT_SEE_URL_ref2, REG_EXTENDED) || HASTEXT(_LT_SEE_URL_ref3, REG_EXTENDED)) {
15737  INTERESTING("See-URL");
15738  }
15739  return;
15740 
15741 #ifdef OLD_VERSION
15742  if (INFILE(_LT_SEE_COPYING_1)) {
15743  INTERESTING(lDebug ? "Gen-CPY-1" : "See-file.COPYING");
15744  }
15745  else if (INFILE(_LT_SEE_COPYING_2)) {
15746  INTERESTING(lDebug ? "Gen-CPY-2" : "See-file.COPYING");
15747  }
15748  else if (INFILE(_LT_SEE_COPYING_3)) {
15749  INTERESTING(lDebug ? "Gen-CPY-3" : "See-file.COPYING");
15750  }
15751  else if (INFILE(_LT_SEE_COPYING_4)) {
15752  INTERESTING(lDebug ? "Gen-CPY-4" : "See-file.COPYING");
15753  }
15754  else if (INFILE(_LT_SEE_COPYING_5)) {
15755  INTERESTING(lDebug ? "Gen-CPY-5" : "See-file.COPYING");
15756  }
15757  else if (INFILE(_LT_SEE_COPYING_6)) {
15758  INTERESTING(lDebug ? "Gen-CPY-6" : "See-file.COPYING");
15759  }
15760  else if (INFILE(_LT_SEE_COPYING_7)) {
15761  INTERESTING(lDebug ? "Gen-CPY-7" : "See-file.COPYING");
15762  }
15763  else if (INFILE(_LT_SEE_COPYING_8)) {
15764  INTERESTING(lDebug ? "Gen-CPY-8" : "See-file.COPYING");
15765  }
15766  else if (INFILE(_LT_SEE_COPYING_9)) {
15767  INTERESTING(lDebug ? "Gen-CPY-9" : "See-file.COPYING");
15768  }
15769  else if (INFILE(_LT_SEE_COPYING_10)) {
15770  INTERESTING(lDebug ? "Gen-CPY-10" : "See-file.COPYING");
15771  }
15772  else if (INFILE(_LT_SEE_COPYING_LAST1)) {
15773  INTERESTING(lDebug ? "Gen-CPY-L1" : "See-file.COPYING");
15774  }
15775  else if (INFILE(_LT_SEE_COPYING_LAST2)) {
15776  INTERESTING(lDebug ? "Gen-CPY-L2" : "See-file.COPYING");
15777  }
15778  else if (INFILE(_LT_SEE_LICENSE_1)) {
15779  INTERESTING(lDebug ? "Gen-LIC-1" : "See-file.LICENSE");
15780  }
15781  else if (INFILE(_LT_SEE_LICENSE_2)) {
15782  INTERESTING(lDebug ? "Gen-LIC-2" : "See-file.LICENSE");
15783  }
15784  else if (INFILE(_LT_SEE_LICENSE_3)) {
15785  INTERESTING(lDebug ? "Gen-LIC-3" : "See-file.LICENSE");
15786  }
15787  else if (INFILE(_LT_SEE_LICENSE_4)) {
15788  INTERESTING(lDebug ? "Gen-LIC-4" : "See-file.LICENSE");
15789  }
15790  else if (INFILE(_LT_SEE_LICENSE_5)) {
15791  INTERESTING(lDebug ? "Gen-LIC-5" : "See-file.LICENSE");
15792  }
15793  else if (INFILE(_LT_SEE_LICENSE_6)) {
15794  INTERESTING(lDebug ? "Gen-LIC-6" : "See-file.LICENSE");
15795  }
15796  else if (INFILE(_LT_SEE_LICENSE_7)) {
15797  INTERESTING(lDebug ? "Gen-LIC-7" : "See-file.LICENSE");
15798  }
15799  else if (INFILE(_LT_SEE_LICENSE_8)) {
15800  INTERESTING(lDebug ? "Gen-LIC-8" : "See-file.LICENSE");
15801  }
15802  else if (INFILE(_LT_SEE_LICENSE_9)) {
15803  INTERESTING(lDebug ? "Gen-LIC-9" : "See-file.LICENSE");
15804  }
15805  else if (INFILE(_LT_SEE_LICENSE_10)) {
15806  INTERESTING(lDebug ? "Gen-LIC-10" : "See-file.LICENSE");
15807  }
15808  else if (INFILE(_LT_SEE_LICENSE_LAST1)) {
15809  INTERESTING(lDebug ? "Gen-LIC-L1" : "See-file.LICENSE");
15810  }
15811  else if (INFILE(_LT_SEE_LICENSE_LAST2)) {
15812  INTERESTING(lDebug ? "Gen-LIC-L2" : "See-file.LICENSE");
15813  }
15814  else if (INFILE(_LT_SEE_README_1)) {
15815  INTERESTING(lDebug ? "Gen-RDM-1" : "See-file.README");
15816  }
15817  else if (INFILE(_LT_SEE_README_2)) {
15818  INTERESTING(lDebug ? "Gen-RDM-2" : "See-file.README");
15819  }
15820  else if (INFILE(_LT_SEE_README_3)) {
15821  INTERESTING(lDebug ? "Gen-RDM-3" : "See-file.README");
15822  }
15823  else if (INFILE(_LT_SEE_README_4)) {
15824  INTERESTING(lDebug ? "Gen-RDM-4" : "See-file.README");
15825  }
15826  else if (INFILE(_LT_SEE_README_5)) {
15827  INTERESTING(lDebug ? "Gen-RDM-5" : "See-file.README");
15828  }
15829  else if (INFILE(_LT_SEE_README_6)) {
15830  INTERESTING(lDebug ? "Gen-RDM-6" : "See-file.README");
15831  }
15832  else if (INFILE(_LT_SEE_README_7)) {
15833  INTERESTING(lDebug ? "Gen-RDM-7" : "See-file.README");
15834  }
15835  else if (INFILE(_LT_SEE_README_LAST1)) {
15836  INTERESTING(lDebug ? "Gen-RDM-L1" : "See-file.README");
15837  }
15838  else if (INFILE(_LT_SEE_README_LAST2)) {
15839  INTERESTING(lDebug ? "Gen-RDM-L2" : "See-file.README");
15840  }
15841  else if (INFILE(_LT_SEE_OTHER_1)) {
15842  INTERESTING(lDebug ? "Gen-OTH-1" : "See-doc.OTHER");
15843  }
15844  else if (INFILE(_LT_SEE_OTHER_2)) {
15845  INTERESTING(lDebug ? "Gen-OTH-2" : "See-doc.OTHER");
15846  }
15847  else if (INFILE(_LT_SEE_OTHER_3)) {
15848  INTERESTING(lDebug ? "Gen-OTH-3" : "See-doc.OTHER");
15849  }
15850  else if (INFILE(_LT_SEE_OTHER_4)) {
15851  INTERESTING(lDebug ? "Gen-OTH-4" : "See-doc.OTHER");
15852  }
15853  else if (INFILE(_LT_SEE_OTHER_5)) {
15854  INTERESTING(lDebug ? "Gen-OTH-5" : "See-doc.OTHER");
15855  }
15856  else if (INFILE(_LT_SEE_OTHER_6)) {
15857  INTERESTING(lDebug ? "Gen-OTH-6" : "See-doc.OTHER");
15858  }
15859  else if (INFILE(_LT_SEE_OTHER_7)) {
15860  INTERESTING(lDebug ? "Gen-OTH-7" : "See-doc.OTHER");
15861  }
15862  else if (INFILE(_LT_SEE_OTHER_8)) {
15863  INTERESTING(lDebug ? "Gen-OTH-8" : "See-doc.OTHER");
15864  }
15865  else if (INFILE(_LT_SEE_OTHER_9)) {
15866  INTERESTING(lDebug ? "Gen-OTH-9" : "See-doc.OTHER");
15867  }
15868  else if (INFILE(_LT_SEE_OTHER_10)) {
15869  INTERESTING(lDebug ? "Gen-OTH-10" : "See-doc.OTHER");
15870  }
15871  else if (INFILE(_LT_SEE_OTHER_11)) {
15872  INTERESTING(lDebug ? "Gen-OTH-11" : "See-doc.OTHER");
15873  }
15874  else if (INFILE(_LT_SEE_OTHER_12)) {
15875  INTERESTING(lDebug ? "Gen-OTH-12" : "See-doc.OTHER");
15876  }
15877  else if (INFILE(_LT_SEE_OTHER_13)) {
15878  INTERESTING(lDebug ? "Gen-OTH-13" : "See-doc.OTHER");
15879  }
15880  else if (INFILE(_LT_SEE_OTHER_14)) {
15881  INTERESTING(lDebug ? "Gen-OTH-14" : "See-doc.OTHER");
15882  }
15883  else if (INFILE(_LT_SEE_OTHER_15)) {
15884  INTERESTING(lDebug ? "Gen-OTH-15" : "See-doc.OTHER");
15885  }
15886  else if (INFILE(_LT_SEE_OTHER_LAST1)) {
15887  INTERESTING(lDebug ? "Gen-OTH-L1" : "See-doc.OTHER");
15888  }
15889  else if (INFILE(_LT_SEE_OTHER_LAST2)) {
15890  INTERESTING(lDebug ? "Gen-OTH-L2" : "See-doc.OTHER");
15891  }
15892  else if (INFILE(_LT_SEE_OTHER_LAST3)) {
15893  INTERESTING(lDebug ? "Gen-OTH-L3" : "See-doc.OTHER");
15894  }
15895  else if (INFILE(_LT_SEE_OUTPUT_1)) {
15896  INTERESTING(lDebug ? "Gen-EXC-1" : "GNU-style.interactive");
15897  }
15898  return;
15899 #endif /* OLD_VERSION */
15900 }
15901 
15902 
15903 int checkPublicDomain(char *filetext, int size, int score, int kwbm,
15904  int isML, int isPS)
15905 {
15906  int ret;
15907 
15908 #ifdef PROC_TRACE
15909  traceFunc("== checkPublicDomain(%p, %d, %d, 0x%x, %d, %d)\n", filetext,
15910  size, score, kwbm, isML, isPS);
15911 #endif /* PROC_TRACE */
15912 
15913  if (pd >= 0) { /* already tried? */
15914  return(pd);
15915  }
15916  ret = 0; /* default answer is "no" */
15917  if (INFILE(_LT_PUBDOM_CC)) {
15918  INTERESTING(lDebug ? "Pubdom(CC)" : "CC-PDDC");
15919  ret = 1;
15920  } else if (INFILE(_LT_PUBDOM_ODC)) {
15921  INTERESTING(lDebug ? "Pubdom(ODC)" : LS_PD_CLM);
15922  ret = 1;
15923  } else if (INFILE(_LT_PUBDOM_PDD)) {
15924  INTERESTING(lDebug ? "Pubdom(PDD)" : LS_PD_CLM);
15925  ret = 1;
15926  } else if (INFILE(_LT_PUBDOM_USE)) {
15927  INTERESTING(lDebug ? "Pubdom(use)" : LS_PD_CLM);
15928  ret = 1;
15929  } else if (HASTEXT(_LT_PUBDOM_NOTclaim, REG_EXTENDED)) {
15930  INTERESTING(LS_NOT_PD);
15931  ret = 1;
15932  } else if (INFILE(_CR_PUBDOM)) {
15933  if (INFILE(_LT_PUBDOMNOTcpyrt)) {
15934  INTERESTING(LS_PD_CLM);
15935  } else {
15936  INTERESTING(LS_PD_CPRT);
15937  }
15938  ret = 1;
15939  } else if (INFILE(_CR_NONE)) {
15940  INTERESTING(lDebug ? "Pubdom(no-CR)" : LS_PD_CLM);
15941  ret = 1;
15942  } else if (INFILE(_LT_UNLIN) || URL_INFILE(_URL_UNLINref) || URL_INFILE(_URL_UNLIN)
15943  || INFILE(_TITLE_UNLICENSE) || URL_INFILE(_URL_UNLICENSE)) {
15944  INTERESTING("Unlicense");
15945  ret = 1;
15946  } else if (INFILE(_LT_PUBDOM_1)) {
15947  INTERESTING(lDebug ? "Pubdom(1)" : LS_PD_CLM);
15948  ret = 1;
15949  } else if (INFILE(_LT_PUBDOM_2) && NOT_INFILE(_PHR_PUBLIC_FUNCT) && NOT_INFILE(_LT_NOTPUBDOM_1)) {
15950  INTERESTING(lDebug ? "Pubdom(2)" : LS_PD_CLM);
15951  ret = 1;
15952  /* "publicly available" is not a public domain dedication */
15953 #ifdef REMOVED_AS_TOO_BROAD
15954  } else if (INFILE(_LT_PUBDOM_4)) {
15955  INTERESTING(lDebug ? "Pubdom(4)" : LS_PD_CLM);
15956  ret = 1;
15957  } else if (INFILE(_LT_PUBDOM_5)) {
15958  INTERESTING(lDebug ? "Pubdom(5)" : LS_PD_CLM);
15959  ret = 1;
15960  } else if (INFILE(_LT_PUBDOM_6)) {
15961  INTERESTING(lDebug ? "No-more-copyright" : LS_PD_CLM);
15962  ret = 1;
15963 #endif // done removing too broad signatures
15964  } else if (INFILE(_LT_PUBDOM_7)) {
15965  INTERESTING(lDebug ? "Pubdom(7)" : LS_PD_CLM);
15966  ret = 1;
15967  } else if (INFILE(_LT_PUBDOM_8)) {
15968  INTERESTING(lDebug ? "Pubdom(8)" : LS_PD_CLM);
15969  ret = 1;
15970  } else if (INFILE(_LT_PUBDOM_9)) {
15971  INTERESTING(lDebug ? "Pubdom(9)" : LS_PD_CLM);
15972  ret = 1;
15973  } else if (INFILE(_LT_PUBDOM_10)) {
15974  if (INFILE(_LT_blessing)) {
15975  INTERESTING(lDebug ? "Pubdom(10)" : "blessing");
15976  }
15977  else {
15978  INTERESTING(lDebug ? "Pubdom(10)" : LS_PD_CLM);
15979  }
15980  ret = 1;
15981  } else if (INFILE(_URL_PUBDOM)) {
15982  INTERESTING(lDebug ? "Pubdom(URL)" : LS_PD_CLM);
15983  ret = 1;
15984  } else if (HASKW(kwbm, _KW_public_domain) && score <= 3) {
15985  INTERESTING(LS_PD_ONLY);
15986  ret = 1;
15987  }
15988  return(ret);
15989 }
15990 
15991 
15999 void checkCornerCases(char *filetext, int size, int score,
16000  int kwbm, int isML, int isPS, int nw, int force)
16001 {
16002 
16003 #ifdef PROC_TRACE
16004  traceFunc("== checkCornerCases(%p, %d, %d, %d, %d, %d, %d, %d)\n",
16005  filetext, size, score, kwbm, isML, isPS, nw, force);
16006 #endif /* PROC_TRACE */
16007 
16008  if (crCheck++) { /* only need to check this once */
16009  return;
16010  }
16011  if (INFILE(_LT_NOTATT_NOTBSD)) {
16012  LOWINTEREST("non-ATT-BSD");
16013  }
16014 
16015  /*
16016  * FINAL cases: (close to giving up) -- lowest-importance items
16017  */
16024  /*
16025  if (!(*licStr)) {
16026  if (HASTEXT(_TEXT_TRADEMARK, 0)) {
16027  LOWINTEREST(LS_TDMKONLY);
16028  }
16029  }
16030  */
16031  if (!(*licStr)) {
16032  /*
16033  * We may have matched something but ultimately determined there's nothing
16034  * significant or of any interest, so empty the list of any matches we may
16035  * have observed to this point.
16036  */
16037  listClear(&whereList, NO); /* force 'nothing to report' */
16038  }
16039  return;
16040 }
16041 
16042 int match3(int base, char *buf, int score, int save, int isML, int isPS)
16043 {
16044  int i;
16045  int j;
16046  char *cp;
16047  /* */
16048 #ifdef PROC_TRACE
16049 #ifdef PROC_TRACE_SWITCH
16050  if (gl.ptswitch)
16051 #endif /* PROC_TRACE_SWITCH */
16052  printf("== match3(%d, %p, %d, %d, %d, %d)\n", base, buf, score, save,
16053  isML, isPS);
16054 #else /* not PROC_TRACE */
16055 #ifdef UNKNOWN_CHECK_DEBUG
16056  printf("== match3(%d, %p, %d, %d, %d, %d)\n", base, buf, score, save,
16057  isML, isPS);
16058 #endif /* UNKNOWN_CHECK_DEBUG */
16059 #endif /* not PROC_TRACE */
16060  /* */
16061  for (i = 1; i <= 3; i++) {
16062  if (dbgIdxGrep(base+i, buf, (save && lDiags)) == 0) {
16063 #ifdef UNKNOWN_CHECK_DEBUG
16064  printf("match3: FAILED regex (%d)!\n", base+i);
16065 #endif /* UNKNOWN_CHECK_DEBUG */
16066  return(0);
16067  }
16068  }
16069 #ifdef UNKNOWN_CHECK_DEBUG
16070  printf("match3: Success (%s)!\n",
16071  (save ? "buffer-for-real" : "file-initial-check"));
16072 #endif /* UNKNOWN_CHECK_DEBUG */
16073  /*
16074  * Some "possible licenses" are technical descriptions that share some words
16075  * that typically appear in licenses (distribution, terms, permission(s)).
16076  *****
16077  * If we're checking a paragraph (e.g., "save" is non-zero), see if there are
16078  * other engineering-development-technical terms in the paragraph that tend
16079  * to NOT be present in licenses...
16080  */
16081  if (save) {
16082  for (j = i = 0, cp = buf; *cp; i++, cp++) {
16083  if (*cp & 0200) {
16084  j++;
16085  }
16086  }
16087 #ifdef UNKNOWN_CHECK_DEBUG
16088  printf("DEEBUG: %d bytes, %d 8-bit\n", i, j);
16089 #endif /* UNKNOWN_CHECK_DEBUG */
16090  if (j >= (i/2)) {
16091  if (lDiags) {
16092  printf("... no, >= 50 percent 8-bit characters\n");
16093  }
16094  return(0);
16095  }
16096  /*
16097  We need to allocate space for a doctored-up version of the candidate
16098  unknown-license paragraph, but it's ONLY used in this function. E.g.,
16099  make darn sure we free it up before exiting this function...
16100  */
16101  cp = copyString(buf, MTAG_TEXTPARA);
16102  doctorBuffer(cp, isML, isPS, NO);
16103  /*
16104  If we detected a no-warraty statement earlier, "checknw" is != 0.
16105  Look for a no-warrany statement in this candidate paragraph.
16106  If we find it, report failure for the paragraph and remember
16107  finding the no--warranty.
16108  */
16109  if (checknw && !idxGrep(checknw, cp, REG_ICASE|REG_EXTENDED)) {
16110  if (lDiags) {
16111  printf("... no, warranty regex %d\n", checknw);
16112  }
16113  checknw = 0;
16114  memFree(cp, MTAG_TEXTPARA);
16115  return(0);
16116  }
16117  /*
16118  False-positive-check: GNU/FSF template (often see in ".po"
16119  and ".c" files
16120 
16121  "This file is distributed under the same license as the
16122  package PACKAGE"
16123  */
16124  if (dbgIdxGrep(_LT_BOGUSTMPL, cp, lDiags)) {
16125  if (lDiags) {
16126  printf("... no, FSF-GNU template\n");
16127  }
16128  memFree(cp, MTAG_TEXTPARA);
16129  return(0);
16130  }
16131  /*
16132  * False-positive-check: GNU GPL preamble statements; these have been
16133  * "sprinkled" throughout files seen before, so check ALL of them.
16134  */
16135  if (dbgIdxGrep(_PHR_GNU_FREEDOM, cp, lDiags) ||
16136  dbgIdxGrep(_PHR_GNU_COPYING, cp, lDiags) ||
16137  dbgIdxGrep(_PHR_GNU_PROTECT, cp, lDiags)) {
16138  if (lDiags) {
16139  printf("... no, GNU-GPL preamble\n");
16140  }
16141  memFree(cp, MTAG_TEXTPARA);
16142  return(0);
16143  }
16144  if (lDiags) {
16145  printf("... candidate paragraph analysis:\n");
16146  }
16147  for (i = j = 0; i < NKEYWORDS; i++) {
16148  if (idxGrep_recordPositionDoctored(i + _KW_first, cp, REG_EXTENDED | REG_ICASE)) {
16149  if (lDiags) {
16150  printf("%s", j ? ", " : "KEYWORDS: ");
16151  printf("%s", _REGEX(i+_KW_first));
16152  }
16153  j++;
16154  }
16155  }
16156  if (lDiags) {
16157  if (j) {
16158  printf("\n");
16159  }
16160  printf("SCORES: para %d, file %d == %05.2f%% ", j,
16161  score, 100.0 * (float) j / (float) score);
16162  }
16163  /*
16164  Here, we guess that an UnclassifiedLicense exists in a paragraph
16165  when:
16166  + a paragraph has a keyword-score of at least 3 -OR-
16167  + ... a keyword-score of 2 *AND* is >= 50% of the file's
16168  total score
16169 
16170  It's likely we'll see a few false-positives with a
16171  keyword-score of 2 but there are cases where this works.
16172  We can filter out the 2-scores we see
16173  with the FILTER checks below...
16174  */
16175  if (j == 0) { /* no license-like keywords */
16176  if (lDiags) {
16177  printf("(ZERO legal keywords)\n");
16178  }
16179  memFree(cp, MTAG_TEXTPARA);
16180  return(0);
16181  }
16182  if (j >= 3 || (j == 2 && j*2 >= score)) {
16183  if (j >= 3 && lDiags) {
16184  printf("(LIKELY: para-score >= 2)\n");
16185  }
16186  else if (lDiags) {
16187  printf("(MAYBE: local percentage)\n");
16188  }
16189  }
16190  else {
16191  if (lDiags) {
16192  printf("(NOT LIKELY a license)\n");
16193 #if 0
16194 #endif
16195  printf("[FAILED]\n%s\n[/FAILED]\n", buf);
16196  }
16197  memFree(cp, MTAG_TEXTPARA);
16198  return(0);
16199  }
16200  /*
16201  Sure, there ARE paragraphs with these words that do NOT constitute a
16202  real license. Look for key words and phrases of them HERE. This list
16203  of filters will likely grow over time.
16204  */
16205  for (i = 0; i < NFILTER; i++) {
16206  if (dbgIdxGrep(_FILTER_first+i, buf, lDiags)) {
16207  if (lDiags) {
16208  printf("!! NO-LIC: filter %d\n", ++i);
16209  }
16210  memFree(cp, MTAG_TEXTPARA);
16211  return(0);
16212  }
16213  }
16214  if (cur.licPara == NULL_STR) {
16215  saveLicenseParagraph(buf, isML, isPS, YES, -1, -1);
16216  }
16217  memFree(cp, MTAG_TEXTPARA);
16218  }
16219 #ifdef UNKNOWN_CHECK_DEBUG
16220  else {
16221  printf("match3: Initial-check only (save == %d)\n", save);
16222  }
16223 #endif /* UNKNOWN_CHECK_DEBUG */
16224  return(1);
16225 }
16226 
16227 void saveLicenseParagraph(char *mtext, int isML, int isPS, int entireBuf,
16228  int mstart, int mend)
16229 {
16230  char *cp;
16231  char *start;
16232  int index=0;
16233  int len;
16234  int avail;
16235  if(!mtext)
16236  {
16237  LOG_FATAL("called saveLicenseParagraph without text")
16238  Bail(-__LINE__);
16239  }
16240  start = copyString(mtext, MTAG_TEXTPARA);
16241 #ifdef PROC_TRACE
16242 #ifdef PROC_TRACE_SWITCH
16243  if (gl.ptswitch)
16244 #endif /* PROC_TRACE_SWITCH */
16245  printf("== saveLicenseParagraph(%p, %d, %d, %d, %d, %d)\n", mtext, isML,
16246  isPS, entireBuf, mstart, mend);
16247 #endif /* PROC_TRACE */
16248  /* */
16249  if (entireBuf) {
16250  cur.licPara = start;
16251  } else {
16252  avail = strlen(start);
16253  /* cur.regm may hold offsets into a buffer other than mtext */
16254  if (avail <= 0 || mstart < 0 || mend < mstart || mend > avail) {
16255  memFree(start, MTAG_TEXTPARA);
16256  return;
16257  }
16258  if (mstart < 50) {
16259  len = mend + 80;
16260  } else {
16261  len = mend + 130 - mstart;
16262  index = mstart - 50;
16263  }
16264  if (len > avail - index) {
16265  len = avail - index;
16266  }
16267  cur.licPara = memAlloc(len + 9, MTAG_TEXTPARA);
16268  (void) strcpy(cur.licPara, "... ");
16269  (void) strncpy(cur.licPara + 4, start + index, len);
16270  (void) strcpy(cur.licPara + len + 4, " ...");
16271  memFree(start, MTAG_TEXTPARA);
16272  }
16273 
16274  /*
16275  * Convert double-line-feed chars ("\r" and "\n" combos) to a single "\n"
16276  */
16277  for (cp = cur.licPara; *cp; cp++) {
16278  if ((*cp == '\n' || *cp == '\r') &&
16279  (*(cp+1) == '\r' || *(cp+1) == '\n')) {
16280  *cp = ' ';
16281  *(cp+1) = '\n';
16282  }
16283  }
16284  if (lDiags) {
16285  printf("[PERHAPS] (%p)\n%s\n[/PERHAPS]\n", cur.licPara, cur.licPara);
16286  }
16287  return;
16288 }
16289 
16298 void spdxReference(char *filetext, int size, int isML, int isPS)
16299 {
16300  /* no _SPDX_ footprint matches unless this prefix does; INFILE caches it */
16301  int hasSpdxDecl = INFILE(_PHR_SPDX_DECLARATION);
16302 
16303  if ((hasSpdxDecl && INFILE(_SPDX_Glide))) {
16304  INTERESTING("Glide");
16305  }
16306  if ((hasSpdxDecl && INFILE(_SPDX_Abstyles))) {
16307  INTERESTING("Abstyles");
16308  }
16309  if ((hasSpdxDecl && INFILE(_SPDX_AFL_11))) {
16310  INTERESTING("AFL-1.1");
16311  }
16312  if ((hasSpdxDecl && INFILE(_SPDX_AFL_12))) {
16313  INTERESTING("AFL-1.2");
16314  }
16315  if ((hasSpdxDecl && INFILE(_SPDX_AFL_20))) {
16316  INTERESTING("AFL-2.0");
16317  }
16318  if ((hasSpdxDecl && INFILE(_SPDX_AFL_21))) {
16319  INTERESTING("AFL-2.1");
16320  }
16321  if ((hasSpdxDecl && INFILE(_SPDX_AFL_30))) {
16322  INTERESTING("AFL-3.0");
16323  }
16324  if ((hasSpdxDecl && INFILE(_SPDX_AMPAS))) {
16325  INTERESTING("AMPAS");
16326  }
16327  if ((hasSpdxDecl && INFILE(_SPDX_APL_10))) {
16328  INTERESTING("APL-1.0");
16329  }
16330  if ((hasSpdxDecl && INFILE(_SPDX_Adobe_Glyph))) {
16331  INTERESTING("Adobe-Glyph");
16332  }
16333  if ((hasSpdxDecl && INFILE(_SPDX_APAFML))) {
16334  INTERESTING("APAFML");
16335  }
16336  if ((hasSpdxDecl && INFILE(_SPDX_Adobe_2006))) {
16337  INTERESTING("Adobe-2006");
16338  }
16339  if ((hasSpdxDecl && INFILE(_SPDX_Afmparse))) {
16340  INTERESTING("Afmparse");
16341  }
16342  if ((hasSpdxDecl && INFILE(_SPDX_Aladdin))) {
16343  INTERESTING("Aladdin");
16344  }
16345  if ((hasSpdxDecl && INFILE(_SPDX_ADSL))) {
16346  INTERESTING("ADSL");
16347  }
16348  if ((hasSpdxDecl && INFILE(_SPDX_AMDPLPA))) {
16349  INTERESTING("AMDPLPA");
16350  }
16351  if ((hasSpdxDecl && INFILE(_SPDX_ANTLR_PD))) {
16352  INTERESTING("ANTLR-PD");
16353  }
16354  if ((hasSpdxDecl && INFILE(_SPDX_AML))) {
16355  INTERESTING("AML");
16356  }
16357  if ((hasSpdxDecl && INFILE(_SPDX_APSL_10))) {
16358  INTERESTING("APSL-1.0");
16359  }
16360  if ((hasSpdxDecl && INFILE(_SPDX_APSL_11))) {
16361  INTERESTING("APSL-1.1");
16362  }
16363  if ((hasSpdxDecl && INFILE(_SPDX_APSL_12))) {
16364  INTERESTING("APSL-1.2");
16365  }
16366  if ((hasSpdxDecl && INFILE(_SPDX_APSL_20))) {
16367  INTERESTING("APSL-2.0");
16368  }
16369  if ((hasSpdxDecl && INFILE(_SPDX_Artistic_10_Perl))) {
16370  INTERESTING("Artistic-1.0-Perl");
16371  }
16372  else if ((hasSpdxDecl && INFILE(_SPDX_Artistic_10_cl8))) {
16373  INTERESTING("Artistic-1.0-cl8");
16374  }
16375  else if ((hasSpdxDecl && INFILE(_SPDX_Artistic_10))) {
16376  INTERESTING("Artistic-1.0");
16377  }
16378  if ((hasSpdxDecl && INFILE(_SPDX_Artistic_20))) {
16379  INTERESTING("Artistic-2.0");
16380  }
16381  /* RPSL lists this license as compatible with it */
16382  if ((hasSpdxDecl && INFILE(_SPDX_AAL))
16383  || (INFILE(_TITLE_AAL_NAMED) && NOT_INFILE(_PHR_RPSL_COMPATIBLE_ONLY))) {
16384  INTERESTING("AAL");
16385  }
16386  /* "CMU License" names MIT-CMU, but also points at a license reproduced
16387  below */
16388  if (!lmem[_mCMU] && INFILE(_TITLE_MIT_CMU_NAMED)
16389  && NOT_INFILE(_PHR_CMU_LICENSE_POINTER)) {
16390  INTERESTING("MIT-CMU");
16391  lmem[_mCMU] = 1;
16392  }
16393  /* the name alone; the sell variant adds a suffix */
16394  if (INFILE(_PHR_HISTORICAL_SELL)) {
16395  INTERESTING("HPND-sell-variant");
16396  }
16397  else if (INFILE(_PHR_HISTORICAL)) {
16398  INTERESTING("HPND");
16399  }
16400  if (INFILE(_TITLE_FDK_AAC_NAMED) || (hasSpdxDecl && INFILE(_SPDX_FDK_AAC))) {
16401  INTERESTING("AndroidFraunhofer.Commercial");
16402  }
16403  if ((hasSpdxDecl && INFILE(_SPDX_SHL_20))) {
16404  INTERESTING("SHL-2.0");
16405  }
16406  if ((hasSpdxDecl && INFILE(_SPDX_SHL_21))) {
16407  INTERESTING("SHL-2.1");
16408  }
16409  if ((hasSpdxDecl && INFILE(_SPDX_3D_Slicer_1_0))) {
16410  INTERESTING("3D-Slicer-1.0");
16411  }
16412  if ((hasSpdxDecl && INFILE(_SPDX_Adobe_Utopia))) {
16413  INTERESTING("Adobe-Utopia");
16414  }
16415  if ((hasSpdxDecl && INFILE(_SPDX_ALGLIB_Documentation))) {
16416  INTERESTING("ALGLIB-Documentation");
16417  }
16418  if ((hasSpdxDecl && INFILE(_SPDX_App_s2p))) {
16419  INTERESTING("App-s2p");
16420  }
16421  if ((hasSpdxDecl && INFILE(_SPDX_Arphic_1999))) {
16422  INTERESTING("Arphic-1999");
16423  }
16424  if ((hasSpdxDecl && INFILE(_SPDX_Aspell_RU))) {
16425  INTERESTING("Aspell-RU");
16426  }
16427  if ((hasSpdxDecl && INFILE(_SPDX_ASWF_Digital_Assets_1_0))) {
16428  INTERESTING("ASWF-Digital-Assets-1.0");
16429  }
16430  if ((hasSpdxDecl && INFILE(_SPDX_ASWF_Digital_Assets_1_1))) {
16431  INTERESTING("ASWF-Digital-Assets-1.1");
16432  }
16433  if ((hasSpdxDecl && INFILE(_SPDX_Brian_Gladman_3_Clause))) {
16434  INTERESTING("Brian-Gladman-3-Clause");
16435  }
16436  if ((hasSpdxDecl && INFILE(_SPDX_Brian_Gladman_2_Clause))) {
16437  INTERESTING("Brian-Gladman-2-Clause");
16438  }
16439  if ((hasSpdxDecl && INFILE(_SPDX_BUSL_1_1))) {
16440  INTERESTING("BUSL-1.1");
16441  }
16442  if ((hasSpdxDecl && INFILE(_SPDX_C_UDA_1_0))) {
16443  INTERESTING("C-UDA-1.0");
16444  }
16445  if ((hasSpdxDecl && INFILE(_SPDX_CAPEC_tou))) {
16446  INTERESTING("CAPEC-tou");
16447  }
16448  if ((hasSpdxDecl && INFILE(_SPDX_CDLA_Permissive_2_0))) {
16449  INTERESTING("CDLA-Permissive-2.0");
16450  }
16451  if ((hasSpdxDecl && INFILE(_SPDX_CFITSIO))) {
16452  INTERESTING("CFITSIO");
16453  }
16454  if ((hasSpdxDecl && INFILE(_SPDX_check_cvs))) {
16455  INTERESTING("check-cvs");
16456  }
16457  if ((hasSpdxDecl && INFILE(_SPDX_COIL_1_0))) {
16458  INTERESTING("COIL-1.0");
16459  }
16460  if ((hasSpdxDecl && INFILE(_SPDX_Cronyx))) {
16461  INTERESTING("Cronyx");
16462  }
16463  if ((hasSpdxDecl && INFILE(_SPDX_Community_Spec_1_0))) {
16464  INTERESTING("Community-Spec-1.0");
16465  }
16466  if ((hasSpdxDecl && INFILE(_SPDX_cve_tou))) {
16467  INTERESTING("cve-tou");
16468  }
16469  if ((hasSpdxDecl && INFILE(_SPDX_Game_Programming_Gems))) {
16470  INTERESTING("Game-Programming-Gems");
16471  }
16472  if ((hasSpdxDecl && INFILE(_SPDX_DL_DE_BY_2_0))) {
16473  INTERESTING("DL-DE-BY-2.0");
16474  }
16475  if ((hasSpdxDecl && INFILE(_SPDX_DL_DE_ZERO_2_0))) {
16476  INTERESTING("DL-DE-ZERO-2.0");
16477  }
16478  if ((hasSpdxDecl && INFILE(_SPDX_DRL_1_0))) {
16479  INTERESTING("DRL-1.0");
16480  }
16481  if ((hasSpdxDecl && INFILE(_SPDX_Elastic_2_0))) {
16482  INTERESTING("Elastic-2.0");
16483  }
16484  if ((hasSpdxDecl && INFILE(_SPDX_ESA_PL_permissive_2_4))) {
16485  INTERESTING("ESA-PL-permissive-2.4");
16486  }
16487  if ((hasSpdxDecl && INFILE(_SPDX_ESA_PL_strong_copyleft_2_4))) {
16488  INTERESTING("ESA-PL-strong-copyleft-2.4");
16489  }
16490  if ((hasSpdxDecl && INFILE(_SPDX_FreeBSD_DOC))) {
16491  INTERESTING("FreeBSD-DOC");
16492  }
16493  if ((hasSpdxDecl && INFILE(_SPDX_Graphics_Gems))) {
16494  INTERESTING("Graphics-Gems");
16495  }
16496  if ((hasSpdxDecl && INFILE(_SPDX_HDF5))) {
16497  INTERESTING("HDF5");
16498  }
16499  if ((hasSpdxDecl && INFILE(_SPDX_hdparm))) {
16500  INTERESTING("hdparm");
16501  }
16502  if ((hasSpdxDecl && INFILE(_SPDX_hyphen_bulgarian))) {
16503  INTERESTING("hyphen-bulgarian");
16504  }
16505  if ((hasSpdxDecl && INFILE(_SPDX_IEC_Code_Components_EULA))) {
16506  INTERESTING("IEC-Code-Components-EULA");
16507  }
16508  if ((hasSpdxDecl && INFILE(_SPDX_InnoSetup))) {
16509  INTERESTING("InnoSetup");
16510  }
16511  if ((hasSpdxDecl && INFILE(_SPDX_jove))) {
16512  INTERESTING("jove");
16513  }
16514  if ((hasSpdxDecl && INFILE(_SPDX_Knuth_CTAN))) {
16515  INTERESTING("Knuth-CTAN");
16516  }
16517  if ((hasSpdxDecl && INFILE(_SPDX_xlock))) {
16518  INTERESTING("xlock");
16519  }
16520  if ((hasSpdxDecl && INFILE(_SPDX_LZMA_SDK_9_22))) {
16521  INTERESTING("LZMA-SDK-9.22");
16522  }
16523  if ((hasSpdxDecl && INFILE(_SPDX_mplus))) {
16524  INTERESTING("mplus");
16525  }
16526  if ((hasSpdxDecl && INFILE(_SPDX_magaz))) {
16527  INTERESTING("magaz");
16528  }
16529  if ((hasSpdxDecl && INFILE(_SPDX_mailprio))) {
16530  INTERESTING("mailprio");
16531  }
16532  if ((hasSpdxDecl && INFILE(_SPDX_MMPL_1_0_1))) {
16533  INTERESTING("MMPL-1.0.1");
16534  }
16535  if ((hasSpdxDecl && INFILE(_SPDX_Minpack))) {
16536  INTERESTING("Minpack");
16537  }
16538  if ((hasSpdxDecl && INFILE(_SPDX_Advanced_Cryptics_Dictionary))) {
16539  INTERESTING("Advanced-Cryptics-Dictionary");
16540  }
16541  if ((hasSpdxDecl && INFILE(_SPDX_pkgconf))) {
16542  INTERESTING("pkgconf");
16543  }
16544  if ((hasSpdxDecl && INFILE(_SPDX_Xfig))) {
16545  INTERESTING("Xfig");
16546  }
16547  if ((hasSpdxDecl && INFILE(_SPDX_MMIXware))) {
16548  INTERESTING("MMIXware");
16549  }
16550  if ((hasSpdxDecl && INFILE(_SPDX_mpi_permissive))) {
16551  INTERESTING("mpi-permissive");
16552  }
16553  if ((hasSpdxDecl && INFILE(_SPDX_MS_LPL))) {
16554  INTERESTING("MS-LPL");
16555  }
16556  if ((hasSpdxDecl && INFILE(_SPDX_NAIST_2003))) {
16557  INTERESTING("NAIST-2003");
16558  }
16559  if ((hasSpdxDecl && INFILE(_SPDX_NCBI_PD))) {
16560  INTERESTING("NCBI-PD");
16561  }
16562  if ((hasSpdxDecl && INFILE(_SPDX_NICTA_1_0))) {
16563  INTERESTING("NICTA-1.0");
16564  }
16565  if ((hasSpdxDecl && INFILE(_SPDX_NLOD_2_0))) {
16566  INTERESTING("NLOD-2.0");
16567  }
16568  if ((hasSpdxDecl && INFILE(_SPDX_CMU_Mach_nodoc))) {
16569  INTERESTING("CMU-Mach-nodoc");
16570  }
16571  if ((hasSpdxDecl && INFILE(_SPDX_NTIA_PD))) {
16572  INTERESTING("NTIA-PD");
16573  }
16574  if ((hasSpdxDecl && INFILE(_SPDX_OFFIS))) {
16575  INTERESTING("OFFIS");
16576  }
16577  if ((hasSpdxDecl && INFILE(_SPDX_OpenMDW_1_0))) {
16578  INTERESTING("OpenMDW-1.0");
16579  }
16580  if ((hasSpdxDecl && INFILE(_SPDX_OpenPBS_2_3))) {
16581  INTERESTING("OpenPBS-2.3");
16582  }
16583  if ((hasSpdxDecl && INFILE(_SPDX_OpenVision))) {
16584  INTERESTING("OpenVision");
16585  }
16586  if ((hasSpdxDecl && INFILE(_SPDX_OPL_UK_3_0))) {
16587  INTERESTING("OPL-UK-3.0");
16588  }
16589  if ((hasSpdxDecl && INFILE(_SPDX_OSC_1_0))) {
16590  INTERESTING("OSC-1.0");
16591  }
16592  if ((hasSpdxDecl && INFILE(_SPDX_ParaType_Free_Font_1_3))) {
16593  INTERESTING("ParaType-Free-Font-1.3");
16594  }
16595  if ((hasSpdxDecl && INFILE(_SPDX_Mackerras_3_Clause_acknowledgment))) {
16596  INTERESTING("Mackerras-3-Clause-acknowledgment");
16597  }
16598  if ((hasSpdxDecl && INFILE(_SPDX_pnmstitch))) {
16599  INTERESTING("pnmstitch");
16600  }
16601  if ((hasSpdxDecl && INFILE(_SPDX_radvd))) {
16602  INTERESTING("radvd");
16603  }
16604  if ((hasSpdxDecl && INFILE(_SPDX_SGP4))) {
16605  INTERESTING("SGP4");
16606  }
16607  if ((hasSpdxDecl && INFILE(_SPDX_SMAIL_GPL))) {
16608  INTERESTING("SMAIL-GPL");
16609  }
16610  if ((hasSpdxDecl && INFILE(_SPDX_ssh_keyscan))) {
16611  INTERESTING("ssh-keyscan");
16612  }
16613  if ((hasSpdxDecl && INFILE(_SPDX_SUL_1_0))) {
16614  INTERESTING("SUL-1.0");
16615  }
16616  if ((hasSpdxDecl && INFILE(_SPDX_TGPPL_1_0))) {
16617  INTERESTING("TGPPL-1.0");
16618  }
16619  if ((hasSpdxDecl && INFILE(_SPDX_ThirdEye))) {
16620  INTERESTING("ThirdEye");
16621  }
16622  if ((hasSpdxDecl && INFILE(_SPDX_TPL_1_0))) {
16623  INTERESTING("TPL-1.0");
16624  }
16625  if ((hasSpdxDecl && INFILE(_SPDX_TPDL))) {
16626  INTERESTING("TPDL");
16627  }
16628  if ((hasSpdxDecl && INFILE(_SPDX_TTYP0))) {
16629  INTERESTING("TTYP0");
16630  }
16631  if ((hasSpdxDecl && INFILE(_SPDX_Ubuntu_font_1_0))) {
16632  INTERESTING("Ubuntu-font-1.0");
16633  }
16634  if ((hasSpdxDecl && INFILE(_SPDX_WTFNMFPL))) {
16635  INTERESTING("WTFNMFPL");
16636  }
16637  if ((hasSpdxDecl && INFILE(_SPDX_Adobe_Display_PostScript))) {
16638  INTERESTING("Adobe-Display-PostScript");
16639  }
16640  if ((hasSpdxDecl && INFILE(_SPDX_Bitstream_Charter))) {
16641  INTERESTING("Bitstream-Charter");
16642  }
16643  if ((hasSpdxDecl && INFILE(_SPDX_dtoa))) {
16644  INTERESTING("dtoa");
16645  }
16646  if ((hasSpdxDecl && INFILE(_SPDX_SGI_OpenGL))) {
16647  INTERESTING("SGI-OpenGL");
16648  }
16649  if ((hasSpdxDecl && INFILE(_SPDX_xzoom))) {
16650  INTERESTING("xzoom");
16651  }
16652  /* full license name; RPSL lists its compatible licenses the same way */
16653  if (NOT_INFILE(_PHR_RPSL_COMPATIBLE_ONLY)) {
16654  if (INFILE(_TITLE_FN_FSFUL)) {
16655  INTERESTING("FSFUL");
16656  }
16657  if (INFILE(_TITLE_FN_LAL_1_2)) {
16658  INTERESTING("LAL-1.2");
16659  }
16660  if (INFILE(_TITLE_FN_AMPAS)) {
16661  INTERESTING("AMPAS");
16662  }
16663  if (INFILE(_TITLE_FN_BLESSING)) {
16664  INTERESTING("blessing");
16665  }
16666  if (INFILE(_TITLE_FN_CDLA_PERMISSIVE_1_0)) {
16667  INTERESTING("CDLA-Permissive-1.0");
16668  }
16669  if (INFILE(_TITLE_FN_CDLA_PERMISSIVE_2_0)) {
16670  INTERESTING("CDLA-Permissive-2.0");
16671  }
16672  if (INFILE(_TITLE_FN_CDLA_SHARING_1_0)) {
16673  INTERESTING("CDLA-Sharing-1.0");
16674  }
16675  if (INFILE(_TITLE_FN_MIT_ADVERTISING)) {
16676  INTERESTING("MIT-advertising");
16677  }
16678  if (INFILE(_TITLE_FN_FSFULLR)) {
16679  INTERESTING("FSFULLR");
16680  }
16681  if (INFILE(_TITLE_FN_SPENCER_99)) {
16682  INTERESTING("Spencer-99");
16683  }
16684  if (INFILE(_TITLE_FN_IBM_PIBS)) {
16685  INTERESTING("IBM-pibs");
16686  }
16687  if (INFILE(_TITLE_FN_LGPLLR)) {
16688  INTERESTING("LGPLLR");
16689  }
16690  if (INFILE(_TITLE_FN_LIBPNG_2_0)) {
16691  INTERESTING("libpng-2.0");
16692  }
16693  if (INFILE(_TITLE_FN_MULANPSL_2_0)) {
16694  INTERESTING("MulanPSL-2.0");
16695  }
16696  if (INFILE(_TITLE_FN_NGPL)) {
16697  INTERESTING("NGPL");
16698  }
16699  if (INFILE(_TITLE_FN_OGTSL)) {
16700  INTERESTING("OGTSL");
16701  }
16702  if (INFILE(_TITLE_FN_OLDAP_2_2_2)) {
16703  INTERESTING("OLDAP-2.2.2");
16704  }
16705  if (INFILE(_TITLE_FN_RSCPL)) {
16706  INTERESTING("RSCPL");
16707  }
16708  if (INFILE(_TITLE_FN_SWL)) {
16709  INTERESTING("SWL");
16710  }
16711  if (INFILE(_TITLE_FN_SSH_SHORT)) {
16712  INTERESTING("SSH-short");
16713  }
16714  if (INFILE(_TITLE_FN_UNICODE_DFS_2015)) {
16715  INTERESTING("Unicode-DFS-2015");
16716  }
16717  if (INFILE(_TITLE_FN_UNICODE_DFS_2016)) {
16718  INTERESTING("Unicode-DFS-2016");
16719  }
16720  if (INFILE(_TITLE_FN_UNICODE_TOU)) {
16721  INTERESTING("Unicode-TOU");
16722  }
16723  if (INFILE(_TITLE_FN_AMDPLPA)) {
16724  INTERESTING("AMDPLPA");
16725  }
16726  if (INFILE(_TITLE_FN_APACHE_1_0)) {
16727  INTERESTING("Apache-1.0");
16728  }
16729  if (INFILE(_TITLE_FN_BSD_2_CLAUSE_VIEWS)) {
16730  INTERESTING("BSD-2-Clause-Views");
16731  }
16732  if (INFILE(_TITLE_FN_BSD_3_CLAUSE_OPEN_MPI)) {
16733  INTERESTING("BSD-3-Clause-Open-MPI");
16734  }
16735  if (INFILE(_TITLE_FN_BSD_3_CLAUSE_ATTRIBUTION)) {
16736  INTERESTING("BSD-3-Clause-Attribution");
16737  }
16738  if (INFILE(_TITLE_FN_BSD_PROTECTION)) {
16739  INTERESTING("BSD-Protection");
16740  }
16741  if (INFILE(_TITLE_FN_BSD_SOURCE_CODE)) {
16742  INTERESTING("BSD-Source-Code");
16743  }
16744  if (INFILE(_TITLE_FN_CNRI_PYTHON_GPL_COMPATIBLE)) {
16745  INTERESTING("CNRI-Python-GPL-Compatible");
16746  }
16747  if (INFILE(_TITLE_FN_EGENIX)) {
16748  INTERESTING("eGenix");
16749  }
16750  if (INFILE(_TITLE_FN_MIT_ENNA)) {
16751  INTERESTING("MIT-enna");
16752  }
16753  if (INFILE(_TITLE_FN_EUDATAGRID)) {
16754  INTERESTING("EUDatagrid");
16755  }
16756  if (INFILE(_TITLE_FN_OPENMARKET)) {
16757  INTERESTING("OpenMarket");
16758  }
16759  if (INFILE(_TITLE_FN_FREEIMAGE)) {
16760  INTERESTING("FreeImage");
16761  }
16762  if (INFILE(_TITLE_FN_FSFAP)) {
16763  INTERESTING("FSFAP");
16764  }
16765  if (INFILE(_TITLE_FN_GLIDE)) {
16766  INTERESTING("Glide");
16767  }
16768  if (INFILE(_TITLE_FN_HASKELLREPORT)) {
16769  INTERESTING("HaskellReport");
16770  }
16771  if (INFILE(_TITLE_FN_INTEL_ACPI)) {
16772  INTERESTING("Intel-ACPI");
16773  }
16774  if (INFILE(_TITLE_FN_JPNIC)) {
16775  INTERESTING("JPNIC");
16776  }
16777  if (INFILE(_TITLE_FN_BSD_3_CLAUSE_LBNL)) {
16778  INTERESTING("BSD-3-Clause-LBNL");
16779  }
16780  if (INFILE(_TITLE_FN_LINUX_OPENIB)) {
16781  INTERESTING("Linux-OpenIB");
16782  }
16783  if (INFILE(_TITLE_FN_MIT_0)) {
16784  INTERESTING("MIT-0");
16785  }
16786  if (INFILE(_TITLE_FN_MOTOSOTO)) {
16787  INTERESTING("Motosoto");
16788  }
16789  if (INFILE(_TITLE_FN_MTLL)) {
16790  INTERESTING("MTLL");
16791  }
16792  if (INFILE(_TITLE_FN_NLPL)) {
16793  INTERESTING("NLPL");
16794  }
16795  if (INFILE(_TITLE_FN_SSH_OPENSSH)) {
16796  INTERESTING("SSH-OpenSSH");
16797  }
16798  if (INFILE(_TITLE_FN_XNET)) {
16799  INTERESTING("Xnet");
16800  }
16801  if (INFILE(_TITLE_FN_SENDMAIL_8_23)) {
16802  INTERESTING("Sendmail-8.23");
16803  }
16804  if (INFILE(_TITLE_FN_SMPPL)) {
16805  INTERESTING("SMPPL");
16806  }
16807  if (INFILE(_TITLE_FN_TCP_WRAPPERS)) {
16808  INTERESTING("TCP-wrappers");
16809  }
16810  if (INFILE(_TITLE_FN_TOSL)) {
16811  INTERESTING("TOSL");
16812  }
16813  if (INFILE(_TITLE_FN_VOSTROM)) {
16814  INTERESTING("VOSTROM");
16815  }
16816  if (INFILE(_TITLE_FN_ABSTYLES)) {
16817  INTERESTING("Abstyles");
16818  }
16819  if (INFILE(_TITLE_FN_AFMPARSE)) {
16820  INTERESTING("Afmparse");
16821  }
16822  if (INFILE(_TITLE_FN_GIFTWARE)) {
16823  INTERESTING("Giftware");
16824  }
16825  if (INFILE(_TITLE_FN_BAHYPH)) {
16826  INTERESTING("Bahyph");
16827  }
16828  if (INFILE(_TITLE_FN_BARR)) {
16829  INTERESTING("Barr");
16830  }
16831  if (INFILE(_TITLE_FN_BORCEUX)) {
16832  INTERESTING("Borceux");
16833  }
16834  if (INFILE(_TITLE_FN_BSD_1_CLAUSE)) {
16835  INTERESTING("BSD-1-Clause");
16836  }
16837  if (INFILE(_TITLE_FN_BSD_4_CLAUSE_SHORTENED)) {
16838  INTERESTING("BSD-4-Clause-Shortened");
16839  }
16840  if (INFILE(_TITLE_FN_BSD_2_CLAUSE_PATENT)) {
16841  INTERESTING("BSD-2-Clause-Patent");
16842  }
16843  if (INFILE(_TITLE_FN_BSD_2_CLAUSE_NETBSD)) {
16844  INTERESTING("BSD-2-Clause-NetBSD");
16845  }
16846  if (INFILE(_TITLE_FN_0BSD)) {
16847  INTERESTING("0BSD");
16848  }
16849  if (INFILE(_TITLE_FN_CALDERA)) {
16850  INTERESTING("Caldera");
16851  }
16852  if (INFILE(_TITLE_FN_BSD_3_CLAUSE_CLEAR)) {
16853  INTERESTING("BSD-3-Clause-Clear");
16854  }
16855  if (INFILE(_TITLE_FN_COPYLEFT_NEXT_0_3_0)) {
16856  INTERESTING("copyleft-next-0.3.0");
16857  }
16858  if (INFILE(_TITLE_FN_COPYLEFT_NEXT_0_3_1)) {
16859  INTERESTING("copyleft-next-0.3.1");
16860  }
16861  if (INFILE(_TITLE_FN_CROSSWORD)) {
16862  INTERESTING("Crossword");
16863  }
16864  if (INFILE(_TITLE_FN_CRYSTALSTACKER)) {
16865  INTERESTING("CrystalStacker");
16866  }
16867  if (INFILE(_TITLE_FN_CUBE)) {
16868  INTERESTING("Cube");
16869  }
16870  if (INFILE(_TITLE_FN_DIFFMARK)) {
16871  INTERESTING("diffmark");
16872  }
16873  if (INFILE(_TITLE_FN_PLEXUS)) {
16874  INTERESTING("Plexus");
16875  }
16876  if (INFILE(_TITLE_FN_DOTSEQN)) {
16877  INTERESTING("Dotseqn");
16878  }
16879  if (INFILE(_TITLE_FN_DSDP)) {
16880  INTERESTING("DSDP");
16881  }
16882  if (INFILE(_TITLE_FN_DVIPDFM)) {
16883  INTERESTING("dvipdfm");
16884  }
16885  if (INFILE(_TITLE_FN_EPICS)) {
16886  INTERESTING("EPICS");
16887  }
16888  if (INFILE(_TITLE_FN_EUROSYM)) {
16889  INTERESTING("Eurosym");
16890  }
16891  if (INFILE(_TITLE_FN_GL2PS)) {
16892  INTERESTING("GL2PS");
16893  }
16894  if (INFILE(_TITLE_FN_GLULXE)) {
16895  INTERESTING("Glulxe");
16896  }
16897  if (INFILE(_TITLE_FN_GLWTPL)) {
16898  INTERESTING("GLWTPL");
16899  }
16900  if (INFILE(_TITLE_FN_GNUPLOT)) {
16901  INTERESTING("gnuplot");
16902  }
16903  if (INFILE(_TITLE_FN_IMLIB2)) {
16904  INTERESTING("Imlib2");
16905  }
16906  if (INFILE(_TITLE_FN_LATEX2E)) {
16907  INTERESTING("Latex2e");
16908  }
16909  if (INFILE(_TITLE_FN_LEPTONICA)) {
16910  INTERESTING("Leptonica");
16911  }
16912  if (INFILE(_TITLE_FN_MAKEINDEX)) {
16913  INTERESTING("MakeIndex");
16914  }
16915  if (INFILE(_TITLE_FN_MITNFA)) {
16916  INTERESTING("MITNFA");
16917  }
16918  if (INFILE(_TITLE_FN_MPICH2)) {
16919  INTERESTING("mpich2");
16920  }
16921  if (INFILE(_TITLE_FN_MULTICS)) {
16922  INTERESTING("Multics");
16923  }
16924  if (INFILE(_TITLE_FN_NAUMEN)) {
16925  INTERESTING("Naumen");
16926  }
16927  if (INFILE(_TITLE_FN_NET_SNMP)) {
16928  INTERESTING("Net-SNMP");
16929  }
16930  if (INFILE(_TITLE_FN_NETCDF)) {
16931  INTERESTING("NetCDF");
16932  }
16933  if (INFILE(_TITLE_FN_NEWSLETR)) {
16934  INTERESTING("Newsletr");
16935  }
16936  if (INFILE(_TITLE_FN_NOWEB)) {
16937  INTERESTING("Noweb");
16938  }
16939  if (INFILE(_TITLE_FN_DSL)) {
16940  INTERESTING("DSL");
16941  }
16942  if (INFILE(_TITLE_FN_PSFRAG)) {
16943  INTERESTING("psfrag");
16944  }
16945  if (INFILE(_TITLE_FN_PSUTILS)) {
16946  INTERESTING("psutils");
16947  }
16948  if (INFILE(_TITLE_FN_QHULL)) {
16949  INTERESTING("Qhull");
16950  }
16951  if (INFILE(_TITLE_FN_RDISC)) {
16952  INTERESTING("Rdisc");
16953  }
16954  if (INFILE(_TITLE_FN_SAXPATH)) {
16955  INTERESTING("Saxpath");
16956  }
16957  if (INFILE(_TITLE_FN_WSUIPA)) {
16958  INTERESTING("Wsuipa");
16959  }
16960  if (INFILE(_TITLE_FN_XINETD)) {
16961  INTERESTING("xinetd");
16962  }
16963  if (INFILE(_TITLE_FN_XSKAT)) {
16964  INTERESTING("XSkat");
16965  }
16966  if (INFILE(_TITLE_FN_AUTOCONF_EXCEPTION_2_0)) {
16967  INTERESTING("Autoconf-exception-2.0");
16968  }
16969  if (INFILE(_TITLE_FN_AUTOCONF_EXCEPTION_3_0)) {
16970  INTERESTING("Autoconf-exception-3.0");
16971  }
16972  if (INFILE(_TITLE_FN_BISON_EXCEPTION_2_2)) {
16973  INTERESTING("Bison-exception-2.2");
16974  }
16975  if (INFILE(_TITLE_FN_BSD_2_CLAUSE_FREEBSD)) {
16976  INTERESTING("BSD-2-Clause-FreeBSD");
16977  }
16978  if (INFILE(_TITLE_FN_BSD_3_CLAUSE_NO_MILITARY_LICENSE)) {
16979  INTERESTING("BSD-3-Clause-No-Military-License");
16980  }
16981  if (INFILE(_TITLE_FN_BSD_3_CLAUSE_NO_NUCLEAR_WARRANTY)) {
16982  INTERESTING("BSD-3-Clause-No-Nuclear-Warranty");
16983  }
16984  if (INFILE(_TITLE_FN_CLISP_EXCEPTION_2_0)) {
16985  INTERESTING("CLISP-exception-2.0");
16986  }
16987  if (INFILE(_TITLE_FN_ECOS_EXCEPTION_2_0)) {
16988  INTERESTING("eCos-exception-2.0");
16989  }
16990  if (INFILE(_TITLE_FN_FAWKES_RUNTIME_EXCEPTION)) {
16991  INTERESTING("Fawkes-Runtime-exception");
16992  }
16993  if (INFILE(_TITLE_FN_FLTK_EXCEPTION)) {
16994  INTERESTING("FLTK-exception");
16995  }
16996  if (INFILE(_TITLE_FN_FONT_EXCEPTION_2_0)) {
16997  INTERESTING("Font-exception-2.0");
16998  }
16999  if (INFILE(_TITLE_FN_FREERTOS_EXCEPTION_2_0)) {
17000  INTERESTING("freertos-exception-2.0");
17001  }
17002  if (INFILE(_TITLE_FN_GNU_JAVAMAIL_EXCEPTION)) {
17003  INTERESTING("gnu-javamail-exception");
17004  }
17005  if (INFILE(_TITLE_FN_OPENVPN_OPENSSL_EXCEPTION)) {
17006  INTERESTING("openvpn-openssl-exception");
17007  }
17008  if (INFILE(_TITLE_FN_SMAIL_GPL)) {
17009  INTERESTING("SMAIL-GPL");
17010  }
17011  if (INFILE(_TITLE_FN_DUAL_LICENSE)) {
17012  INTERESTING("Dual-license");
17013  }
17014  if (INFILE(_TITLE_FN_GPL_3_0_LINKING_SOURCE_EXCEPTION)) {
17015  INTERESTING("GPL-3.0-linking-source-exception");
17016  }
17017  if (INFILE(_TITLE_FN_INNOSETUP)) {
17018  INTERESTING("InnoSetup");
17019  }
17020  if (INFILE(_TITLE_FN_LPPL_1_3)) {
17021  INTERESTING("LPPL-1.3");
17022  }
17023  if (INFILE(_TITLE_FN_MINPACK)) {
17024  INTERESTING("Minpack");
17025  }
17026  if (INFILE(_TITLE_FN_MPL_1_1_STYLE)) {
17027  INTERESTING("MPL-1.1-style");
17028  }
17029  if (INFILE(_TITLE_FN_MS_LPL)) {
17030  INTERESTING("MS-LPL");
17031  }
17032  if (INFILE(_TITLE_FN_MX4J_1_0)) {
17033  INTERESTING("MX4J-1.0");
17034  }
17035  if (INFILE(_TITLE_FN_BSD_3_CLAUSE_NO_NUCLEAR_LICENSE_2014)) {
17036  INTERESTING("BSD-3-Clause-No-Nuclear-License-2014");
17037  }
17038  if (INFILE(_TITLE_FN_UNLICENSE)) {
17039  INTERESTING("Unlicense");
17040  }
17041  if (INFILE(_TITLE_FN_TTYP0)) {
17042  INTERESTING("TTYP0");
17043  }
17044  }
17045  /* canonical URLs: the path names the license */
17046  if (URL_INFILE(_URL_LGPL_20_LIBRARY)) {
17047  INTERESTING("LGPL-2.0-only");
17048  }
17049  if (URL_INFILE(_URL_AUTOCONF_EXC_30)) {
17050  INTERESTING("Autoconf-exception-3.0");
17051  }
17052  if (URL_INFILE(_URL_GCC_EXC_31)) {
17053  INTERESTING("GCC-exception-3.1");
17054  }
17055  if (URL_INFILE(_URL_APACHE_20_TXT)) {
17056  INTERESTING("Apache-2.0");
17057  }
17058  if (URL_INFILE(_URL_PYTHON_DOCS)) {
17059  INTERESTING("Python-2.0");
17060  }
17061  if (URL_INFILE(_URL_CECILL_B)) {
17062  INTERESTING("CECILL-B");
17063  }
17064  if (URL_INFILE(_URL_CECILL_C)) {
17065  INTERESTING("CECILL-C");
17066  }
17067  if (URL_INFILE(_URL_CECILL_20)) {
17068  INTERESTING("CECILL-2.0");
17069  }
17070  if (URL_INFILE(_URL_CECILL_10)) {
17071  INTERESTING("CECILL-1.0");
17072  }
17073  if (URL_INFILE(_URL_ODBL_10)) {
17074  INTERESTING("ODbL-1.0");
17075  }
17076  if (URL_INFILE(_URL_PDDL_10)) {
17077  INTERESTING("PDDL-1.0");
17078  }
17079  if (URL_INFILE(_URL_ODC_BY_10)) {
17080  INTERESTING("ODC-By-1.0");
17081  }
17082  if (URL_INFILE(_URL_PHP_301)) {
17083  INTERESTING("PHP-3.01");
17084  }
17085  else if (URL_INFILE(_URL_PHP_30)) {
17086  INTERESTING("PHP-3.0");
17087  }
17088  if (URL_INFILE(_URL_ARTISTIC_10)) {
17089  INTERESTING("Artistic-1.0");
17090  }
17091  if (URL_INFILE(_URL_ARTISTIC_20)) {
17092  INTERESTING("Artistic-2.0");
17093  }
17094  if (URL_INFILE(_URL_EDL_10)) {
17095  INTERESTING("EDL-1.0");
17096  }
17097  if (URL_INFILE(_URL_OPENSSL_SRC)) {
17098  INTERESTING("OpenSSL");
17099  }
17100  if (URL_INFILE(_URL_GOLANG)) {
17101  INTERESTING("BSD-3-Clause");
17102  }
17103  if ((hasSpdxDecl && INFILE(_SPDX_Bahyph))) {
17104  INTERESTING("Bahyph");
17105  }
17106  if ((hasSpdxDecl && INFILE(_SPDX_Baekmuk))) {
17107  INTERESTING("Baekmuk");
17108  }
17109  if ((hasSpdxDecl && INFILE(_SPDX_Barr))) {
17110  INTERESTING("Barr");
17111  }
17112  if ((hasSpdxDecl && INFILE(_SPDX_Beerware))) {
17113  INTERESTING("Beerware");
17114  }
17115  if ((hasSpdxDecl && INFILE(_SPDX_BitTorrent_10))) {
17116  INTERESTING("BitTorrent-1.0");
17117  }
17118  else if ((hasSpdxDecl && INFILE(_SPDX_BitTorrent_11))) {
17119  INTERESTING("BitTorrent-1.1");
17120  }
17121  if ((hasSpdxDecl && INFILE(_SPDX_blessing))) {
17122  INTERESTING("blessing");
17123  }
17124  if ((hasSpdxDecl && INFILE(_SPDX_BlueOak_100))) {
17125  INTERESTING("BlueOak-1.0.0");
17126  }
17127  if ((hasSpdxDecl && INFILE(_SPDX_BSL_10))) {
17128  INTERESTING("BSL-1.0");
17129  }
17130  if ((hasSpdxDecl && INFILE(_SPDX_Borceux))) {
17131  INTERESTING("Borceux");
17132  }
17133  if ((hasSpdxDecl && INFILE(_SPDX_0BSD))) {
17134  INTERESTING("0BSD");
17135  }
17136  if ((hasSpdxDecl && INFILE(_SPDX_bzip2_105))) {
17137  INTERESTING("bzip2-1.0.5");
17138  }
17139  else if ((hasSpdxDecl && INFILE(_SPDX_bzip2_106))) {
17140  INTERESTING("bzip2-1.0.6");
17141  }
17142  if ((hasSpdxDecl && INFILE(_SPDX_Caldera))) {
17143  INTERESTING("Caldera");
17144  }
17145  if ((hasSpdxDecl && INFILE(_SPDX_CC_PDDC))) {
17146  INTERESTING("CC-PDDC");
17147  }
17148  if ((hasSpdxDecl && INFILE(_SPDX_CERN_OHL_P_20))) {
17149  INTERESTING("CERN-OHL-P-2.0");
17150  }
17151  else if ((hasSpdxDecl && INFILE(_SPDX_CERN_OHL_S_20))) {
17152  INTERESTING("CERN-OHL-S-2.0");
17153  }
17154  else if ((hasSpdxDecl && INFILE(_SPDX_CERN_OHL_W_20))) {
17155  INTERESTING("CERN-OHL-W-2.0");
17156  }
17157  else if ((hasSpdxDecl && INFILE(_SPDX_CERN_OHL_12))) {
17158  INTERESTING("CERN-OHL-1.2");
17159  }
17160  else if ((hasSpdxDecl && INFILE(_SPDX_CERN_OHL_11))) {
17161  INTERESTING("CERN-OHL-1.1");
17162  }
17163  if ((hasSpdxDecl && INFILE(_SPDX_ClArtistic))) {
17164  INTERESTING("ClArtistic");
17165  }
17166  if ((hasSpdxDecl && INFILE(_SPDX_CNRI_Jython))) {
17167  INTERESTING("CNRI-Jython");
17168  }
17169  if ((hasSpdxDecl && INFILE(_SPDX_CPOL_102))) {
17170  INTERESTING("CPOL-1.02");
17171  }
17172  if ((hasSpdxDecl && INFILE(_SPDX_CPAL_10))) {
17173  INTERESTING("CPAL-1.0");
17174  }
17175  if ((hasSpdxDecl && INFILE(_SPDX_CPL_10))) {
17176  INTERESTING("CPL-1.0");
17177  }
17178  if ((hasSpdxDecl && INFILE(_SPDX_CAL_10_Combined_Work_Exception))) {
17179  INTERESTING("CAL-1.0-Combined-Work-Exception");
17180  }
17181  else if ((hasSpdxDecl && INFILE(_SPDX_CAL_10))) {
17182  INTERESTING("CAL-1.0");
17183  }
17184  if ((hasSpdxDecl && INFILE(_SPDX_CATOSL_11))) {
17185  INTERESTING("CATOSL-1.1");
17186  }
17187  if ((hasSpdxDecl && INFILE(_SPDX_Condor_11))) {
17188  INTERESTING("Condor-1.1");
17189  }
17190  if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_10))) {
17191  INTERESTING("CC-BY-1.0");
17192  }
17193  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_20))) {
17194  INTERESTING("CC-BY-2.0");
17195  }
17196  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_25))) {
17197  INTERESTING("CC-BY-2.5");
17198  }
17199  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_30_AT))) {
17200  INTERESTING("CC-BY-3.0-AT");
17201  }
17202  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_30))) {
17203  INTERESTING("CC-BY-3.0");
17204  }
17205  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_40))) {
17206  INTERESTING("CC-BY-4.0");
17207  }
17208  if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_ND_10))) {
17209  INTERESTING("CC-BY-ND-1.0");
17210  }
17211  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_ND_20))) {
17212  INTERESTING("CC-BY-ND-2.0");
17213  }
17214  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_ND_25))) {
17215  INTERESTING("CC-BY-ND-2.5");
17216  }
17217  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_ND_30))) {
17218  INTERESTING("CC-BY-ND-3.0");
17219  }
17220  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_ND_40))) {
17221  INTERESTING("CC-BY-ND-4.0");
17222  }
17223  if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_10))) {
17224  INTERESTING("CC-BY-NC-1.0");
17225  }
17226  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_20))) {
17227  INTERESTING("CC-BY-NC-2.0");
17228  }
17229  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_25))) {
17230  INTERESTING("CC-BY-NC-2.5");
17231  }
17232  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_30))) {
17233  INTERESTING("CC-BY-NC-3.0");
17234  }
17235  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_40))) {
17236  INTERESTING("CC-BY-NC-4.0");
17237  }
17238  if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_ND_10))) {
17239  INTERESTING("CC-BY-NC-ND-1.0");
17240  }
17241  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_ND_20))) {
17242  INTERESTING("CC-BY-NC-ND-2.0");
17243  }
17244  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_ND_25))) {
17245  INTERESTING("CC-BY-NC-ND-2.5");
17246  }
17247  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_ND_30_IGO))) {
17248  INTERESTING("CC-BY-NC-ND-3.0-IGO");
17249  }
17250  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_ND_30))) {
17251  INTERESTING("CC-BY-NC-ND-3.0");
17252  }
17253  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_ND_40))) {
17254  INTERESTING("CC-BY-NC-ND-4.0");
17255  }
17256  if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_SA_10))) {
17257  INTERESTING("CC-BY-NC-SA-1.0");
17258  }
17259  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_SA_20))) {
17260  INTERESTING("CC-BY-NC-SA-2.0");
17261  }
17262  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_SA_25))) {
17263  INTERESTING("CC-BY-NC-SA-2.5");
17264  }
17265  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_SA_30))) {
17266  INTERESTING("CC-BY-NC-SA-3.0");
17267  }
17268  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_NC_SA_40))) {
17269  INTERESTING("CC-BY-NC-SA-4.0");
17270  }
17271  if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_SA_10))) {
17272  INTERESTING("CC-BY-SA-1.0");
17273  }
17274  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_SA_20))) {
17275  INTERESTING("CC-BY-SA-2.0");
17276  }
17277  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_SA_25))) {
17278  INTERESTING("CC-BY-SA-2.5");
17279  }
17280  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_SA_30_AT))) {
17281  INTERESTING("CC-BY-SA-3.0-AT");
17282  }
17283  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_SA_30))) {
17284  INTERESTING("CC-BY-SA-3.0");
17285  }
17286  else if ((hasSpdxDecl && INFILE(_SPDX_CC_BY_SA_40))) {
17287  INTERESTING("CC-BY-SA-4.0");
17288  }
17289  if ((hasSpdxDecl && INFILE(_SPDX_CDLA_Permissive_10))) {
17290  INTERESTING("CDLA-Permissive-1.0");
17291  }
17292  if ((hasSpdxDecl && INFILE(_SPDX_CDLA_Sharing_10))) {
17293  INTERESTING("CDLA-Sharing-1.0");
17294  }
17295  if ((hasSpdxDecl && INFILE(_SPDX_Crossword))) {
17296  INTERESTING("Crossword");
17297  }
17298  if ((hasSpdxDecl && INFILE(_SPDX_CrystalStacker))) {
17299  INTERESTING("CrystalStacker");
17300  }
17301  if ((hasSpdxDecl && INFILE(_SPDX_CUA_OPL_10))) {
17302  INTERESTING("CUA-OPL-1.0");
17303  }
17304  if ((hasSpdxDecl && INFILE(_SPDX_Cube))) {
17305  INTERESTING("Cube");
17306  }
17307  if ((hasSpdxDecl && INFILE(_SPDX_curl))) {
17308  INTERESTING("curl");
17309  }
17310  if ((hasSpdxDecl && INFILE(_SPDX_D_FSL_10))) {
17311  INTERESTING("D-FSL-1.0");
17312  }
17313  if ((hasSpdxDecl && INFILE(_SPDX_diffmark))) {
17314  INTERESTING("diffmark");
17315  }
17316  if ((hasSpdxDecl && INFILE(_SPDX_WTFPL))) {
17317  INTERESTING("WTFPL");
17318  }
17319  if (HASTEXT(_SPDX_DOC, REG_EXTENDED) || HASTEXT(_PHR_DOC, REG_EXTENDED)) {
17320  INTERESTING("DOC");
17321  }
17322  if ((hasSpdxDecl && INFILE(_SPDX_Dotseqn))) {
17323  INTERESTING("Dotseqn");
17324  }
17325  if ((hasSpdxDecl && INFILE(_SPDX_DSDP))) {
17326  INTERESTING("DSDP");
17327  }
17328  if ((hasSpdxDecl && INFILE(_SPDX_dvipdfm))) {
17329  INTERESTING("dvipdfm");
17330  }
17331  if ((hasSpdxDecl && INFILE(_SPDX_EPL_10))) {
17332  INTERESTING("EPL-1.0");
17333  }
17334  else if ((hasSpdxDecl && INFILE(_SPDX_EPL_20))) {
17335  INTERESTING("EPL-2.0");
17336  }
17337  if ((hasSpdxDecl && INFILE(_SPDX_ECL_10))) {
17338  INTERESTING("ECL-1.0");
17339  }
17340  if ((hasSpdxDecl && INFILE(_SPDX_ECL_20))) {
17341  INTERESTING("ECL-2.0");
17342  }
17343  if ((hasSpdxDecl && INFILE(_SPDX_eGenix))) {
17344  INTERESTING("eGenix");
17345  }
17346  if ((hasSpdxDecl && INFILE(_SPDX_EFL_10))) {
17347  INTERESTING("EFL-1.0");
17348  }
17349  if ((hasSpdxDecl && INFILE(_SPDX_EFL_20))) {
17350  INTERESTING("EFL-2.0");
17351  }
17352  if ((hasSpdxDecl && INFILE(_SPDX_Entessa))) {
17353  INTERESTING("Entessa");
17354  }
17355  if ((hasSpdxDecl && INFILE(_SPDX_EPICS))) {
17356  INTERESTING("EPICS");
17357  }
17358  if ((hasSpdxDecl && INFILE(_SPDX_ErlPL_11))) {
17359  INTERESTING("ErlPL-1.1");
17360  }
17361  if ((hasSpdxDecl && INFILE(_SPDX_etalab_20))) {
17362  INTERESTING("etalab-2.0");
17363  }
17364  if ((hasSpdxDecl && INFILE(_SPDX_EUDatagrid))) {
17365  INTERESTING("EUDatagrid");
17366  }
17367  if ((hasSpdxDecl && INFILE(_SPDX_EUPL_10))) {
17368  INTERESTING("EUPL-1.0");
17369  }
17370  else if ((hasSpdxDecl && INFILE(_SPDX_EUPL_11))) {
17371  INTERESTING("EUPL-1.1");
17372  }
17373  else if ((hasSpdxDecl && INFILE(_SPDX_EUPL_12))) {
17374  INTERESTING("EUPL-1.2");
17375  }
17376  if ((hasSpdxDecl && INFILE(_SPDX_Eurosym))) {
17377  INTERESTING("Eurosym");
17378  }
17379  if (HASTEXT(_SPDX_Fair, REG_EXTENDED) || HASTEXT(_PHR_Fair, REG_EXTENDED)) {
17380  INTERESTING("Fair");
17381  }
17382  if ((hasSpdxDecl && INFILE(_SPDX_Frameworx_10))) {
17383  INTERESTING("Frameworx-1.0");
17384  }
17385  if ((hasSpdxDecl && INFILE(_SPDX_FreeImage))) {
17386  INTERESTING("FreeImage");
17387  }
17388  if ((hasSpdxDecl && INFILE(_SPDX_FSFAP))) {
17389  INTERESTING("FSFAP");
17390  }
17391  if ((hasSpdxDecl && INFILE(_SPDX_FSFULLRWD))) {
17392  INTERESTING("FSFULLRWD");
17393  }
17394  else if ((hasSpdxDecl && INFILE(_SPDX_FSFULLRSD))) {
17395  INTERESTING("FSFULLRSD");
17396  }
17397  else if ((hasSpdxDecl && INFILE(_SPDX_FSFULLR))) {
17398  INTERESTING("FSFULLR");
17399  }
17400  else if ((hasSpdxDecl && INFILE(_SPDX_FSFUL))) {
17401  INTERESTING("FSFUL");
17402  }
17403  if ((hasSpdxDecl && INFILE(_SPDX_Giftware))) {
17404  INTERESTING("Giftware");
17405  }
17406  if ((hasSpdxDecl && INFILE(_SPDX_GL2PS))) {
17407  INTERESTING("GL2PS");
17408  }
17409  if ((hasSpdxDecl && INFILE(_SPDX_Glulxe))) {
17410  INTERESTING("Glulxe");
17411  }
17412  if ((hasSpdxDecl && INFILE(_SPDX_GFDL_11_invariants_or_later))) {
17413  INTERESTING("GFDL-1.1-invariants-or-later");
17414  }
17415  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_11_no_invariants_or_later))) {
17416  INTERESTING("GFDL-1.1-no-invariants-or-later");
17417  }
17418  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_11_invariants_only))) {
17419  INTERESTING("GFDL-1.1-invariants-only");
17420  }
17421  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_11_no_invariants_only))) {
17422  INTERESTING("GFDL-1.1-no-invariants-only");
17423  }
17424  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_11_or_later))
17425  || HASTEXT(_SPDX_GFDL_11plus, REG_EXTENDED)
17426  || HASTEXT(_PHR_GFDL_11plus, REG_EXTENDED))
17427  {
17428  INTERESTING("GFDL-1.1-or-later");
17429  }
17430  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_11))) {
17431  INTERESTING("GFDL-1.1-only");
17432  }
17433  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_12_invariants_or_later))) {
17434  INTERESTING("GFDL-1.2-invariants-or-later");
17435  }
17436  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_12_no_invariants_or_later))) {
17437  INTERESTING("GFDL-1.2-no-invariants-or-later");
17438  }
17439  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_12_invariants_only))) {
17440  INTERESTING("GFDL-1.2-invariants-only");
17441  }
17442  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_12_no_invariants_only))) {
17443  INTERESTING("GFDL-1.2-no-invariants-only");
17444  }
17445  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_12_or_later))
17446  || HASTEXT(_SPDX_GFDL_12plus, REG_EXTENDED)
17447  || HASTEXT(_PHR_GFDL_12plus, REG_EXTENDED))
17448  {
17449  INTERESTING("GFDL-1.2-or-later");
17450  }
17451  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_12))) {
17452  INTERESTING("GFDL-1.2-only");
17453  }
17454  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_13_invariants_or_later))) {
17455  INTERESTING("GFDL-1.3-invariants-or-later");
17456  }
17457  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_13_no_invariants_or_later))) {
17458  INTERESTING("GFDL-1.3-no-invariants-or-later");
17459  }
17460  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_13_invariants_only))) {
17461  INTERESTING("GFDL-1.3-invariants-only");
17462  }
17463  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_13_no_invariants_only))) {
17464  INTERESTING("GFDL-1.3-no-invariants-only");
17465  }
17466  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_13_or_later))
17467  || HASTEXT(_SPDX_GFDL_13plus, REG_EXTENDED)
17468  || HASTEXT(_PHR_GFDL_13plus, REG_EXTENDED))
17469  {
17470  INTERESTING("GFDL-1.3-or-later");
17471  }
17472  else if ((hasSpdxDecl && INFILE(_SPDX_GFDL_13))) {
17473  INTERESTING("GFDL-1.3-only");
17474  }
17475  if ((hasSpdxDecl && INFILE(_SPDX_GLWTPL)) || (hasSpdxDecl && INFILE(_SPDX_GLWTPL_text))) {
17476  INTERESTING("GLWTPL");
17477  }
17478  if ((hasSpdxDecl && INFILE(_SPDX_gnuplot))) {
17479  INTERESTING("gnuplot");
17480  }
17481  if ((hasSpdxDecl && INFILE(_SPDX_gSOAP_13b))) {
17482  INTERESTING("gSOAP-1.3b");
17483  }
17484  if ((hasSpdxDecl && INFILE(_SPDX_Gutmann))) {
17485  INTERESTING("Gutmann");
17486  }
17487  if ((hasSpdxDecl && INFILE(_SPDX_HaskellReport))) {
17488  INTERESTING("HaskellReport");
17489  }
17490  if ((hasSpdxDecl && INFILE(_SPDX_Hippocratic_21))) {
17491  INTERESTING("Hippocratic-2.1");
17492  }
17493  if ((hasSpdxDecl && INFILE(_SPDX_HPND_sell_variant))) {
17494  INTERESTING("HPND-sell-variant");
17495  }
17496  else if ((hasSpdxDecl && INFILE(_SPDX_HPND))) {
17497  INTERESTING("HPND");
17498  }
17499  if ((hasSpdxDecl && INFILE(_SPDX_IBM_pibs))) {
17500  INTERESTING("IBM-pibs");
17501  }
17502  if ((hasSpdxDecl && INFILE(_SPDX_IPL_10))) {
17503  INTERESTING("IPL-1.0");
17504  }
17505  if ((hasSpdxDecl && INFILE(_SPDX_ImageMagick))) {
17506  INTERESTING("ImageMagick");
17507  }
17508  if ((hasSpdxDecl && INFILE(_SPDX_iMatix))) {
17509  INTERESTING("iMatix");
17510  }
17511  if ((hasSpdxDecl && INFILE(_SPDX_Imlib2))) {
17512  INTERESTING("Imlib2");
17513  }
17514  if ((hasSpdxDecl && INFILE(_SPDX_IJG))) {
17515  INTERESTING("IJG");
17516  }
17517  if ((hasSpdxDecl && INFILE(_SPDX_Info_ZIP))) {
17518  INTERESTING("Info-ZIP");
17519  }
17520  if ((hasSpdxDecl && INFILE(_SPDX_Interbase_10))) {
17521  INTERESTING("Interbase-1.0");
17522  }
17523  if ((hasSpdxDecl && INFILE(_SPDX_IPA))) {
17524  INTERESTING("IPA");
17525  }
17526  if ((hasSpdxDecl && INFILE(_SPDX_ISC))) {
17527  INTERESTING("ISC");
17528  }
17529  if ((hasSpdxDecl && INFILE(_SPDX_JasPer_20))) {
17530  INTERESTING("JasPer-2.0");
17531  }
17532  if ((hasSpdxDecl && INFILE(_SPDX_JPNIC))) {
17533  INTERESTING("JPNIC");
17534  }
17535  if ((hasSpdxDecl && INFILE(_SPDX_JSON))) {
17536  INTERESTING("JSON");
17537  }
17538  if ((hasSpdxDecl && INFILE(_SPDX_Latex2e))) {
17539  INTERESTING("Latex2e");
17540  }
17541  if ((hasSpdxDecl && INFILE(_SPDX_Leptonica))) {
17542  INTERESTING("Leptonica");
17543  }
17544  if ((hasSpdxDecl && INFILE(_SPDX_LGPLLR))) {
17545  INTERESTING("LGPLLR");
17546  }
17547  if ((hasSpdxDecl && INFILE(_SPDX_libpng_20))) {
17548  INTERESTING("libpng-2.0");
17549  }
17550  else if ((hasSpdxDecl && INFILE(_SPDX_Libpng))) {
17551  INTERESTING("Libpng");
17552  }
17553  if ((hasSpdxDecl && INFILE(_SPDX_libselinux_10))) {
17554  INTERESTING("libselinux-1.0");
17555  }
17556  if ((hasSpdxDecl && INFILE(_SPDX_libtiff))) {
17557  INTERESTING("libtiff");
17558  }
17559  if ((hasSpdxDecl && INFILE(_SPDX_LAL_12))) {
17560  INTERESTING("LAL-1.2");
17561  }
17562  if ((hasSpdxDecl && INFILE(_SPDX_LAL_13)) || (hasSpdxDecl && INFILE(_SPDX_LAL_13_text))) {
17563  INTERESTING("LAL-1.3");
17564  }
17565  if ((hasSpdxDecl && INFILE(_SPDX_LiLiQ_P_11))) {
17566  INTERESTING("LiLiQ-P-1.1");
17567  }
17568  if ((hasSpdxDecl && INFILE(_SPDX_LiLiQ_Rplus_11))) {
17569  INTERESTING("LiLiQ-Rplus-1.1");
17570  }
17571  if ((hasSpdxDecl && INFILE(_SPDX_LiLiQ_R_11))) {
17572  INTERESTING("LiLiQ-R-1.1");
17573  }
17574  if ((hasSpdxDecl && INFILE(_SPDX_Linux_OpenIB))) {
17575  INTERESTING("Linux-OpenIB");
17576  }
17577  if ((hasSpdxDecl && INFILE(_SPDX_LPL_102))) {
17578  INTERESTING("LPL-1.02");
17579  }
17580  else if ((hasSpdxDecl && INFILE(_SPDX_LPL_10))) {
17581  INTERESTING("LPL-1.0");
17582  }
17583  if ((hasSpdxDecl && INFILE(_SPDX_LPPL_10))) {
17584  INTERESTING("LPPL-1.0");
17585  }
17586  if ((hasSpdxDecl && INFILE(_SPDX_LPPL_11))) {
17587  INTERESTING("LPPL-1.1");
17588  }
17589  if ((hasSpdxDecl && INFILE(_SPDX_LPPL_12))) {
17590  INTERESTING("LPPL-1.2");
17591  }
17592  if ((hasSpdxDecl && INFILE(_SPDX_LPPL_13a))) {
17593  INTERESTING("LPPL-1.3a");
17594  }
17595  if ((hasSpdxDecl && INFILE(_SPDX_LPPL_13c))) {
17596  INTERESTING("LPPL-1.3c");
17597  }
17598  if ((hasSpdxDecl && INFILE(_SPDX_MakeIndex))) {
17599  INTERESTING("MakeIndex");
17600  }
17601  if ((hasSpdxDecl && INFILE(_SPDX_MTLL))) {
17602  INTERESTING("MTLL");
17603  }
17604  if ((hasSpdxDecl && INFILE(_SPDX_MS_PL))) {
17605  INTERESTING("MS-PL");
17606  }
17607  if ((hasSpdxDecl && INFILE(_SPDX_MS_RL))) {
17608  INTERESTING("MS-RL");
17609  }
17610  if ((hasSpdxDecl && INFILE(_SPDX_MirOS))) {
17611  INTERESTING("MirOS");
17612  }
17613  if ((hasSpdxDecl && INFILE(_SPDX_MITNFA))) {
17614  INTERESTING("MITNFA");
17615  }
17616  if (!lmem[_fREAL] && (hasSpdxDecl && INFILE(_SPDX_Motosoto))) {
17617  INTERESTING("Motosoto");
17618  }
17619  if ((hasSpdxDecl && INFILE(_SPDX_mpich2))) {
17620  INTERESTING("mpich2");
17621  }
17622  if ((hasSpdxDecl && INFILE(_SPDX_MulanPSL_20))) {
17623  INTERESTING("MulanPSL-2.0");
17624  }
17625  else if ((hasSpdxDecl && INFILE(_SPDX_MulanPSL_10))) {
17626  INTERESTING("MulanPSL-1.0");
17627  }
17628  if ((hasSpdxDecl && INFILE(_SPDX_Multics))) {
17629  INTERESTING("Multics");
17630  }
17631  if ((hasSpdxDecl && INFILE(_SPDX_Mup))) {
17632  INTERESTING("Mup");
17633  }
17634  if ((hasSpdxDecl && INFILE(_SPDX_NASA_13))) {
17635  INTERESTING("NASA-1.3");
17636  }
17637  if ((hasSpdxDecl && INFILE(_SPDX_Naumen))) {
17638  INTERESTING("Naumen");
17639  }
17640  if ((hasSpdxDecl && INFILE(_SPDX_NBPL_10))) {
17641  INTERESTING("NBPL-1.0");
17642  }
17643  if ((hasSpdxDecl && INFILE(_SPDX_NCGL_UK_20))) {
17644  INTERESTING("NCGL-UK-2.0");
17645  }
17646  if ((hasSpdxDecl && INFILE(_SPDX_Net_SNMP))) {
17647  INTERESTING("Net-SNMP");
17648  }
17649  if ((hasSpdxDecl && INFILE(_SPDX_NetCDF))) {
17650  INTERESTING("NetCDF");
17651  }
17652  if ((hasSpdxDecl && INFILE(_SPDX_NGPL))) {
17653  INTERESTING("NGPL");
17654  }
17655  if ((hasSpdxDecl && INFILE(_SPDX_NIST_PD_fallback))) {
17656  INTERESTING("NIST-PD-fallback");
17657  }
17658  else if ((hasSpdxDecl && INFILE(_SPDX_NIST_PD))) {
17659  INTERESTING("NIST-PD");
17660  }
17661  if ((hasSpdxDecl && INFILE(_SPDX_NOSL))) {
17662  INTERESTING("NOSL");
17663  }
17664  if ((hasSpdxDecl && INFILE(_SPDX_NPL_10))) {
17665  INTERESTING("NPL-1.0");
17666  }
17667  if ((hasSpdxDecl && INFILE(_SPDX_NPL_11))) {
17668  INTERESTING("NPL-1.1");
17669  }
17670  if ((hasSpdxDecl && INFILE(_SPDX_Newsletr))) {
17671  INTERESTING("Newsletr");
17672  }
17673  if ((hasSpdxDecl && INFILE(_SPDX_NLPL))) {
17674  INTERESTING("NLPL");
17675  }
17676  if ((hasSpdxDecl && INFILE(_SPDX_Nokia)) && NOT_INFILE(_LT_OPENSSL_NOKIA)) {
17677  INTERESTING("Nokia");
17678  }
17679  if ((hasSpdxDecl && INFILE(_SPDX_NPOSL_30))) {
17680  INTERESTING("NPOSL-3.0");
17681  }
17682  if ((hasSpdxDecl && INFILE(_SPDX_NLOD_10)) || (hasSpdxDecl && INFILE(_SPDX_NLOD_10_text))) {
17683  INTERESTING("NLOD-1.0");
17684  }
17685  if ((hasSpdxDecl && INFILE(_SPDX_Noweb))) {
17686  INTERESTING("Noweb");
17687  }
17688  if ((hasSpdxDecl && INFILE(_SPDX_NRL))) {
17689  INTERESTING("NRL");
17690  }
17691  if ((hasSpdxDecl && INFILE(_SPDX_NTP_0))) {
17692  INTERESTING("NTP-0");
17693  }
17694  else if ((hasSpdxDecl && INFILE(_SPDX_NTP))) {
17695  INTERESTING("NTP");
17696  }
17697  if ((hasSpdxDecl && INFILE(_SPDX_Nunit))) {
17698  INTERESTING("Nunit");
17699  }
17700  if ((hasSpdxDecl && INFILE(_SPDX_O_UDA_10))) {
17701  INTERESTING("O-UDA-1.0");
17702  }
17703  if ((hasSpdxDecl && INFILE(_SPDX_OCLC_20))) {
17704  INTERESTING("OCLC-2.0");
17705  }
17706  if ((hasSpdxDecl && INFILE(_SPDX_ODbL_10))) {
17707  INTERESTING("ODbL-1.0");
17708  }
17709  if ((hasSpdxDecl && INFILE(_SPDX_OGC_10))) {
17710  INTERESTING("OGC-1.0");
17711  }
17712  if ((hasSpdxDecl && INFILE(_SPDX_PDDL_10))) {
17713  INTERESTING("PDDL-1.0");
17714  }
17715  if ((hasSpdxDecl && INFILE(_SPDX_OCCT_PL))) {
17716  INTERESTING("OCCT-PL");
17717  }
17718  if ((hasSpdxDecl && INFILE(_SPDX_ODC_By_10))) {
17719  INTERESTING("ODC-By-1.0");
17720  }
17721  if ((hasSpdxDecl && INFILE(_SPDX_OGL_Canada_20)) || (hasSpdxDecl && INFILE(_SPDX_OGL_Canada_20_text))) {
17722  INTERESTING("OGL-Canada-2.0");
17723  }
17724  if ((hasSpdxDecl && INFILE(_SPDX_OGL_UK_10))) {
17725  INTERESTING("OGL-UK-1.0");
17726  }
17727  else if ((hasSpdxDecl && INFILE(_SPDX_OGL_UK_20))) {
17728  INTERESTING("OGL-UK-2.0");
17729  }
17730  else if ((hasSpdxDecl && INFILE(_SPDX_OGL_UK_30))) {
17731  INTERESTING("OGL-UK-3.0");
17732  }
17733  if ((hasSpdxDecl && INFILE(_SPDX_OGTSL))) {
17734  INTERESTING("OGTSL");
17735  }
17736  if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_11))) {
17737  INTERESTING("OLDAP-1.1");
17738  }
17739  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_12))) {
17740  INTERESTING("OLDAP-1.2");
17741  }
17742  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_13))) {
17743  INTERESTING("OLDAP-1.3");
17744  }
17745  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_14))) {
17746  INTERESTING("OLDAP-1.4");
17747  }
17748  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_201))) {
17749  INTERESTING("OLDAP-2.0.1");
17750  }
17751  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_20))) {
17752  INTERESTING("OLDAP-2.0");
17753  }
17754  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_21))) {
17755  INTERESTING("OLDAP-2.1");
17756  }
17757  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_221))) {
17758  INTERESTING("OLDAP-2.2.1");
17759  }
17760  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_222))) {
17761  INTERESTING("OLDAP-2.2.2");
17762  }
17763  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_22))) {
17764  INTERESTING("OLDAP-2.2");
17765  }
17766  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_23))) {
17767  INTERESTING("OLDAP-2.3");
17768  }
17769  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_24))) {
17770  INTERESTING("OLDAP-2.4");
17771  }
17772  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_25))) {
17773  INTERESTING("OLDAP-2.5");
17774  }
17775  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_26))) {
17776  INTERESTING("OLDAP-2.6");
17777  }
17778  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_27))) {
17779  INTERESTING("OLDAP-2.7");
17780  }
17781  else if ((hasSpdxDecl && INFILE(_SPDX_OLDAP_28))) {
17782  INTERESTING("OLDAP-2.8");
17783  }
17784  if ((hasSpdxDecl && INFILE(_SPDX_OML))) {
17785  INTERESTING("OML");
17786  }
17787  if ((hasSpdxDecl && INFILE(_SPDX_OPL_10))) {
17788  INTERESTING("OPL-1.0");
17789  }
17790  if ((hasSpdxDecl && INFILE(_SPDX_OSL_10))) {
17791  INTERESTING("OSL-1.0");
17792  }
17793  if ((hasSpdxDecl && INFILE(_SPDX_OSL_11))) {
17794  INTERESTING("OSL-1.1");
17795  }
17796  if ((hasSpdxDecl && INFILE(_SPDX_OSL_20))) {
17797  INTERESTING("OSL-2.0");
17798  }
17799  if ((hasSpdxDecl && INFILE(_SPDX_OSL_21))) {
17800  INTERESTING("OSL-2.1");
17801  }
17802  if ((hasSpdxDecl && INFILE(_SPDX_OSL_30))) {
17803  INTERESTING("OSL-3.0");
17804  }
17805  if ((hasSpdxDecl && INFILE(_SPDX_OSET_PL_21))) {
17806  INTERESTING("OSET-PL-2.1");
17807  }
17808  if ((hasSpdxDecl && INFILE(_SPDX_Parity_700))) {
17809  INTERESTING("Parity-7.0.0");
17810  }
17811  else if ((hasSpdxDecl && INFILE(_SPDX_Parity_600)) || (hasSpdxDecl && INFILE(_SPDX_Parity_600_text))) {
17812  INTERESTING("Parity-6.0.0");
17813  }
17814  if ((hasSpdxDecl && INFILE(_SPDX_PHP_301))) {
17815  INTERESTING("PHP-3.01");
17816  }
17817  else if ((hasSpdxDecl && INFILE(_SPDX_PHP_30))) {
17818  INTERESTING("PHP-3.0");
17819  }
17820  if ((hasSpdxDecl && INFILE(_SPDX_Plexus))) {
17821  INTERESTING("Plexus");
17822  }
17823  if ((hasSpdxDecl && INFILE(_SPDX_PolyForm_Noncommercial_100))) {
17824  INTERESTING("PolyForm-Noncommercial-1.0.0");
17825  }
17826  else if ((hasSpdxDecl && INFILE(_SPDX_PolyForm_Small_Business_100))) {
17827  INTERESTING("PolyForm-Small-Business-1.0.0");
17828  }
17829  if ((hasSpdxDecl && INFILE(_SPDX_PostgreSQL))) {
17830  INTERESTING("PostgreSQL");
17831  }
17832  if ((hasSpdxDecl && INFILE(_SPDX_PSF_20))) {
17833  INTERESTING("PSF-2.0");
17834  }
17835  if ((hasSpdxDecl && INFILE(_SPDX_psfrag))) {
17836  INTERESTING("psfrag");
17837  }
17838  if ((hasSpdxDecl && INFILE(_SPDX_psutils))) {
17839  INTERESTING("psutils");
17840  }
17841  if ((hasSpdxDecl && INFILE(_SPDX_Python_20))) {
17842  INTERESTING("Python-2.0");
17843  }
17844  if ((hasSpdxDecl && INFILE(_SPDX_QPL_10))) {
17845  INTERESTING("QPL-1.0");
17846  }
17847  if ((hasSpdxDecl && INFILE(_SPDX_Qhull))) {
17848  INTERESTING("Qhull");
17849  }
17850  if ((hasSpdxDecl && INFILE(_SPDX_Rdisc))) {
17851  INTERESTING("Rdisc");
17852  }
17853  if ((hasSpdxDecl && INFILE(_SPDX_RPSL_10))) {
17854  INTERESTING("RPSL-1.0");
17855  }
17856  if ((hasSpdxDecl && INFILE(_SPDX_RPL_11))) {
17857  INTERESTING("RPL-1.1");
17858  }
17859  if ((hasSpdxDecl && INFILE(_SPDX_RPL_15))) {
17860  INTERESTING("RPL-1.5");
17861  }
17862  if ((hasSpdxDecl && INFILE(_SPDX_RHeCos_11))) {
17863  INTERESTING("RHeCos-1.1");
17864  }
17865  if ((hasSpdxDecl && INFILE(_SPDX_RSCPL))) {
17866  INTERESTING("RSCPL");
17867  }
17868  if ((hasSpdxDecl && INFILE(_SPDX_RSA_MD))) {
17869  INTERESTING("RSA-MD");
17870  }
17871  if ((hasSpdxDecl && INFILE(_SPDX_Ruby))) {
17872  INTERESTING("Ruby");
17873  }
17874  if ((hasSpdxDecl && INFILE(_SPDX_SAX_PD))) {
17875  INTERESTING("SAX-PD");
17876  }
17877  if ((hasSpdxDecl && INFILE(_SPDX_Saxpath))) {
17878  INTERESTING("Saxpath");
17879  }
17880  if ((hasSpdxDecl && INFILE(_SPDX_SHL_051))) {
17881  INTERESTING("SHL-0.51");
17882  }
17883  else if ((hasSpdxDecl && INFILE(_SPDX_SHL_05))) {
17884  INTERESTING("SHL-0.5");
17885  }
17886  if ((hasSpdxDecl && INFILE(_SPDX_SCEA))) {
17887  INTERESTING("SCEA");
17888  }
17889  if ((hasSpdxDecl && INFILE(_SPDX_SWL))) {
17890  INTERESTING("SWL");
17891  }
17892  if ((hasSpdxDecl && INFILE(_SPDX_SMPPL))) {
17893  INTERESTING("SMPPL");
17894  }
17895  if ((hasSpdxDecl && INFILE(_SPDX_Sendmail_823))) {
17896  INTERESTING("Sendmail-8.23");
17897  }
17898  else if ((hasSpdxDecl && INFILE(_SPDX_Sendmail))) {
17899  INTERESTING("Sendmail");
17900  }
17901  if ((hasSpdxDecl && INFILE(_SPDX_SGI_B_10))) {
17902  INTERESTING("SGI-B-1.0");
17903  }
17904  if ((hasSpdxDecl && INFILE(_SPDX_SGI_B_11))) {
17905  INTERESTING("SGI-B-1.1");
17906  }
17907  if ((hasSpdxDecl && INFILE(_SPDX_SGI_B_20))) {
17908  INTERESTING("SGI-B-2.0");
17909  }
17910  if ((hasSpdxDecl && INFILE(_SPDX_SimPL_20))) {
17911  INTERESTING("SimPL-2.0");
17912  }
17913  if ((hasSpdxDecl && INFILE(_SPDX_Sleepycat))) {
17914  INTERESTING("Sleepycat");
17915  }
17916  if ((hasSpdxDecl && INFILE(_SPDX_SNIA))) {
17917  INTERESTING("SNIA");
17918  }
17919  if ((hasSpdxDecl && INFILE(_SPDX_Spencer_86))) {
17920  INTERESTING("Spencer-86");
17921  }
17922  if ((hasSpdxDecl && INFILE(_SPDX_Spencer_94))) {
17923  INTERESTING("Spencer-94");
17924  }
17925  if ((hasSpdxDecl && INFILE(_SPDX_Spencer_99))) {
17926  INTERESTING("Spencer-99");
17927  }
17928  if ((hasSpdxDecl && INFILE(_SPDX_SMLNJ))) {
17929  INTERESTING("SMLNJ");
17930  }
17931  if ((hasSpdxDecl && INFILE(_SPDX_SSH_OpenSSH))) {
17932  INTERESTING("SSH-OpenSSH");
17933  }
17934  if ((hasSpdxDecl && INFILE(_SPDX_SSH_short))) {
17935  INTERESTING("SSH-short");
17936  }
17937  if ((hasSpdxDecl && INFILE(_SPDX_SSPL_10))) {
17938  INTERESTING("SSPL-1.0");
17939  }
17940  if ((hasSpdxDecl && INFILE(_SPDX_SugarCRM_113))) {
17941  INTERESTING("SugarCRM-1.1.3");
17942  }
17943  if ((hasSpdxDecl && INFILE(_SPDX_SISSL_12))) {
17944  INTERESTING("SISSL-1.2");
17945  }
17946  else if (!lmem[_fREAL] && (hasSpdxDecl && INFILE(_SPDX_SISSL))) {
17947  INTERESTING("SISSL");
17948  }
17949  if ((hasSpdxDecl && INFILE(_SPDX_SPL_10))) {
17950  INTERESTING("SPL-1.0");
17951  }
17952  if ((hasSpdxDecl && INFILE(_SPDX_Watcom_10))) {
17953  INTERESTING("Watcom-1.0");
17954  }
17955  if ((hasSpdxDecl && INFILE(_SPDX_TAPR_OHL_10))) {
17956  INTERESTING("TAPR-OHL-1.0");
17957  }
17958  if ((hasSpdxDecl && INFILE(_SPDX_TCP_wrappers))) {
17959  INTERESTING("TCP-wrappers");
17960  }
17961  if ((hasSpdxDecl && INFILE(_SPDX_Unlicense))) {
17962  INTERESTING("Unlicense");
17963  }
17964  if ((hasSpdxDecl && INFILE(_SPDX_TMate))) {
17965  INTERESTING("TMate");
17966  }
17967  if ((hasSpdxDecl && INFILE(_SPDX_TORQUE_11))) {
17968  INTERESTING("TORQUE-1.1");
17969  }
17970  if ((hasSpdxDecl && INFILE(_SPDX_TOSL))) {
17971  INTERESTING("TOSL");
17972  }
17973  if ((hasSpdxDecl && INFILE(_SPDX_TU_Berlin_10))) {
17974  INTERESTING("TU-Berlin-1.0");
17975  }
17976  else if ((hasSpdxDecl && INFILE(_SPDX_TU_Berlin_20))) {
17977  INTERESTING("TU-Berlin-2.0");
17978  }
17979  if ((hasSpdxDecl && INFILE(_SPDX_UCL_10))) {
17980  INTERESTING("UCL-1.0");
17981  }
17982  if ((hasSpdxDecl && INFILE(_SPDX_Unicode_DFS_2015))) {
17983  INTERESTING("Unicode-DFS-2015");
17984  }
17985  if ((hasSpdxDecl && INFILE(_SPDX_Unicode_DFS_2016))) {
17986  INTERESTING("Unicode-DFS-2016");
17987  }
17988  if ((hasSpdxDecl && INFILE(_SPDX_Unicode_TOU))) {
17989  INTERESTING("Unicode-TOU");
17990  }
17991  if ((hasSpdxDecl && INFILE(_SPDX_UPL_10))) {
17992  INTERESTING("UPL-1.0");
17993  }
17994  if ((hasSpdxDecl && INFILE(_SPDX_NCSA))) {
17995  INTERESTING("NCSA");
17996  }
17997  if ((hasSpdxDecl && INFILE(_SPDX_Vim))) {
17998  INTERESTING("Vim");
17999  }
18000  if ((hasSpdxDecl && INFILE(_SPDX_VOSTROM))) {
18001  INTERESTING("VOSTROM");
18002  }
18003  if ((hasSpdxDecl && INFILE(_SPDX_VSL_10))) {
18004  INTERESTING("VSL-1.0");
18005  }
18006  if ((hasSpdxDecl && INFILE(_SPDX_W3C_20150513))) {
18007  INTERESTING("W3C-20150513");
18008  }
18009  else if ((hasSpdxDecl && INFILE(_SPDX_W3C_19980720))) {
18010  INTERESTING("W3C-19980720");
18011  }
18012  else if ((hasSpdxDecl && INFILE(_SPDX_W3C))) {
18013  INTERESTING("W3C");
18014  }
18015  if ((hasSpdxDecl && INFILE(_SPDX_Wsuipa))) {
18016  INTERESTING("Wsuipa");
18017  }
18018  if (!lmem[_fREAL] && (hasSpdxDecl && INFILE(_SPDX_Xnet))) {
18019  INTERESTING("Xnet");
18020  }
18021  if ((hasSpdxDecl && INFILE(_SPDX_X11))) {
18022  INTERESTING("X11");
18023  }
18024  if ((hasSpdxDecl && INFILE(_SPDX_Xerox))) {
18025  INTERESTING("Xerox");
18026  }
18027  if ((hasSpdxDecl && INFILE(_SPDX_XFree86_11))) {
18028  INTERESTING("XFree86-1.1");
18029  }
18030  if ((hasSpdxDecl && INFILE(_SPDX_xinetd))) {
18031  INTERESTING("xinetd");
18032  }
18033  if ((hasSpdxDecl && INFILE(_SPDX_xpp))) {
18034  INTERESTING("xpp");
18035  }
18036  if ((hasSpdxDecl && INFILE(_SPDX_XSkat))) {
18037  INTERESTING("XSkat");
18038  }
18039  if ((hasSpdxDecl && INFILE(_SPDX_YPL_10))) {
18040  INTERESTING("YPL-1.0");
18041  }
18042  if ((hasSpdxDecl && INFILE(_SPDX_YPL_11))) {
18043  INTERESTING("YPL-1.1");
18044  }
18045  if ((hasSpdxDecl && INFILE(_SPDX_Zed))) {
18046  INTERESTING("Zed");
18047  }
18048  if ((hasSpdxDecl && INFILE(_SPDX_Zend_20))) {
18049  INTERESTING("Zend-2.0");
18050  }
18051  if ((hasSpdxDecl && INFILE(_SPDX_Zimbra_13))) {
18052  INTERESTING("Zimbra-1.3");
18053  }
18054  if ((hasSpdxDecl && INFILE(_SPDX_Zimbra_14))) {
18055  INTERESTING("Zimbra-1.4");
18056  }
18057  if ((hasSpdxDecl && INFILE(_SPDX_TTWL))) {
18058  INTERESTING("TTWL");
18059  }
18060  if ((hasSpdxDecl && INFILE(_SPDX_COIL_10))) {
18061  INTERESTING("COIL-1.0");
18062  }
18063  if ((hasSpdxDecl && INFILE(_SPDX_HIDAPI))) {
18064  INTERESTING("HIDAPI");
18065  }
18066  if ((hasSpdxDecl && INFILE(_SPDX_ulem))) {
18067  INTERESTING("ulem");
18068  }
18069  if ((hasSpdxDecl && INFILE(_SPDX_UnixCrypt))) {
18070  INTERESTING("UnixCrypt");
18071  }
18072  if ((hasSpdxDecl && INFILE(_SPDX_fwlw))) {
18073  INTERESTING("fwlw");
18074  }
18075  if ((hasSpdxDecl && INFILE(_SPDX_McPhee_slideshow))) {
18076  INTERESTING("McPhee-slideshow");
18077  }
18078  if ((hasSpdxDecl && INFILE(_SPDX_MIPS))) {
18079  INTERESTING("MIPS");
18080  }
18081  if ((hasSpdxDecl && INFILE(_SPDX_MPEG_SSG))) {
18082  INTERESTING("MPEG-SSG");
18083  }
18084  if ((hasSpdxDecl && INFILE(_SPDX_NLOD_20))) {
18085  INTERESTING("NLOD-2.0");
18086  }
18087  if ((hasSpdxDecl && INFILE(_SPDX_LPD_document))) {
18088  INTERESTING("LPD-document");
18089  }
18090  if ((hasSpdxDecl && INFILE(_SPDX_SchemeReport))) {
18091  INTERESTING("SchemeReport");
18092  }
18093  if ((hasSpdxDecl && INFILE(_SPDX_softSurfer))) {
18094  INTERESTING("softSurfer");
18095  }
18096  if ((hasSpdxDecl && INFILE(_SPDX_swrule))) {
18097  INTERESTING("swrule");
18098  }
18099  if ((hasSpdxDecl && INFILE(_SPDX_threeparttable))) {
18100  INTERESTING("threeparttable");
18101  }
18102  if ((hasSpdxDecl && INFILE(_SPDX_Widget_Workshop))) {
18103  INTERESTING("Widget-Workshop");
18104  }
18105  if ((hasSpdxDecl && INFILE(_SPDX_Zeeff))) {
18106  INTERESTING("Zeeff");
18107  }
18108  if ((hasSpdxDecl && INFILE(_SPDX_DEC_3_Clause))) {
18109  INTERESTING("DEC-3-Clause");
18110  }
18111  if ((hasSpdxDecl && INFILE(_SPDX_Kastrup))) {
18112  INTERESTING("Kastrup");
18113  }
18114  if ((hasSpdxDecl && INFILE(_SPDX_DL_DE_BY_20))) {
18115  INTERESTING("DL-DE-BY-2.0");
18116  }
18117  if ((hasSpdxDecl && INFILE(_SPDX_DL_DE_ZERO_20))) {
18118  INTERESTING("DL-DE-ZERO-2.0");
18119  }
18120  if ((hasSpdxDecl && INFILE(_SPDX_Lucida_Bitmap_Fonts))) {
18121  INTERESTING("Lucida-Bitmap-Fonts");
18122  }
18123  if ((hasSpdxDecl && INFILE(_SPDX_ISO_permission))) {
18124  INTERESTING("ISO-permission");
18125  }
18126  if ((hasSpdxDecl && INFILE(_SPDX_NYSL_0_9982))) {
18127  INTERESTING("NYSL-0.9982");
18128  }
18129  if ((hasSpdxDecl && INFILE(_SPDX_LicenseRef_musl_exception))) {
18130  INTERESTING("musl-exception");
18131  }
18132  return;
18133 }
18134 
18139 void copyleftExceptions(char *filetext, int size, int isML, int isPS)
18140 {
18141  /* no _SPDX_ footprint matches unless this prefix does; INFILE caches it */
18142  int hasSpdxDecl = INFILE(_PHR_SPDX_DECLARATION);
18143 
18144  if ((hasSpdxDecl && INFILE(_SPDX_389_exception))) {
18145  INTERESTING("389-exception");
18146  }
18147  if ((hasSpdxDecl && INFILE(_SPDX_GNAT_exception))) {
18148  INTERESTING("GNAT-exception");
18149  }
18150  if ((hasSpdxDecl && INFILE(_SPDX_mxml_exception))) {
18151  INTERESTING("mxml-exception");
18152  }
18153  if ((hasSpdxDecl && INFILE(_SPDX_Asterisk_exception))) {
18154  INTERESTING("Asterisk-exception");
18155  }
18156  if ((hasSpdxDecl && INFILE(_SPDX_Autoconf_exception_generic_3_0))) {
18157  INTERESTING("Autoconf-exception-generic-3.0");
18158  }
18159  if ((hasSpdxDecl && INFILE(_SPDX_polyparse_exception))) {
18160  INTERESTING("polyparse-exception");
18161  }
18162  if ((hasSpdxDecl && INFILE(_SPDX_GNOME_examples_exception))) {
18163  INTERESTING("GNOME-examples-exception");
18164  }
18165  if ((hasSpdxDecl && INFILE(_SPDX_GStreamer_exception_2005))) {
18166  INTERESTING("GStreamer-exception-2005");
18167  }
18168  if ((hasSpdxDecl && INFILE(_SPDX_GStreamer_exception_2008))) {
18169  INTERESTING("GStreamer-exception-2008");
18170  }
18171  if ((hasSpdxDecl && INFILE(_SPDX_harbour_exception))) {
18172  INTERESTING("harbour-exception");
18173  }
18174  if ((hasSpdxDecl && INFILE(_SPDX_Independent_modules_exception))) {
18175  INTERESTING("Independent-modules-exception");
18176  }
18177  if ((hasSpdxDecl && INFILE(_SPDX_KiCad_libraries_exception))) {
18178  INTERESTING("KiCad-libraries-exception");
18179  }
18180  if ((hasSpdxDecl && INFILE(_SPDX_LLGPL))) {
18181  INTERESTING("LLGPL");
18182  }
18183  if ((hasSpdxDecl && INFILE(_SPDX_fmt_exception))) {
18184  INTERESTING("fmt-exception");
18185  }
18186  if ((hasSpdxDecl && INFILE(_SPDX_UBDL_exception))) {
18187  INTERESTING("UBDL-exception");
18188  }
18189  if ((hasSpdxDecl && INFILE(_SPDX_Swift_exception))) {
18190  INTERESTING("Swift-exception");
18191  }
18192  if ((hasSpdxDecl && INFILE(_SPDX_OCaml_LGPL_linking_exception))) {
18193  INTERESTING("OCaml-LGPL-linking-exception");
18194  }
18195  if ((hasSpdxDecl && INFILE(_SPDX_Qt_GPL_exception_10))) {
18196  INTERESTING("Qt-GPL-exception-1.0");
18197  }
18198  if ((hasSpdxDecl && INFILE(_SPDX_Qt_LGPL_exception_11))) {
18199  INTERESTING("Qt-LGPL-exception-1.1");
18200  }
18201  if ((hasSpdxDecl && INFILE(_SPDX_Universal_FOSS_exception_10))) {
18202  INTERESTING("Universal-FOSS-exception-1.0");
18203  }
18204  if ((hasSpdxDecl && INFILE(_SPDX_Autoconf_exception_20))) {
18205  INTERESTING("Autoconf-exception-2.0");
18206  }
18207  if ((hasSpdxDecl && INFILE(_SPDX_Autoconf_exception_30))) {
18208  INTERESTING("Autoconf-exception-3.0");
18209  }
18210  if ((hasSpdxDecl && INFILE(_SPDX_Bison_exception_22))) {
18211  INTERESTING("Bison-exception-2.2");
18212  }
18213  if ((hasSpdxDecl && INFILE(_SPDX_Bootloader_exception))) {
18214  INTERESTING("Bootloader-exception");
18215  }
18216  if ((hasSpdxDecl && INFILE(_SPDX_Classpath_exception_20))) {
18217  INTERESTING("Classpath-exception-2.0");
18218  }
18219  if ((hasSpdxDecl && INFILE(_SPDX_CLISP_exception_20))) {
18220  INTERESTING("CLISP-exception-2.0");
18221  }
18222  if ((hasSpdxDecl && INFILE(_SPDX_DigiRule_FOSS_exception))) {
18223  INTERESTING("DigiRule-FOSS-exception");
18224  }
18225  if ((hasSpdxDecl && INFILE(_SPDX_eCos_exception_20))) {
18226  INTERESTING("eCos-exception-2.0");
18227  }
18228  if ((hasSpdxDecl && INFILE(_SPDX_Fawkes_Runtime_exception))) {
18229  INTERESTING("Fawkes-Runtime-exception");
18230  }
18231  if ((hasSpdxDecl && INFILE(_SPDX_FLTK_exception))) {
18232  INTERESTING("FLTK-exception");
18233  }
18234  if ((hasSpdxDecl && INFILE(_SPDX_Font_exception_20))) {
18235  INTERESTING("Font-exception-2.0");
18236  }
18237  if ((hasSpdxDecl && INFILE(_SPDX_freertos_exception_20))) {
18238  INTERESTING("freertos-exception-2.0");
18239  }
18240  if ((hasSpdxDecl && INFILE(_SPDX_GCC_exception_20))) {
18241  INTERESTING("GCC-exception-2.0");
18242  }
18243  if ((hasSpdxDecl && INFILE(_SPDX_GCC_exception_31))) {
18244  INTERESTING("GCC-exception-3.1");
18245  }
18246  if ((hasSpdxDecl && INFILE(_SPDX_gnu_javamail_exception))) {
18247  INTERESTING("gnu-javamail-exception");
18248  }
18249  if ((hasSpdxDecl && INFILE(_SPDX_i2p_gpl_java_exception))) {
18250  INTERESTING("i2p-gpl-java-exception");
18251  }
18252  if ((hasSpdxDecl && INFILE(_SPDX_Libtool_exception))) {
18253  INTERESTING("Libtool-exception");
18254  }
18255  if ((hasSpdxDecl && INFILE(_SPDX_Linux_syscall_note))) {
18256  INTERESTING("Linux-syscall-note");
18257  }
18258  if ((hasSpdxDecl && INFILE(_SPDX_LLVM_exception))) {
18259  INTERESTING("LLVM-exception");
18260  }
18261  if ((hasSpdxDecl && INFILE(_SPDX_LZMA_exception))) {
18262  INTERESTING("LZMA-exception");
18263  }
18264  if ((hasSpdxDecl && INFILE(_SPDX_mif_exception))) {
18265  INTERESTING("mif-exception");
18266  }
18267  if ((hasSpdxDecl && INFILE(_SPDX_Nokia_Qt_exception_11))) {
18268  INTERESTING("Nokia-Qt-exception-1.1");
18269  }
18270  if ((hasSpdxDecl && INFILE(_SPDX_OCCT_exception_10))) {
18271  INTERESTING("OCCT-exception-1.0");
18272  }
18273  if ((hasSpdxDecl && INFILE(_SPDX_OpenJDK_assembly_exception_10))) {
18274  INTERESTING("OpenJDK-assembly-exception-1.0");
18275  }
18276  if ((hasSpdxDecl && INFILE(_SPDX_openvpn_openssl_exception))) {
18277  INTERESTING("openvpn-openssl-exception");
18278  }
18279  if ((hasSpdxDecl && INFILE(_SPDX_Qwt_exception_10))) {
18280  INTERESTING("Qwt-exception-1.0");
18281  }
18282  if ((hasSpdxDecl && INFILE(_SPDX_u_boot_exception_20))) {
18283  INTERESTING("u-boot-exception-2.0");
18284  }
18285  if ((hasSpdxDecl && INFILE(_SPDX_WxWindows_exception_31))) {
18286  INTERESTING("WxWindows-exception-3.1");
18287  }
18288  /*
18289  * Find exception phrases. There are similar phrases
18290  * in exception clauses. Therefore 'else if' structure
18291  * has to be used to get correct detections.
18292  */
18293  if (INFILE(_LT_389_exception)) {
18294  INTERESTING("389-exception");
18295  }
18296  else if (INFILE(_LT_ASN1SCC_exception) || INFILE(_LT_ASN1SCC_exception_2)) {
18297  INTERESTING("ASN1SCC-exception");
18298  }
18299  else if (INFILE(_LT_Autoconf_exception_20)) {
18300  INTERESTING("Autoconf-exception-2.0");
18301  }
18302  else if (INFILE(_LT_GPL_EXCEPT_5) && INFILE(_LT_Autoconf_exception_30)) {
18303  INTERESTING("Autoconf-exception-3.0");
18304  }
18305  else if (INFILE(_PHR_Autoconf_exception_30)) {
18306  INTERESTING("Autoconf-exception-3.0");
18307  }
18308  else if (INFILE(_LT_Autoconf_exception_3)) {
18309  /* the 2.0 sentence with another licensor: the macro's owner, or one
18310  the standard head does not name */
18311  if (INFILE(_LT_Autoconf_exception_macro)) {
18312  INTERESTING("Autoconf-exception-macro");
18313  }
18314  else {
18315  INTERESTING("Autoconf-exception-2.0");
18316  }
18317  }
18318  else if (INFILE(_LT_Bison_exception_22)) {
18319  INTERESTING("Bison-exception-2.2");
18320  }
18321  else if (INFILE(_LT_Bison_exception_1) || INFILE(_LT_Bison_exception_2)) {
18322  INTERESTING("Bison-exception");
18323  }
18324  else if (INFILE(_LT_Bootloader_exception)) {
18325  INTERESTING("Bootloader-exception");
18326  }
18327  /* Contains similar text to classpath-exception */
18328  else if (INFILE(_LT_OpenJDK_assembly_exception_10_1) || HASTEXT(_LT_OpenJDK_assembly_exception_10_2, 0)) {
18329  INTERESTING("OpenJDK-assembly-exception-1.0");
18330  }
18331  else if (INFILE(_LT_GPL_EXCEPT_6)) {
18332  if (INFILE(_LT_mif_exception)) {
18333  INTERESTING("Fawkes-Runtime-exception");
18334  }
18335  else {
18336  INTERESTING("Classpath-exception-2.0");
18337  }
18338  }
18339  else if (INFILE(_LT_classpath_exception_1)) {
18340  INTERESTING("Classpath-exception-2.0");
18341  }
18342  else if (HASTEXT(_LT_CLISP_exception_20_1, 0) && INFILE(_LT_CLISP_exception_20_2)) {
18343  INTERESTING("CLISP-exception-2.0");
18344  }
18345  else if (HASTEXT(_TITLE_DigiRule_FOSS_exception, 0) || INFILE(_LT_DigiRule_FOSS_exception)) {
18346  INTERESTING("DigiRule-FOSS-exception");
18347  }
18348  else if (INFILE(_LT_eCos_exception) && INFILE(_LT_GPL_EXCEPT_7)) {
18349  INTERESTING("eCos-exception-2.0");
18350  }
18351  else if (HASTEXT(_LT_FLTK_exception, 0)) {
18352  INTERESTING("FLTK-exception");
18353  }
18354  else if (HASTEXT(_TEXT_FONT, REG_EXTENDED) || INFILE(_LT_FONT_EXCEPTION_20)) {
18355  INTERESTING("Font-exception-2.0");
18356  }
18357  else if (HASTEXT(_LT_freertos_exception_20, 0)) {
18358  INTERESTING("freertos-exception-2.0");
18359  }
18360  else if (INFILE(_LT_freertos_exception_1) || INFILE(_LT_freertos_exception_2)) {
18361  INTERESTING("freertos-exception");
18362  }
18363  else if (INFILE(_LT_GCC_exception_31_1) || INFILE(_LT_GCC_exception_31_2)) {
18364  INTERESTING("GCC-exception-3.1");
18365  }
18366  else if (INFILE(_LT_GCC_exception_20)) {
18367  INTERESTING("GCC-exception-2.0");
18368  }
18369  /* This wording is very similar to GCC_exception_20 */
18370  else if (INFILE(_LT_linking_exception_1)) {
18371  INTERESTING("linking-exception");
18372  }
18373  else if (HASTEXT(_TEXT_GCC, REG_EXTENDED)) {
18374  INTERESTING("GCC-exception");
18375  }
18376  else if (INFILE(_LT_gnu_javamail_exception_1) || INFILE(_LT_gnu_javamail_exception_2)) {
18377  INTERESTING("gnu-javamail-exception");
18378  }
18379  else if (INFILE(_LT_i2p_gpl_java_exception)) {
18380  INTERESTING("i2p-gpl-java-exception");
18381  }
18382  else if (INFILE(_LT_GPL_EXCEPT_1) || INFILE(_LT_GPL_EXCEPT_2)) {
18383  if (HASTEXT(_LT_Libtool_exception, 0)) {
18384  INTERESTING("Libtool-exception");
18385  }
18386  /* the section-7 form was named Autoconf-exception-generic-3.0 above */
18387  if ((HASTEXT(_LT_Autoconf_exception_2, REG_EXTENDED) || INFILE(_LT_Autoconf_exception_1))
18388  && NOT_INFILE(_LT_AUTOCONF_SIMPLE_EXCEPTION)) {
18389  INTERESTING("Autoconf-exception-generic");
18390  }
18391  }
18392  else if (INFILE(_LT_Linux_syscall_note)) {
18393  INTERESTING("Linux-syscall-note");
18394  }
18395  else if (HASTEXT(_LT_LLVM_exception_1, 0) || HASTEXT(_LT_LLVM_exception_2, 0)) {
18396  INTERESTING("LLVM-exception");
18397  }
18398  else if (INFILE(_LT_LZMA_exception) || INFILE(_TITLE_LZMA_EXC)) {
18399  INTERESTING("LZMA-exception");
18400  }
18401  else if (INFILE(_LT_mif_exception)) {
18402  INTERESTING("mif-exception");
18403  }
18404  else if (HASTEXT(_LT_OCCT_exception_10_1, REG_EXTENDED) || INFILE(_LT_OCCT_exception_10_2)) {
18405  INTERESTING("OCCT-exception-1.0");
18406  }
18407  else if (INFILE(_LT_openvpn_openssl_exception)) {
18408  INTERESTING("openvpn-openssl-exception");
18409  }
18410  else if (HASTEXT(_TITLE_QT_GPL_EXCEPTION_10, 0)) {
18411  INTERESTING("Qt-GPL-exception-1.0");
18412  }
18413  else if (HASTEXT(_LT_QT_GPL_EXCEPTION_10_1, 0) && INFILE(_LT_QT_GPL_EXCEPTION_10_2)) {
18414  INTERESTING("Qt-GPL-exception-1.0");
18415  }
18416  else if (HASTEXT(_LT_QT_GPL_EXCEPTION, 0) && HASTEXT(_LT_QT_GPL_EXCEPTION_10_3, 0)) {
18417  INTERESTING("Qt-GPL-exception-1.0");
18418  }
18419  else if (INFILE(_TITLE_Nokia_Qt_LGPL_exception_11)) {
18420  INTERESTING("Nokia-Qt-exception-1.1");
18421  }
18422  else if (INFILE(_TITLE_QT_LGPL_EXCEPTION_11)) {
18423  INTERESTING("Qt-LGPL-exception-1.1");
18424  }
18425  else if (INFILE(_LT_Qwt_exception_10_1)) {
18426  INTERESTING("Qwt-exception-1.0");
18427  }
18428  else if (HASTEXT(_LT_Qwt_exception_10_2, 0)) {
18429  INTERESTING("Qwt-exception-1.0");
18430  }
18431  else if (INFILE(_LT_WxWindows_exception_31)) {
18432  INTERESTING("WxWindows-exception-3.1");
18433  }
18434  /*
18435  * Full license text includes reference to LGPL-2.0-only
18436  * exception clause.
18437  */
18438  else if (INFILE(_PHR_WXWINDOWS_31)) {
18439  INTERESTING("WxWindows-exception-3.1");
18440  INTERESTING("LGPL-2.0-or-later");
18441  }
18442  /*
18443  * This is a vague reference to WxWindows license without
18444  * an exception reference.
18445  */
18446  else if (INFILE(_PHR_WXWINDOWS)) {
18447  INTERESTING("wxWindows");
18448  }
18449  else if (HASTEXT(_LT_u_boot_exception_20, REG_EXTENDED)) {
18450  INTERESTING("u-boot-exception-2.0");
18451  }
18452  else if (HASTEXT(_LT_GPL_EXCEPT_Trolltech, REG_EXTENDED)) {
18453  INTERESTING("trolltech-exception");
18454  }
18455  else if (INFILE(_LT_OpenSSL_exception_1) || INFILE(_LT_OpenSSL_exception_2)) {
18456  INTERESTING("OpenSSL-exception");
18457  }
18458  else if (INFILE(_LT_GPL_UPX_EXCEPT) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
18459  INTERESTING("UPX-exception");
18460  }
18461  else if (INFILE(_URL_mysql_floss_exception) || HASTEXT(_TITLE_mysql_floss_exception, 0)) {
18462  INTERESTING(lDebug ? "mysql-floss-exception(URL)" : "mysql-floss-exception");
18463  }
18464  else if (INFILE(_TITLE_Oracle_foss_exception) || INFILE(_LT_Oracle_foss_exception)) {
18465  INTERESTING("Oracle-foss-exception");
18466  }
18467  else if (INFILE(_LT_linking_exception_2) || (INFILE(_LT_linking_exception_3) && INFILE(_LT_GPL_EXCEPT_7))) {
18468  INTERESTING("linking-exception");
18469  }
18470  else if (HASTEXT(_TITLE_universal_foss_exception_10, 0)
18471  || URL_INFILE(_URL_universal_foss_exception_10)
18472  || INFILE(_LT_universal_foss_exception_10)) {
18473  INTERESTING("Universal-FOSS-exception-1.0");
18474  }
18475  else if (INFILE(_LT_GPL_EXCEPT_1)) {
18476  INTERESTING(lDebug ? "GPL-except-1" : "GPL-exception");
18477  }
18478  else if (INFILE(_LT_GPL_EXCEPT_2)) {
18479  INTERESTING(lDebug ? "GPL-except-2" : "GPL-exception");
18480  }
18481  else if (INFILE(_LT_GPL_EXCEPT_3)) {
18482  INTERESTING(lDebug ? "GPL-except-3" : "GPL-exception");
18483  }
18484  else if (INFILE(_LT_GPL_EXCEPT_4)) {
18485  INTERESTING(lDebug ? "GPL-except-4" : "GPL-exception");
18486  }
18487  else if (INFILE(_LT_GPL_EXCEPT_7)) {
18488  INTERESTING("linking-exception");
18489  }
18490  else if (INFILE(_LT_GPL_SWI_PROLOG_EXCEPT)) {
18491  INTERESTING(lDebug ? "GPL-swi-prolog" : "GPL-exception");
18492  }
18493 
18494  return;
18495 }
18496 
18497 #ifdef LTSR_DEBUG
18498 #define LT_TARGET 1299 /* set to -1 OR the string# to track */
18499 void showLTCache(char *msg)
18500 {
18501  int i = 0;
18502  int nCached = 0;
18503  int nMatch = 0;
18504 
18505  printf("%s\n", msg);
18506  if (LT_TARGET >= 0) {
18507  printf("... tracking string #%d\n", LT_TARGET);
18508  }
18509  while (i < NFOOTPRINTS) {
18510  if (ltsr[i] < LTSR_SMASK) {
18511  printf(i == LT_TARGET ? "x" : ".");
18512  } else if (ltsr[i] == LTSR_YES) {
18513  printf("%%");
18514  nMatch++;
18515  nCached++;
18516  } else {
18517  printf(i == LT_TARGET ? "0" : ":");
18518  nCached++;
18519  }
18520  if ((++i % 75) == 0) {
18521  printf("|%04d\n", i);
18522  }
18523  }
18524  printf("\nLTSR-matches: %d, Cached: %d\n", nMatch, nCached);
18525  return;
18526 }
18527 #endif /* LTSR_DEBUG */
18528 
18529 #ifdef DOCTOR_DEBUG
18530 /*
18531  Debugging
18532  */
18533 void dumpMatch(char *text, char *label)
18534 {
18535  char *x = text + cur.regm.rm_so;
18536  char *cp = text + cur.regm.rm_eo;
18537 
18538  if (label) {
18539  printf("%s ", label);
18540  }
18541  printf("@ %d [", cur.regm.rm_so);
18542  for (; x < cp; x++) {
18543  if (!isEOL(*x)) {
18544  printf("%c", *x);
18545  }
18546  }
18547  printf("]\n");
18548 
18549  return;
18550 }
18551 
18552 #endif /* DOCTOR_DEBUG */
void doctorBuffer(char *buf, int isML, int isPS, int isCR)
Convert a buffer of multiple stuff to text-only, separated by spaces.
void listDump(list_t *l, int verbose)
print the passed in list
Definition: list.c:829
item_t * listGetItem(list_t *l, char *s)
get an item from the itemlist. If the item is not in the itemlist, then add it to the itemlist.
Definition: list.c:246
void listIterationReset(list_t *l)
Rest list ix to -1.
Definition: list.c:513
void listInit(list_t *l, int size, char *label)
intialize a list, if the list is not empty, empty it (initialize it to zero's).
Definition: list.c:54
item_t * listIterate(list_t *l)
return a pointer to listitem, returns a NULL_ITEM when no more items to return.
Definition: list.c:477
void listSort(list_t *l, int sortType)
Sort the list as per the sortType passed.
Definition: list.c:631
void listClear(list_t *l, int deallocFlag)
Destroy list_t.
Definition: list.c:106
if(!preg_match("/\s$projectGroup\s/", $groups) &&(posix_getgid() !=$gInfo[ 'gid']))
get monk license list of one specified uploadtree_id
Definition: migratetest.php:33
void printRegexMatch(int n, int cached)
CDB – Need to review this code, particularly for the use of an external file (Nomos....
Definition: util.c:991
char * getInstances(char *textp, int size, int nBefore, int nAfter, char *regex, int recordOffsets)
Get occurrence of a regex in a given string pointer.
Definition: util.c:631
char * copyString(char *s, char *label)
Create a copy of a string.
Definition: util.c:594
void Assert(int fatalFlag, const char *fmt,...)
Raise an assert.
Definition: util.c:1408
char * findEol(char *s)
Find first ROL in a string.
Definition: util.c:379
licText_t licText[]
Nomos header file.
#define NULL_ITEM
NULL item.
Definition: nomos.h:231
#define memFree(x, y)
Definition: nomos.h:531
#define NULL_STR
NULL string.
Definition: nomos.h:235
#define _SEED(x)
Definition: nomos.h:451
#define _REGEX(x)
Definition: nomos.h:447
#define isEOL(x)
Check if x points to a EOL character.
Definition: nomos.h:240
#define YES
Definition: nomos.h:175
#define LTSR_RMASK
Definition: nomos.h:196
#define LTSR_NO
Definition: nomos.h:199
#define NO
Definition: nomos.h:171
#define LTSR_SMASK
Definition: nomos.h:197
void Bail(int exitval)
Close connections and exit.
Definition: nomos_utils.c:538
#define FL_SAVEBASE
Definition: nomos.h:155
#define NULL_CHAR
NULL character.
Definition: nomos.h:234
#define LTSR_YES
Definition: nomos.h:198
#define OPTS_DEBUG
Definition: nomos.h:138
int optionIsSet(int val)
Check if an CLI option is set.
Definition: nomos_utils.c:567
int idxGrep_recordPosition(int index, char *data, int flags)
compile a regex, perform the search and record findings
Definition: nomos_regex.c:220
int idxGrep(int index, char *data, int flags)
compile a regex, and perform the search (on data?)
Definition: nomos_regex.c:205
int strGrep(char *regex, char *data, int flags)
General-purpose grep function, used for one-time-only searches.
Definition: nomos_regex.c:139
int idxGrep_recordPositionDoctored(int index, char *data, int flags)
compile a regex, perform the search and record findings
Definition: nomos_regex.c:241
int strNbuf(char *data, char *str)
Check if a string exists in buffer (case insensitive)
Definition: nomos_regex.c:536
void cleanLicenceBuffer()
Clean the license buffer.
Definition: nomos_utils.c:1018
FUNCTION void addLicence(GArray *theMatches, char *licenceName)
Add a license to the matches array.
Definition: nomos_utils.c:1003
#define NY_INFILE(x)
Calls fileHasPatt() with qType 4.
Definition: parse.c:196
#define URL_INFILE(x)
Check in file with qType 0|1.
Definition: parse.c:202
char * aslVersion(char *, int, int, int)
Check for ASL Apache versions.
Definition: parse.c:13164
static char licStr[myBUFSIZ]
Definition: parse.c:164
#define RM_INFILE(x)
Calls fileHasPatt() with qType 1.
Definition: parse.c:193
void addRef(char *, int)
This function fills in a character-buffer for a license of a CURRENT file being evaluated,...
Definition: parse.c:15330
char * pythonVersion(char *, int, int, int)
Check for python versions.
Definition: parse.c:13521
char * gfdlVersion(char *, int, int, int)
Check for GFDL versions.
Definition: parse.c:13886
static int lDebug
Definition: parse.c:179
static int lDiags
Definition: parse.c:180
void checkCornerCases(char *, int, int, int, int, int, int, int)
If we call this function, we still don't know anything about a license.
Definition: parse.c:15999
#define HASREGEX(x, cp)
Calls idxGrep()
Definition: parse.c:199
#define PARSE_ARGS
Arguments to parse.
Definition: parse.c:188
#define SEEN(x)
Check LTSR_SMASK on lstr[x].
Definition: parse.c:190
char * cplVersion(char *, int, int, int)
Check for CPL versions.
Definition: parse.c:14242
#define NOT_INFILE(x)
Calls fileHasPatt()
Definition: parse.c:192
int findPhrase(int, char *, int, int, int, int)
Check for the presence of a phrase in a file by first searching for the search key provided.
Definition: parse.c:14507
char * parseLicenses(char *filetext, int size, scanres_t *scp, int isML, int isPS)
Parse a file to check all the possible licenses and add them to matches.
Definition: parse.c:363
static char * sisslVersion(char *, int, int, int)
Check for SISSL versions.
Definition: parse.c:13137
static char * gplVersion(char *, int, int, int)
Check for GPL versions.
Definition: parse.c:14061
char * lpplVersion(char *, int, int, int)
Check for LPPL versions.
Definition: parse.c:13696
#define HASTEXT(x, fl)
Calls idxGrep_recordIndex()
Definition: parse.c:201
char * oslVersion(char *, int, int, int)
Check for OSL versions.
Definition: parse.c:13616
void checkFileReferences(char *, int, int, int, int, int)
Generic license-phrases referring to other files or running commands.
Definition: parse.c:15666
static int dbgIdxGrep(int, char *, int)
Debugging call for idxGrep()
Definition: parse.c:320
static struct @1 kludge
void saveRegexLocation(int, int, int, int)
Save a regex in whereList.
Definition: parse.c:15278
#define INFILE(x)
Calls fileHasPatt()
Definition: parse.c:191
int checkUnclassified(char *, int, int, int, int, int)
This function is called when all the above license-checks don't turn up anything useful....
Definition: parse.c:15518
void locateRegex(char *, item_t *, int, int, int, int)
Locate a regex in a given file.
Definition: parse.c:14997
#define HASREGEX_RI(x, cp)
Calls idxGrep_recordIndex()
Definition: parse.c:200
char * cddlVersion(char *, int, int, int)
Check for CDDL versions.
Definition: parse.c:13656
int famOPENLDAP(char *, int, int, int)
Utility function to search for OpenLDAP licenses. So many different footprints are used by OpenLDAP,...
Definition: parse.c:15416
char * lgplVersion(char *, int, int, int)
Check for LGPL versions.
Definition: parse.c:13952
static int fileHasPatt(int licTextIdx, char *filetext, int size, int isML, int isPS, int qType)
Checks for a phrase in a file.
Definition: parse.c:248
static char ltsr[NFOOTPRINTS]
Definition: parse.c:166
char * aflVersion(char *, int, int, int)
Check for AFL versions.
Definition: parse.c:13576
void spdxReference(char *, int, int, int)
Definition: parse.c:16298
void copyleftExceptions(char *, int, int, int)
Definition: parse.c:18139
char * ccVersion(char *, int, int, int)
Check for CC_BY-X versions.
Definition: parse.c:14273
char * agplVersion(char *, int, int, int)
Check for AGPL versions.
Definition: parse.c:13802
char * mplNplVersion(char *, int, int, int)
Check for MPL|NPL versions.
Definition: parse.c:13353
#define PERL_INFILE(x)
Calls fileHasPatt() with qType 3.
Definition: parse.c:195
static char * realVersion(char *, int, int, int, int)
Check for RPSL versions.
Definition: parse.c:13471
#define GPL_INFILE(x)
Calls fileHasPatt() with qType 2.
Definition: parse.c:194
static int pd
Definition: parse.c:175
#define LVAL(x)
Check LTSR_RMASK on lstr[x].
Definition: parse.c:189
start($application)
start the application Assumes application is restartable via /etc/init.d/<script>....
Definition: pkgConfig.php:1214
GArray * theMatches
Definition: nomos.h:417
int uPsize
Size.
Definition: nomos.h:349
int flags
Flags.
Definition: nomos.h:348
char progName[64]
Program name.
Definition: nomos.h:346
searchString_t text
License text.
Definition: nomos.h:335
char * regex
License regex.
Definition: nomos.h:435
char * tseed
unencrypted license text
Definition: nomos.h:436
list_t type structure used to keep various lists. (e.g. there are multiple lists).
Definition: nomos.h:308
item_t * items
Definition: nomos.h:317
int used
Definition: nomos.h:310
tricky data structure used for a list of 'items'
Definition: nomos.h:274
void * buf
Definition: nomos.h:279
char * str
Definition: nomos.h:278
int score
License match score.
Definition: nomos.h:457
int csLen
String length.
Definition: nomos.h:325