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);
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)) {
583  INTERESTING("CMU-Mach");
584  lmem[_mMIT] = 1;
585  }
587  if (INFILE(_LT_CMR_NO)) {
588  INTERESTING("CMR");
589  lmem[_mMIT] = 1;
590  }
592  if (INFILE(_LT_CMU_MIT)) {
593  INTERESTING("CMU-MIT-style");
594  lmem[_mMIT] = 1;
595  }
597  if (INFILE(_LT_CMU_TEMPLATE)) {
598  INTERESTING("CMU");
599  lmem[_mMIT] = 1;
600  }
602  if (INFILE(_LT_CORPORATE_ACCOUNTABILITY_1_1)) {
603  INTERESTING("CAL-Software");
604  lmem[_mMIT] = 1;
605  }
607  if (INFILE(_LT_DMALLOC)) {
608  INTERESTING("dmalloc");
609  lmem[_mMIT] = 1;
610  }
612  if (INFILE(_LT_DOCBOOK_2)) {
613  INTERESTING("DOCBOOK");
614  lmem[_mMIT] = 1;
615  }
617  if (INFILE(_LT_DR_JOHN_MADDOCK)) {
618  INTERESTING("Dr-John-Maddock");
619  lmem[_mMIT] = 1;
620  }
622  if (INFILE(_LT_DROPBEAR)) {
623  INTERESTING("Dropbear");
624  lmem[_mMIT] = 1;
625  }
627  if (INFILE(_LT_FACEBOOK_SOFTWARE_LICENSE)) {
628  INTERESTING("Facebook-Software");
629  lmem[_mMIT] = 1;
630  }
632  if (INFILE(_LT_GITLAB_EE)) {
633  INTERESTING("GitLab-EE");
634  lmem[_mMIT] = 1;
635  }
637  if (INFILE(_LT_GOOGLE_MAPS_TOS_2020_05_06)) {
638  INTERESTING("Google-Maps-Platform-ToS-2020-05-06");
639  }
641  if (INFILE(_LT_GPL_2_0_PLUS_GEOSERVER)) {
642  INTERESTING("GPL-2.0-or-later-geoserver");
643  lmem[_mGPL] = 1;
644  }
646  if (INFILE(_LT_GPL_3_0_APTANA)) {
647  INTERESTING("GPL-3.0-with-Aptana-exception");
648  lmem[_mGPL] = 1;
649  }
651  if (INFILE(_LT_HDF4)) {
652  INTERESTING("HDF4");
653  }
655  if (INFILE(_LT_HDF5)) {
656  INTERESTING("HDF5");
657  }
659  if (INFILE(_LT_HIPPOCRATIC_2_0)) {
660  INTERESTING("Hippocratic-2.0");
661  lmem[_mMIT] = 1;
662  }
664  if (INFILE(_LT_IBPP)) {
665  INTERESTING("IBPP");
666  lmem[_mMIT] = 1;
667  }
669  if (INFILE(_LT_IC_1_0)) {
670  INTERESTING("IC-1.0");
671  lmem[_mMIT] = 1;
672  }
674  if (INFILE(_LT_IC_SHARED_1_0)) {
675  INTERESTING("IC-Shared-1.0");
676  lmem[_mMIT] = 1;
677  }
679  if (INFILE(_LT_ILMID)) {
680  INTERESTING("ilmid");
681  lmem[_mMIT] = 1;
682  }
684  if (INFILE(_LT_JASPER_1_0)) {
685  INTERESTING("Jasper-1.0");
686  lmem[_mAPACHE] = 1;
687  }
689  if (INFILE(_LT_KERBEROS)) {
690  INTERESTING("Kerberos");
691  lmem[_mMIT] = 1;
692  }
694  if (INFILE(_LT_KEVLIN_HENNEY)) {
695  INTERESTING("HPND-Kevlin-Henney");
696  lmem[_mMIT] = 1;
697  }
699  if (INFILE(_LT_KREATIVE_RELAY_FONTS_FREE_USE_1_2F)) {
700  INTERESTING("Kreative-Software-Relay-Fonts-Free-Use-1.2f");
701  lmem[_mMIT] = 1;
702  }
704  if (INFILE(_LT_LIBMIB)) {
705  INTERESTING("LibMib");
706  lmem[_mMIT] = 1;
707  }
709  if (INFILE(_LT_LUMISOFT_MAIL_SERVER)) {
710  INTERESTING("LumiSoft-Mail-Server");
711  lmem[_mMIT] = 1;
712  }
714  if (INFILE(_LT_LUXI)) {
715  INTERESTING("Bigelow-and-Holmes-Luxi-fonts");
716  lmem[_mMIT] = 1;
717  }
719  if (INFILE(_LT_MIT_NO_TRADEMARKS)) {
720  INTERESTING("MIT-No-Commercial-Use-of-Trademarks");
721  lmem[_mMIT] = 1;
722  }
724  if (INFILE(_LT_MIT_OLD_STYLE_SPARSE)) {
725  INTERESTING("MIT-Old-Style-Spare");
726  lmem[_mMIT] = 1;
727  }
729  if (INFILE(_LT_MIT_TAYLOR_VARIANT)) {
730  INTERESTING("pkgconf");
731  lmem[_mMIT] = 1;
732  }
734  if (INFILE(_LT_MIT_XFIG)) {
735  INTERESTING("Xfig");
736  lmem[_mMIT] = 1;
737  }
739  if (INFILE(_LT_MS_CL)) {
740  INTERESTING("MS-CL");
741  }
743  if (INFILE(_LT_MS_VISUAL_STUDIO_CODE_2022)) {
744  INTERESTING("MS-Visual-Studio-Code-2022");
745  lmem[_mMIT] = 1;
746  }
748  if (INFILE(_LT_MULLE_KYBERNETIK)) {
749  INTERESTING("Mulle-Kybernetik");
750  lmem[_mMIT] = 1;
751  }
753  if (INFILE(_LT_MX4J_2)) {
754  INTERESTING("MX4J");
755  lmem[_mAPACHE] = 1;
756  }
758  if (INFILE(_LT_NEWTON_KING_CLA)) {
759  INTERESTING("Newton-King-CLA");
760  lmem[_mMIT] = 1;
761  }
763  if (INFILE(_LT_NICE)) {
764  INTERESTING("Nice");
765  lmem[_mMIT] = 1;
766  }
768  if (INFILE(_LT_NONEXCLUSIVE)) {
769  INTERESTING("Nonexclusive");
770  lmem[_mMIT] = 1;
771  }
773  if (INFILE(_LT_NRL_PERMISSION)) {
774  INTERESTING("CMU-Mach-nodoc");
775  lmem[_mMIT] = 1;
776  }
778  if (INFILE(_LT_NXP_MICROCONTROLLER_PROPRIETARY)) {
779  INTERESTING("NXP-Microcontroller-Proprietary");
780  lmem[_mMIT] = 1;
781  }
783  if (INFILE(_LT_OPENSSL_EXCEPTION_AGPL_3_0_PLUS)) {
784  INTERESTING("openssl-exception-AGPL-3.0-or-later");
785  lmem[_mGPL] = 1;
786  }
788  if (INFILE(_LT_ORACLE_MYSQL_FOSS_EXCEPTION_2_0)) {
789  INTERESTING("Oracle-MySQL-FOSS-exception-2.0");
790  lmem[_mGPL] = 1;
791  }
793  if (INFILE(_LT_PASSIVE_AGGRESSIVE)) {
794  INTERESTING("Passive-Aggressive");
795  lmem[_mMIT] = 1;
796  }
798  if (INFILE(_LT_PPP)) {
799  INTERESTING("ppp");
800  lmem[_mMIT] = 1;
801  }
803  if (INFILE(_LT_PROSPERITY_3_0)) {
804  INTERESTING("Prosperity-Public-3.0");
805  lmem[_mMIT] = 1;
806  }
808  if (INFILE(_LT_PYBENCH)) {
809  INTERESTING("pybench");
810  lmem[_mMIT] = 1;
811  }
813  if (INFILE(_LT_PYGRES_2_2)) {
814  INTERESTING("PyGres-2.2");
815  }
817  if (INFILE(_LT_REPORTBUG)) {
818  INTERESTING("Debian-reportbug");
819  lmem[_mMIT] = 1;
820  }
822  if (INFILE(_LT_SCINTILLA)) {
823  INTERESTING("Scintilla");
824  lmem[_mMIT] = 1;
825  }
827  if (INFILE(_LT_SECRET_LABS_2011)) {
828  INTERESTING("Secret-Labs-2011");
829  lmem[_mMIT] = 1;
830  }
832  if (INFILE(_LT_STLPORT_2000)) {
833  INTERESTING("STLport-2000");
834  lmem[_mMIT] = 1;
835  }
837  if (INFILE(_LT_TTYP0)) {
838  INTERESTING("TTYP0");
839  lmem[_mMIT] = 1;
840  }
842  if (INFILE(_LT_UPL_1_0)) {
843  INTERESTING("UPL-1.0");
844  lmem[_mMIT] = 1;
845  }
847  if (INFILE(_LT_WESTHAWK)) {
848  INTERESTING("Westhawk");
849  lmem[_mMIT] = 1;
850  }
852  if (INFILE(_LT_X11_DEC2)) {
853  INTERESTING("HPND-DEC");
854  lmem[_mMIT] = 1;
855  }
857  if (INFILE(_LT_X11_DOC)) {
858  INTERESTING("X11-Documentation");
859  lmem[_mMIT] = 1;
860  }
862  if (INFILE(_LT_X11_DSC)) {
863  INTERESTING("X11-Style-DSC-Technologies");
864  lmem[_mMIT] = 1;
865  }
867  if (INFILE(_LT_X11_HANSON)) {
868  INTERESTING("X11-Style-David-R.-Hanson");
869  lmem[_mMIT] = 1;
870  }
872  if (INFILE(_LT_X11_OPENGL)) {
873  INTERESTING("SGI-OpenGL");
874  lmem[_mMIT] = 1;
875  }
877  if (INFILE(_LT_X11_QUARTERDECK)) {
878  INTERESTING("X11-Style-Quarterdeck");
879  lmem[_mMIT] = 1;
880  }
882  if (INFILE(_LT_X11R5_AUTHORS)) {
883  INTERESTING("X11-R5-Authors");
884  lmem[_mMIT] = 1;
885  }
887  if (INFILE(_LT_X11_X11R5)) {
888  INTERESTING("X11-R5");
889  lmem[_mMIT] = 1;
890  }
892  if (INFILE(_LT_BSD_3_CLAUSE_LBNL)) {
893  INTERESTING("BSD-3-Clause-LBNL");
894  }
896  if (INFILE(_LT_BLAS_2017)) {
897  INTERESTING("BLAS-2017");
898  }
900  /*
901  * Check Apache licenses before BSD
902  */
903  if (HASTEXT(_PHR_Apache_ref0, REG_EXTENDED) || INFILE(_PHR_Apache_ref7) || INFILE(_TITLE_Apache)) {
904  /* Exceptions modify an Apache grant rather than replacing it, so
905  record them and still resolve the base Apache version below. */
906  if (INFILE(_LT_APACHE_2_0_LINKING_EXCEPTION)) {
907  INTERESTING("Apache-2.0-with-Linking-Exception");
908  }
909  else if (INFILE(_LT_SWIFT_EXCEPTION)) {
910  INTERESTING("Swift-exception");
911  }
912  if (INFILE(_LT_QUICKFIX_1_0)) {
913  INTERESTING("QuickFix-1.0");
914  lmem[_mAPACHE] = 1;
915  }
916  else if (INFILE(_LT_CLOUDERA_EXPRESS)) {
917  INTERESTING("Cloudera-Express");
918  lmem[_mAPACHE] = 1;
919  }
920  else if (INFILE(_LT_COCKROACH)) {
921  INTERESTING("CockroachDB-BSL-1.1");
922  }
923  else if (INFILE(_LT_COCKROACHDB_USE_GRANT_FOR_BSL_1_1)) {
924  INTERESTING("CockroachDB-Use-Grant-for-BSL-1.1");
925  }
926  else if (INFILE(_LT_DGRAPH_CLA)) {
927  INTERESTING("Dgraph-Community");
928  }
929  else if (INFILE(_LT_ELASTIC_LICENSE_2018)) {
930  INTERESTING("Elastic-2018");
931  lmem[_mAPACHE] = 1;
932  }
933  else if (INFILE(_LT_GCEL_2022)) {
934  INTERESTING("GCEL-2022");
935  }
936  else if (INFILE(_LT_JYTHON)) {
937  INTERESTING("Jython");
938  lmem[_mAPACHE] = 1;
939  }
940  else if (INFILE(_LT_LEAP_MOTION_SDK_2019)) {
941  INTERESTING("Leap-Motion-SDK-2019");
942  lmem[_mAPACHE] = 1;
943  }
944  else if (INFILE(_LT_PHORUM_2_0)) {
945  INTERESTING("Phorum-2.0");
946  lmem[_mAPACHE] = 1;
947  }
948  else if (INFILE(_LT_SHL_0_5)) {
949  INTERESTING("SHL-0.5");
950  lmem[_mAPACHE] = 1;
951  }
952  else if (INFILE(_LT_SHL_0_51)) {
953  INTERESTING("SHL-0.51");
954  lmem[_mAPACHE] = 1;
955  }
956  else if (INFILE(_LT_SHL_2_0)) {
957  INTERESTING("SHL-2.0");
958  lmem[_mAPACHE] = 1;
959  }
960  else if (INFILE(_LT_SHL_2_1)) {
961  INTERESTING("SHL-2.1");
962  lmem[_mAPACHE] = 1;
963  }
964  else if (INFILE(_LT_SYMPHONYSOFT)) {
965  INTERESTING("Symphonysoft");
966  lmem[_mAPACHE] = 1;
967  }
968  else if (INFILE(_LT_TSL_2018)) {
969  INTERESTING("TSL");
970  }
971  else if (INFILE(_LT_TSL_2020)) {
972  INTERESTING("TSL-2020");
973  }
974  else if (INFILE(_LT_UCL_1_0)) {
975  INTERESTING("UCL-1.0");
976  lmem[_mAPACHE] = 1;
977  }
978  else {
979  cp = ASLVERS();
980  INTERESTING(cp);
981  }
982  }
984  /*
985  * Fallback independent checks for licenses that reference Apache but are
986  * not Apache derivatives. These run unconditionally so files that lack
987  * the Apache pre-filter text are still detected.
988  */
989  if (INFILE(_LT_COCKROACH)) {
990  INTERESTING("CockroachDB-BSL-1.1");
991  }
993  if (INFILE(_LT_COCKROACHDB_USE_GRANT_FOR_BSL_1_1)) {
994  INTERESTING("CockroachDB-Use-Grant-for-BSL-1.1");
995  }
997  if (INFILE(_LT_DGRAPH_CLA)) {
998  INTERESTING("Dgraph-Community");
999  }
1001  if (INFILE(_LT_GCEL_2022)) {
1002  INTERESTING("GCEL-2022");
1003  }
1005  if (INFILE(_LT_TSL_2018)) {
1006  INTERESTING("TSL");
1007  }
1009  if (INFILE(_LT_TSL_2020)) {
1010  INTERESTING("TSL-2020");
1011  }
1013  /*
1014  * BSD and all the variant 'flavors'. BSD licenses are kind of like
1015  * the cooking concept of 'the mother sauces' -- MANY things are derived
1016  * from the wordings of these licenses. There are still many more, for
1017  * certain, but LOTS of licenses are based on ~10 originally-BSD-phrases.
1018  */
1019  if (INFILE(_LT_WHITECAT)) {
1020  INTERESTING("Whitecat");
1021  }
1022  else if (INFILE(_LT_TWISTED_SNMP)) {
1023  INTERESTING("TwistedSNMP");
1024  }
1025  else if (INFILE(_LT_TTF2PT1)) {
1026  INTERESTING("TTF2PT1-Project");
1027  }
1028  else if (INFILE(_LT_STMICROELECTRONICS_CENTRALLABS)) {
1029  INTERESTING("STMicroelectronics-CentralLabs");
1030  }
1031  else if (INFILE(_LT_ST_BSD_RESTRICTED)) {
1032  INTERESTING("STMicro-BSD-Restricted");
1033  }
1034  else if (INFILE(_LT_SPARKY)) {
1035  INTERESTING("Sparky");
1036  }
1037  else if (INFILE(_LT_SPEECHWORKS_1_1)) {
1038  INTERESTING("SpeechWorks-Public-1.1");
1039  }
1040  else if (INFILE(_LT_SCANSOFT_1_2)) {
1041  INTERESTING("ScanSoft-Public-1.2");
1042  }
1043  else if (INFILE(_LT_RICEBSD)) {
1044  INTERESTING("RiceBSD");
1045  }
1046  else if (INFILE(_LT_RED_HAT_BSD_SIMPLIFIED)) {
1047  INTERESTING("Red-Hat-BSD-Simplified");
1048  }
1049  else if (INFILE(_LT_QUALCOMM_TURING)) {
1050  INTERESTING("Qualcomm-Turing");
1051  }
1052  else if (INFILE(_LT_PROTOBUF)) {
1053  INTERESTING("Protobuf");
1054  }
1055  else if (INFILE(_LT_PAUL_MACKERRAS_NEW)) {
1056  INTERESTING("Mackerras-3-Clause");
1057  }
1058  else if (INFILE(_LT_ORACLE_CODE_SAMPLES_BSD)) {
1059  INTERESTING("Oracle-Code-Samples-BSD-Style");
1060  }
1061  else if (INFILE(_LT_OPENSAML_1_0)) {
1062  INTERESTING("OpenSAML-v1");
1063  }
1064  else if (INFILE(_LT_OPENORB_1_0)) {
1065  INTERESTING("OpenORB-Community-1.0");
1066  }
1067  else if (INFILE(_LT_MINPACK)) {
1068  INTERESTING("Minpack");
1069  }
1070  else if (INFILE(_LT_LIBZIP)) {
1071  INTERESTING("libzip");
1072  }
1073  else if (INFILE(_LT_JGRAPH)) {
1074  INTERESTING("JGraph");
1075  }
1076  else if (INFILE(_LT_INDIANA_EXTREME)) {
1077  INTERESTING("Indiana-Extreme-1.1.1");
1078  }
1079  else if (INFILE(_LT_GEOFF_KUENNING_1993)) {
1080  INTERESTING("Geoff-Kuenning-1993");
1081  }
1082  else if (INFILE(_LT_FAR_MANAGER_EXCEPTION)) {
1083  INTERESTING("Far-Manager-exception");
1084  }
1085  else if (INFILE(_LT_FLEX_2_5)) {
1086  INTERESTING("BSD-3-Clause-flex");
1087  }
1088  else if (INFILE(_LT_ENERGYPLUS_BSD)) {
1089  INTERESTING("EnergyPlus-BSD-Style");
1090  }
1091  else if (INFILE(_LT_DOS32A_EXTENDER)) {
1092  INTERESTING("DOS32A-Extender");
1093  }
1094  else if (INFILE(_LT_COMPONENTACE_JCRAFT)) {
1095  INTERESTING("ComponentAce-JCraft");
1096  }
1097  else if (INFILE(_LT_CHICKEN_DL_0_2)) {
1098  INTERESTING("Chicken-Dance-v0.2");
1099  }
1100  else if (INFILE(_LT_BSD_UNMODIFIED)) {
1101  INTERESTING("BSD-Unmodified");
1102  }
1103  else if (INFILE(_LT_BSD_UNCHANGED)) {
1104  INTERESTING("BSD-Unchanged");
1105  }
1106  else if (INFILE(_LT_BSD_PLUS_MOD_NOTICE)) {
1107  INTERESTING("BSD-plus-modification-notice");
1108  }
1109  else if (INFILE(_LT_BSD_INTEL)) {
1110  INTERESTING("BSD-Intel");
1111  }
1112  else if (INFILE(_LT_BSD_NEW_FAR_MANAGER)) {
1113  INTERESTING("BSD-3-Clause-with-Far-Manager-exception");
1114  }
1115  else if (INFILE(_LT_BSD_NEW_NOMOD)) {
1116  INTERESTING("BSD-3-Clause-without-notice-modification");
1117  }
1118  else if (INFILE(_LT_BSD_ACK_CARROT2)) {
1119  INTERESTING("BSD-Acknowledgment-Carrot2");
1120  }
1121  else if (INFILE(_LT_BSD_EXPORT)) {
1122  INTERESTING("BSD-Export");
1123  }
1124  else if (INFILE(_LT_BSD_3_CLAUSE_NO_TRADEMARK)) {
1125  INTERESTING("BSD-3-Clause-no-trademark");
1126  }
1127  else if (INFILE(_LT_BSD_2_CLAUSE_PLUS_ADVERTIZING)) {
1128  INTERESTING("BSD-2-Clause-plus-advertizing");
1129  }
1130  else if (INFILE(_LT_BSD_3_CLAUSE_SUN)) {
1131  INTERESTING("BSD-3-Clause-Sun");
1132  }
1133  else if (INFILE(_LT_ATMEL_MICROCONTROLLER)) {
1134  INTERESTING("Atmel-Microcontroller");
1135  }
1136  else if (INFILE(_LT_ALTERMIME)) {
1137  INTERESTING("alterMIME");
1138  }
1139  else if (INFILE(_LT_ALLEN_INSTITUTE_SOFTWARE_2018)) {
1140  INTERESTING("Allen-Institute-Software-2018");
1141  }
1142  else if (INFILE(_LT_BSD_1)) {
1143  if (INFILE(_TITLE_PHP301)) {
1144  INTERESTING(lDebug ? "PHP(v3.01#1)" : "PHP-3.01");
1145  lmem[_mPHP] = 1;
1146  }
1147  else if (INFILE(_TITLE_PHP30)) {
1148  INTERESTING(lDebug ? "PHP(v3.0#1)" : "PHP-3.0");
1149  lmem[_mPHP] = 1;
1150  }
1151  else if (INFILE(_TITLE_PHP202)) {
1152  INTERESTING(lDebug ? "PHP(v2.02#1)" : "PHP-2.02");
1153  lmem[_mPHP] = 1;
1154  }
1155  else if (INFILE(_CR_VOVIDA) || INFILE(_TITLE_VOVIDA)) {
1156  INTERESTING("VSL-1.0");
1157  lmem[_fBSD] = 1;
1158  }
1159  else if (INFILE(_CR_NAUMEN) || INFILE(_TITLE_NAUMEN)) {
1160  INTERESTING("Naumen");
1161  }
1162  else if (INFILE(_CR_ENTESSA) || INFILE(_TITLE_ENTESSA)) {
1163  INTERESTING("Entessa");
1164  }
1165  else if (INFILE(_LT_ATTRIB) || INFILE(_TITLE_ATTRIBUTION)) {
1166  INTERESTING("AAL");
1167  lmem[_fATTRIB] = 1;
1168  }
1169  else if (INFILE(_CR_ZOPE)) {
1170  INTERESTING(lDebug ? "Zope(bsd)" : "ZPL");
1171  }
1172  else if (INFILE(_LT_Oracle_Berkeley_DB)) {
1173  INTERESTING("Oracle-Berkeley-DB");
1174  }
1175  else if (INFILE(_CR_SLEEPYCAT) || INFILE(_LT_SLEEPYCAT_1)) {
1176  MEDINTEREST(lDebug ? "Sleepycat(1)" : "Sleepycat");
1177  }
1178  else if (INFILE(_TITLE_ZEND_V20)) {
1179  INTERESTING("Zend-2.0");
1180  }
1181  else if (!lmem[_fOPENLDAP] && !TRYGROUP(famOPENLDAP)) {
1182  if (INFILE(_LT_RADVD)) {
1183  INTERESTING("radvd");
1184  }
1185  else if (HASTEXT(_LT_OPENSSLref5, REG_EXTENDED)) {
1186  INTERESTING(lDebug ? "OpenSSL(ref)" : "OpenSSL");
1187  }
1188  else if (INFILE(_LT_BSD_CLAUSE_0) && INFILE(_LT_BSD_CLAUSE_1) && INFILE(_LT_BSD_CLAUSE_2)) {
1189  if (INFILE(_LT_BSD_CLAUSE_3) && (INFILE(_LT_BSD_CLAUSE_4) || INFILE(_LT_BSD_CLAUSE_4_LONG)) && INFILE(_LT_UC)) {
1190  INTERESTING("BSD-4-Clause-UC");
1191  }
1192  else if (INFILE(_LT_BSD_CLAUSE_3) && (INFILE(_LT_BSD_CLAUSE_4) || INFILE(_LT_BSD_CLAUSE_4_LONG))) {
1193  INTERESTING("BSD-4-Clause");
1194  }
1195  else if (INFILE(_LT_BSD_CLAUSE_4) && INFILE(_LT_BSD_CLAUSE_CLEAR)) {
1196  INTERESTING("BSD-3-Clause-Clear");
1197  }
1198  else if (INFILE(_LT_BSD_CLAUSE_4) && INFILE(_LT_BSD_CLAUSE_OPEN_MPI)) {
1199  INTERESTING("BSD-3-Clause-Open-MPI");
1200  }
1201  else if (INFILE(_LT_BSD_CLAUSE_4) && HASTEXT(_KW_severability, REG_EXTENDED)) {
1202  INTERESTING("BSD-3-Clause-Severability");
1203  }
1204  else if (INFILE(_LT_XML_DB_V10)) {
1205  INTERESTING("XMLDB-1.0");
1206  }
1207  else if (INFILE(_LT_BSD_CLAUSE_4) && INFILE(_LT_ANT_BSD_RESTRICTION)) {
1208  INTERESTING("ANT+SharedSource");
1209  }
1210  else if (!lmem[_mAPACHE11] && INFILE(_LT_Apache_11_CLAUSE_3) && INFILE(_LT_Apache_11_CLAUSE_4) && INFILE(_LT_Apache_11_CLAUSE_5)) {
1211  INTERESTING(lDebug ? "BSD(Apache-1.1)" : "Apache-1.1-style");
1212  }
1213  else if(HASTEXT(_LT_Sendmail_823_title, 0)) {
1214  INTERESTING("Sendmail-8.23");
1215  }
1216  else if (!lmem[_mAPACHE10] && !lmem[_mAPACHE11] && INFILE(_LT_BSD_CLAUSE_ATTRIBUTION)) {
1217  INTERESTING("BSD-3-Clause-Attribution");
1218  }
1219  else if (!lmem[_mAPACHE10] && !lmem[_mAPACHE11] && INFILE(_LT_BSD_CLAUSE_4)) {
1220  if (INFILE(_LT_DARPA_COUGAAR_2)) {
1221  INTERESTING("DARPA-Cougaar");
1222  }
1223  else {
1224  INTERESTING("BSD-3-Clause");
1225  }
1226  }
1227  else if (INFILE(_LT_SSLEAY)) {
1228  INTERESTING("SSLeay");
1229  }
1230  else if (INFILE(_LT_TMATE)) {
1231  INTERESTING("TMate");
1232  }
1233  else if (INFILE(_LT_MUP)) {
1234  INTERESTING("Mup");
1235  }
1236  else if (INFILE(_LT_FREE_BSD)) {
1237  INTERESTING("BSD-2-Clause-FreeBSD");
1238  }
1239  else if (INFILE(_LT_BSD_CLAUSE_PATENT)) {
1240  INTERESTING("BSD-2-Clause-Patent");
1241  }
1242  else if (INFILE(_CR_NETBSD)) {
1243  INTERESTING("BSD-2-Clause-NetBSD");
1244  }
1245  else if (INFILE(_LT_MIT_0)) {
1246  lmem[_mMIT] = 1;
1247  INTERESTING("Linux-OpenIB");
1248  }
1249  else if (!lmem[_mAPACHE10] && !lmem[_mAPACHE11]) {
1250  INTERESTING("BSD-2-Clause");
1251  }
1252  }
1253  else if (INFILE(_CR_CRYPTOGAMS)) {
1254  INTERESTING("Cryptogams");
1255  }
1256  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)) {
1257  INTERESTING("BSD-4-Clause-Shortened");
1258  }
1259  else if (INFILE(_CR_BSDCAL)) {
1260  INTERESTING(lDebug ? "BSD(1)" : "BSD");
1261  }
1262  else if (HASTEXT(_TEXT_ALTERED_SOURCE, REG_EXTENDED) && HASTEXT(_TEXT_ORIGIN, 0)) {
1263  if (INFILE(_PHR_BZIP2_3)) {
1264  INTERESTING("bzip2-1.0.5");
1265  }
1266  else if (HASTEXT(_PHR_BZIP2_4, REG_EXTENDED)) {
1267  INTERESTING("bzip2-1.0.6");
1268  }
1269  else {
1270  INTERESTING("bzip2");
1271  }
1272  }
1273  else if (mCR_CMU()) {
1274  INTERESTING(lDebug ? "CMU(BSD-ish)" : "CMU");
1275  }
1276  else if (INFILE(_LT_MTLL)) {
1277  INTERESTING("MTLL");
1278  }
1279  else if (INFILE(_LT_BSD_CLAUSE_1_DISCLAIMER)) {
1280  INTERESTING("BSD-1-Clause");
1281  }
1282  else if (INFILE(_LT_Spencer_99) && INFILE(_CR_Spencer)) {
1283  INTERESTING("Spencer-99");
1284  }
1285  else if (INFILE(_LT_BRIAN_CLAPPER)) {
1286  INTERESTING("Brian-Clapper");
1287  }
1288  else if (INFILE(_LT_BSD_1988)) {
1289  INTERESTING("BSD-1988");
1290  }
1291  else if (INFILE(_LT_BSD_3_CLAUSE_DEVINE)) {
1292  INTERESTING("BSD-3-Clause-Devine");
1293  }
1294  else if (INFILE(_LT_BSD_3_CLAUSE_FDA)) {
1295  INTERESTING("BSD-3-Clause-FDA");
1296  }
1297  else if (INFILE(_LT_BSD_3_CLAUSE_JTAG)) {
1298  INTERESTING("BSD-3-Clause-jtag");
1299  }
1300  else if (INFILE(_LT_BSD_ATMEL)) {
1301  INTERESTING("BSD-Atmel");
1302  }
1303  else if (INFILE(_LT_BSD_AXIS_NOMOD)) {
1304  INTERESTING("BSD-Axis-without-modification");
1305  }
1306  else if (INFILE(_LT_BSD_AXIS)) {
1307  INTERESTING("BSD-Axis");
1308  }
1309  else if (INFILE(_LT_BSD_INNOSYS)) {
1310  INTERESTING("BSD-InnoSys");
1311  }
1312  else if (INFILE(_LT_BSD_NEW_DERIVATIVE)) {
1313  INTERESTING("BSD-Derivative");
1314  }
1315  else if (INFILE(_LT_BSD_NEW_TCPDUMP)) {
1316  INTERESTING("BSD-3-Clause-tcpdump-variant");
1317  }
1318  else if (INFILE(_LT_BSD_NO_DISCLAIMER_UNMODIFIED)) {
1319  INTERESTING("BSD-2-Clause-no-disclaimer-Unmod");
1320  }
1321  else if (INFILE(_LT_BSD_NO_DISCLAIMER)) {
1322  INTERESTING("BSD-2-Clause-no-disclaimer");
1323  }
1324  else if (INFILE(_LT_BSD_ORIGINAL_UC_1986)) {
1325  INTERESTING("BSD-4.3RENO");
1326  }
1327  else if (INFILE(_LT_BSD_SIMPLIFIED_DARWIN)) {
1328  INTERESTING("BSD-2-Clause-Darwin");
1329  }
1330  else if (INFILE(_LT_BSD_SIMPLIFIED_INTEL)) {
1331  INTERESTING("BSD-Simplified-Intel");
1332  }
1333  else if (INFILE(_LT_BSD_SIMPLIFIED_SOURCE)) {
1334  INTERESTING("BSD-Simplified-source");
1335  }
1336  else if (INFILE(_LT_BSD_SOURCE_CODE)) {
1337  INTERESTING("BSD-Source-Code");
1338  }
1339  else if (INFILE(_LT_BSD_TOP)) {
1340  INTERESTING("BSD-Source-beginning-file");
1341  }
1342  else if (INFILE(_LT_BSLA_NO_ADVERT)) {
1343  INTERESTING("BSLA-no-advertizing");
1344  }
1345  /* NOTE: bsla text is identical to bsd-original-uc-1990; unreachable in this else-if chain */
1346  else if (INFILE(_LT_BSLA)) {
1347  INTERESTING("BSD-4.3TAHOE");
1348  }
1349  else if (INFILE(_LT_FREEBSD_FIRST)) {
1350  INTERESTING("FreeBSD-unmodified-first-lines");
1351  }
1352  else if (INFILE(_LT_HOMEBREWED)) {
1353  INTERESTING("Homebrewed");
1354  }
1355  else if (INFILE(_LT_XPP)) {
1356  INTERESTING("xpp");
1357  }
1358  else if (INFILE(_LT_INTEL_BSD_2_CLAUSE)) {
1359  INTERESTING("Intel-BSD-2-Clause");
1360  }
1361  else if (INFILE(_LT_KALLE_KAUKONEN)) {
1362  INTERESTING("Kalle-Kaukonen");
1363  }
1364  else if (INFILE(_LT_MENTALIS)) {
1365  INTERESTING("Mentalis");
1366  }
1367  else if (INFILE(_LT_PAUL_MACKERRAS_SIMPLIFIED)) {
1368  INTERESTING("Paul-Mackerras-Simplified");
1369  }
1370  else if (INFILE(_LT_PAUL_MACKERRAS)) {
1371  INTERESTING("Mackerras-3-Clause-acknowledgment");
1372  }
1373  else if (INFILE(_LT_SENDMAIL_8_23)) {
1374  INTERESTING("Sendmail-8.23");
1375  }
1376  else if (INFILE(_LT_SVNDIFF)) {
1377  INTERESTING("svndiff");
1378  }
1379  else if (INFILE(_LT_TCP_WRAPPERS)) {
1380  INTERESTING("TCP-wrappers");
1381  }
1382  else if (INFILE(_LT_WINGO)) {
1383  INTERESTING("wingo");
1384  }
1385  else if (!lmem[_fZPL]) {
1386  INTERESTING(lDebug ? "BSD-style(1)" : "BSD-style");
1387  }
1388  }
1389  lmem[_fBSD] = 1;
1390  }
1391  else if (INFILE(_LT_BSD_CLEAR_CLAUSE_0) && INFILE(_LT_BSD_CLAUSE_1) && INFILE(_LT_BSD_CLAUSE_2)) {
1392  INTERESTING("BSD-3-Clause-Clear");
1393  }
1394  else if (INFILE(_PHR_Linux_OpenIB)) {
1395  INTERESTING("Linux-OpenIB");
1396  }
1397  else if (INFILE(_LT_BSD_2)) {
1398  /*
1399  * Python, OSF, SecretLabs, some universities, some vendors, etc., have
1400  * variants here.
1401  */
1402  if (INFILE(_CR_PYTHON) || INFILE(_TITLE_PYTHON)) {
1403  cp = PYTHVERS();
1404  INTERESTING(lDebug ? "Python(3)" : cp);
1405  lmem[_mPYTHON] = 1;
1406  }
1407  else if (INFILE(_CR_OSF)) {
1408  INTERESTING(lDebug ? "OSF(1)" : "OSF");
1409  lmem[_mOSF] = 1;
1410  }
1411  else if (INFILE(_CR_UI)) {
1412  INTERESTING(lDebug ? "UI(1)" : "Unix-Intl");
1413  }
1414  else if (INFILE(_CR_XOPEN)) {
1415  INTERESTING(lDebug ? "XOpen(1)" : "X/Open");
1416  lmem[_mXOPEN] = 1;
1417  }
1418  else if (INFILE(_PHR_HISTORICAL)) {
1419  INTERESTING("HPND");
1420  }
1421  else if (INFILE(_LT_CMU_7)) {
1422  if (INFILE(_CR_CMU_1) || INFILE(_CR_CMU_2) || INFILE(_CR_BSDCAL)) {
1423  INTERESTING("MIT-CMU");
1424  }
1425  else {
1426  INTERESTING("MIT-CMU-style");
1427  }
1428  lmem[_mCMU] = 1;
1429  }
1430  else if (INFILE(_CR_BSDCAL)) {
1431  INTERESTING(lDebug ? "BSD(2)" : "BSD");
1432  }
1433  else if (INFILE(_LT_NTP)) {
1434  INTERESTING("NTP");
1435  }
1436  else if (INFILE(_LT_WORDNET))
1437  {
1438  INTERESTING("WordNet-3.0");
1439  lmem[_mMIT] = 1;
1440  }
1441  else if (INFILE(_LT_HPND_1) && INFILE(_LT_HPND_2)) {
1442  INTERESTING("HPND");
1443  lmem[_mMIT] = 1;
1444  }
1445  else if (INFILE(_LT_MIT_1995)) {
1446  INTERESTING("MIT-1995");
1447  }
1448  else if (INFILE(_LT_NOT_ADVERTISING)) {
1449  INTERESTING(lDebug ? "BSD-style(2)" : "BSD-style");
1450  }
1451  else if (INFILE(_PHR_NO_WARRANTY_12)) {
1452  INTERESTING(lDebug ? "ISC(BSD-style)" : "ISC-style");
1453  }
1454  else {
1455  INTERESTING(lDebug ? "BSD-style(2)-MIT" : "MIT-style");
1456  }
1457  lmem[_fBSD] = 1;
1458  }
1459  else if (INFILE(_LT_BSD_3) && NOT_INFILE(_TITLE_OPENLDAP)) {
1460  if (INFILE(_LT_AMPAS)) {
1461  INTERESTING("AMPAS");
1462  }
1463  else if (INFILE(_CR_BSDCAL)) {
1464  INTERESTING(lDebug ? "BSD(3)" : "BSD");
1465  }
1466  else if (INFILE(_TITLE_OZPLB_10)) {
1467  INTERESTING("OZPLB-1.0");
1468  }
1469  /*
1470  * JPNIC
1471  */
1472  else if (HASTEXT(_TEXT_JPNIC, 0) && INFILE(_LT_JPNIC)) {
1473  INTERESTING("JPNIC");
1474  }
1475  else if (INFILE(_LT_3COM_MICROCODE)) {
1476  INTERESTING("3Com-Microcode");
1477  }
1478  else if (INFILE(_LT_AGERE_BSD)) {
1479  INTERESTING("Agere-BSD");
1480  }
1481  else if (INFILE(_LT_APACHE_DUE_CREDIT)) {
1482  INTERESTING("Apache-Due-Credit-Variant");
1483  }
1484  else if (INFILE(_LT_BROCADE_FIRMWARE)) {
1485  INTERESTING("Brocade-Firmware");
1486  }
1487  else if (INFILE(_LT_CHELSIO_LINUX_FIRMWARE)) {
1488  INTERESTING("Chelsio-Linux-Firmware");
1489  }
1490  else if (INFILE(_LT_ELLIS_LAB)) {
1491  INTERESTING("EllisLab");
1492  }
1493  else if (INFILE(_LT_FFTPACK_2004)) {
1494  INTERESTING("NCL");
1495  }
1496  else if (INFILE(_LT_GREG_ROELOFS)) {
1497  INTERESTING("Greg-Roelofs");
1498  }
1499  else if (INFILE(_LT_INFO_ZIP_2001_01)) {
1500  INTERESTING("Info-Zip-2001-01");
1501  }
1502  else if (INFILE(_LT_JAMON)) {
1503  INTERESTING("JAMon");
1504  }
1505  else if (INFILE(_LT_JDBM_1_00)) {
1506  INTERESTING("JDBM-v1.00");
1507  }
1508  else if (INFILE(_LT_NICTA_1_0)) {
1509  INTERESTING("NICTA-1.0");
1510  }
1511  else if (INFILE(_LT_OKL)) {
1512  INTERESTING("OKL");
1513  }
1514  else if (INFILE(_LT_OPENPBS_2_3)) {
1515  INTERESTING("OpenPBS-2.3");
1516  }
1517  else if (INFILE(_LT_QLOGIC_FIRMWARE)) {
1518  INTERESTING("QLogic-Firmware");
1519  }
1520  else if (INFILE(_LT_QLOGIC_MICROCODE)) {
1521  INTERESTING("QLogic-Microcode");
1522  }
1523  else if (INFILE(_LT_REALM_PLATFORM_EXTENSION_2017)) {
1524  INTERESTING("Realm-Platform-Extensions-2017");
1525  }
1526  else if (NOT_INFILE(_CR_XFREE86) && NOT_INFILE(_TITLE_NCSA) && NOT_INFILE(_TITLE_INNERNET200)) {
1527  INTERESTING(lDebug ? "BSD-style(3)" : "BSD-style");
1528  }
1529  lmem[_fBSD] = 1;
1530  }
1531  else if (INFILE(_LT_BSD_4)) {
1532  if (INFILE(_CR_BSDCAL)) {
1533  INTERESTING(lDebug ? "BSD(4)" : "BSD");
1534  }
1535  else {
1536  INTERESTING(lDebug ? "BSD-style(4)" : "BSD-style");
1537  }
1538  lmem[_fBSD] = 1;
1539  }
1540  /*
1541  * FIX-ME: this license text explicitly mentions "for no-profit", and as
1542  * such it should list it in the license-summary, yes?
1543  */
1544  else if (INFILE(_LT_BSD_5)) {
1545  if (!lmem[_mPYTHON] && INFILE(_CR_PYTHON)) {
1546  INTERESTING(lDebug ? "Python(2)" : "Python");
1547  lmem[_mPYTHON] = 1;
1548  }
1549  else if (INFILE(_CR_USL_EUR)) {
1550  INTERESTING(lDebug ? "USLE(1)" : "USL-Europe");
1551  }
1552  else if (INFILE(_CR_BSDCAL)) {
1553  INTERESTING(lDebug ? "BSD(5)" : "BSD");
1554  }
1555  else {
1556  INTERESTING(lDebug ? "BSD-style(5)" : "BSD-style");
1557  }
1558  lmem[_fBSD] = 1;
1559  }
1560  else if (INFILE(_LT_BSD_6)) {
1561  if (INFILE(_CR_BSDCAL)) {
1562  INTERESTING(lDebug ? "BSD(6)" : "BSD");
1563  }
1564  else if (INFILE(_LT_MIT_MODERN_VARIANT)) {
1565  INTERESTING("MIT-Modern-Variant");
1566  }
1567  else {
1568  INTERESTING(lDebug ? "BSD-style(6)" : "BSD-style");
1569  }
1570  lmem[_fBSD] = 1;
1571  }
1572  else if (INFILE(_LT_BSD_7)) {
1573  if (HASTEXT(_LT_MAKEINDEX_1, 0) && HASTEXT(_LT_MAKEINDEX_2, 0)) {
1574  INTERESTING("MakeIndex");
1575  }
1576  else if (INFILE(_CR_BSDCAL)) {
1577  INTERESTING(lDebug ? "BSD(7)" : "BSD");
1578  }
1579  else {
1580  INTERESTING(lDebug ? "BSD-style(7)" : "BSD-style");
1581  }
1582  lmem[_fBSD] = 1;
1583  }
1584  else if (INFILE(_LT_BSD_8)) {
1585  if (INFILE(_CR_BSDCAL)) {
1586  INTERESTING(lDebug ? "BSD(8)" : "BSD");
1587  }
1588  else {
1589  INTERESTING(lDebug ? "BSD-style(8)" : "BSD-style");
1590  }
1591  lmem[_fBSD] = 1;
1592  }
1593  else if (INFILE(_LT_BSD_9)) {
1594  if (INFILE(_CR_BSDCAL)) {
1595  INTERESTING(lDebug ? "BSD(9)" : "BSD");
1596  }
1597  else {
1598  INTERESTING(lDebug ? "BSD-style(8)" : "BSD-style");
1599  }
1600  lmem[_fBSD] = 1;
1601  }
1602  else if (INFILE(_LT_BSD_10)) {
1603  if (INFILE(_CR_BSDCAL)) {
1604  INTERESTING(lDebug ? "BSD(10)" : "BSD");
1605  }
1606  else {
1607  INTERESTING(lDebug ? "BSD-style(9)" : "BSD-style");
1608  }
1609  lmem[_fBSD] = 1;
1610  }
1611  else if (INFILE(_LT_BSD_11)) {
1612  if (INFILE(_CR_BSDCAL)) {
1613  INTERESTING(lDebug ? "BSD(11)" : "BSD");
1614  }
1615  else if (INFILE(_LT_WHISTLE)) {
1616  INTERESTING("Whistle-Communications");
1617  }
1618  else {
1619  INTERESTING(lDebug ? "BSD-style(10)" : "BSD-style");
1620  }
1621  lmem[_fBSD] = 1;
1622  }
1623  else if (INFILE(_LT_BSD_12)) {
1624  if (INFILE(_CR_BSDCAL)) {
1625  INTERESTING(lDebug ? "BSD(12)" : "BSD");
1626  }
1627  else if (INFILE(_LT_SOFTFLOAT_2_0)) {
1628  INTERESTING("SoftFloat-Legal-Notice-2.0");
1629  }
1630  else {
1631  INTERESTING(lDebug ? "BSD-style(11)" : "BSD-style");
1632  }
1633  lmem[_fBSD] = 1;
1634  }
1635  else if (INFILE(_LT_BSD_13)) {
1636  if (INFILE(_CR_BSDCAL)) {
1637  INTERESTING(lDebug ? "BSD(13)" : "BSD");
1638  }
1639  else {
1640  INTERESTING(lDebug ? "BSD-style(12)" : "BSD-style");
1641  }
1642  lmem[_fBSD] = 1;
1643  }
1644  else if (INFILE(_LT_BSD_NONC)) {
1645  if (INFILE(_CR_BSDCAL)) {
1646  INTERESTING(lDebug ? "BSD(NonC)" : "BSD.non-commercial");
1647  }
1648  else {
1649  INTERESTING(lDebug ? "BSD-style(NonC)" : "Non-commercial");
1650  }
1651  lmem[_fBSD] = 1;
1652  }
1653  else if (INFILE(_SPDX_BSD_3_Clause_Clear)) {
1654  INTERESTING("BSD-3-Clause-Clear");
1655  }
1656  else if (INFILE(_SPDX_BSD_3_Clause_No_Nuclear_License_2014)) {
1657  INTERESTING("BSD-3-Clause-No-Nuclear-License-2014");
1658  }
1659  else if (INFILE(_SPDX_BSD_3_Clause_No_Nuclear_License)) {
1660  INTERESTING("BSD-3-Clause-No-Nuclear-License");
1661  }
1662  else if (INFILE(_SPDX_BSD_3_Clause_No_Nuclear_Warranty)) {
1663  INTERESTING("BSD-3-Clause-No-Nuclear-Warranty");
1664  }
1665  else if (INFILE(_SPDX_BSD_3_Clause_Attribution)) {
1666  INTERESTING("BSD-3-Clause-Attribution");
1667  }
1668  else if (INFILE(_SPDX_BSD_3_Clause_LBNL)) {
1669  INTERESTING("BSD-3-Clause-LBNL");
1670  }
1671  else if (INFILE(_SPDX_BSD_3_Clause_Open_MPI)) {
1672  INTERESTING("BSD-3-Clause-Open-MPI");
1673  }
1674  else if (INFILE(_LT_BSD_3_CLAUSE_NO_MILITARY_LICENSE)) {
1675  INTERESTING("BSD-3-Clause-No-Military-License");
1676  }
1677  else if (INFILE(_LT_BSD_3_CLAUSE_NO_NUCLEAR_WARRANTY)) {
1678  INTERESTING("BSD-3-Clause-No-Nuclear-Warranty");
1679  }
1680  else if (INFILE(_LT_NET_SNMP)) {
1681  INTERESTING("Net-SNMP");
1682  }
1683  else if (INFILE(_LT_BSD_3_CLAUSE_NO_NUCLEAR_LICENSE_2014)) {
1684  INTERESTING("BSD-3-Clause-No-Nuclear-License-2014");
1685  }
1686  else if (INFILE(_LT_BSD_3_CLAUSE_NO_NUCLEAR_LICENSE)) {
1687  INTERESTING("BSD-3-Clause-No-Nuclear-License");
1688  }
1689  else if (INFILE(_SPDX_BSD_3_Clause)) {
1690  INTERESTING("BSD-3-Clause");
1691  }
1692  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)) {
1693  INTERESTING(lDebug ? "BSD(phr1/2)" : "BSD-3-Clause");
1694  }
1695  else if (INFILE(_LT_BSD_2_CLAUSE_NETBSD)) {
1696  INTERESTING("BSD-2-Clause-NetBSD");
1697  }
1698  else if (INFILE(_SPDX_BSD_2_Clause_FreeBSD)) {
1699  INTERESTING("BSD-2-Clause-FreeBSD");
1700  }
1701  else if (INFILE(_SPDX_BSD_2_Clause_NetBSD)) {
1702  INTERESTING("BSD-2-Clause-NetBSD");
1703  }
1704  else if (INFILE(_SPDX_BSD_2_Clause_Patent)) {
1705  INTERESTING("BSD-2-Clause-Patent");
1706  }
1707  else if (INFILE(_SPDX_BSD_2_Clause_Views)) {
1708  INTERESTING("BSD-2-Clause-Views");
1709  }
1710  else if (INFILE(_SPDX_BSD_2_Clause_1)) {
1711  INTERESTING("BSD-2-Clause");
1712  }
1713  else if (INFILE(_SPDX_BSD_2_Clause_2)) {
1714  INTERESTING("BSD-2-Clause");
1715  }
1716  else if (INFILE(_PHR_BSD_2_CLAUSE_1)
1717  || INFILE(_PHR_BSD_2_CLAUSE_2)
1718  || INFILE(_PHR_BSD_2_CLAUSE_3)
1719  || INFILE(_PHR_BSD_2_CLAUSE_4)
1720  || INFILE(_PHR_BSD_2_CLAUSE_5)
1721  || INFILE(_PHR_BSD_2_CLAUSE_6)
1722  || INFILE(_PHR_BSD_2_CLAUSE_7)) {
1723  INTERESTING(lDebug ? "BSD(phr1/2/3/4/5/6)" : "BSD-2-Clause");
1724  }
1725  else if (INFILE(_SPDX_BSD_4_Clause_UC)) {
1726  INTERESTING("BSD-4-Clause-UC");
1727  }
1728  else if (INFILE(_SPDX_BSD_4_Clause)) {
1729  INTERESTING("BSD-4-Clause");
1730  }
1731  else if (INFILE(_PHR_BSD_4_CLAUSE_1)) {
1732  INTERESTING(lDebug ? "BSD-4-Clause(phr1)" : "BSD-4-Clause");
1733  }
1734  else if (INFILE(_PHR_BSD_CLEAR_1)) {
1735  INTERESTING(lDebug ? "BSD-Clear(phr1)" : "BSD-3-Clause-Clear");
1736  }
1737  else if (INFILE(_LT_BSD_NUMPY_TERMS)) {
1738  INTERESTING("BSD-3-Clause");
1739  }
1740  else if (INFILE(_PHR_BSD_3_CLAUSE_LBNL)) {
1741  INTERESTING("BSD-3-Clause-LBNL");
1742  }
1743  else if (INFILE(_SPDX_BSD_Protection)) {
1744  INTERESTING("BSD-Protection");
1745  }
1746  else if (INFILE(_SPDX_BSD_Source_Code)) {
1747  INTERESTING("BSD-Source-Code");
1748  }
1749  else if (INFILE(_SPDX_BSD_1_Clause)) {
1750  INTERESTING("BSD-1-Clause");
1751  }
1752  else if (INFILE(_PHR_0BSD)) {
1753  INTERESTING("0BSD");
1754  }
1755  else if (INFILE(_LT_BSDref1)) {
1756  INTERESTING(lDebug ? "BSD(ref1)" : "BSD");
1757  }
1758  else if (INFILE(_LT_BSDref2)) {
1759  INTERESTING(lDebug ? "BSD(ref2)" : "BSD");
1760  }
1761  else if (INFILE(_LT_BSDref3)) {
1762  INTERESTING(lDebug ? "BSD(ref3)" : "BSD");
1763  }
1764  else if (INFILE(_LT_BSDref4)) {
1765  INTERESTING(lDebug ? "BSD(ref4)" : "BSD");
1766  }
1767  else if (INFILE(_LT_BSDref5)) {
1768  INTERESTING(lDebug ? "BSD(ref5)" : "BSD");
1769  }
1770  else if (INFILE(_LT_BSDref6)) {
1771  INTERESTING(lDebug ? "BSD(ref6)" : "BSD");
1772  }
1773  else if (INFILE(_LT_BSDref7)) {
1774  INTERESTING(lDebug ? "BSD(ref7)" : "BSD");
1775  }
1776  else if (INFILE(_LT_BSDref8)) {
1777  INTERESTING(lDebug ? "BSD(ref8)" : "BSD");
1778  }
1779  else if (INFILE(_LT_BSDref9)) {
1780  INTERESTING(lDebug ? "BSD(ref9)" : "BSD");
1781  }
1782  else if (INFILE(_LT_BSDref10)) {
1783  INTERESTING(lDebug ? "BSD(ref10)" : "BSD");
1784  }
1785  else if (INFILE(_LT_BSDref11)) {
1786  INTERESTING(lDebug ? "BSD(ref11)" : "BSD");
1787  }
1788  else if (INFILE(_LT_BSDref12) || HASTEXT(_LT_BSDref13, REG_EXTENDED)) {
1789  INTERESTING(lDebug ? "BSD(ref12)" : "BSD-3-Clause");
1790  }
1791  else if (URL_INFILE(_URL_BSD_1) || URL_INFILE(_URL_BSD_2)) {
1792  INTERESTING(lDebug ? "BSD(url)" : "BSD");
1793  lmem[_fBSD] = 1;
1794  }
1795  else if (INFILE(_LT_BSDref14)) {
1796  INTERESTING(lDebug ? "BSD(ref14)" : "BSD");
1797  lmem[_fBSD] = 1;
1798  }
1799  else if (INFILE(_LT_BSDref15)) {
1800  INTERESTING(lDebug ? "BSD(ref15)" : "BSD");
1801  lmem[_fBSD] = 1;
1802  }
1803  else if (INFILE(_LT_BSDSTYLEref1)) {
1804  INTERESTING(lDebug ? "BSD-st(1)" : "BSD-style");
1805  lmem[_fBSD] = 1;
1806  }
1807  else if (INFILE(_LT_BSDSTYLEref2)) {
1808  INTERESTING(lDebug ? "BSD-st(2)" : "BSD-style");
1809  lmem[_fBSD] = 1;
1810  }
1811  else if (INFILE(_LT_BSDSTYLEref4)) {
1812  INTERESTING(lDebug ? "BSD-st(4)" : "BSD-style");
1813  lmem[_fBSD] = 1;
1814  }
1815  else if (INFILE(_LT_BSDSTYLEref3)) {
1816  INTERESTING(lDebug ? "BSD-st(3)" : "BSD-style");
1817  lmem[_fBSD] = 1;
1818  }
1819  else if (INFILE(_LT_BSD_HTMLAREA_1) || INFILE(_LT_BSD_HTMLAREA_2)) {
1820  INTERESTING(lDebug ? "BSD-htmlArea" : "BSD-3-Clause");
1821  lmem[_fBSD] = 1;
1822  }
1823  else if (INFILE(_FILE_BSD1) || INFILE(_FILE_BSD2)) {
1824  INTERESTING(lDebug ? "BSD(deb)" : "BSD");
1825  }
1826  else if (INFILE(_CR_BSD_PERSONAL)) {
1827  INTERESTING("BSD");
1828  }
1830  /*
1831  * Aptana public license (based on MPL)
1832  */
1833  if (INFILE(_LT_APTANA)) {
1834  if (INFILE(_TITLE_APTANA_V10)) {
1835  INTERESTING("Aptana-1.0");
1836  }
1837  else {
1838  INTERESTING("Aptana");
1839  }
1840  lmem[_mMPL] = 1;
1841  lmem[_mAPTANA] = 1;
1842  }
1843  /*
1844  * PHP variants
1845  */
1846  if (!lmem[_mPHP] && (INFILE(_LT_PHP) || INFILE(_TITLE_PHP301)
1847  || INFILE(_TITLE_PHP30))) {
1848  if (INFILE(_TITLE_PHP301)) {
1849  INTERESTING(lDebug ? "PHP(v3.01#2)" : "PHP-3.01");
1850  }
1851  else if (INFILE(_TITLE_PHP30)) {
1852  INTERESTING(lDebug ? "PHP(v3.0#2)" : "PHP-3.0");
1853  }
1854  else if (INFILE(_TITLE_PHP202)) {
1855  INTERESTING(lDebug ? "PHP(v2.02#3)" : "PHP-2.02");
1856  }
1857  else if (INFILE(_CR_PHP)) {
1858  INTERESTING(lDebug ? "PHP(1)" : "PHP");
1859  }
1860  else {
1861  INTERESTING("PHP-style");
1862  }
1863  lmem[_mPHP] = 1;
1864  }
1865  else if (!lmem[_mPHP] && INFILE(_LT_PHP_V301_1)) {
1866  INTERESTING("PHP-3.01");
1867  lmem[_mPHP] = 1;
1868  }
1869  else if (!lmem[_mPHP] && INFILE(_LT_PHP_V30_1)) {
1870  INTERESTING("PHP-3.0");
1871  lmem[_mPHP] = 1;
1872  }
1873  else if (!lmem[_mPHP] && INFILE(_LT_PHP_V30_2)) {
1874  INTERESTING("PHP-3.0");
1875  lmem[_mPHP] = 1;
1876  }
1877  else if (!lmem[_mPHP] && INFILE(_LT_PHPref1)) {
1878  if (INFILE(_PHR_PHP_V301)) {
1879  INTERESTING(lDebug ? "PHP(ref-3.01)" : "PHP-3.01");
1880  }
1881  else if (INFILE(_PHR_PHP_V20)) {
1882  INTERESTING(lDebug ? "PHP(ref-2.0)" : "PHP-2.0");
1883  }
1884  else {
1885  INTERESTING(lDebug ? "PHP(ref)" : "PHP");
1886  }
1887  lmem[_mPHP] = 1;
1888  }
1889  else if (!lmem[_mPHP] && URL_INFILE(_URL_PHP)) {
1890  INTERESTING(lDebug ? "PHP(url)" : "PHP");
1891  lmem[_mPHP] = 1;
1892  }
1893  else if (INFILE(_LT_PHP_ref)) {
1894  INTERESTING(lDebug ? "PHP(2)" : "PHP");
1895  lmem[_mPHP] = 1;
1896  }
1898  /*
1899  * Licenses between here and all the GPL/LGPL/GFDL/FSF checks (below) MUST
1900  * be tested PRIOR to checking GPL/FSF and friends
1901  */
1902  if ((INFILE(_CR_EASYSW) || INFILE(_TITLE_CUPS)) && INFILE(_LT_CUPS)) {
1903  if (INFILE(_LT_CUPS_COMMERCIAL)) {
1904  INTERESTING("CUPS-EULA");
1905  }
1906  else {
1907  INTERESTING("CUPS");
1908  }
1909  lmem[_mCUPS] = 1;
1910  }
1912  if (INFILE(_LT_HACKTIVISMO)) {
1913  INTERESTING("Hacktivismo");
1914  lmem[_mGPL] = 1; /* don't look for GPL references */
1915  }
1917  if (INFILE(_LT_NESSUS) && INFILE(_TITLE_NESSUS)) {
1918  INTERESTING("NESSUS-EULA");
1919  lmem[_mLGPL] = 1; /* don't look for LGPL references */
1920  lmem[_mGPL] = 1;
1921  }
1923  /*
1924  * Oracle
1925  */
1926  if (INFILE(_LT_ORACLE_PROTO) && INFILE(_TITLE_ORACLE_PROTO)) {
1927  INTERESTING(lDebug ? "Oracle(proto)" : "Oracle-EULA");
1928  lmem[_mGPL] = 1;
1929  }
1930  else if (INFILE(_LT_ORACLE_DEVEL) && INFILE(_TITLE_ORACLE_DEVEL)) {
1931  INTERESTING(lDebug ? "Oracle(dev)" : "Oracle-Dev");
1932  }
1933  else if (URL_INFILE(_URL_ORACLE_BERKELEY_DB)) {
1934  INTERESTING(lDebug ? "URL_ORACLE_BERKELEY_DB" : "Oracle-Berkeley-DB");
1935  }
1936  /* "berkeley" alone falls through to _MIN_BSD */
1937  else if (INFILE(_TITLE_BERKELEY_DB_PRODUCT) || INFILE(_LT_BERKELEY_DB_REF)) {
1938  INTERESTING("Oracle-Berkeley-DB");
1939  }
1941  /*
1942  * DB License
1943  */
1944  if (INFILE(_LT_DATABRICKS_RESTRICTED)) {
1945  INTERESTING("Databricks-DB-License");
1946  }
1948  /*
1949  * CeCILL
1950  * According to digikam-0.9.4/digikam/libs/greycstoration/CImg.h:
1951  * The CeCILL-C (C_V1) license is close to the GNU LGPL
1952  * The CeCILL (V2.0) license is compatible with the GNU GPL
1953  */
1954  if (INFILE(_TITLE_CECILL_V11_2) || INFILE(_SPDX_CECILL_11)) {
1955  INTERESTING(lDebug ? "CeCILL_v1.1(#2)" : "CECILL-1.1");
1956  lmem[_mGPL] = lmem[_mLGPL] = 1;
1957  }
1958  else if (INFILE(_TITLE_CECILL_B) || INFILE(_TITLE_CECILL_B1) || INFILE(_SPDX_CECILL_B)) {
1959  INTERESTING("CECILL-B");
1960  }
1961  else if (INFILE(_TITLE_CECILL_C) || INFILE(_TITLE_CECILL_C1) || INFILE(_SPDX_CECILL_C)) {
1962  INTERESTING("CECILL-C");
1963  }
1964  else if (INFILE(_LT_CECILL_DUALref)) {
1965  INTERESTING("CECILL(dual)");
1966  lmem[_mGPL] = lmem[_mLGPL] = 1;
1967  }
1968  else if (INFILE(_SPDX_CECILL_10)) {
1969  INTERESTING("CECILL-1.0");
1970  }
1971  else if (INFILE(_SPDX_CECILL_21)) {
1972  INTERESTING("CECILL-2.1");
1973  }
1974  else if (INFILE(_LT_CECILL_2_ref) || INFILE(_SPDX_CECILL_20)) {
1975  INTERESTING("CECILL-2.0");
1976  }
1977  else if (INFILE(_LT_CECILL_ref2)) {
1978  INTERESTING("CECILL");
1979  }
1980  else if (INFILE(_LT_CECILL_B_ref)) {
1981  INTERESTING("CECILL-B");
1982  }
1983  else if (INFILE(_LT_CECILL_ref) || INFILE(_LT_CECILL_ref1)) {
1984  if (URL_INFILE(_URL_CECILL_C_V11)) {
1985  INTERESTING(lDebug ? "CeCILL_v1.1(url)" : "CECILL-1.1");
1986  }
1987  else if (URL_INFILE(_URL_CECILL_C_V1)) {
1988  INTERESTING(lDebug ? "CeCILL_v1(url)" : "CECILL-1.0");
1989  }
1990  else if (URL_INFILE(_URL_CECILL_V2)) {
1991  INTERESTING(lDebug ? "CeCILL_v2(url)" : "CECILL-2.0");
1992  }
1993  else if (URL_INFILE(_URL_CECILL)) {
1994  INTERESTING(lDebug ? "CeCILL(url)" : "CECILL");
1995  }
1996  else {
1997  INTERESTING(lDebug ? "CeCILL(#3)" : "CECILL");
1998  }
1999  lmem[_mGPL] = 1;
2000  }
2001  else if (INFILE(_LT_CECILL_1)) {
2002  if (INFILE(_TITLE_CECILL_V10)) {
2003  INTERESTING(lDebug ? "CeCILL_v1.0(#1)" : "CECILL-1.0");
2004  }
2005  else if (INFILE(_TITLE_CECILL_V20)) {
2006  INTERESTING(lDebug ? "CeCILL_v2.0(#1)" : "CECILL-2.0");
2007  }
2008  lmem[_mGPL] = 1;
2009  }
2010  else if (INFILE(_LT_CECILL_2) || INFILE(_TITLE_CECILL1) || INFILE(_TITLE_CECILL2)) {
2011  if (INFILE(_TITLE_CECILL_V10)) {
2012  INTERESTING(lDebug ? "CeCILL_v1.0(#2)" : "CECILL-1.0");
2013  }
2014  else if (INFILE(_TITLE_CECILL_V11)) {
2015  INTERESTING(lDebug ? "CeCILL_v1.1(#1)" : "CECILL-1.1");
2016  }
2017  else if (INFILE(_TITLE_CECILL_V20)) {
2018  INTERESTING(lDebug ? "CeCILL_v2.0(#2)" : "CECILL-2.0");
2019  }
2020  else {
2021  INTERESTING(lDebug ? "CeCILL(#2)" : "CECILL");
2022  }
2023  lmem[_mGPL] = 1;
2024  }
2026  /*
2027  * Monash University
2028  */
2029  if (INFILE(_CR_UMONASH) && INFILE(_LT_UMONASH)) {
2030  INTERESTING("U-Monash");
2031  if (INFILE(_PHR_GPL_NO_MORE)) {
2032  lmem[_mGPL] = 1;
2033  }
2034  }
2036  /* Open Font License */
2037  if (INFILE(_LT_OPEN_FONT_V10) || INFILE(_LT_OPEN_FONT_V10_1))
2038  {
2039  INTERESTING("OFL-1.0");
2040  lmem[_fOFL] = 1;
2041  }
2042  else if (INFILE(_SPDX_OFL_10_no_RFN)) {
2043  INTERESTING("OFL-1.0-no-RFN");
2044  }
2045  else if (INFILE(_SPDX_OFL_10_RFN)) {
2046  INTERESTING("OFL-1.0-RFN");
2047  }
2048  else if (INFILE(_SPDX_OFL_10)) {
2049  INTERESTING("OFL-1.0");
2050  }
2051  else if (INFILE(_PHR_OPEN_FONT_V10_1) || INFILE(_PHR_OPEN_FONT_V10_2))
2052  {
2053  INTERESTING("OFL-1.0");
2054  lmem[_fOFL] = 1;
2055  }
2056  else if (INFILE(_LT_OPEN_FONT_V11) || INFILE(_LT_OPEN_FONT_V11_1))
2057  {
2058  INTERESTING("OFL-1.1");
2059  lmem[_fOFL] = 1;
2060  }
2061  else if (INFILE(_SPDX_OFL_11_no_RFN)) {
2062  INTERESTING("OFL-1.1-no-RFN");
2063  }
2064  else if (INFILE(_SPDX_OFL_11_RFN)) {
2065  INTERESTING("OFL-1.1-RFN");
2066  }
2067  else if (INFILE(_SPDX_OFL_11)) {
2068  INTERESTING("OFL-1.1");
2069  }
2070  else if (INFILE(_PHR_OPEN_FONT_V11_1) || INFILE(_PHR_OPEN_FONT_V11_2))
2071  {
2072  INTERESTING("OFL-1.1");
2073  lmem[_fOFL] = 1;
2074  }
2076  /* Simple Public License 2.0 */
2077  if (INFILE(_TITLE_SimPL_V2)) {
2078  INTERESTING("SimPL-2.0");
2079  lmem[_mGPL] = 1;
2080  }
2082  /* Leptonica license */
2083  if (INFILE(_TITLE_LEPTONICA) && INFILE(_LT_GNU_3)) {
2084  INTERESTING("Leptonica");
2085  }
2087  /* Specific license identification - skip if GPL already confirmed */
2088  if (!lmem[_mGPL]) {
2089  if (INFILE(_LT_SPLUNK_SLA)) {
2090  INTERESTING("Splunk");
2091  }
2092  else if (INFILE(_LT_SLF4J_2008)) {
2093  INTERESTING("SLF4J-2008");
2094  }
2095  else if (INFILE(_LT_SHAVLIK_EULA)) {
2096  INTERESTING("Shavlik-Technologies");
2097  }
2098  else if (INFILE(_LT_OPENSSL_EXCEPTION_LGPL)) {
2099  INTERESTING("LGPL-with-OpenSSL-exception");
2100  lmem[_mGPL] = 1;
2101  }
2102  else if (INFILE(_LT_NPSL_EXCEPTION_0_93)) {
2103  INTERESTING("Nmap-NPSL-Exception-0.93");
2104  lmem[_mGPL] = 1;
2105  }
2106  else if (INFILE(_LT_NVIDIA_CUDA_SUPPLEMENT_2020)) {
2107  INTERESTING("NVIDIA-CUDA-Supplement-2020");
2108  }
2109  else if (INFILE(_LT_NERO_EULA)) {
2110  INTERESTING("Nero");
2111  }
2112  else if (INFILE(_LT_MINI_XML)) {
2113  INTERESTING("LGPL-2.0-with-Mini-XML-exception");
2114  lmem[_mGPL] = 1;
2115  }
2116  else if (INFILE(_LT_MEDIAINFO_LIB)) {
2117  INTERESTING("MediaInfoLib");
2118  }
2119  else if (INFILE(_LT_LZMA_SDK_9_22)) {
2120  INTERESTING("LZMA-SDK-9.22");
2121  lmem[_mGPL] = 1;
2122  }
2123  else if (INFILE(_LT_LIBCAP)) {
2124  INTERESTING("libcap");
2125  lmem[_mGPL] = 1;
2126  }
2127  else if (INFILE(_LT_LGPL_3_0_CYGWIN)) {
2128  INTERESTING("LGPL-3.0-or-later-with-Cygwin-exception");
2129  lmem[_mGPL] = 1;
2130  }
2131  else if (INFILE(_LT_GPL_3_0_OPENBD)) {
2132  INTERESTING("GPL-3.0h-with-OpenBD-exception");
2133  lmem[_mGPL] = 1;
2134  }
2135  else if (INFILE(_LT_GPL_2_0_ISO_CPP)) {
2136  INTERESTING("GPL-2.0-with-ISO-C-Library-exception");
2137  lmem[_mGPL] = 1;
2138  }
2139  else if (INFILE(_LT_GPL_2_0_ICE)) {
2140  INTERESTING("GPL-2.0-with-Ice-exception");
2141  lmem[_mGPL] = 1;
2142  }
2143  else if (INFILE(_LT_DUAL_COMMERCIAL_GPL)) {
2144  INTERESTING("Dual-Commercial-GPL");
2145  lmem[_mGPL] = 1;
2146  }
2147  else if (INFILE(_LT_COSLI)) {
2148  INTERESTING("COSLi");
2149  }
2150  else if (INFILE(_LT_CC_GPL_2_0_PT)) {
2151  INTERESTING("CC-GPL-2.0-PT");
2152  lmem[_mGPL] = 1;
2153  }
2154  else if (INFILE(_LT_BACULA_EXCEPTION)) {
2155  INTERESTING("Bacula-exception");
2156  lmem[_mGPL] = 1;
2157  }
2158  else if (INFILE(_LT_ADA_LINKING_EXCEPTION)) {
2159  INTERESTING("GNAT-exception");
2160  lmem[_mGPL] = 1;
2161  }
2162  else if (INFILE(_LT_3DSLICER_1_0)) {
2163  INTERESTING("3D-Slicer-1.0");
2164  }
2165  else if (INFILE(_LT_AC3FILTER)) {
2166  INTERESTING("AC3Filter");
2167  lmem[_mGPL] = 1;
2168  }
2169  else if (INFILE(_LT_ACRONAME_BDK)) {
2170  INTERESTING("Acroname-BDK");
2171  }
2172  else if (INFILE(_LT_ACTIVESTATE_KOMODO_EDIT)) {
2173  INTERESTING("ActiveState-Komodo-Edit");
2174  }
2175  else if (INFILE(_LT_ADI_BSD)) {
2176  INTERESTING("ADI-BSD");
2177  }
2178  else if (INFILE(_LT_ADOBE_INDESIGN_SDK)) {
2179  INTERESTING("Adobe-InDesign-SDK");
2180  }
2181  else if (INFILE(_LT_AGPL_3_0_BACULA)) {
2182  INTERESTING("AGPL-3.0-with-Bacula-exception");
2183  lmem[_mGPL] = 1;
2184  }
2185  else if (INFILE(_LT_ALFRESCO_EXCEPTION_0_5)) {
2186  INTERESTING("Alfresco-FLOSS-Exception-v0.5");
2187  lmem[_mGPL] = 1;
2188  }
2189  else if (INFILE(_LT_AMLOGIC_LINUX_FIRMWARE)) {
2190  INTERESTING("Amlogic-Linux-Firmware");
2191  }
2192  else if (INFILE(_LT_APACHE_PATENT_EXCEPTION)) {
2193  INTERESTING("mxml-exception");
2194  }
2195  /* NOTE: apache-patent-provision-exception text is identical to apache-patent-exception; unreachable */
2196  else if (INFILE(_LT_APACHE_PATENT_PROVISION_EXCEPTION)) {
2197  INTERESTING("Apache-Patent-Provision-Exception-Deprecated");
2198  }
2199  else if (INFILE(_LT_APL_1_1)) {
2200  INTERESTING("APL-1.1");
2201  lmem[_mGPL] = 1;
2202  }
2203  else if (INFILE(_LT_APTANA_EXCEPTION_3_0)) {
2204  INTERESTING("Aptana-exception-3.0");
2205  lmem[_mGPL] = 1;
2206  }
2207  else if (INFILE(_LT_ASLP)) {
2208  INTERESTING("Artop-ASLP");
2209  }
2210  else if (INFILE(_LT_ASLR)) {
2211  INTERESTING("Artop-ASLR");
2212  lmem[_mGPL] = 1;
2213  }
2214  else if (INFILE(_LT_ATMOSPHERE_0_4)) {
2215  INTERESTING("atmosphere");
2216  }
2217  else if (INFILE(_LT_AUTOCONF_SIMPLE_EXCEPTION)) {
2218  INTERESTING("Autoconf-exception-generic-3.0");
2219  lmem[_mGPL] = 1;
2220  }
2221  else if (INFILE(_LT_AUTOOPTS_EXCEPTION_2_0)) {
2222  INTERESTING("AutoOpts-exception-2.0");
2223  lmem[_mGPL] = 1;
2224  }
2225  else if (INFILE(_LT_AVISYNTH_C_INTERFACE_EXCEPTION)) {
2226  INTERESTING("Avisynth-C-Interface-Exception");
2227  lmem[_mGPL] = 1;
2228  }
2229  else if (INFILE(_LT_AVISYNTH_LINKING_EXCEPTION)) {
2230  INTERESTING("Avisynth-Linking-Exception");
2231  lmem[_mGPL] = 1;
2232  }
2233  else if (INFILE(_LT_BASH_EXCEPTION_GPL)) {
2234  INTERESTING("GPL-with-Bash-exception");
2235  lmem[_mGPL] = 1;
2236  }
2237  else if (INFILE(_LT_BIGDIGITS)) {
2238  INTERESTING("BigDigits");
2239  }
2240  else if (INFILE(_LT_BOHL_0_2)) {
2241  INTERESTING("BOHL-0.2");
2242  lmem[_mGPL] = 1;
2243  }
2244  else if (INFILE(_LT_BRIAN_GLADMAN_DUAL)) {
2245  INTERESTING("Brian-Gladman-3-Clause");
2246  }
2247  else if (INFILE(_LT_BROADCOM_DUAL)) {
2248  INTERESTING("Broadcom-Dual-GPL-Commercial");
2249  lmem[_mGPL] = 1;
2250  }
2251  else if (INFILE(_LT_BROADCOM_LINKING_EXCEPTION_2_0)) {
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("cygwin-exception-LGPL-3.0-or-later");
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  else if (INFILE(_LT_GPL_2_0_AUTOOPTS)) {
2437  INTERESTING("GPL-2.0-or-later-with-AutoOpts-exception");
2438  lmem[_mGPL] = 1;
2439  }
2440  else if (INFILE(_LT_GPL_2_0_BISON_2_2)) {
2441  INTERESTING("GPL-2.0-or-later-with-Bison-2.2-exception");
2442  lmem[_mGPL] = 1;
2443  }
2444  else if (INFILE(_LT_GPL_2_0_BISON)) {
2445  INTERESTING("gpl-2.0-bison");
2446  lmem[_mGPL] = 1;
2447  }
2448  else if (INFILE(_LT_GPL_2_0_BROADCOM_LINKING)) {
2449  INTERESTING("GPL-2.0-with-Broadcom-Linking-Exception");
2450  lmem[_mGPL] = 1;
2451  }
2452  else if (INFILE(_LT_GPL_2_0_CYGWIN)) {
2453  INTERESTING("GPL-2.0-with-Cygwin-exception");
2454  lmem[_mGPL] = 1;
2455  }
2456  else if (INFILE(_LT_GPL_2_0_DJVU)) {
2457  INTERESTING("GPL-2.0-with-DjVu-Patent-Grant");
2458  lmem[_mGPL] = 1;
2459  }
2460  else if (INFILE(_LT_GPL_2_0_FREERTOS)) {
2461  INTERESTING("GPL-2.0-with-FreeRTOS-exception");
2462  lmem[_mGPL] = 1;
2463  }
2464  else if (INFILE(_LT_GPL_2_0_GCC_COMPILER_EXCEPTION)) {
2465  INTERESTING("GPL-2.0-with-GCC-compiler-exception");
2466  lmem[_mGPL] = 1;
2467  }
2468  else if (INFILE(_LT_GPL_2_0_GLIBC)) {
2469  INTERESTING("GPL-2.0-with-GLibC-exception");
2470  lmem[_mGPL] = 1;
2471  }
2472  else if (INFILE(_LT_GPL_2_0_GUILE)) {
2473  INTERESTING("GPL-2.0-with-GUILE-exception");
2474  lmem[_mGPL] = 1;
2475  }
2476  else if (INFILE(_LT_GPL_2_0_INDEPENDENT_MODULE_LINKING)) {
2477  INTERESTING("gpl-2.0-independent-module-linking");
2478  lmem[_mGPL] = 1;
2479  }
2480  else if (INFILE(_LT_GPL_2_0_IOLIB)) {
2481  INTERESTING("GPL-2.0-with-GNU-IO-Library-exception");
2482  lmem[_mGPL] = 1;
2483  }
2484  else if (INFILE(_LT_GPL_2_0_JAVASCRIPT)) {
2485  INTERESTING("GPL-2.0-with-Javascript-exception");
2486  lmem[_mGPL] = 1;
2487  }
2488  else if (INFILE(_LT_GPL_2_0_KERNEL)) {
2489  INTERESTING("GPL-2.0-with-Kernel-Exception");
2490  lmem[_mGPL] = 1;
2491  }
2492  else if (INFILE(_LT_GPL_2_0_KOTEROV)) {
2493  INTERESTING("GPL-2.0-with-Dmitry-Koterov-additions");
2494  lmem[_mGPL] = 1;
2495  }
2496  else if (INFILE(_LT_GPL_2_0_LIBGIT2)) {
2497  INTERESTING("GPL-2.0-with-libgit2-exception");
2498  lmem[_mGPL] = 1;
2499  }
2500  else if (INFILE(_LT_GPL_2_0_LIBRARY)) {
2501  INTERESTING("GPL-2.0-with-Library-exception");
2502  lmem[_mGPL] = 1;
2503  }
2504  else if (INFILE(_LT_GPL_2_0_LIBTOOL)) {
2505  INTERESTING("GPL-2.0-with-GNU-Libtool-exception");
2506  lmem[_mGPL] = 1;
2507  }
2508  else if (INFILE(_LT_GPL_2_0_LMBENCH)) {
2509  INTERESTING("GPL-2.0-with-LMBench-exception");
2510  lmem[_mGPL] = 1;
2511  }
2512  else if (INFILE(_LT_GPL_2_0_MYSQL_CONNECTOR_ODBC)) {
2513  INTERESTING("GPL-2.0-with-MySQL-Connector-ODBC-exception");
2514  lmem[_mGPL] = 1;
2515  }
2516  else if (INFILE(_LT_GPL_2_0_MYSQL_FLOSS)) {
2517  INTERESTING("GPL-2.0-with-MySQL-FLOSS-exception");
2518  lmem[_mGPL] = 1;
2519  }
2520  else if (INFILE(_LT_GPL_2_0_OPENJDK)) {
2521  INTERESTING("GPL-2.0-with-OpenJDK-Classpath-exception");
2522  lmem[_mGPL] = 1;
2523  }
2524  else if (INFILE(_LT_GPL_2_0_ORACLE_MYSQL_FOSS)) {
2525  INTERESTING("GPL-2.0-with-Oracle-MySQL-FOSS-exception");
2526  lmem[_mGPL] = 1;
2527  }
2528  else if (INFILE(_LT_GPL_2_0_ORACLE_OPENJDK)) {
2529  INTERESTING("gpl-2.0-oracle-openjdk");
2530  lmem[_mGPL] = 1;
2531  }
2532  else if (INFILE(_LT_GPL_2_0_PLUS_EKIGA)) {
2533  INTERESTING("GPL-2.0-or-later-ekiga");
2534  lmem[_mGPL] = 1;
2535  }
2536  else if (INFILE(_LT_GPL_2_0_PLUS_SYNTEXT)) {
2537  INTERESTING("GPL-2.0-or-later-syntext");
2538  lmem[_mGPL] = 1;
2539  }
2540  else if (INFILE(_LT_GPL_2_0_PROGUARD)) {
2541  INTERESTING("GPL-2.0-with-ProGuard-exception");
2542  lmem[_mGPL] = 1;
2543  }
2544  else if (INFILE(_LT_GPL_2_0_QT_QCA)) {
2545  INTERESTING("GPL-2.0-with-Qt-QCA-exception");
2546  lmem[_mGPL] = 1;
2547  }
2548  else if (INFILE(_LT_GPL_2_0_REDHAT)) {
2549  INTERESTING("GPL-2.0-with-Fedora-Red-Hat-Exception");
2550  lmem[_mGPL] = 1;
2551  }
2552  else if (INFILE(_LT_GPL_2_0_RRDTOOL_FLOSS)) {
2553  INTERESTING("GPL-2.0-with-RRDtool-FLOSS-Exception");
2554  lmem[_mGPL] = 1;
2555  }
2556  else if (INFILE(_LT_GPL_2_0_UBOOT)) {
2557  INTERESTING("GPL-2.0-with-U-Boot-exception");
2558  lmem[_mGPL] = 1;
2559  }
2560  else if (INFILE(_LT_GPL_3_0_BISON)) {
2561  INTERESTING("GPL-3.0-or-later-with-Bison-exception");
2562  lmem[_mGPL] = 1;
2563  }
2564  else if (INFILE(_LT_GPL_3_0_CYGWIN)) {
2565  INTERESTING("GPL-3.0-or-later-with-Cygwin-exception");
2566  lmem[_mGPL] = 1;
2567  }
2568  else if (INFILE(_LT_GPL_3_0_FONT)) {
2569  INTERESTING("GPL-3.0-or-later-with-font-exception");
2570  lmem[_mGPL] = 1;
2571  }
2572  else if (INFILE(_LT_GPL_3_0_LINKING_SOURCE_EXCEPTION)) {
2573  INTERESTING("GPL-3.0-linking-source-exception");
2574  lmem[_mGPL] = 1;
2575  }
2576  else if (INFILE(_LT_GPL_3_0_PLUS_OPENSSL)) {
2577  INTERESTING("GPL-3.0-or-later-openssl");
2578  lmem[_mGPL] = 1;
2579  }
2580  else if (INFILE(_LT_GSTREAMER_EXCEPTION_2_0)) {
2581  INTERESTING("GPL-2.0-or-later-with-GStreamer-exception");
2582  lmem[_mGPL] = 1;
2583  }
2584  else if (INFILE(_LT_GSTREAMER_EXCEPTION_2005)) {
2585  INTERESTING("GStreamer-exception-2005");
2586  }
2587  else if (INFILE(_LT_GSTREAMER_EXCEPTION_2008)) {
2588  INTERESTING("GStreamer-exception-2008");
2589  }
2590  else if (INFILE(_LT_GUILE_EXCEPTION_2_0)) {
2591  INTERESTING("harbour-exception");
2592  lmem[_mGPL] = 1;
2593  }
2594  else if (INFILE(_LT_HACOS_1_2)) {
2595  INTERESTING("HACOS-1.2");
2596  lmem[_mGPL] = 1;
2597  }
2598  else if (INFILE(_LT_HP_ENTERPRISE_EULA)) {
2599  INTERESTING("HP-Enterprise");
2600  }
2601  else if (INFILE(_LT_HP_PROLIANT_ESSENTIALS)) {
2602  INTERESTING("hp-proliant-essentials");
2603  }
2604  else if (INFILE(_LT_HP_SOFTWARE_EULA)) {
2605  INTERESTING("HP-Software");
2606  }
2607  else if (INFILE(_LT_INDEPENDENT_MODULE_LINKING_EXCEPTION)) {
2608  INTERESTING("Independent-modules-exception");
2609  lmem[_mGPL] = 1;
2610  }
2611  else if (INFILE(_LT_INITIAL_DEVELOPER_PUBLIC)) {
2612  INTERESTING("Initial-Developer-Public");
2613  lmem[_mGPL] = 1;
2614  }
2615  else if (INFILE(_LT_INTEL_BSD)) {
2616  INTERESTING("BSD-3-Clause-acpica");
2617  }
2618  else if (INFILE(_LT_INTEL_MASTER_EULA_SW_DEV_2016)) {
2619  INTERESTING("Intel-Master-for-SW-Dev-2016");
2620  }
2621  else if (INFILE(_LT_JAVASCRIPT_EXCEPTION_2_0)) {
2622  INTERESTING("Javascript-exception-2.0");
2623  lmem[_mGPL] = 1;
2624  }
2625  else if (INFILE(_LT_JBOSS_EULA)) {
2626  INTERESTING("JBoss");
2627  }
2628  else if (INFILE(_LT_JELURIDA_PUBLIC_1_1)) {
2629  INTERESTING("Jeulurida-Public-1.1");
2630  lmem[_mGPL] = 1;
2631  }
2632  else if (INFILE(_LT_JPRS_OSCL_1_1)) {
2633  INTERESTING("JPRS-OSCL-1.1");
2634  }
2635  else if (INFILE(_LT_KDE_ACCEPTED_GPL)) {
2636  INTERESTING("KDE-Accepted-GPL");
2637  lmem[_mGPL] = 1;
2638  }
2639  else if (INFILE(_LT_KDE_ACCEPTED_LGPL)) {
2640  INTERESTING("KDE-Accepted-LGPL");
2641  lmem[_mGPL] = 1;
2642  }
2643  else if (INFILE(_LT_KFQF_ACCEPTED_GPL)) {
2644  INTERESTING("KFQF-Accepted-GPL");
2645  lmem[_mGPL] = 1;
2646  }
2647  else if (INFILE(_LT_LDPC_1994)) {
2648  INTERESTING("LDPC-1994");
2649  lmem[_mGPL] = 1;
2650  }
2651  else if (INFILE(_LT_LDPC_1997)) {
2652  INTERESTING("LDPC-1997");
2653  lmem[_mGPL] = 1;
2654  }
2655  else if (INFILE(_LT_LDPC_1999)) {
2656  INTERESTING("LDPC-1999");
2657  lmem[_mGPL] = 1;
2658  }
2659  else if (INFILE(_LT_LDPM_1998)) {
2660  INTERESTING("LDPM-1998");
2661  lmem[_mGPL] = 1;
2662  }
2663  else if (INFILE(_LT_LGPL_2_0_FLTK)) {
2664  INTERESTING("LGPL-2.0-with-FLTK-exception");
2665  lmem[_mGPL] = 1;
2666  lmem[_mLGPL] = 1;
2667  }
2668  else if (INFILE(_LT_LGPL_2_1_NOKIA_QT)) {
2669  INTERESTING("LGPL-2.1-with-Nokia-Qt-Exception");
2670  lmem[_mGPL] = 1;
2671  lmem[_mLGPL] = 1;
2672  }
2673  else if (INFILE(_LT_LGPL_2_1_PLUS_LINKING)) {
2674  INTERESTING("LGPL-2.1-or-later-linking");
2675  lmem[_mGPL] = 1;
2676  }
2677  else if (INFILE(_LT_LGPL_2_1_QT_COMPANY)) {
2678  INTERESTING("LGPL-2.1-with-Qt-Company-Exception");
2679  lmem[_mGPL] = 1;
2680  lmem[_mLGPL] = 1;
2681  }
2682  else if (INFILE(_LT_LGPL_2_1_RXTX)) {
2683  INTERESTING("LGPL-2.1-with-RXTX-exception");
2684  lmem[_mGPL] = 1;
2685  lmem[_mLGPL] = 1;
2686  }
2687  else if (INFILE(_LT_LGPL_3_PLUS_LINKING)) {
2688  INTERESTING("LGPL-3.0-or-later-linking");
2689  lmem[_mGPL] = 1;
2690  lmem[_mLGPL] = 1;
2691  }
2692  else if (INFILE(_LT_LGPL_3_0_ZEROMQ)) {
2693  INTERESTING("LGPL-3.0-with-ZeroMQ-exception");
2694  lmem[_mGPL] = 1;
2695  }
2696  else if (INFILE(_LT_LIBERATION_FONT_EXCEPTION)) {
2697  INTERESTING("Liberation-Font-Exception");
2698  lmem[_mGPL] = 1;
2699  }
2700  else if (INFILE(_LT_LIBWEBSOCKETS_EXCEPTION)) {
2701  INTERESTING("libwebsockets-exception");
2702  lmem[_mGPL] = 1;
2703  lmem[_mLGPL] = 1;
2704  }
2705  else if (INFILE(_LT_LILIQ_R_1_1)) {
2706  INTERESTING("LiLiQ-R-1.1");
2707  lmem[_mGPL] = 1;
2708  }
2709  else if (INFILE(_LT_LILIQ_RPLUS_1_1)) {
2710  INTERESTING("LiLiQ-Rplus-1.1");
2711  lmem[_mGPL] = 1;
2712  }
2713  /* NOTE: linking-exception-lgpl-3.0 text is identical to lgpl-3.0-linking-exception; unreachable */
2714  else if (INFILE(_LT_LLGPL)) {
2715  INTERESTING("LLGPL");
2716  lmem[_mGPL] = 1;
2717  }
2718  else if (INFILE(_LT_LOSLA)) {
2719  INTERESTING("LOSLA");
2720  lmem[_mGPL] = 1;
2721  }
2722  else if (INFILE(_LT_LZMA_SDK_2006)) {
2723  INTERESTING("LZMA-SDK-2006");
2724  lmem[_mGPL] = 1;
2725  }
2726  else if (INFILE(_LT_LZMA_SDK_2008)) {
2727  INTERESTING("LZMA-SDK-2008");
2728  lmem[_mGPL] = 1;
2729  }
2730  else if (INFILE(_LT_LZMA_SDK_ORIGINAL)) {
2731  INTERESTING("LZMA-SDK-Original");
2732  lmem[_mGPL] = 1;
2733  }
2734  else if (INFILE(_LT_MADWIFI_DUAL)) {
2735  INTERESTING("MadWifi-Dual-BSD-GPL");
2736  }
2737  else if (INFILE(_LT_MAGPIE_EXCEPTION_1_0)) {
2738  INTERESTING("Magpie-exception-1.0");
2739  lmem[_mGPL] = 1;
2740  }
2741  else if (INFILE(_LT_MAKE_HUMAN_EXCEPTION)) {
2742  INTERESTING("MakeHuman");
2743  }
2744  else if (INFILE(_LT_XEROX)) {
2745  INTERESTING("Xerox");
2746  lmem[_mGPL] = 1;
2747  }
2748  else if (INFILE(_LT_MIT_NO_ADVERT_EXPORT_CONTROL)) {
2749  INTERESTING("HPND-export2-US");
2750  }
2751  else if (INFILE(_LT_MONETDB_1_1)) {
2752  INTERESTING("MonetDB-1.1");
2753  lmem[_mGPL] = 1;
2754  }
2755  else if (INFILE(_LT_MS_NUGET)) {
2756  INTERESTING("MS-Nuget");
2757  }
2758  else if (INFILE(_LT_MS_VISUAL_STUDIO_CODE)) {
2759  INTERESTING("MS-Visual-Studio-Code");
2760  }
2761  else if (INFILE(_LT_MS_WINDOWS_OS_2018)) {
2762  INTERESTING("MS-Windows-OS-2018");
2763  }
2764  else if (INFILE(_LT_MYSQL_FLOSS_EXCEPTION_2_0)) {
2765  INTERESTING("MySQL-FLOSS-exception-2.0");
2766  lmem[_mGPL] = 1;
2767  }
2768  else if (INFILE(_LT_NANT_EXCEPTION_2_0_PLUS)) {
2769  INTERESTING("nant-exception-2.0-or-later");
2770  lmem[_mGPL] = 1;
2771  }
2772  else if (INFILE(_LT_NETCAT)) {
2773  INTERESTING("Netcat");
2774  }
2775  else if (INFILE(_LT_NEXB_SSLA_1_1_0)) {
2776  INTERESTING("nexB-SSLA-1.1.0");
2777  }
2778  else if (INFILE(_LT_NICTA_EXCEPTION)) {
2779  INTERESTING("NICTA-Exception");
2780  lmem[_mGPL] = 1;
2781  }
2782  else if (INFILE(_LT_NIELS_FERGUSON)) {
2783  INTERESTING("Niels-Ferguson");
2784  }
2785  else if (INFILE(_LT_OCAML_LGPL_LINKING_EXCEPTION)) {
2786  INTERESTING("OCaml-LGPL-linking-exception");
2787  lmem[_mGPL] = 1;
2788  }
2789  else if (INFILE(_LT_OPEN_DIAMETER)) {
2790  INTERESTING("Open-Diameter");
2791  lmem[_mGPL] = 1;
2792  }
2793  else if (INFILE(_LT_OPENJDK_EXCEPTION)) {
2794  INTERESTING("OpenJDK-Exception");
2795  lmem[_mGPL] = 1;
2796  }
2797  else if (INFILE(_LT_OPENMOTIF_EXCEPTION_2_0_PLUS)) {
2798  INTERESTING("openmotif-exception-2.0-or-later");
2799  lmem[_mGPL] = 1;
2800  }
2801  else if (INFILE(_LT_OPENSC_OPENSSL_OPENPACE_EXCEPTION_GPL)) {
2802  INTERESTING("opensc-openssl-openpace-exception-gpl");
2803  lmem[_mGPL] = 1;
2804  }
2805  else if (INFILE(_LT_OPENSSL_EXCEPTION_GPL_2_0_PLUS)) {
2806  INTERESTING("openssl-exception-GPL-2.0-or-later");
2807  lmem[_mGPL] = 1;
2808  }
2809  else if (INFILE(_LT_OPERA_WIDGET_1_0)) {
2810  INTERESTING("Opera-Widget-1.0");
2811  }
2812  else if (INFILE(_LT_ORACLE_DEVTOOLS_VSNET_DEV)) {
2813  INTERESTING("oracle-devtools-vsnet-dev");
2814  }
2815  else if (INFILE(_LT_ORACLE_JAVA_EE_SDK_2010)) {
2816  INTERESTING("OTN-Developer-for-JAVA-EE-SDK");
2817  }
2818  else if (INFILE(_LT_OSET_PL_2_1)) {
2819  INTERESTING("OSET-PL-2.1");
2820  lmem[_mGPL] = 1;
2821  }
2822  else if (INFILE(_LT_OSSN_3_0)) {
2823  INTERESTING("OSSN-3.0");
2824  lmem[_mGPL] = 1;
2825  }
2826  else if (INFILE(_LT_OTHER_COPYLEFT)) {
2827  INTERESTING("Other-Copyleft-Licenses");
2828  lmem[_mGPL] = 1;
2829  }
2830  else if (INFILE(_LT_OTN_DEV_DIST_2009)) {
2831  INTERESTING("OTN-2009");
2832  }
2833  else if (INFILE(_LT_OTN_DEV_DIST_2014)) {
2834  INTERESTING("OTN-2014");
2835  }
2836  else if (INFILE(_LT_OTN_DEV_DIST)) {
2837  INTERESTING("OTN");
2838  }
2839  else if (INFILE(_LT_OWAL_1_0)) {
2840  INTERESTING("Opera-Web-Applications-1.0");
2841  lmem[_mGPL] = 1;
2842  }
2843  else if (INFILE(_LT_PAINT_NET)) {
2844  INTERESTING("Paint.NET");
2845  }
2846  else if (INFILE(_LT_PCRE)) {
2847  INTERESTING("PCRE");
2848  }
2849  else if (INFILE(_LT_PFTIJAH_1_1)) {
2850  INTERESTING("PfTijah-Public-1.1");
2851  lmem[_mGPL] = 1;
2852  }
2853  else if (INFILE(_LT_POLITEPIX_PL_1_0)) {
2854  INTERESTING("Politepix-Public-1.0");
2855  }
2856  else if (INFILE(_LT_PS_OR_PDF_FONT_EXCEPTION_20170817)) {
2857  INTERESTING("PS-or-PDF-font-exception-20170817");
2858  lmem[_mGPL] = 1;
2859  }
2860  else if (INFILE(_LT_PSUTILS)) {
2861  INTERESTING("psutils");
2862  }
2863  else if (INFILE(_LT_PYTHON_2_0_1)) {
2864  INTERESTING("Python-2.0.1");
2865  }
2866  else if (INFILE(_LT_QCAD_EXCEPTION_GPL)) {
2867  INTERESTING("GPL-with-QCAD-Exception");
2868  lmem[_mGPL] = 1;
2869  }
2870  else if (INFILE(_LT_QT_COMMERCIAL_1_1)) {
2871  INTERESTING("Qt-Commercial-v1.1");
2872  }
2873  else if (INFILE(_LT_QT_KDE_LINKING_EXCEPTION)) {
2874  INTERESTING("GPL-2.0-or-later-with-Qt-Linking-Exception");
2875  lmem[_mGPL] = 1;
2876  }
2877  else if (INFILE(_LT_QT_QCA_EXCEPTION_2_0)) {
2878  INTERESTING("GPL-2.0-only-with-Qt-QCA-exception");
2879  lmem[_mGPL] = 1;
2880  }
2881  else if (INFILE(_LT_QWT_1_0)) {
2882  INTERESTING("Qwt-1.0-Deprecated");
2883  lmem[_mGPL] = 1;
2884  }
2885  else if (INFILE(_LT_RH_EULA_LGPL)) {
2886  INTERESTING("Red-Hat-LGPL-Based");
2887  lmem[_mGPL] = 1;
2888  }
2889  else if (INFILE(_LT_RH_EULA_2)) {
2890  INTERESTING("Red-Hat");
2891  lmem[_mGPL] = 1;
2892  }
2893  else if (INFILE(_LT_SANE_EXCEPTION_2_0_PLUS)) {
2894  INTERESTING("sane-exception-2.0-or-later");
2895  lmem[_mGPL] = 1;
2896  }
2897  else if (INFILE(_LT_SENCHA_APP_FLOSS_EXCEPTION)) {
2898  INTERESTING("Sencha-GPL-3.0-Exception-for-Applications");
2899  lmem[_mGPL] = 1;
2900  }
2901  else if (INFILE(_LT_SENCHA_COMMERCIAL_3_17)) {
2902  INTERESTING("Sencha-Software-v3.17");
2903  }
2904  else if (INFILE(_LT_SENCHA_COMMERCIAL_3_9)) {
2905  INTERESTING("Sencha-Software-3.9");
2906  }
2907  else if (INFILE(_LT_SENCHA_COMMERCIAL)) {
2908  INTERESTING("Sencha-Commercial-1.1");
2909  }
2910  else if (INFILE(_LT_SENCHA_DEV_FLOSS_EXCEPTION)) {
2911  INTERESTING("Sencha-GPL-3.0-Exception-for-Development");
2912  lmem[_mGPL] = 1;
2913  }
2914  else if (INFILE(_LT_IMATIX)) {
2915  INTERESTING("iMatix");
2916  lmem[_mGPL] = 1;
2917  }
2918  else if (INFILE(_LT_SGLIB)) {
2919  INTERESTING("Sglib");
2920  }
2921  else if (INFILE(_LT_SMAIL_GPL)) {
2922  INTERESTING("SMAIL-GPL");
2923  lmem[_mGPL] = 1;
2924  }
2925  else if (INFILE(_LT_SMPPL)) {
2926  INTERESTING("SMPPL");
2927  lmem[_mGPL] = 1;
2928  }
2929  else if (INFILE(_LT_SNIA)) {
2930  INTERESTING("SNIA");
2931  lmem[_mGPL] = 1;
2932  }
2933  else if (INFILE(_LT_SPELL_CHECKER_EXCEPTION_LGPL_2_1_PLUS)) {
2934  INTERESTING("spell-checker-exception-LGPL-2.1-or-later");
2935  lmem[_mGPL] = 1;
2936  }
2937  else if (INFILE(_LT_ST_MCD_2_0)) {
2938  INTERESTING("STMicro-Liberty-v2");
2939  }
2940  else if (INFILE(_LT_STATEWIZARD)) {
2941  INTERESTING("StateWizard");
2942  lmem[_mGPL] = 1;
2943  }
2944  else if (INFILE(_LT_STRONGSWAN_EXCEPTION)) {
2945  INTERESTING("GPL-with-strongSwan-exception");
2946  lmem[_mGPL] = 1;
2947  }
2948  else if (INFILE(_LT_SUBCOMMANDER_EXCEPTION_2_0_PLUS)) {
2949  INTERESTING("subcommander-exception-2.0-or-later");
2950  lmem[_mGPL] = 1;
2951  }
2952  else if (INFILE(_LT_SWIG)) {
2953  INTERESTING("SWIG-Library");
2954  }
2955  else if (INFILE(_LT_SWL)) {
2956  INTERESTING("SWL");
2957  }
2958  else if (INFILE(_LT_SYNTEXT_SERNA_EXCEPTION_1_0)) {
2959  INTERESTING("syntext-serna-exception-1.0");
2960  lmem[_mGPL] = 1;
2961  }
2962  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_0)) {
2963  INTERESTING("Tanuki-Community-1.0");
2964  lmem[_mGPL] = 1;
2965  }
2966  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_1)) {
2967  INTERESTING("Tanuki-Community-1.1");
2968  lmem[_mGPL] = 1;
2969  }
2970  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_2)) {
2971  INTERESTING("Tanuki-Community-1.2");
2972  lmem[_mGPL] = 1;
2973  }
2974  else if (INFILE(_LT_TANUKI_COMMUNITY_SLA_1_3)) {
2975  INTERESTING("Tanuki-Community-1.3");
2976  lmem[_mGPL] = 1;
2977  }
2978  else if (INFILE(_LT_TAPR_OHL_1_0) && NOT_INFILE(_TITLE_TAPR_NCL)) {
2979  /* the Noncommercial variant shares this wording but forbids commercial use */
2980  INTERESTING("TAPR-OHL-1.0");
2981  lmem[_mGPL] = 1;
2982  }
2983  else if (INFILE(_LT_TELERIK_EULA)) {
2984  INTERESTING("Telerik");
2985  lmem[_mGPL] = 1;
2986  }
2987  else if (INFILE(_LT_THOR_PL)) {
2988  INTERESTING("TPL-1.0");
2989  lmem[_mGPL] = 1;
2990  }
2991  else if (INFILE(_LT_TORQUE_1_1)) {
2992  INTERESTING("TORQUE-1.1");
2993  lmem[_mGPL] = 1;
2994  }
2995  else if (INFILE(_LT_TPL_1_0)) {
2996  INTERESTING("TPL-1.0");
2997  lmem[_mGPL] = 1;
2998  }
2999  else if (INFILE(_LT_TROLLTECH_GPL_EXCEPTION_1_0)) {
3000  INTERESTING("Trolltech-GPL-Exception-1.0");
3001  lmem[_mGPL] = 1;
3002  }
3003  else if (INFILE(_LT_TROLLTECH_GPL_EXCEPTION_1_1)) {
3004  INTERESTING("Trolltech-GPL-Exception-1.1");
3005  lmem[_mGPL] = 1;
3006  }
3007  else if (INFILE(_LT_TROLLTECH_GPL_EXCEPTION_1_2)) {
3008  INTERESTING("Trolltech-GPL-Exception-1.2");
3009  lmem[_mGPL] = 1;
3010  }
3011  else if (INFILE(_LT_UBDL)) {
3012  INTERESTING("UBDL-exception");
3013  lmem[_mGPL] = 1;
3014  }
3015  else if (INFILE(_LT_UNLIMITED_LINKING_EXCEPTION_GPL)) {
3016  INTERESTING("GPL-with-Unlimited-linking-exception");
3017  lmem[_mGPL] = 1;
3018  }
3019  else if (INFILE(_LT_UOFU_RFPL)) {
3020  INTERESTING("UURF-Public");
3021  }
3022  else if (INFILE(_LT_VIEWFLOW_AGPL_3_0_EXCEPTION)) {
3023  INTERESTING("AGPL-3.0-only-with-Viewflow-Library-Exception");
3024  lmem[_mGPL] = 1;
3025  }
3026  else if (INFILE(_LT_VUFORIA_2013_07_29)) {
3027  INTERESTING("Vuforia-2013-07-29");
3028  }
3029  else if (INFILE(_LT_WINZIP_EULA)) {
3030  INTERESTING("WinZip");
3031  }
3032  else if (INFILE(_LT_WXWIDGETS)) {
3033  INTERESTING("wxWidgets");
3034  }
3035  else if (INFILE(_LT_WXWINDOWS_R_3_0)) {
3036  INTERESTING("wxWindows-Restricted-3.0");
3037  lmem[_mGPL] = 1;
3038  }
3039  else if (INFILE(_LT_X11_REALMODE)) {
3040  INTERESTING("X11-Style-Realmode");
3041  }
3042  else if (INFILE(_LT_XENOMAI_GPL_EXCEPTION)) {
3043  INTERESTING("Xenomai-GPL-Exception");
3044  lmem[_mGPL] = 1;
3045  }
3046  else if (INFILE(_LT_XMING)) {
3047  INTERESTING("Xming");
3048  }
3049  else if (INFILE(_LT_ZSH)) {
3050  INTERESTING("zsh");
3051  }
3052  } /* end !lmem[_mGPL] guard */
3054  /* copyleft-next license
3055  * It has to be checked before GPL because the license has the reference
3056  * to GPL license which gives a false positive GPL finding.
3057  */
3058  if (INFILE(_TITLE_copyleft_next_030) && INFILE(_PHR_copyleft_next_PARA1) && INFILE(_PHR_copyleft_next_PARA3)) {
3059  INTERESTING("copyleft-next-0.3.0");
3060  lmem[_mGPL] = 1;
3061  }
3062  else if (INFILE(_TITLE_copyleft_next_031) && INFILE(_PHR_copyleft_next_PARA1) && INFILE(_PHR_copyleft_next_PARA3)) {
3063  INTERESTING("copyleft-next-0.3.1");
3064  lmem[_mGPL] = 1;
3065  }
3066  else if (INFILE(_PHR_copyleft_next_030) || INFILE(_SPDX_copyleft_next_030)) {
3067  INTERESTING("copyleft-next-0.3.0");
3068  }
3069  else if (INFILE(_PHR_copyleft_next_031) || INFILE(_SPDX_copyleft_next_031)) {
3070  INTERESTING("copyleft-next-0.3.1");
3071  }
3073  /*
3074  * GPL, LGPL, GFDL
3075  * QUESTION: do we need to check for the FSF copyright since we also
3076  * check for "GNU" or "free"?
3077  */
3078  if ((NOT_INFILE(_LT_FORMER_GNU) && (mCR_FSF() ||
3079  HASTEXT(_TEXT_GNUTERMS, REG_EXTENDED)))) {
3080  /*
3081  * Affero
3082  */
3083  if (INFILE(_PHR_AGPL) && NOT_INFILE(_LT_GPL3ref4)) {
3084  if (INFILE(_LT_AGPL1) || INFILE(_LT_AGPL2) ||
3085  INFILE(_LT_AGPL3)) {
3086  cp = AGPLVERS();
3087  INTERESTING(lDebug ? "Affero(#1)" : cp);
3088  lmem[_mGPL] = 1;
3089  }
3090  else if (INFILE(_LT_AGPLref1)) {
3091  cp = AGPLVERS();
3092  INTERESTING(lDebug ? "Affero(#2)" : cp);
3093  lmem[_mGPL] = 1;
3094  }
3095  else if (INFILE(_LT_AGPLref2) && NOT_INFILE(_LT_NOT_AGPLref1)) {
3096  cp = AGPLVERS();
3097  INTERESTING(lDebug ? "Affero(#3)" : cp);
3098  lmem[_mGPL] = 1;
3099  }
3100  else if (mCR_FSF() && NOT_INFILE(_LT_GPL3_NOT_AGPL)) {
3101  cp = AGPLVERS();
3102  INTERESTING(lDebug ? "Affero(CR)" : cp);
3103  lmem[_mGPL] = 1;
3104  }
3105  /* named, not granted: other licences list Affero in secondary-licence,
3106  compatible-licence and definition clauses */
3107  else if (NOT_INFILE(_LT_MPL_SECONDARY)
3108  && NOT_INFILE(_PHR_AGPL_REFERENCE_ONLY)) {
3109  /* agplVersion() also returns GPL names; no lmem[_mGPL] here, so a
3110  separate GPL grant still gets reported */
3111  cp = AGPLVERS();
3112  if (strncmp(cp, "AGPL", 4) == 0) {
3113  INTERESTING(lDebug ? "Affero(named)" : cp);
3114  }
3115  }
3116  }
3117  else if (INFILE(_LT_AGPL_NAMED) || INFILE(_LT_AGPL_NAMED_ref)
3118  || INFILE(_LT_AGPL_NAMED_ref2)) {
3119  cp = AGPLVERS();
3120  INTERESTING(lDebug ? "AGPL(named)" : cp);
3121  lmem[_mGPL] = 1;
3122  }
3123 
3124  /*
3125  * Some packages have a single file containing both a GPL and an LGPL
3126  * license. Therefore, these checks should NOT be exclusive.
3127  */
3128  /* * The Nethack General Public License (NGPL) */
3129  else if (INFILE(_TITLE_NGPL)) {
3130  INTERESTING("NGPL");
3131  lmem[_mGPL] = 1;
3132  }
3133  else if (INFILE(_LT_GPL_V1)) {
3134  INTERESTING("GPL-1.0-only");
3135  lmem[_mGPL] = 1;
3136  }
3137  else if (INFILE(_LT_GPL_1) && !HASTEXT(_LT_GPL_EXCEPT_0, REG_EXTENDED)) {
3138  if (INFILE(_PHR_GPL2_OR_LATER_1) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3139  {
3140  INTERESTING(lDebug ? "PHR(GPL2_OR_LATER#1)" : "GPL-2.0-or-later");
3141  lmem[_mGPL] = 1;
3142  }
3143  else if (INFILE(_TITLE_GPL2)) {
3144  INTERESTING(lDebug ? "Title(GPL-2.0-only)" : "GPL-2.0-only");
3145  lmem[_mGPL] = 1;
3146  }
3147  else if (INFILE(_PHR_GPL1_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3148  {
3149  INTERESTING("GPL-1.0-or-later");
3150  lmem[_mGPL] = 1;
3151  }
3152  else if (INFILE(_TITLE_GPL1)) {
3153  INTERESTING("GPL-1.0-only");
3154  lmem[_mGPL] = 1;
3155  }
3156  else {
3157  INTERESTING("GPL");
3158  lmem[_mGPL] = 1;
3159  }
3160  }
3161  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)) {
3162  if (INFILE(_PHR_GPL2_OR_LATER_1) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3163  {
3164  INTERESTING(lDebug ? "PHR(GPL2_OR_LATER#2)" : "GPL-2.0-or-later");
3165  lmem[_mGPL] = 1;
3166  }
3167  else {
3168  INTERESTING(lDebug ? "LT(GPL-V2)" : "GPL-2.0-only");
3169  lmem[_mGPL] = 1;
3170  }
3171  }
3172  else if (INFILE(_PHR_GPL2_OR_LATER_2))
3173  {
3174  INTERESTING(lDebug ? "PHR(GPL2_OR_LATER#2)" : "GPL-2.0-or-later");
3175  lmem[_mGPL] = 1;
3176  }
3177  else if (INFILE(_LT_GPL3_PATENTS)) {
3178  if (INFILE(_TITLE_GPL3)) {
3179  INTERESTING(lDebug ? "GPL_v3(#1)" : "GPL-3.0-only");
3180  lmem[_mGPL] = 1;
3181  }
3182  else {
3183  INTERESTING("GPL-3.0-only-possibility");
3184  lmem[_mGPL] = 1;
3185  }
3186  }
3187  else if (INFILE(_TITLE_GPL3_ref3_later)) {
3188  INTERESTING("GPL-3.0-or-later");
3189  lmem[_mGPL] = 1;
3190  }
3191  else if (INFILE(_TITLE_GPL3_ref4_later)) {
3192  INTERESTING("GPL-3.0-or-later");
3193  lmem[_mGPL] = 1;
3194  }
3195  else if (INFILE(_TITLE_GPL3_ref3)) {
3196  INTERESTING("GPL-3.0-only");
3197  lmem[_mGPL] = 1;
3198  }
3199  if (INFILE(_LT_LGPL_1) || INFILE(_LT_LGPL_2) || INFILE(_LT_LGPL21_OR_LATER_GENERAL)) {
3200  if (INFILE(_PHR_LGPL21_OR_LATER_1) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3201  {
3202  INTERESTING("LGPL-2.1-or-later");
3203  lmem[_mLGPL] = 1;
3204  }
3205  else if (INFILE(_PHR_LGPL2_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3206  {
3207  INTERESTING("LGPL-2.0-or-later");
3208  lmem[_mLGPL] = 1;
3209  }
3210  else if (INFILE(_TITLE_LGPLV21)) {
3211  INTERESTING("LGPL-2.1-only");
3212  lmem[_mLGPL] = 1;
3213  }
3214  else if (INFILE(_TITLE_LGPLV2)) {
3215  INTERESTING("LGPL-2.0-only");
3216  lmem[_mLGPL] = 1;
3217  }
3218  else {
3219  INTERESTING("LGPL");
3220  lmem[_mLGPL] = 1;
3221  }
3222  }
3223  else if (INFILE(_LT_LGPL_3)) {
3224  if ((INFILE(_PHR_LGPL3_OR_LATER)
3225  || INFILE(_PHR_LGPL3_OR_LATER_ref1)
3226  || INFILE(_PHR_LGPL3_OR_LATER_ref2))
3227  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3228  {
3229  INTERESTING("LGPL-3.0-or-later");
3230  lmem[_mLGPL] = 1;
3231  }
3232  else if (INFILE(_TITLE_LGPL3)) {
3233  INTERESTING("LGPL-3.0-only");
3234  lmem[_mLGPL] = 1;
3235  }
3236  else {
3237  INTERESTING("LGPL-3.0-only-possibility");
3238  lmem[_mLGPL] = 1;
3239  }
3240  }
3241  if (INFILE(_LT_GFDL)) {
3242  cp = GFDLVERS();
3243  INTERESTING(lDebug ? "GFDL(#1)" : cp);
3244  lmem[_mGFDL] = 1;
3245  }
3246  if (!lmem[_mLGPL] && NOT_INFILE(_LT_MPL_SECONDARY)) { /* no FSF/GPL-like match yet */
3247  /*
3248  NOTE: search for LGPL before GPL; the latter matches
3249  occurrences of former
3250  */
3251  if (INFILE(_LT_GPL_FONT1) && INFILE(_LT_GPL_FONT2)) {
3252  INTERESTING(lDebug ? "GPL(fonts)" : "GPL-exception");
3253  lmem[_mGPL] = 1;
3254  }
3255  else if (INFILE(_LT_LGPL_ALT)) {
3256  cp = LGPLVERS();
3257  INTERESTING(lDebug ? "LGPL(alternate)" : cp);
3258  lmem[_mLGPL] = 1;
3259  }
3260  else if (INFILE(_LT_LGPL3_ref_later)) {
3261  INTERESTING("LGPL-3.0-or-later");
3262  lmem[_mLGPL] = 1;
3263  }
3264  else if (INFILE(_LT_LGPLref1)) {
3265  cp = LGPLVERS();
3266  INTERESTING(lDebug ? "LGPL(ref1)" : cp);
3267  lmem[_mLGPL] = 1;
3268  }
3269  else if (INFILE(_LT_LGPLref2) &&
3270  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3271  cp = LGPLVERS();
3272  INTERESTING(lDebug ? "LGPL(ref2#1)" : cp);
3273  lmem[_mLGPL] = 1;
3274  }
3275  else if (INFILE(_LT_LGPLref3)) {
3276  cp = LGPLVERS();
3277  INTERESTING(lDebug ? "LGPL(ref3)" : cp);
3278  lmem[_mLGPL] = 1;
3279  }
3280  else if (INFILE(_LT_LGPLref4)) {
3281  cp = LGPLVERS();
3282  INTERESTING(lDebug ? "LGPL(ref4)" : cp);
3283  lmem[_mLGPL] = 1;
3284  }
3285  else if (INFILE(_LT_LGPLref5)) {
3286  cp = LGPLVERS();
3287  INTERESTING(lDebug ? "LGPL(ref5)" : cp);
3288  lmem[_mLGPL] = 1;
3289  }
3290  else if (INFILE(_LT_LGPLref6)) {
3291  cp = LGPLVERS();
3292  INTERESTING(lDebug ? "LGPL(ref6)" : cp);
3293  lmem[_mLGPL] = 1;
3294  }
3295  else if (!lmem[_mLIBRE] && !lmem[_fREAL] &&
3296  INFILE(_LT_LGPLref7) &&
3297  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3298  cp = LGPLVERS();
3299  INTERESTING(lDebug ? "LGPL(ref7)" : cp);
3300  lmem[_mLGPL] = 1;
3301  }
3302  else if (!lmem[_fREAL] && !lmem[_mAPTANA] &&
3303  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_LT_LGPLref8) &&
3304  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3305  cp = LGPLVERS();
3306  INTERESTING(lDebug ? "LGPL(ref8)" : cp);
3307  lmem[_mLGPL] = 1;
3308  }
3309  else if (INFILE(_LT_LGPLref9) &&
3310  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3311  cp = LGPLVERS();
3312  INTERESTING(lDebug ? "LGPL(ref9)" : cp);
3313  lmem[_mLGPL] = 1;
3314  }
3315  else if (INFILE(_LT_LGPLref10) &&
3316  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3317  cp = LGPLVERS();
3318  INTERESTING(lDebug ? "LGPL(ref10)" : cp);
3319  lmem[_mLGPL] = 1;
3320  }
3321  else if (INFILE(_LT_LGPLref11)) {
3322  cp = LGPLVERS();
3323  INTERESTING(lDebug ? "LGPL(ref11)" : cp);
3324  lmem[_mLGPL] = 1;
3325  }
3326  else if (INFILE(_FILE_LGPL1) || INFILE(_FILE_LGPL2)) {
3327  cp = LGPLVERS();
3328  INTERESTING(lDebug ? "LGPL(deb)" : cp);
3329  lmem[_mLGPL] = 1;
3330  }
3331  else if (!LVAL(_TEXT_GNU_LIC_INFO) &&
3332  (URL_INFILE(_URL_LGPL_1) ||
3333  URL_INFILE(_URL_LGPL_2))) {
3334  cp = LGPLVERS();
3335  INTERESTING(lDebug ? "LGPL(url)" : cp);
3336  lmem[_mLGPL] = 1;
3337  }
3338  else if (lmem[_fREAL] && !LVAL(_TEXT_GNU_LIC_INFO) &&
3339  GPL_INFILE(_LT_LGPL_OR)) {
3340  cp = LGPLVERS();
3341  INTERESTING(lDebug ? "LGPL(or)" : cp);
3342  lmem[_mLGPL] = 1;
3343  }
3344  else if (INFILE(_PHR_LGPL21_OR_LATER_2)) {
3345  INTERESTING(lDebug ? "LGPL-2.1-or-later(_LATER_2)" : "LGPL-2.1-or-later");
3346  lmem[_mLGPL] = 1;
3347  }
3348  else if (INFILE(_PHR_LGPL21_ONLY_ref) || INFILE(_TITLE_LGPLV21_2)) {
3349  INTERESTING("LGPL-2.1-only");
3350  lmem[_mLGPL] = 1;
3351  }
3352  else if (INFILE(_TITLE_LGPL_NAMED)) {
3353  cp = LGPLVERS();
3354  INTERESTING(lDebug ? "LGPL(title)" : cp);
3355  lmem[_mLGPL] = 1;
3356  }
3357  }
3358  if (!lmem[_mGPL] && !HASTEXT(_TEXT_GCC, REG_EXTENDED)) {
3359  if (GPL_INFILE(_LT_GPL_ALT) && !INFILE(_LT_LGPL_ALT)) {
3360  cp = GPLVERS();
3361  INTERESTING(lDebug ? "GPL(alternate)" : cp);
3362  lmem[_mGPL] = 1;
3363  }
3364  else if ((GPL_INFILE(_LT_GPL3ref2) || GPL_INFILE(_PHR_GPL3_OR_LATER)
3365  || GPL_INFILE(_PHR_GPL3_OR_LATER_ref1) || GPL_INFILE(_PHR_GPL3_OR_LATER_ref2))
3366  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
3367  {
3368  INTERESTING("GPL-3.0-or-later");
3369  lmem[_mGPL] = 1;
3370  }
3371  else if (GPL_INFILE(_LT_GPL3ref)) {
3372  INTERESTING(lDebug ? "GPL_v3(#2)" : "GPL-3.0-only");
3373  lmem[_mGPL] = 1;
3374  }
3375  else if (GPL_INFILE(_LT_GPL3ref3) && NOT_INFILE(_TITLE_LGPL3)) {
3376  INTERESTING("GPL-3.0-only");
3377  lmem[_mGPL] = 1;
3378  }
3379  else if (!lmem[_mLIBRE] && GPL_INFILE(_LT_GPLref1)
3380  && NOT_INFILE(_PHR_NOT_UNDER_GPL)
3381  && NOT_INFILE(_LT_LGPLref2)
3382  && NOT_INFILE(_PHR_GPL_COMPAT_3)) {
3383  /*
3384  * Special exceptions:
3385  * (1) LaTeX uses the following phrase:
3386  * "... why distributing LaTeX under the GNU General Public License (GPL)
3387  * was considered inappropriate".
3388  * (2) Python uses the following phrases:
3389  * "GPL-compatible doesn't mean that we're distributing Python under the GPL"
3390  * AND, "GPL-compatible licenses make it possible to combine Python with
3391  * other software that is released under the GPL.
3392  *****
3393  * These MUST be filtered. Do so by marking the GPL flag but don't assign
3394  * a license component (e.g., ignore GPL for this file)
3395  */
3396  if (INFILE(_PHR_LATEX_GPL_INAPPROPRIATE) ||
3397  INFILE(_PHR_PYTHON_NOTGPL_1) ||
3398  INFILE(_PHR_PYTHON_NOTGPL_2)) {
3399  lmem[_mGPL] = 1;
3400  }
3401  else if (!HASTEXT(_TEXT_GCC, REG_EXTENDED)
3402  && NOT_INFILE(_TITLE_D_FSL_10)){
3403  cp = GPLVERS();
3404  INTERESTING(cp);
3405  lmem[_mGPL] = 1;
3406  }
3407  }
3408  else if (INFILE(_LT_GPL_FSF)) {
3409  cp = GPLVERS();
3410  INTERESTING(lDebug ? "GPL(FSF)" : cp);
3411  lmem[_mGPL] = 1;
3412  }
3413  else if (GPL_INFILE(_LT_GPLref2)) {
3414  cp = GPLVERS();
3415  INTERESTING(lDebug ? "GPL(ref2)" : cp);
3416  lmem[_mGPL] = 1;
3417  }
3418  else if (GPL_INFILE(_LT_GPLref3)) {
3419  cp = GPLVERS();
3420  INTERESTING(lDebug ? "GPL(ref3)" : cp);
3421  lmem[_mGPL] = 1;
3422  }
3423  else if (INFILE(_LT_GPLref4)) {
3424  cp = GPLVERS();
3425  INTERESTING(lDebug ? "GPL(ref4)" : cp);
3426  lmem[_mGPL] = 1;
3427  }
3428  else if (GPL_INFILE(_LT_GPLref5)) {
3429  cp = GPLVERS();
3430  INTERESTING(lDebug ? "GPL(ref5)" : cp);
3431  lmem[_mGPL] = 1;
3432  }
3433  else if (GPL_INFILE(_LT_GPLref6)) {
3434  cp = GPLVERS();
3435  INTERESTING(lDebug ? "GPL(ref6)" : cp);
3436  lmem[_mGPL] = 1;
3437  }
3438  else if (GPL_INFILE(_LT_GPLref7)) {
3439  cp = GPLVERS();
3440  INTERESTING(lDebug ? "GPL(ref7)" : cp);
3441  lmem[_mGPL] = 1;
3442  }
3443  else if (GPL_INFILE(_LT_GPLref8)) {
3444  cp = GPLVERS();
3445  INTERESTING(lDebug ? "GPL(ref8)" : cp);
3446  lmem[_mGPL] = 1;
3447  }
3448  else if (INFILE(_LT_GPLref9)) {
3449  cp = GPLVERS();
3450  INTERESTING(lDebug ? "GPL(ref9)" : cp);
3451  lmem[_mGPL] = 1;
3452  }
3453  else if (GPL_INFILE(_LT_GPLref10)) {
3454  cp = GPLVERS();
3455  INTERESTING(lDebug ? "GPL(ref10)" : cp);
3456  lmem[_mGPL] = 1;
3457  }
3458  else if (INFILE(_LT_GPLref11)) {
3459  cp = GPLVERS();
3460  INTERESTING(lDebug ? "GPL(ref11)" : cp);
3461  lmem[_mGPL] = 1;
3462  }
3463  else if (INFILE(_LT_GPLref12)) {
3464  cp = GPLVERS();
3465  INTERESTING(lDebug ? "GPL(ref12)" : cp);
3466  lmem[_mGPL] = 1;
3467  }
3468  else if (GPL_INFILE(_LT_GPLref13)) {
3469  cp = GPLVERS();
3470  INTERESTING(lDebug ? "GPL(ref13)" : cp);
3471  lmem[_mGPL] = 1;
3472  }
3473  else if (GPL_INFILE(_LT_GPLref14) &&
3474  NOT_INFILE(_LT_LGPLref2)) {
3475  cp = GPLVERS();
3476  INTERESTING(lDebug ? "GPL(ref14)" : cp);
3477  lmem[_mGPL] = 1;
3478  }
3479  else if (INFILE(_LT_GPLref16)) {
3480  cp = GPLVERS();
3481  INTERESTING(lDebug ? "GPL(ref16)" : cp);
3482  lmem[_mGPL] = 1;
3483  }
3484  else if (INFILE(_LT_GPLref18)) {
3485  cp = GPLVERS();
3486  INTERESTING(lDebug ? "GPL(ref18)" : cp);
3487  lmem[_mGPL] = 1;
3488  }
3489  else if (INFILE(_LT_GPLref19)) {
3490  cp = GPLVERS();
3491  INTERESTING(lDebug ? "GPL(ref19)" : cp);
3492  lmem[_mGPL] = 1;
3493  }
3494  else if (INFILE(_LT_GPLref20)) {
3495  cp = GPLVERS();
3496  INTERESTING(lDebug ? "GPL(ref20)" : cp);
3497  lmem[_mGPL] = 1;
3498  }
3499  else if (!LVAL(_TEXT_GNU_LIC_INFO) && NOT_INFILE(_LT_INTEL_7) &&
3500  (URL_INFILE(_URL_GPL_1) ||
3501  URL_INFILE(_URL_GPL_2) ||
3502  URL_INFILE(_URL_GPL_3))) {
3503  cp = GPLVERS();
3504  INTERESTING(lDebug ? "GPL(url)" : cp);
3505  lmem[_mGPL] = 1;
3506  }
3507  else if (URL_INFILE(_URL_AGPL)) {
3508  cp = AGPLVERS();
3509  INTERESTING(lDebug ? "Affero(url)" : cp);
3510  lmem[_mGPL] = 1;
3511  }
3512  else if (!ltsr[_LT_LGPL_3] && INFILE(_LT_GPL_OR)) {
3513  cp = GPLVERS();
3514  INTERESTING(lDebug ? "GPL(or)" : cp);
3515  lmem[_mGPL] = 1;
3516  }
3517  else if (!lmem[_mGPL] && !lmem[_mLGPL] &&
3518  (INFILE(_LT_GNU_1) + INFILE(_LT_GNU_2) +
3519  INFILE(_LT_GNU_3) + INFILE(_LT_GNU_4) > 2)) {
3520  cp = GPLVERS();
3521  INTERESTING(lDebug ? "GPL(GNU)" : cp);
3522  lmem[_mGPL] = 1;
3523  }
3524  else if (!lmem[_mGPL] && !lmem[_mLGPL] &&
3525  INFILE(_LT_SEE_GPL) && INFILE(_LT_RECV_GPL)) {
3526  cp = GPLVERS();
3527  INTERESTING(lDebug ? "GPL(see)" : cp);
3528  lmem[_mGPL] = 1;
3529  }
3530  else if (!lmem[_mGPL] && !lmem[_mLGPL] &&
3531  INFILE(_LT_SEE_LGPL) && INFILE(_LT_RECV_LGPL)) {
3532  cp = LGPLVERS();
3533  INTERESTING(lDebug ? "LGPL(see)" : cp);
3534  lmem[_mLGPL] = 1;
3535  }
3536  }
3537  if (!lmem[_mGFDL] && (INFILE(_LT_GFDLref1) ||
3538  INFILE(_TITLE_GFDL))) {
3539  cp = GFDLVERS();
3540  INTERESTING(lDebug ? "GFDL(#2)" : cp);
3541  lmem[_mGFDL] = 1;
3542  }
3543  /*
3544  * Listed _explictly_ as an exception to the GPL -- this is NOT an 'else'
3545  * clause!
3546  */
3547  if (!lmem[_mGPL] && INFILE(_PHR_GPL_DESCRIPTIONS)) {
3548  INTERESTING(lDebug ? "GPL-kinda" : "GPL");
3549  lmem[_mGPL] = 1;
3550  }
3551  /* checking for FSF */
3552  if (INFILE(_LT_FSF_1)) {
3553  INTERESTING(lDebug ? "FSF(1)" : "FSFULLR");
3554  lmem[_mLGPL] = 1;
3555  }
3556  else if (INFILE(_LT_FSF_2)) {
3557  INTERESTING(lDebug ? "FSF(2)" : "FSF");
3558  }
3559  else if (INFILE(_LT_FSF_3)) {
3560  INTERESTING(lDebug ? "FSF(3)" : "FSF");
3561  }
3562  else if (mCR_FSF() && INFILE(_LT_FSF_4)) {
3563  INTERESTING(lDebug ? "FSF(4)" : "FSF");
3564  }
3565  else if (!lmem[_mGPL] && mCR_FSF() && INFILE(_LT_FSF_5)) {
3566  INTERESTING(lDebug ? "FSF(5)" : "FSF");
3567  }
3568  else if (!lmem[_mGPL] && INFILE(_LT_FSFUL)) {
3569  INTERESTING("FSFUL");
3570  }
3571  else if (!lmem[_mGPL] && NOT_INFILE(_LT_Autoconf_exception_20) && INFILE(_LT_FSFref1)) {
3572  INTERESTING(lDebug ? "FSF(ref1)" : "FSF");
3573  }
3574  else if (INFILE(_LT_FSFref2)) {
3575  INTERESTING(lDebug ? "FSF(ref2)" : "FSF");
3576  }
3577  else if (INFILE(_LT_LGPLrefFSF) &&
3578  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3579  INTERESTING(lDebug ? "LGPL(FSF)" : "LGPL");
3580  lmem[_mLGPL] = 1;
3581  }
3582  if (!lmem[_mGPL] && !lmem[_mLGPL] && !lmem[_mGFDL]) {
3583  /*
3584  * Check these patterns AFTER checking for FSF and GFDL, and only if the
3585  * CUPS license isn't present.
3586  */
3587  if (!lmem[_mCUPS] ) {
3588  if (GPL_INFILE(_LT_GPLpatt1) &&
3589  NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
3590  cp = GPLVERS();
3591  INTERESTING(lDebug ? "GPL(patt1)" : cp);
3592  lmem[_mGPL] = 1;
3593  }
3594  else if (GPL_INFILE(_LT_GPLpatt2)) {
3595  cp = GPLVERS();
3596  INTERESTING(lDebug ? "GPL(patt2)" : cp);
3597  lmem[_mGPL] = 1;
3598  }
3599  else if (INFILE(_CR_rms) && INFILE(_LT_GPL_2)) {
3600  INTERESTING("GPL(rms)");
3601  lmem[_mGPL] = 1;
3602  }
3603  else if (INFILE(_PHR_GPLISH_SAMPLE)) {
3604  INTERESTING(lDebug ? "GPLISH" : "GPL-possibility");
3605  INTERESTING(lDebug ? "GPLISH" : "LGPL-possibility");
3606  lmem[_mLGPL] = lmem[_mGPL] = 1;
3607  }
3608  }
3609  }
3610  else if (INFILE(_LT_GNU_COPYLEFT)) {
3611  INTERESTING("GNU-copyleft");
3612  lmem[_fGPL] = 1;
3613  }
3614  lmem[_fGPL] = lmem[_mLGPL]+lmem[_mGPL]+lmem[_mGFDL];
3615  }
3617  if (!lmem[_mGPL] && INFILE(_LT_GNU_PROJECTS)) {
3618  cp = GPLVERS();
3619  INTERESTING(lDebug ? "GPL(proj)" : cp);
3620  lmem[_mGPL] = 1;
3621  }
3623  if (HASTEXT(_LT_GPL_V2_NAMED_later, REG_EXTENDED) || HASTEXT(_TITLE_GPL2_ref1_later, REG_EXTENDED))
3624  {
3625  INTERESTING(lDebug ? "GPLV2+(named)" : "GPL-2.0-or-later");
3626  lmem[_mGPL] = 1;
3627  }
3628  else if (INFILE(_LT_TAPJOY) || INFILE(_LT_TAPJOY_ref1)) {
3629  INTERESTING("Tapjoy");
3630  lmem[_fGPL] = 1;
3631  lmem[_mMIT] = 1;
3632  }
3633  else if (!lmem[_mGPL] && !lmem[_mGFDL] && !lmem[_mLGPL] && !lmem[_fZPL]
3634  && (INFILE(_LT_GPL_NAMED)
3635  || INFILE(_LT_GPL_NAMED2)
3636  || HASTEXT(_LT_GPL_NAMED3, REG_EXTENDED))
3637  && !HASTEXT(_PHR_GPL_GHOSTSCRIPT, REG_EXTENDED)
3638  && NOT_INFILE(_LT_MPL_SECONDARY)
3639  && NOT_INFILE(_TEXT_NOT_GPL)
3640  && NOT_INFILE(_TEXT_NOT_GPL2)
3641  && NOT_INFILE(_LT_CNRI_PYTHON_GPL)
3642  && NOT_INFILE(_LT_W3Cref4)
3643  && NOT_INFILE(_LT_GPL_NAMED3_EXHIBIT)
3644  && NOT_INFILE(_LT_GPL_NAMED_COMPATIBLE)
3645  && !HASTEXT(_LT_GPL_NAMED_COMPATIBLE_1, REG_EXTENDED)
3646  && NOT_INFILE(_LT_GPL_NAMED_EXHIBIT)
3647  && NOT_INFILE(_TITLE_D_FSL_10)
3648  && NOT_INFILE(_LT_INTEL_7)
3649  && NOT_INFILE(_PHR_GPL_COMPAT_3)) {
3650  cp = GPLVERS();
3651  INTERESTING(lDebug ? "GPL(named)" : cp);
3652  lmem[_mGPL] = 1;
3653  }
3654  else if ( !lmem[_mGPL] && !INFILE(_TITLE_MIROS) && (INFILE(_LT_GPL_V2_NAMED) || INFILE(_LT_GPL_V2_NAMED_ref1)))
3655  {
3656  INTERESTING(lDebug ? "GPLV2(named)" : "GPL-2.0-only");
3657  lmem[_mGPL] = 1;
3658  }
3659  else if (!lmem[_mGPL] && INFILE(_LT_GPL_V3_NAMED_later))
3660  {
3661  INTERESTING(lDebug ? "GPLV3(named_later)" : "GPL-3.0-or-later");
3662  }
3663  else if (!lmem[_mGPL] && INFILE(_LT_GPL_V3_NAMED))
3664  {
3665  INTERESTING(lDebug ? "GPLV3(named)" : "GPL-3.0-only");
3666  }
3668  if (!lmem[_mLGPL] && (INFILE(_LT_LGPL_NAMED)
3669  || INFILE(_LT_LGPL_NAMED2)) && NOT_INFILE(_LT_GPL_NAMED_EXHIBIT)
3670  && NOT_INFILE(_LT_PHP_V30_2)) {
3671  cp = LGPLVERS();
3672  INTERESTING(lDebug ? "LGPL(named)" : cp);
3673  }
3674 
3676  /*
3677  * MIT, X11, Open Group, NEC -- text is very long, search in 2 parts
3678  */
3679  if (INFILE(_LT_JSON) && INFILE(_LT_MIT_NO_EVIL)) { // JSON license
3680  INTERESTING("JSON");
3681  lmem[_mMIT] = 1;
3682  }
3684  if (!lmem[_mWORDNET] && INFILE(_TITLE_WORDNET))
3685  {
3686  INTERESTING("WordNet-3.0");
3687  }
3689  if (INFILE(_CR_XFREE86_V10) || INFILE(_LT_XFREE86_V10)) {
3690  INTERESTING("XFree86-1.0");
3691  lmem[_mMIT] = 1;
3692  }
3693  else if (INFILE(_CR_XFREE86_V11) || INFILE(_LT_XFREE86_V11)) {
3694  INTERESTING("XFree86-1.1");
3695  lmem[_mMIT] = 1;
3696  }
3697  else if (INFILE(_LT_XFREE86)) {
3698  INTERESTING(lDebug ? "XFree86(1)" : "XFree86");
3699  lmem[_mMIT] = 1;
3700  }
3701  else if (INFILE(_LT_CCAI_1_0)) {
3702  INTERESTING("CCAI-1.0");
3703  lmem[_mMIT] = 1;
3704  }
3705  else if (INFILE(_LT_MODIFIED_MIT)) {
3706  /* modified text must not report the pristine licence */
3707  INTERESTING("MIT-style");
3708  lmem[_mMIT] = 1;
3709  }
3710  else if (HASTEXT(_LT_BSD_OR_MIT, REG_EXTENDED)) {
3711  INTERESTING("MIT");
3712  INTERESTING("BSD");
3713  lmem[_mMIT] = 1;
3714  }
3715  else if (HASTEXT(_LT_BSD_AND_MIT, REG_EXTENDED)) {
3716  INTERESTING("BSD");
3717  INTERESTING("MIT");
3718  lmem[_mMIT] = 1;
3719  }
3720  /*
3721  * MIT search order changed. First MIT license explicit phrases and references are checked .
3722  */
3723  else if (!lmem[_mMIT] && NOT_INFILE(_TITLE_MIT_EXHIBIT) && NOT_INFILE(_TITLE_SGI) &&
3724  (INFILE(_LT_MIT_1) || (INFILE(_TITLE_MIT) && NOT_INFILE(_PHR_NOT_MIT_LICENSE)))) {
3725  if(INFILE(_LT_MIT_NO_EVIL)) {
3726  INTERESTING(lDebug ? "MIT-style(no evil)" : "JSON");
3727  lmem[_mMIT] = 1;
3728  }
3729  else if (INFILE(_LT_MIT_2)) {
3730  if (INFILE(_LT_ZUORA_SOFTWARE)) {
3731  INTERESTING("Zuora-Software");
3732  lmem[_mMIT] = 1;
3733  }
3734  else if (INFILE(_LT_XILINX_2016)) {
3735  INTERESTING("Xilinx-2016");
3736  lmem[_mMIT] = 1;
3737  }
3738  else if (INFILE(_LT_X11_STANFORD)) {
3739  INTERESTING("X11-Style-Stanford-University");
3740  lmem[_mMIT] = 1;
3741  }
3742  else if (INFILE(_LT_X11_XCONSORTIUM_VEILLARD)) {
3743  INTERESTING("X11-Style-X-Consortium-Veillard");
3744  lmem[_mMIT] = 1;
3745  }
3746  else if (INFILE(_LT_X11_BITSTREAM)) {
3747  INTERESTING("Bitstream-Charter");
3748  lmem[_mMIT] = 1;
3749  }
3750  else if (INFILE(_LT_X11_TEKTRONIX)) {
3751  INTERESTING("X11-Style-Tektronix");
3752  lmem[_mMIT] = 1;
3753  }
3754  else if (INFILE(_LT_X11_IBM)) {
3755  INTERESTING("IBM-Derivative-Works");
3756  lmem[_mMIT] = 1;
3757  }
3758  else if (INFILE(_LT_X11_OAR)) {
3759  INTERESTING("OAR");
3760  lmem[_mMIT] = 1;
3761  }
3762  else if (INFILE(_LT_X11_ADOBE)) {
3763  INTERESTING("Adobe-Display-PostScript");
3764  lmem[_mMIT] = 1;
3765  }
3766  else if (INFILE(_LT_X11_LUCENT_VARIANT)) {
3767  INTERESTING("X11-Style-Lucent-variant");
3768  lmem[_mMIT] = 1;
3769  }
3770  else if (INFILE(_LT_X11_DEC1)) {
3771  INTERESTING("X11-Style-DEC-1");
3772  lmem[_mMIT] = 1;
3773  }
3774  else if (INFILE(_LT_X11_ACER)) {
3775  INTERESTING("X11-Style-Acer");
3776  lmem[_mMIT] = 1;
3777  }
3778  else if (INFILE(_LT_X11_LUCENT)) {
3779  INTERESTING("dtoa");
3780  lmem[_mMIT] = 1;
3781  }
3782  else if (INFILE(_LT_WORDNET_2)) {
3783  INTERESTING("WordNet");
3784  lmem[_mMIT] = 1;
3785  }
3786  else if (INFILE(_LT_WATERFALL_FEED_PARSER)) {
3787  INTERESTING("Waterfall-Feed-Parser");
3788  lmem[_mMIT] = 1;
3789  }
3790  else if (INFILE(_LT_WIDE_LICENSE)) {
3791  INTERESTING("WIDE");
3792  lmem[_mMIT] = 1;
3793  }
3794  else if (INFILE(_LT_WOODRUFF_2002)) {
3795  INTERESTING("Woodruff-Restricted-MIT-2002");
3796  lmem[_mMIT] = 1;
3797  }
3798  else if (INFILE(_LT_TANUKI_DEVELOPMENT)) {
3799  INTERESTING("Tanuki-Development-1.3");
3800  lmem[_mMIT] = 1;
3801  }
3802  else if (INFILE(_LT_TAKAO_ABE)) {
3803  INTERESTING("Takao-Abe");
3804  lmem[_mMIT] = 1;
3805  }
3806  else if (INFILE(_LT_SYNOPSYS_MIT)) {
3807  INTERESTING("Synopsys-MIT");
3808  lmem[_mMIT] = 1;
3809  }
3810  else if (INFILE(_LT_SYNTHESIS_TOOLKIT)) {
3811  INTERESTING("MIT-STK");
3812  lmem[_mMIT] = 1;
3813  }
3814  else if (INFILE(_LT_SUNSOFT)) {
3815  INTERESTING("Sunsoft");
3816  lmem[_mMIT] = 1;
3817  }
3818  else if (INFILE(_LT_SATA)) {
3819  INTERESTING("SATA");
3820  lmem[_mMIT] = 1;
3821  }
3822  else if (INFILE(_LT_SAAS_MIT)) {
3823  INTERESTING("SaaS-MIT");
3824  lmem[_mMIT] = 1;
3825  }
3826  else if (INFILE(_LT_PD_MIT)) {
3827  INTERESTING("Modified-MIT-for-Public-Domain-software");
3828  lmem[_mMIT] = 1;
3829  }
3830  else if (INFILE(_LT_OWTCHART)) {
3831  INTERESTING("OWTChart");
3832  lmem[_mMIT] = 1;
3833  }
3834  else if (INFILE(_LT_NODE_JS)) {
3835  INTERESTING("Node");
3836  lmem[_mMIT] = 1;
3837  }
3838  else if (INFILE(_LT_MIT_WITH_MODIFICATION_OBLIGATIONS)) {
3839  INTERESTING("HPND-export-US-modify");
3840  lmem[_mMIT] = 1;
3841  }
3842  else if (INFILE(_LT_MIT_README)) {
3843  INTERESTING("MIT-README");
3844  lmem[_mMIT] = 1;
3845  }
3846  else if (INFILE(_LT_MIT_OLD_STYLE)) {
3847  INTERESTING("Advanced-Cryptics-Dictionary");
3848  lmem[_mMIT] = 1;
3849  }
3850  else if (INFILE(_LT_MIT_ADDITION)) {
3851  INTERESTING("MIT-Wu");
3852  lmem[_mMIT] = 1;
3853  }
3854  else if (INFILE(_LT_MARKUS_KUHN_LICENSE)) {
3855  INTERESTING("HPND-Markus-Kuhn");
3856  lmem[_mMIT] = 1;
3857  }
3858  else if (INFILE(_LT_LIBGEOTIFF)) {
3859  INTERESTING("libgeoTiff");
3860  lmem[_mMIT] = 1;
3861  }
3862  else if (INFILE(_LT_LIBPBM)) {
3863  INTERESTING("xlock");
3864  lmem[_mMIT] = 1;
3865  }
3866  else if (INFILE(_LT_KHRONOS)) {
3867  INTERESTING("Khronos");
3868  lmem[_mMIT] = 1;
3869  }
3870  else if (INFILE(_LT_IAN_PIUMARTA)) {
3871  INTERESTING("Ian-Piumarta");
3872  lmem[_mMIT] = 1;
3873  }
3874  else if (INFILE(_LT_HIPPOCRATIC_1_2)) {
3875  INTERESTING("Hippocratic-v1.2");
3876  lmem[_mMIT] = 1;
3877  }
3878  else if (INFILE(_LT_HIPPOCRATIC_1_1) || INFILE(_LT_HIPPOCRATIC_1_1_ref)) {
3879  INTERESTING("Hippocratic-1.1");
3880  lmem[_mMIT] = 1;
3881  }
3882  else if (INFILE(_LT_HIPPOCRATIC_1_0)) {
3883  INTERESTING("Hippocratic-1.0");
3884  lmem[_mMIT] = 1;
3885  }
3886  else if (INFILE(_LT_HAPPY_BUNNY)) {
3887  INTERESTING("The-Happy-Bunny");
3888  lmem[_mMIT] = 1;
3889  }
3890  else if (INFILE(_LT_GHOSTPDL_PERMISSIVE)) {
3891  INTERESTING("Ghostpdl-Permissive");
3892  lmem[_mMIT] = 1;
3893  }
3894  else if (INFILE(_LT_FILAMENT_GROUP_MIT)) {
3895  INTERESTING("Filament-Group-MIT");
3896  lmem[_mMIT] = 1;
3897  }
3898  else if (INFILE(_LT_DROPBEAR_2016)) {
3899  INTERESTING("Dropbear-2016");
3900  lmem[_mMIT] = 1;
3901  }
3902  else if (INFILE(_LT_CRCALC)) {
3903  INTERESTING("CRCalc");
3904  lmem[_mMIT] = 1;
3905  }
3906  else if (INFILE(_LT_COMPASS)) {
3907  INTERESTING("Compass");
3908  lmem[_mMIT] = 1;
3909  }
3910  else if (INFILE(_LT_CLICK_LICENSE)) {
3911  INTERESTING("MIT-Click");
3912  lmem[_mMIT] = 1;
3913  }
3914  else if (INFILE(_LT_BSD_X11)) {
3915  INTERESTING("BSD-3-Clause-X11-disclaimer");
3916  lmem[_mMIT] = 1;
3917  }
3918  else if (INFILE(_LT_BPMN_IO)) {
3919  INTERESTING("bpmn.io");
3920  lmem[_mMIT] = 1;
3921  }
3922  else if (mCR_MIT() || (INFILE(_TITLE_MIT) && NOT_INFILE(_PHR_NOT_MIT_LICENSE))) {
3923  INTERESTING(lDebug ? "MIT(1)" : "MIT");
3924  lmem[_mMIT] = 1;
3925  }
3926  else if (INFILE(_TITLE_XNET)) {
3927  INTERESTING("Xnet");
3928  lmem[_mMIT] = 1;
3929  }
3930  else if (INFILE(_CR_X11) || INFILE(_TITLE_X11)) {
3931  INTERESTING(lDebug ? "X11(1)" : "X11");
3932  lmem[_mMIT] = 1;
3933  }
3934  else if (INFILE(_CR_XFREE86)) {
3935  INTERESTING(lDebug ? "XFree86(2)" : "XFree86");
3936  lmem[_mMIT] = 1;
3937  }
3938  /* MIT-advertising License */
3939  else if (INFILE(_LT_MIT_ADVERTISING)) {
3940  INTERESTING("MIT-advertising");
3941  lmem[_mMIT] = 1;
3942  }
3943  /* MIT-enna License */
3944  else if (INFILE(_LT_MIT_ENNA)) {
3945  INTERESTING("MIT-enna");
3946  lmem[_mMIT] = 1;
3947  }
3948  /* MIT-feh License */
3949  else if (INFILE(_LT_MIT_FEH)) {
3950  INTERESTING("MIT-feh");
3951  lmem[_mMIT] = 1;
3952  }
3953  /* MITNFA License */
3954  else if (HASTEXT(_LT_MITNFA, 0)) {
3955  INTERESTING("MITNFA");
3956  lmem[_mMIT] = 1;
3957  }
3958  /* Imlib2 License */
3959  else if (INFILE(_LT_Imlib2)) {
3960  INTERESTING("Imlib2");
3961  lmem[_mMIT] = 1;
3962  }
3963  else if (INFILE(_LT_MIT_13)) {
3964  INTERESTING(lDebug ? "MIT(14)" : "MIT");
3965  lmem[_mMIT] = 1;
3966  }
3967  /* NCSA */
3968  else if (INFILE(_TITLE_NCSA) && NOT_INFILE(_TITLE_NCSA_EXHIBIT)) {
3969  INTERESTING(lDebug ? "NCSA(1)" : "NCSA");
3970  lmem[_mMIT] = 1;
3971  lmem[_fNCSA] = 1;
3972  }
3973  else if (INFILE(_LT_MIT_0)) {
3974  INTERESTING("MIT-0");
3975  lmem[_mMIT] = 1;
3976  }
3977  else if (INFILE(_LT_COMMUNITY_SPEC_1_0)) {
3978  INTERESTING("Community-Spec-1.0");
3979  lmem[_mMIT] = 1;
3980  }
3981  else if (INFILE(_LT_DRL_1_0)) {
3982  INTERESTING("DRL-1.0");
3983  lmem[_mMIT] = 1;
3984  }
3985  else if (INFILE(_LT_X11_DISTRIBUTE_MODIFICATIONS_VARIANT)) {
3986  INTERESTING("X11-distribute-modifications-variant");
3987  lmem[_mMIT] = 1;
3988  }
3989  else if (NOT_INFILE(_LT_INTEL_7)) {
3990  INTERESTING(lDebug ? "MIT-style(1)" : "MIT-style");
3991  lmem[_mMIT] = 1;
3992  }
3993  }
3994  else if (INFILE(_LT_BITSTREAM_1)) {
3995  INTERESTING(lDebug ? "Bitstream(1)" : "Bitstream");
3996  lmem[_mMIT] = 1;
3997  }
3998  else if (mCR_X11()) {
3999  INTERESTING(lDebug ? "X11(2)" : "X11");
4000  }
4001  else if (!lmem[_mMPL] && INFILE(_LT_MPL_1)) {
4002  cp = MPLVERS(); /* NPL, too */
4003  INTERESTING(lDebug ? "MPL/NPL#5" : cp);
4004  lmem[_mMPL] = 1;
4005  }
4006  else if (!lmem[_mMIT] && (mCR_MIT() || (INFILE(_TITLE_MIT) && NOT_INFILE(_PHR_NOT_MIT_LICENSE))) && NOT_INFILE(_TITLE_MIT_EXHIBIT)) {
4007  INTERESTING(lDebug ? "MIT(2)" : "MIT");
4008  lmem[_mMIT] = 1;
4009  }
4010  /*
4011  * BOOST (relatively new, circa August 2003)
4012  * hmm, some references have a Copyright Notre Dame, some don't
4013  */
4014  else if (INFILE(_LT_BOOST_1)) {
4015  if (INFILE(_TITLE_BOOST10)) {
4016  INTERESTING("BSL-1.0");
4017  }
4018  else if (INFILE(_CR_NOTREDAME)) {
4019  INTERESTING(lDebug ? "Boost(ND)" : "BSL-1.0");
4020  }
4021  else if (INFILE(_TITLE_BOOST)) {
4022  INTERESTING("BSL-1.0");
4023  }
4024  else {
4025  INTERESTING("BSL-style");
4026  }
4027  }
4028  else if (mCR_MIT()) {
4029  INTERESTING(lDebug ? "MIT(3)" : "MIT");
4030  lmem[_mMIT] = 1;
4031  }
4032  else if (INFILE(_TITLE_ICU) || HASTEXT(_URL_ICU, REG_EXTENDED)) {
4033  INTERESTING(lDebug ? "MIT-style(ICU)" : "ICU");
4034  lmem[_mMIT] = 1;
4035  }
4036  else if (INFILE(_LT_ICU_2) && (INFILE(_CR_IBM_1) || INFILE(_CR_IBM_1))) {
4037  INTERESTING(lDebug ? "MIT-style(ICU)" : "ICU");
4038  lmem[_mMIT] = 1;
4039  }
4040  else if (INFILE(_TITLE_JasPer_20)) {
4041  INTERESTING(lDebug ? "JasPer(title)" : "JasPer-2.0");
4042  lmem[_mMIT] = 1;
4043  }
4044  else if (INFILE(_LT_UNICODE_4)) {
4045  INTERESTING(lDebug ? "MIT-style(Unicode)" : "Unicode");
4046  lmem[_fUNICODE] = 1;
4047  lmem[_mMIT] = 1;
4048  }
4049  /*
4050  * Adobe-Glyph
4051  */
4052  else if (HASTEXT(_LT_ADOBE_GLYPH_1, REG_EXTENDED) && INFILE(_LT_ADOBE_GLYPH_2)) {
4053  INTERESTING("Adobe-Glyph");
4054  }
4055  /*
4056  * Ubuntu Font
4057  */
4058  else if (INFILE(_LT_UBUNTU_FONT)) {
4059  INTERESTING("ubuntu-font-1.0");
4060  }
4061  /*
4062  * OFL license text has MIT license warranty claims which is identifed as MIT-style
4063  */
4064  else if (!lmem[_fOFL]) {
4065  INTERESTING(lDebug ? "MIT-style(2)" : "MIT-style");
4066  lmem[_mMIT] = 1;
4067  }
4068  }
4069  /*
4070  * Secondly X11 and MIT style phrases are checked.
4071  */
4072  else if (INFILE(_LT_MIT_0) && (INFILE(_LT_MIT_2) || INFILE(_LT_MIT_3) || INFILE(_LT_MIT_4) ||
4073  INFILE(_LT_MIT_5) || INFILE(_LT_MIT_6) || INFILE(_LT_MIT_7))) {
4074  if(INFILE(_LT_MIT_NO_EVIL)) {
4075  INTERESTING(lDebug ? "MIT-style(no evil)" : "JSON");
4076  lmem[_mMIT] = 1;
4077  }
4078  else if (INFILE(_LT_X11_5)) {
4079  if (INFILE(_CR_XFREE86)) {
4080  INTERESTING(lDebug ? "XFree86(3)" : "XFree86");
4081  }
4082  else {
4083  INTERESTING(lDebug ? "X11(3)" : "X11");
4084  }
4085  lmem[_mMIT] = 1;
4086  }
4087  else if (INFILE(_LT_Xnet_STYLE)) {
4088  INTERESTING("Xnet");
4089  lmem[_mMIT] = 1;
4090  }
4091  else if (INFILE(_LT_TAPJOY)) {
4092  INTERESTING("Tapjoy");
4093  lmem[_mMIT] = 1;
4094  }
4095  else {
4096  /*
4097  * SPDX defines curl license. It has very typical MIT-style text. The only way to
4098  * identify it is to use copyright or copyright reference.
4099  */
4100  if (INFILE(_CR_CURL)) {
4101  INTERESTING("curl");
4102  }
4103  else {
4104  INTERESTING(lDebug ? "MIT-style(7)" : "MIT-style");
4105  }
4106  lmem[_mMIT] = 1;
4107  }
4108  }
4109  else if (INFILE(_LT_MIT_5)) {
4110  if (mCR_MIT()) {
4111  INTERESTING(lDebug ? "MIT(4)" : "MIT");
4112  }
4113  else {
4114  INTERESTING(lDebug ? "MIT-style(3)" : "MIT-style");
4115  }
4116  lmem[_mMIT] = 1;
4117  }
4119  /*
4120  * Open Group, NEC, MIT use the same text in licenses
4121  */
4122  if (INFILE(_LT_MIT_6)) {
4123  if (!lmem[_mMIT] && INFILE(_CR_OpenGroup)) {
4124  INTERESTING(lDebug ? "OpenGroup(1)" : "OpenGroup");
4125  lmem[_mMIT] = 1;
4126  }
4127  else if (!lmem[_mCMU] && mCR_CMU()) {
4128  INTERESTING(lDebug ? "CMU(2)" : "CMU");
4129  lmem[_mCMU] = 1;
4130  }
4131  else if (!lmem[_mMIT] && mCR_MIT()) {
4132  INTERESTING(lDebug ? "MIT(6)" : "MIT");
4133  lmem[_mMIT] = 1;
4134  }
4135  else if (!lmem[_mMIT] && INFILE(_LT_HPND_1) && INFILE(_LT_HPND_2)) {
4136  INTERESTING("HPND-sell-variant");
4137  lmem[_mMIT] = 1;
4138  }
4139  /*
4140  * _LT_MIT_6 is very similar to _LT_BSD_2 where MIT-CMU licenses
4141  * are also detected. Following else if is the copy from there.
4142  */
4143  else if (!lmem[_mMIT] && INFILE(_LT_CMU_7)) {
4144  if (INFILE(_CR_CMU_1) || INFILE(_CR_CMU_2) || INFILE(_CR_BSDCAL)) {
4145  INTERESTING("MIT-CMU");
4146  }
4147  else {
4148  INTERESTING("MIT-CMU-style");
4149  }
4150  lmem[_mCMU] = 1;
4151  }
4152  else if (!lmem[_mMIT]) {
4153  INTERESTING(lDebug ? "MIT-style(4)" : "MIT-style");
4154  lmem[_mMIT] = 1;
4155  }
4156  }
4157  else if (INFILE(_SPDX_MIT_0)) {
4158  INTERESTING("MIT-0");
4159  }
4160  else if (INFILE(_SPDX_MIT_advertising)) {
4161  INTERESTING("MIT-advertising");
4162  }
4163  else if (INFILE(_SPDX_MIT_enna)) {
4164  INTERESTING("MIT-enna");
4165  }
4166  else if (INFILE(_SPDX_MIT_feh)) {
4167  INTERESTING("MIT-feh");
4168  }
4169  else if (!lmem[_mMIT] && INFILE(_LT_MIT_7)) {
4170  if (INFILE(_CR_OpenGroup)) {
4171  INTERESTING(lDebug ? "OpenGroup(2)" : "OpenGroup");
4172  }
4173  else if (!lmem[_mMIT] && mCR_MIT()) {
4174  INTERESTING(lDebug ? "MIT(7)" : "MIT");
4175  lmem[_mMIT] = 1;
4176  }
4177  else {
4178  INTERESTING(lDebug ? "MIT-style(5)" : "MIT-style");
4179  lmem[_mMIT] = 1;
4180  }
4181  }
4182  else if ((!lmem[_mMIT] || mCR_MIT()) && INFILE(_LT_MITref1)) {
4183  INTERESTING(lDebug ? "MIT(ref1)" : "MIT");
4184  lmem[_mMIT] = 1;
4185  }
4186  else if (!lmem[_mMIT] && INFILE(_LT_MITref2)) {
4187  INTERESTING(lDebug ? "MIT(ref2)" : "MIT");
4188  lmem[_mMIT] = 1;
4189  }
4190  else if (!lmem[_mMIT] && INFILE(_LT_MITref6)) {
4191  INTERESTING(lDebug ? "MIT(ref6)" : "MIT");
4192  lmem[_mMIT] = 1;
4193  }
4194  else if (!lmem[_mMIT] && INFILE(_LT_MITref3)) {
4195  INTERESTING(lDebug ? "MIT(ref3)" : "MIT-style");
4196  lmem[_mMIT] = 1;
4197  }
4198  else if (!lmem[_mMIT] && INFILE(_LT_MITref4)) {
4199  INTERESTING(lDebug ? "MIT(ref4)" : "MIT");
4200  lmem[_mMIT] = 1;
4201  }
4202  else if (!lmem[_mMIT] && (INFILE(_LT_MITref5) || INFILE(_LT_MITref9))) {
4203  INTERESTING(lDebug ? "MIT(ref5)" : "MIT");
4204  lmem[_mMIT] = 1;
4205  }
4206  else if (INFILE(_SPDX_MIT_CMU)) {
4207  INTERESTING("MIT-CMU");
4208  }
4209  /* <MIT> matches inside MIT-Hippocratic-x.y, the hyphen being a boundary */
4210  else if (INFILE(_TITLE_HIPPOCRATIC_NAMED_21)) {
4211  INTERESTING("Hippocratic-2.1");
4212  }
4213  else if (INFILE(_TITLE_HIPPOCRATIC_NAMED_20)) {
4214  INTERESTING("Hippocratic-2.0");
4215  }
4216  else if (INFILE(_TITLE_HIPPOCRATIC_NAMED_12)) {
4217  INTERESTING("Hippocratic-v1.2");
4218  }
4219  else if (!lmem[_fREAL] && (INFILE(_SPDX_MIT))) {
4220  INTERESTING(lDebug ? "MIT(SPDX)" : "MIT");
4221  }
4222  else if (!lmem[_mMIT] && !lmem[_fREAL] && INFILE(_LT_MITref7)) {
4223  INTERESTING(lDebug ? "MIT(ref7)" : "MIT");
4224  lmem[_mMIT] = 1;
4225  }
4226  else if (!lmem[_mMIT] && INFILE(_LT_MITref8)) {
4227  INTERESTING(lDebug ? "MIT(ref8/9)" : "MIT");
4228  lmem[_mMIT] = 1;
4229  }
4230  else if (INFILE(_LT_OpenGroup_1)) {
4231  if (INFILE(_CR_OpenGroup)) {
4232  INTERESTING(lDebug ? "OpenGroup(3)" : "OpenGroup");
4233  }
4234  else {
4235  INTERESTING(lDebug ? "OG-style(3)" : "OpenGroup-style");
4236  }
4237  }
4238  else if (INFILE(_LT_OpenGroup_3)) {
4239  if (INFILE(_CR_OpenGroup)) {
4240  INTERESTING(lDebug ? "OpenGroup(5)" : "OpenGroup");
4241  }
4242  else {
4243  INTERESTING(lDebug ? "OG-style(5)" : "OpenGroup-style");
4244  }
4245  }
4246  else if (INFILE(_LT_OpenGroup_PROP)) {
4247  if (!lmem[_mXOPEN] && INFILE(_CR_XOPEN)) {
4248  INTERESTING("XOPEN-EULA");
4249  lmem[_mXOPEN] = 1;
4250  }
4251  else if (INFILE(_CR_OpenGroup)) {
4252  INTERESTING("OpenGroup-Proprietary");
4253  }
4254  else {
4255  INTERESTING("Proprietary");
4256  }
4257  }
4258  else if (INFILE(_LT_X11_1)) {
4259  if (mCR_X11()) {
4260  INTERESTING(lDebug ? "X11(4)" : "X11");
4261  }
4262  else {
4263  INTERESTING(lDebug ? "X11-style(2)" : "X11-style");
4264  }
4265  }
4266  else if (INFILE(_LT_X11_2)) {
4267  if (mCR_X11()) {
4268  INTERESTING(lDebug ? "X11(5)" : "X11");
4269  }
4270  else {
4271  INTERESTING(lDebug ? "X11-style(3)" : "X11-style");
4272  }
4273  }
4274  else if (INFILE(_LT_X11_3)) {
4275  if (mCR_X11()) {
4276  INTERESTING(lDebug ? "X11(6)" : "X11");
4277  }
4278  /*
4279  * Unix System Laboratories
4280  */
4281  else if (INFILE(_CR_USL_EUR)) {
4282  INTERESTING(lDebug ? "USLE(2)" : "USL-Europe");
4283  }
4284  else {
4285  INTERESTING(lDebug ? "X11-style(4)" : "X11-style");
4286  }
4287  }
4288  else if (INFILE(_LT_X11_4)) {
4289  if (mCR_X11()) {
4290  INTERESTING(lDebug ? "X11(7)" : "X11");
4291  }
4292  else {
4293  INTERESTING(lDebug ? "X11-style(5)" : "X11-style");
4294  }
4295  }
4296  else if (INFILE(_PHR_X11_1) || INFILE(_PHR_X11_2)) {
4297  INTERESTING(lDebug ? "PHR(X11)" : "X11");
4298  }
4299  else if (INFILE(_LT_X11_STYLE)) {
4300  INTERESTING(lDebug ? "X11-style(6)" : "X11-style");
4301  }
4302  /*
4303  * ISC License
4304  */
4305  if (INFILE(_PHR_ISC_1) || INFILE(_PHR_ISC_2) || HASTEXT(_URL_ISC, REG_EXTENDED)
4306  || INFILE(_TITLE_ISC)) {
4307  INTERESTING(lDebug ? "PHR(ISC)" : "ISC");
4308  lmem[_mISC] = 1;
4309  }
4310  else if (INFILE(_LT_MIT_4) && INFILE(_PHR_NO_WARRANTY_12)) {
4311  INTERESTING(lDebug ? "ISC(MIT-style(4))" : "ISC");
4312  lmem[_mISC] = 1;
4313  }
4314  else if (INFILE(_LT_MIT_8) && INFILE(_CR_ISC)) {
4315  INTERESTING(lDebug ? "ISC(MIT-style(8))" : "ISC");
4316  lmem[_mISC] = 1;
4317  }
4319  /*
4320  * NTP License, note that NTP license text is detected with _LT_BSD_2
4321  */
4322  if (INFILE(_TITLE_NTP)) {
4323  INTERESTING("NTP");
4324  lmem[_mNTP] = 1;
4325  }
4327  /* MirOS License (MirOS) */
4328  if (INFILE(_TITLE_MIROS)) {
4329  INTERESTING("MirOS");
4330  lmem[_mMIT] = 1;
4331  }
4333  /* Libpng license */
4334  if (INFILE(_TITLE_LIBPNG)) {
4335  INTERESTING("Libpng");
4336  }
4337  else if (INFILE(_LT_W3C_1)) {
4338  if (INFILE(_CR_W3C)) {
4339  INTERESTING(lDebug ? "W3C(1)" : "W3C");
4340  }
4341  else {
4342  INTERESTING(lDebug ? "W3C-style(1)" : "W3C-style");
4343  }
4344  lmem[_fW3C] = 1;
4345  }
4346  else if (!lmem[_mNTP] && !lmem[_mPYTHON] && !lmem[_fBSD] && INFILE(_LT_W3C_2)) {
4347  if (INFILE(_LT_W3C_19980720)) {
4348  INTERESTING("W3C-19980720");
4349  }
4350  else if (INFILE(_CR_W3C)) {
4351  INTERESTING(lDebug ? "W3C(2)" : "W3C");
4352  }
4353  else {
4354  INTERESTING(lDebug ? "W3C-style(2)" : "W3C-style");
4355  }
4356  lmem[_fW3C] = 1;
4357  }
4358  else if (INFILE(_LT_W3C_3)) {
4359  if (INFILE(_LT_W3C_8)) {
4360  if (INFILE(_LT_W3C_20021231)) {
4361  INTERESTING("W3C");
4362  }
4363  else if (INFILE(_LT_W3C_20150513)) {
4364  INTERESTING("W3C-20150513");
4365  }
4366  }
4367  else if (INFILE(_CR_W3C)) {
4368  INTERESTING(lDebug ? "W3C(3)" : "W3C");
4369  }
4370  else if (INFILE(_LT_W3Cref4)) {
4371  INTERESTING(lDebug ? "W3C(ref4)" : "W3C");
4372  }
4373  else {
4374  INTERESTING(lDebug ? "W3C-style(3)" : "W3C-style");
4375  }
4376  lmem[_fW3C] = 1;
4377  }
4378  else if (INFILE(_LT_W3C_4) && NOT_INFILE(_LT_PNG_ZLIB_2)) {
4379  if (INFILE(_CR_W3C)) {
4380  INTERESTING(lDebug ? "W3C(4)" : "W3C");
4381  }
4382  else {
4383  INTERESTING(lDebug ? "W3C-style(4)" : "W3C-style");
4384  }
4385  lmem[_fW3C] = 1;
4386  }
4387  else if (INFILE(_LT_W3C_5)) {
4388  if (INFILE(_CR_W3C)) {
4389  INTERESTING(lDebug ? "W3C(5)" : "W3C");
4390  }
4391  else {
4392  INTERESTING(lDebug ? "W3C-style(5)" : "W3C-style");
4393  }
4394  lmem[_fW3C] = 1;
4395  }
4396  else if (INFILE(_LT_W3C_6)) {
4397  if (INFILE(_CR_W3C)) {
4398  INTERESTING(lDebug ? "W3C(6)" : "W3C");
4399  }
4400  else {
4401  INTERESTING(lDebug ? "W3C-style(6)" : "W3C-style");
4402  }
4403  lmem[_fW3C] = 1;
4404  }
4405  else if (INFILE(_LT_W3C_7)) {
4406  if (INFILE(_CR_W3C)) {
4407  INTERESTING(lDebug ? "W3C(7)" : "W3C");
4408  }
4409  else if (INFILE(_LT_OGC)) {
4410  INTERESTING("OGC");
4411  }
4412  else {
4413  INTERESTING(lDebug ? "W3C-style(7)" : "W3C-style");
4414  }
4415  lmem[_fW3C] = 1;
4416  }
4417  else if (INFILE(_LT_W3Cref1)) {
4418  INTERESTING(lDebug ? "W3C(ref1)" : "W3C");
4419  lmem[_fW3C] = 1;
4420  }
4421  else if (INFILE(_LT_W3Cref2)) {
4422  INTERESTING(lDebug ? "W3C(ref2)" : "W3C");
4423  lmem[_fW3C] = 1;
4424  }
4425  else if (INFILE(_LT_W3Cref3)) {
4426  INTERESTING(lDebug ? "W3C(ref3)" : "W3C");
4427  lmem[_fW3C] = 1;
4428  }
4429  else if (INFILE(_LT_W3Cref4)) {
4430  INTERESTING(lDebug ? "W3C(ref4)" : "W3C");
4431  lmem[_fW3C] = 1;
4432  }
4433  else if (URL_INFILE(_URL_W3C_20021231)) {
4434  INTERESTING(lDebug ? "W3C-20021231(url)" : "W3C");
4435  lmem[_fW3C] = 1;
4436  }
4437  else if (URL_INFILE(_URL_W3C_IP)) {
4438  INTERESTING(lDebug ? "W3C-IP(url)" : "W3C-IP");
4439  lmem[_fW3C] = 1;
4440  }
4441  else if (URL_INFILE(_URL_W3C)) {
4442  INTERESTING(lDebug ? "W3C(url)" : "W3C");
4443  lmem[_fW3C] = 1;
4444  }
4445  else if (INFILE(_TITLE_W3C)) {
4446  INTERESTING(lDebug ? "W3C(title)" : "W3C");
4447  lmem[_fW3C] = 1;
4448  }
4449  else if (!lmem[_mMIT] && INFILE(_LT_MIT_3)) {
4450  if (INFILE(_LT_NTP_0)) {
4451  INTERESTING("NTP-0");
4452  }
4453  else if (mCR_MIT()) {
4454  INTERESTING(lDebug ? "MIT(8)" : "MIT");
4455  }
4456  else {
4457  INTERESTING(lDebug ? "MIT-style(6)" : "MIT-style");
4458  }
4459  lmem[_mMIT] = 1;
4460  }
4461  else if (!lmem[_mMIT] && INFILE(_LT_MIT_4)) {
4462  if (mCR_MIT()) {
4463  INTERESTING(lDebug ? "MIT(9)" : "MIT");
4464  }
4465  else if (!lmem[_mISC] && mCR_FSF()) {
4466  INTERESTING(lDebug ? "FSF(7)" : "FSF");
4467  }
4468  else if (!lmem[_mISC]) {
4469  INTERESTING(lDebug ? "MIT-style(13)" : "MIT-style");
4470  }
4471  lmem[_mMIT] = 1;
4472  }
4473  else if (!lmem[_mMIT] && INFILE(_LT_MIT_8)) {
4474  if (INFILE(_CR_VIXIE)) {
4475  INTERESTING("Vixie");
4476  }
4477  else if (INFILE(_LT_0BSD)) {
4478  INTERESTING("0BSD");
4479  }
4480  else if (mCR_MIT()) {
4481  INTERESTING(lDebug ? "MIT(10)" : "MIT");
4482  }
4483  else if (HASTEXT(_TEXT_TU_BERLIN, 0) && HASTEXT(_LT_FREE_87,0)) {
4484  INTERESTING("TU-Berlin-2.0");
4485  }
4486  else {
4487  INTERESTING(lDebug ? "MIT-style(8)" : "MIT-style");
4488  }
4489  lmem[_mMIT] = 1;
4490  }
4491  else if (INFILE(_LT_MIT_9)) {
4492  if (INFILE(_CR_SLEEPYCAT)) {
4493  MEDINTEREST(lDebug ? "Sleepycat(2)" : "Sleepycat");
4494  }
4495  else if (INFILE(_CR_BSDCAL)) {
4496  INTERESTING(lDebug ? "BSD(mit)" : "BSD");
4497  lmem[_fBSD] = 1;
4498  }
4499  else if (INFILE(_CR_SUN)) {
4500  INTERESTING(lDebug ? "SUN(mit)" : "SUN");
4501  lmem[_fBSD] = 1;
4502  }
4503  else if (!lmem[_mMIT] && mCR_MIT()) {
4504  INTERESTING(lDebug ? "MIT(11)" : "MIT");
4505  lmem[_mMIT] = 1;
4506  }
4507  else if (!lmem[_mMIT]) {
4508  /*
4509  * Tcl/Tk license has MIT phrase
4510  */
4511  if (INFILE(_LT_TCL)) {
4512  INTERESTING("TCL");
4513  lmem[_fTCL] = 1;
4514  }
4515  else {
4516  INTERESTING(lDebug ? "MIT-style(9)" : "MIT-style");
4517  lmem[_mMIT] = 1;
4518  }
4519  }
4520  }
4521  else if (INFILE(_LT_MIT_10)) {
4522  if (!lmem[_mMIT] && mCR_MIT()) {
4523  INTERESTING(lDebug ? "MIT(12)" : "MIT");
4524  lmem[_mMIT] = 1;
4525  }
4526  else {
4527  INTERESTING(lDebug ? "MIT-style(10)" : "MIT-style");
4528  lmem[_mMIT] = 1;
4529  }
4530  }
4531  else if ((INFILE(_LT_MIROS_PREAMBLE) || INFILE(_TITLE_MIROS)) && INFILE(_LT_MIT_11)) {
4532  INTERESTING(lDebug ? "MIT-style(MirOS)" : "MirOS");
4533  lmem[_mMIT] = 1;
4534  }
4535  else if (INFILE(_LT_MIT_11)) {
4536  INTERESTING(lDebug ? "MIT-style(11)" : "MIT-style");
4537  lmem[_mMIT] = 1;
4538  }
4539  else if (!lmem[_mMIT] && INFILE(_LT_MITDOC)) {
4540  if (mCR_MIT()) {
4541  INTERESTING(lDebug ? "MIT(13)" : "MIT");
4542  }
4543  else {
4544  INTERESTING(lDebug ? "MIT-style(12)" : "MIT-style");
4545  }
4546  lmem[_mMIT] = 1;
4547  }
4548  else if (!lmem[_mMIT] && INFILE(_LT_MIT_0) && NOT_INFILE(_LT_ECL)) {
4549  INTERESTING(lDebug ? "MIT(0)" : "MIT-style");
4550  lmem[_mMIT] = 1;
4551  }
4552  else if (INFILE(_LT_MIT_14)) {
4553  INTERESTING(lDebug ? "MIT-style(14)" : "MIT-style");
4554  lmem[_mMIT] = 1;
4555  }
4556  else if (INFILE(_LT_MIT_15)) {
4557  INTERESTING(lDebug ? "MIT-style(15)" : "ISC-style");
4558  lmem[_mMIT] = 1;
4559  }
4560  else if (INFILE(_LT_MPL_OR_MITX)) {
4561  if (!lmem[_mMPL]) {
4562  cp = MPLVERS();
4563  INTERESTING(lDebug ? "MPL(with-MIT)" : cp);
4564  lmem[_mMPL] = 1;
4565  }
4566  if (!lmem[_mMIT]) {
4567  INTERESTING(lDebug ? "MIT(with-MPL)" : "MIT");
4568  lmem[_mMIT] = 1;
4569  }
4570  }
4571  else if (!lmem[_mMIT] && (URL_INFILE(_URL_MIT) || URL_INFILE(_URL_MIT_ROCK))) {
4572  INTERESTING(lDebug ? "MIT(url)" : "MIT");
4573  lmem[_mMIT] = 1;
4574  }
4575  else if (HASTEXT(_TEXT_TU_BERLIN, 0) && HASTEXT(_LT_FREE_87,0)) {
4576  INTERESTING("TU-Berlin-1.0");
4577  }
4578  else if (INFILE(_LT_NIST_1) && INFILE(_LT_NIST_2)) {
4579  INTERESTING(lDebug ? "NIST" : "MIT-style");
4580  }
4581  else if (INFILE(_LT_FSFAP)) {
4582  INTERESTING("FSFAP");
4583  }
4585  /*
4586  * Freeware with attribution (no registered copyright, attribution-only)
4587  */
4588  if (INFILE(_LT_Freeware_Attribution) || INFILE(_LT_Freeware_Attribution_2)) {
4589  INTERESTING("Freeware-Attribution");
4590  }
4592  /*
4593  * Generic CopyLeft licenses
4594  */
4595  if (INFILE(_LT_COPYLEFT_1)) {
4596  INTERESTING("CopyLeft[1]");
4597  }
4598  else if (INFILE(_LT_COPYLEFT_2)) {
4599  INTERESTING("CopyLeft[2]");
4600  }
4602  /*
4603  * OpenContent license
4604  */
4605  if (INFILE(_LT_OPENCONTENT)) {
4606  if (INFILE(_TITLE_OPENCL10)) {
4607  INTERESTING("OCL-1.0");
4608  }
4609  else if (INFILE(_TITLE_OPENCL)) {
4610  INTERESTING("OCL");
4611  }
4612  else {
4613  INTERESTING("OCL-style");
4614  }
4615  }
4617  /*
4618  * jpeg/netpbm and png/zlib and others...
4619  */
4620  if (INFILE(_TITLE_ZLIB)) {
4621  INTERESTING("Zlib");
4622  }
4623  else if (INFILE (_LT_TRUECRYPT_30)) {
4624  INTERESTING("TrueCrypt-3.0");
4625  }
4626  else if (INFILE(_TITLE_LIBPNG)) {
4627  INTERESTING("Libpng");
4628  }
4629  /* IJG */
4630  else if (INFILE(_LT_JPEG_1)) {
4631  INTERESTING(lDebug ? "JPEG(1)" : "IJG");
4632  lmem[_fIJG] = 1;
4633  }
4634  else if (INFILE(_LT_JPEG_2) && HASTEXT(_TITLE_IJG_2, 0)) {
4635  INTERESTING(lDebug ? "JPEG(2)" : "IJG");
4636  lmem[_fIJG] = 1;
4637  }
4638  /* Zlib */
4639  else if (INFILE(_SPDX_zlib_acknowledgement)) {
4640  INTERESTING("zlib-acknowledgement");
4641  }
4642  else if (!lmem[_fREAL] && (INFILE(_SPDX_Zlib))) {
4643  INTERESTING("Zlib");
4644  }
4645  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)) {
4646  INTERESTING(lDebug ? "ZLIB(1)" : "Zlib");
4647  }
4648  else if (INFILE(_LT_PNG_ZLIBref4) && NOT_INFILE(_LT_PNG_ZLIBref4_EXHIBIT)) {
4649  INTERESTING(lDebug ? "ZLIB(6)" : "Zlib");
4650  }
4651  else if (!lmem[_fW3C] && INFILE(_LT_PNG_ZLIB_2)) {
4652  if (INFILE(_LT_libmng_2007_Clause_1)) {
4653  if (HASTEXT(_LT_libmng_2007_1, 0)) {
4654  INTERESTING("libmng-2007");
4655  }
4656  else if (INFILE(_LT_libpng_20_Clause_1)) {
4657  INTERESTING("libpng-2.0");
4658  }
4659  }
4660  else {
4661  INTERESTING(lDebug ? "PNG/ZLIB(2)" : "Libpng");
4662  }
4663  }
4664  else if (INFILE(_LT_PNG_ZLIBref1)) {
4665  INTERESTING(lDebug ? "ZLIB(3)" : "Zlib");
4666  }
4667  else if (INFILE(_LT_PNG_ZLIBref2)) {
4668  INTERESTING(lDebug ? "ZLIB(4)" : "Zlib");
4669  }
4670  else if (INFILE(_LT_PNG_ZLIBref3)) { /* might be zlib/libpng license, not sure */
4671  INTERESTING(lDebug ? "ZLIB(5)" : "Zlib-possibility");
4672  }
4673  else if (!LVAL(_TEXT_GNU_LIC_INFO) && (URL_INFILE(_URL_ZLIB_1) || URL_INFILE(_URL_ZLIB_2))) {
4674  INTERESTING(lDebug ? "ZLIB(url)" : "Zlib");
4675  }
4676 
4677  if (INFILE(_LT_INFO_ZIP) || URL_INFILE(_URL_INFO_ZIP)) {
4678  INTERESTING("Info-ZIP");
4679  }
4681  /*
4682  * IETF (primarily docs, RFCs, and protocol/standard proposals) . This
4683  * one is a little strange as text-formatters that print this license
4684  * will occasionally split the text across a page boundary. Here we
4685  * look for 2 separate footprints.
4686  */
4687  if (INFILE(_LT_IETF_1) || INFILE(_LT_IETF_2) || INFILE(_LT_IETF_3) ||
4688  INFILE(_LT_IETF_4)) {
4689  if (mCR_IETF()) {
4690  INTERESTING("IETF");
4691  }
4692  else if (INFILE(_LT_IETF_5)) {
4693  INTERESTING("IETF");
4694  }
4695  else if (HASTEXT(_LT_IETF_7, 0)) {
4696  INTERESTING("IETF");
4697  }
4698  else if (INFILE(_CR_OASIS)) {
4699  INTERESTING("OASIS");
4700  }
4701  else {
4702  INTERESTING("IETF-style");
4703  }
4704  }
4705  /*
4706  * IETF Trust's Legal Provisions
4707  */
4708  else if (INFILE(_LT_IETF_6)) {
4709  INTERESTING("IETF");
4710  }
4711  /*
4712  * Contributions to IETF Standard Process
4713  */
4714  else if (INFILE(_LT_IETF_7)) {
4715  INTERESTING("IETF-contribution");
4716  }
4718  /*
4719  * CDDL
4720  */
4721  if (INFILE(_PHR_CDDL_1) || HASTEXT(_PHR_CDDL_2, REG_EXTENDED)) {
4722  cp = CDDLVERS();
4723  INTERESTING(cp);
4724  lmem[_mCDDL] = 1;
4725  }
4727  /*
4728  * MPL (Mozilla)
4729  * ... Sun SISSL and one Mozilla licensing derivative share wording
4730  */
4731  if (!lmem[_fREAL] && NOT_INFILE(_LT_CPALref) && NOT_INFILE(_TITLE_GSOAP) &&
4732  (INFILE(_LT_MPL_OR) || INFILE(_TITLE_MPL_ref))) {
4733  cp = MPLVERS(); /* NPL, too */
4734  INTERESTING(lDebug ? "MPL/NPL#2" : cp);
4735  lmem[_mMPL] = 1;
4736  }
4737  if (INFILE(_LT_CPALref)) {
4738  if (INFILE(_TITLE_CPAL10)) {
4739  INTERESTING(lDebug ? "CPAL_v1.0(#2)" : "CPAL-1.0");
4740  lmem[_mMPL] = 1;
4741  lmem[_fATTRIB] = 1;
4742  }
4743  else if (INFILE(_TITLE_CPAL)) {
4744  INTERESTING(lDebug ? "CPAL(#2)" : "CPAL");
4745  lmem[_mMPL] = 1;
4746  lmem[_fATTRIB] = 1;
4747  }
4748  }
4749  else if (INFILE(_LT_CPAL_V1_ref)) {
4750  INTERESTING(lDebug ? "CPAL_v1.0(#3)" : "CPAL-1.0");
4751  lmem[_mMPL] = 1;
4752  lmem[_fATTRIB] = 1;
4753  }
4754  if (!lmem[_mMPL] && INFILE(_LT_MPL_2)) {
4755  if (INFILE(_TITLE_SISSL)) {
4756  cp = SISSLVERS();
4757  INTERESTING(lDebug ? "SISSL(MPL)" : cp);
4758  lmem[_mSUN] = 1;
4759  }
4760  else if (INFILE(_TITLE_SUN_PL10)) {
4761  INTERESTING("SPL-1.0");
4762  lmem[_mSUN] = 1;
4763  }
4764  else if (INFILE(_TITLE_SUN_PL)) {
4765  INTERESTING("SPL");
4766  lmem[_mSUN] = 1;
4767  }
4768  else if (INFILE(_TITLE_IDPL_V10)) {
4769  INTERESTING("IDPL-1.0");
4770  lmem[_mMPL] = 1;
4771  }
4772  else if (INFILE(_TITLE_IDPL)) {
4773  INTERESTING("IDPL");
4774  lmem[_mMPL] = 1;
4775  }
4776  else if (INFILE(_TITLE_INTERBASE)) {
4777  INTERESTING("Interbase-1.0");
4778  lmem[_mMPL] = 1;
4779  }
4780  else if (INFILE(_TITLE_NETIZEN_V10)) {
4781  INTERESTING("NOSL-1.0");
4782  lmem[_mMPL] = 1;
4783  }
4784  else if (INFILE(_TITLE_NETIZEN)) {
4785  INTERESTING(lDebug ? "NOSL(#1)" : "NOSL");
4786  lmem[_mMPL] = 1;
4787  }
4788  else if (INFILE(_TITLE_TPL10)) {
4789  INTERESTING(lDebug ? "TPL(v1.0#1)" : "MPL.TPL-1.0");
4790  lmem[_mMPL] = 1;
4791  }
4792  else if (INFILE(_TITLE_TPL)) {
4793  INTERESTING(lDebug ? "TPL(#1)" : "MPL.TPL");
4794  lmem[_mMPL] = 1;
4795  }
4796  else if (INFILE(_TITLE_GSOAP_V13)) {
4797  INTERESTING("gSOAP-1.3b");
4798  lmem[_mGSOAP] = 1;
4799  }
4800  else if (INFILE(_TITLE_GSOAP)) {
4801  INTERESTING("gSOAP");
4802  lmem[_mGSOAP] = 1;
4803  }
4804  else if (INFILE(_TITLE_FLASH2XML10)) {
4805  INTERESTING("Flash2xml-1.0");
4806  }
4807  else if (INFILE(_TITLE_NOKIA10A)) {
4808  INTERESTING("Nokia");
4809  lmem[_mMPL] = 1;
4810  }
4811  else if (INFILE(_LT_NOKIA)) {
4812  INTERESTING("Nokia");
4813  lmem[_mMPL] = 1;
4814  }
4815  else if (INFILE(_TITLE_OPENPL10)) {
4816  INTERESTING("OPL-1.0");
4817  }
4818  else if (INFILE(_TITLE_SNIA_V11)) {
4819  INTERESTING("SNIA-1.1");
4820  }
4821  else if (INFILE(_TITLE_SNIA_V10)) {
4822  INTERESTING("SNIA-1.0");
4823  }
4824  else if (INFILE(_TITLE_CPAL10)) {
4825  INTERESTING(lDebug ? "CPAL_v1.0(#1)" : "CPAL-1.0");
4826  lmem[_mMPL] = 1;
4827  lmem[_fATTRIB] = 1;
4828  }
4829  else if (INFILE(_TITLE_CPAL)) {
4830  INTERESTING(lDebug ? "CPAL(#1)" : "CPAL");
4831  lmem[_mMPL] = 1;
4832  lmem[_fATTRIB] = 1;
4833  }
4834  else if (HASTEXT(_TEXT_MOZNET, REG_EXTENDED)) {
4835  if (INFILE(_TITLE_SUGARCRM_PL)) {
4836  INTERESTING("SugarCRM-1.1.3");
4837  lmem[_mMPL] = 1;
4838  lmem[_fATTRIB] = 1;
4839  }
4840  else if (!lmem[_mMPL] && !lmem[_fREAL] && INFILE(_TITLE_MOZNET_PL)) {
4841  cp = MPLVERS(); /* NPL, too */
4842  INTERESTING(lDebug ? "MPL/NPL#1" : cp);
4843  lmem[_mMPL] = 1;
4844  }
4845  }
4846  else if (INFILE(_TITLE_RHeCos_V11)) {
4847  INTERESTING("RHeCos-1.1");
4848  }
4849  else if (INFILE(_TITLE_CYGNUS_ECOS_V10)) {
4850  INTERESTING("Cygnus-eCos-1.0");
4851  }
4852  else if (INFILE(_TITLE_H2_V10)) {
4853  INTERESTING("H2-1.0");
4854  }
4855  else {
4856  if (!lmem[_mCDDL]) {
4857  INTERESTING("MPL-style");
4858  lmem[_mMPL] = 1;
4859  }
4860  }
4861  }
4862  else if (!lmem[_mMPL] && (INFILE(_LT_NPLref) || INFILE(_LT_NPL_1))) {
4863  cp = MPLVERS(); /* NPL, too */
4864  INTERESTING(lDebug ? "MPL/NPL#3" : cp);
4865  lmem[_mMPL] = 1;
4866  }
4867  else if (!lmem[_mMPL] && INFILE(_LT_MPLref1)) {
4868  cp = MPLVERS(); /* NPL, too */
4869  INTERESTING(lDebug ? "MPL/NPL-ref#1" : cp);
4870  lmem[_mMPL] = 1;
4871  }
4872  else if (!lmem[_mMPL] && INFILE(_LT_IDPLref)) {
4873  if (INFILE(_TITLE_IDPL_V10)) {
4874  INTERESTING(lDebug ? "IDPL-v1(ref)" : "IDPL-1.0");
4875  }
4876  else {
4877  INTERESTING(lDebug ? "IDPL(ref)" : "IDPL");
4878  }
4879  lmem[_mMPL] = 1;
4880  }
4881  else if (!lmem[_mMPL] && !lmem[_mLIBRE] && !lmem[_fREAL] &&
4882  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_LT_MPLref2)) {
4883  cp = MPLVERS(); /* NPL, too */
4884  INTERESTING(lDebug ? "MPL/NPL-ref#2" : cp);
4885  lmem[_mMPL] = 1;
4886  }
4887  else if (!lmem[_mMPL] && !lmem[_mLIBRE] && !lmem[_fREAL] &&
4888  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_TITLE_MOZNET_PL)) {
4889  cp = MPLVERS(); /* NPL, too */
4890  INTERESTING(lDebug ? "MPL/NPL#4" : cp);
4891  lmem[_mMPL] = 1;
4892  }
4893  else if (!lmem[_mMPL] && INFILE(_TITLE_NETSCAPE_EULA)) {
4894  INTERESTING("NPL-EULA");
4895  lmem[_mMPL] = 0;
4896  }
4897  else if (INFILE(_LT_NPL_2)) {
4898  INTERESTING(lDebug ? "NPL(#1)" : "NPL");
4899  lmem[_mMPL] = 0;
4900  }
4901  else if (INFILE(_TITLE_OPENPL)) {
4902  INTERESTING(lDebug ? "OPL(title)" : "OPL-style");
4903  }
4905  /*
4906  * Microsoft licenses: open and proprietary/EULA
4907  */
4908  if (INFILE(_LT_MSCORP_SSLref)) {
4909  INTERESTING(lDebug ? "MS-SSL(ref)" : "MS-SSL");
4910  lmem[_fMSCORP] = 1;
4911  }
4912  if (INFILE(_LT_MSCORP_PL)) {
4913  int ms_l = INFILE(_LT_MSCORP_LIMITED);
4914  int ms_r = INFILE(_LT_MSCORP_RL);
4915  if (ms_r && ms_l) {
4916  INTERESTING("MS-LRL");
4917  }
4918  else if (ms_r) {
4919  INTERESTING(lDebug ? "MS-RL(#1)" : "MS-RL");
4920  }
4921  else if (ms_l) {
4922  INTERESTING("MS-LPL");
4923  }
4924  else {
4925  INTERESTING(lDebug ? "MS-PL(#1)" : "MS-PL");
4926  }
4927  }
4928  else if (INFILE(_LT_MSCORP_LIMITEDref1)) {
4929  INTERESTING("MS-LPL");
4930  lmem[_fMSCORP] = 1;
4931  }
4932 
4933  if (INFILE(_TEXT_MICROSOFT)) {
4934  if (INFILE(_LT_MSCORP_INDEMNIFY)) {
4935  INTERESTING("MS-indemnity");
4936  lmem[_fMSCORP] = 1;
4937  }
4938  else if (INFILE(_LT_MSCORP_IP_1)) {
4939  INTERESTING(lDebug ? "MS-IP(1)" : "MS-IP");
4940  lmem[_fMSCORP] = 1;
4941  }
4942  else if (INFILE(_LT_MSCORP_IP_2)) {
4943  INTERESTING(lDebug ? "MS-IP(2)" : "MS-IP");
4944  lmem[_fMSCORP] = 1;
4945  }
4946  else if (INFILE(_LT_MSCORP_PLref1)) {
4947  INTERESTING(lDebug ? "MS-PL(ref1)" : "MS-PL");
4948  lmem[_fMSCORP] = 1;
4949  }
4950  else if (INFILE(_LT_MSCORP_PLref2)) {
4951  INTERESTING(lDebug ? "MS-PL(ref2)" : "MS-PL");
4952  lmem[_fMSCORP] = 1;
4953  }
4954  else if (INFILE(_LT_MSCORP_PLref3)) {
4955  INTERESTING(lDebug ? "MS-PL(ref3)" : "MS-PL");
4956  lmem[_fMSCORP] = 1;
4957  }
4958  else if (INFILE(_LT_MSCORP_RLref)) {
4959  INTERESTING(lDebug ? "MS-RL(ref)" : "MS-RL");
4960  lmem[_fMSCORP] = 1;
4961  }
4962  else if (INFILE(_TITLE_MSCORP_RL)) {
4963  INTERESTING(lDebug ? "MS-RL(title)" : "MS-RL");
4964  lmem[_fMSCORP] = 1;
4965  }
4966  else if (INFILE(_TITLE_MSCORP_PL)) {
4967  INTERESTING(lDebug ? "MS-PL(title)" : "MS-PL");
4968  lmem[_fMSCORP] = 1;
4969  }
4970  else if (INFILE(_LT_MSCORP_REFLIC)) {
4971  INTERESTING("MRL");
4972  lmem[_fMSCORP] = 1;
4973  }
4974  else if (INFILE(_LT_MSCORP_EULA_1) ||
4975  INFILE(_TITLE_MSCORP_EULA)) {
4976  INTERESTING(lDebug ? "MS-EULA(1)" : "MS-EULA");
4977  lmem[_fMSCORP] = 1;
4978  }
4979  else if (INFILE(_LT_MSCORP_EULA_2)) {
4980  INTERESTING(lDebug ? "MS-EULA(2)" : "MS-EULA");
4981  lmem[_fMSCORP] = 1;
4982  }
4983  else if (INFILE(_LT_MSCORP_EULA_3)) {
4984  INTERESTING(lDebug ? "MS-EULA(3)" : "MS-EULA");
4985  lmem[_fMSCORP] = 1;
4986  }
4987  else if (INFILE(_LT_MSCORP_EULA_4)) {
4988  INTERESTING(lDebug ? "MS-EULA(4)" : "MS-EULA");
4989  lmem[_fMSCORP] = 1;
4990  }
4991  else if (INFILE(_LT_MSCORP_EULA_5)) {
4992  INTERESTING(lDebug ? "MS-EULA(5)" : "MS-EULA");
4993  lmem[_fMSCORP] = 1;
4994  }
4995  else if (INFILE(_LT_MSCORP_EULA_6)) {
4996  INTERESTING(lDebug ? "MS-EULA(6)" : "MS-EULA");
4997  lmem[_fMSCORP] = 1;
4998  }
4999  else if (INFILE(_LT_MSCORP_1)) {
5000  INTERESTING(lDebug ? "MS(1)" : "Microsoft");
5001  lmem[_fMSCORP] = 1;
5002  }
5003  else if (INFILE(_LT_MSCORP_2)) {
5004  INTERESTING(lDebug ? "MS(2)" : "Microsoft");
5005  lmem[_fMSCORP] = 1;
5006  }
5007  else if (INFILE(_LT_MSCORP_3)) {
5008  INTERESTING(lDebug ? "MS(3)" : "Microsoft");
5009  lmem[_fMSCORP] = 1;
5010  }
5011  else if (INFILE(_LT_MSCORP_4)) {
5012  INTERESTING(lDebug ? "MS(4)" : "Microsoft");
5013  lmem[_fMSCORP] = 1;
5014  }
5015  else if (INFILE(_LT_MSCORP_5)) {
5016  INTERESTING(lDebug ? "MS(5)" : "Microsoft");
5017  lmem[_fMSCORP] = 1;
5018  }
5019  else if (INFILE(_LT_MSCORPref1)) {
5020  INTERESTING("Microsoft");
5021  lmem[_fMSCORP] = 1;
5022  }
5023  }
5025  /*
5026  * Santa Cruz Operation (SCO)
5027  */
5028  if (INFILE(_LT_SCO_COMM) && INFILE(_CR_SCO)) {
5029  INTERESTING("SCO.commercial");
5030  }
5032  /*
5033  * Zonealarm
5034  */
5035  if (INFILE(_LT_ZONEALARM) && INFILE(_TITLE_ZONEALARM_EULA)) {
5036  INTERESTING("ZoneAlarm-EULA");
5037  }
5039  /*
5040  * Ximian
5041  */
5042  if (HASTEXT(_TEXT_XIMIAN, 0)) {
5043  if (INFILE(_CR_XIMIAN)) {
5044  if (INFILE(_LT_XIMIAN)) {
5045  if (INFILE(_TITLE_XIMIANLOGO10)) {
5046  INTERESTING("Ximian-1.0");
5047  }
5048  else if (INFILE(_TITLE_XIMIANLOGO)) {
5049  INTERESTING("Ximian");
5050  }
5051  }
5052  }
5053  }
5055  /*
5056  * Xerox
5057  */
5058  if (HASTEXT(_TEXT_XEROX, 0)) {
5059  if (INFILE(_LT_XEROX_1) || INFILE(_LT_XEROX_2)) {
5060  if (INFILE(_CR_XEROX_1) || INFILE(_CR_XEROX_2)) {
5061  INTERESTING("Xerox");
5062  }
5063  else {
5064  INTERESTING("Xerox-style");
5065  }
5066  }
5067  }
5069  /*
5070  * Artifex Software
5071  */
5072  if (INFILE(_LT_ARTIFEX) && INFILE(_CR_ARTIFEX)) {
5073  INTERESTING("Artifex");
5074  }
5076  /*
5077  * AGE logic
5078  */
5079  if (INFILE(_LT_AGE) && INFILE(_CR_AGE)) {
5080  INTERESTING("AGE-Logic");
5081  }
5083  /*
5084  * OpenSSL
5085  */
5086  if (INFILE(_LT_OPENSSLref1) || INFILE(_LT_OPENSSLref2) ||
5087  INFILE(_LT_OPENSSLref3) || INFILE(_LT_OPENSSLref4) ||
5088  INFILE(_LT_OPENSSLref6) || INFILE(_LT_OPENSSLref7) ||
5089  INFILE(_LT_OPENSSLref8) ) {
5090  INTERESTING(lDebug ? "OpenSSL(ref)" : "OpenSSL");
5091  }
5092  else if (INFILE(_SPDX_OpenSSL) || INFILE(_URL_OPENSSL)) {
5093  INTERESTING(lDebug ? "OpenSSL(phr)" : "OpenSSL");
5094  }
5096  /*
5097  * Dual OpenSSL SSLeay
5098  */
5099  if (INFILE(_LT_COMBINED_OPENSSL_SSLEAY)) {
5100  INTERESTING("OpenSSL");
5101  INTERESTING("SSLeay");
5102  }
5104  /*
5105  * Ruby. Ruby is a dual license which allows distribution also under GPL.
5106  * GPL was earlier recognized beside Ruby here but GPL was not identified
5107  * in all Ruby cases. Therefore GPL statements have bee removed.
5108  */
5109  if (INFILE(_LT_RUBY)) {
5110  INTERESTING("Ruby");
5111  lmem[_fRUBY] = 1;
5112  }
5113  else if (INFILE(_LT_RUBYref1)) {
5114  INTERESTING(lDebug ? "Ruby(ref1)" : "Ruby");
5115  }
5116  else if (INFILE(_LT_RUBYref2)) {
5117  INTERESTING(lDebug ? "Ruby(ref2)" : "Ruby");
5118  }
5119  else if (INFILE(_LT_RUBYref3)) {
5120  INTERESTING(lDebug ? "Ruby(ref3)" : "Ruby");
5121  }
5122  else if (INFILE(_LT_RUBYref4)) {
5123  INTERESTING(lDebug ? "Ruby(ref4)" : "Ruby");
5124  }
5125  else if (INFILE(_LT_RUBYref5)) {
5126  INTERESTING(lDebug ? "Ruby(ref5)" : "Ruby");
5127  }
5128  else if (INFILE(_LT_RUBYref6)) {
5129  INTERESTING(lDebug ? "Ruby(ref6)" : "Ruby");
5130  }
5132  /*
5133  * Python and EGenix.com look a bit alike
5134  * Q: should all these Python rhecks be a family-check like OpenLDAP?
5135  */
5136  if (INFILE(_LT_EGENIX_COM)) {
5137  INTERESTING("eGenix");
5138  }
5139  else if (INFILE(_LT_PYTHON_4)) {
5140  INTERESTING("Python");
5141  lmem[_mPYTHON] = 1;
5142  }
5143  else if (!lmem[_mPYTHON] && lmem[_mPYTH_TEXT]) {
5144  if (INFILE(_LT_PYTHON_1) || INFILE(_LT_PYTHON_2)) {
5145  if (INFILE(_LT_CNRI_PYTHON_GPL)) {
5146  INTERESTING("CNRI-Python-GPL-Compatible");
5147  lmem[_mGPL] = 1;
5148  }
5149  else if (INFILE(_CR_PYTHON) || INFILE(_TITLE_PYTHON)) {
5150  cp = PYTHVERS();
5151  INTERESTING(lDebug ? "Python(1)" : cp);
5152  }
5153  else if (INFILE(_LT_CNRI_PYTHON_1)) {
5154  INTERESTING("CNRI-Python");
5155  }
5156  else if (INFILE(_LT_CNRI_JYTHON)) {
5157  INTERESTING("CNRI-Jython");
5158  }
5159  else {
5160  INTERESTING("Python-style");
5161  }
5162  lmem[_mPYTHON] = 1;
5163  }
5164  else if (INFILE(_SPDX_CNRI_Python_GPL_Compatible)) {
5165  INTERESTING("CNRI-Python-GPL-Compatible");
5166  }
5167  else if (INFILE(_SPDX_CNRI_Python)) {
5168  INTERESTING("CNRI-Python");
5169  }
5170  else if (INFILE(_LT_CNRI_PYTHON_2)) {
5171  INTERESTING("CNRI-Python");
5172  }
5173  else if (INFILE(_LT_PYTHON_3)) {
5174  cp = PYTHVERS();
5175  INTERESTING(lDebug ? "Python(4)" : cp);
5176  lmem[_mPYTHON] = 1;
5177  }
5178  else if (INFILE(_LT_PYTHONSTYLEref)) {
5179  cp = PYTHVERS();
5180  INTERESTING(lDebug ? "Python(ref1)" : "Python-style");
5181  lmem[_mPYTHON] = 1;
5182  }
5183  else if (!lmem[_mLIBRE] && (INFILE(_LT_PYTHONref1) ||
5184  INFILE(_LT_PYTHONref2))) {
5185  cp = PYTHVERS();
5186  INTERESTING(lDebug ? "Python(ref2)" : cp);
5187  lmem[_mPYTHON] = 1;
5188  }
5189  else if (!lmem[_mLIBRE] && !lmem[_fREAL] &&
5190  !LVAL(_TEXT_GNU_LIC_INFO) && INFILE(_LT_PYTHONref3)) {
5191  cp = PYTHVERS();
5192  INTERESTING(lDebug ? "Python(ref3)" : cp);
5193  lmem[_mPYTHON] = 1;
5194  }
5195  else if (!lmem[_mPYTHON] && URL_INFILE(_URL_PYTHON)) {
5196  cp = PYTHVERS();
5197  INTERESTING(lDebug ? "Python(url)" : cp);
5198  lmem[_mPYTHON] = 1;
5199  }
5200  else if (!lmem[_mPYTHON] && INFILE(_LT_PYTHON22ref)) {
5201  INTERESTING(lDebug ? "Python(22ref)" : "Python-2.2");
5202  lmem[_mPYTHON] = 1;
5203  }
5204  }
5206  /*
5207  * Intel
5208  */
5209  if (INFILE(_LT_INTEL) && NOT_INFILE(_LT_REAL_RPSL)) {
5210  INTERESTING(lDebug ? "Intel(8)" : "Intel");
5211  }
5212  else if (INFILE(_LT_INTEL_6)) {
5213  INTERESTING(lDebug ? "Intel(9)" : "Intel-other");
5214  }
5215  else if (INFILE(_LT_INTEL_7)) {
5216  INTERESTING(lDebug ? "Intel(10)" : "Intel-other");
5217  }
5218  else if (INFILE(_LT_INTEL_WLAN)) {
5219  INTERESTING("Intel-WLAN");
5220  }
5221  else if (INFILE(_LT_INTEL_ACPI)) {
5222  INTERESTING("Intel-ACPI");
5223  }
5224  else if (INFILE(_SPDX_Intel_ACPI)) {
5225  INTERESTING("Intel-ACPI");
5226  }
5227  else if (INFILE(_LT_ISSL_1) && INFILE(_LT_ISSL_2)) {
5228  INTERESTING("ISSL");
5229  }
5230  else if (!lmem[_fREAL] && INFILE(_SPDX_Intel)) {
5231  INTERESTING("Intel");
5232  }
5233  else if (HASTEXT(_TEXT_INTELCORP, 0)) {
5234  if (INFILE(_LT_INTEL_1)) {
5235  if (INFILE(_LT_INTEL_FW)) {
5236  INTERESTING(lDebug ? "Intel(2)" : "Intel-only-FW");
5237  }
5238  else {
5239  INTERESTING(lDebug ? "Intel(3)" : "Intel");
5240  }
5241  }
5242  else if (INFILE(_LT_INTEL_2)) {
5243  INTERESTING(lDebug ? "Intel(4)" : "Intel");
5244  }
5245  else if (INFILE(_LT_INTEL_3)) {
5246  INTERESTING(lDebug ? "Intel(5)" : "Intel");
5247  }
5248  else if (INFILE(_LT_INTEL_4)) {
5249  INTERESTING(lDebug ? "Intel(6)" : "Intel");
5250  }
5251  else if (INFILE(_LT_INTEL_RESTRICT)) {
5252  INTERESTING("Intel.RESTRICTED");
5253  }
5254  else if (INFILE(_LT_INTEL_BINARY) && HASTEXT(_TEXT_INTELCORPBINARY, 0) && HASTEXT(_TEXT_NOMODIFICATION, 0)) {
5255  INTERESTING("Intel-Binary");
5256  }
5257  }
5258  else if (INFILE(_LT_INTEL_5)) {
5259  INTERESTING(lDebug ? "CPL(Intel)" : "CPL");
5260  INTERESTING(lDebug ? "Intel(7)" : "Intel");
5261  }
5262  else if (INFILE(_LT_INTEL_EULA)) {
5263  INTERESTING("Intel-EULA");
5264  }
5266  /*
5267  * Bellcore
5268  */
5269  if (INFILE(_LT_BELLCORE)) {
5270  if (INFILE(_CR_BELLCORE)) {
5271  INTERESTING("Bellcore");
5272  }
5273  else {
5274  INTERESTING("Bellcore-style");
5275  }
5276  }
5278  /*
5279  * Purdue
5280  */
5281  if (INFILE(_LT_PURDUE) && INFILE(_CR_PURDUE) && HASTEXT(_TEXT_ALTERED_SOURCE, REG_EXTENDED) && HASTEXT(_TEXT_ORIGIN, 0)) {
5282  INTERESTING("Purdue");
5283  /* flag is set to avoid Cisco-style detection */
5284  lmem[_fPURDUE] = 1;
5285  }
5287  /*
5288  * Cisco systems
5289  */
5290  if (!lmem[_fPURDUE] && INFILE(_LT_CISCO)) {
5291  if (HASTEXT(_LT_PNG_ZLIB_CLAUSE_1, 0) &&
5292  HASTEXT(_LT_PNG_ZLIB_CLAUSE_2, REG_EXTENDED) &&
5293  HASTEXT(_LT_PNG_ZLIB_CLAUSE_3, 0)) {
5294  if (INFILE(_LT_Spencer_86_94_CLAUSE_1) && INFILE(_LT_Spencer_94_CLAUSE_2)) {
5295  INTERESTING("Spencer-94");
5296  }
5297  else {
5298  INTERESTING("Zlib-style");
5299  }
5300  }
5301  else if (INFILE(_CR_CISCO)) {
5302  INTERESTING("Cisco");
5303  }
5304  else {
5305  INTERESTING("Cisco-style");
5306  }
5307  }
5309  /*
5310  * HP
5311  */
5312  if (INFILE(_LT_HP_DEC)) {
5313  if (mCR_HP()) {
5314  INTERESTING(lDebug ? "HP(8)" : "HP");
5315  }
5316  else if (INFILE(_CR_ADOBE)) {
5317  INTERESTING(lDebug ? "Adobe(8)" : "Adobe");
5318  }
5319  else if (INFILE(_LT_GNUPLOT_1) && INFILE(_LT_GNUPLOT_2)) {
5320  INTERESTING("gnuplot");
5321  }
5322  else {
5323  INTERESTING(lDebug ? "HP-DEC-style(1)" : "HP-DEC-style");
5324  }
5325  }
5326  else if (HASTEXT(_TEXT_HP, REG_EXTENDED)) {
5327  if (INFILE(_LT_HP_1)) {
5328  INTERESTING(lDebug ? "HP(2)" : "HP");
5329  }
5330  else if (INFILE(_LT_HP_3) && INFILE(_LT_HP_snmp_pp)) {
5331  INTERESTING(lDebug ? "HP(3)" : "hp-snmp-pp");
5332  }
5333  else if (INFILE(_LT_HP_4)) {
5334  INTERESTING(lDebug ? "HP(4)" : "HP");
5335  }
5336  else if (INFILE(_LT_HP_5)) {
5337  INTERESTING(lDebug ? "HP(5)" : "HP");
5338  }
5339  else if (INFILE(_LT_HP_6)) {
5340  INTERESTING(lDebug ? "HP(6)" : "HP");
5341  }
5342  else if (INFILE(_LT_HP_7)) {
5343  INTERESTING(lDebug ? "HP(7)" : "HP");
5344  }
5345  else if (INFILE(_LT_COMPAQ_1)) {
5346  INTERESTING(lDebug ? "Compaq(1)" : "HP-Compaq");
5347  }
5348  else if (INFILE(_LT_HP_EULA1)) {
5349  INTERESTING(lDebug ? "HP-EULA(1)" : "HP-EULA");
5350  }
5351  else if (INFILE(_LT_HP_EULA2)) {
5352  INTERESTING(lDebug ? "HP-EULA(2)" : "HP-EULA");
5353  }
5354  else if (INFILE(_LT_HP_EULA3)) {
5355  INTERESTING(lDebug ? "HP-EULA(3)" : "HP-EULA");
5356  }
5357  else if (INFILE(_LT_HP_EULA4)) {
5358  INTERESTING(lDebug ? "HP-EULA(4)" : "HP-EULA");
5359  }
5360  else if (INFILE(_LT_COMPAQ_EULA)) {
5361  INTERESTING(lDebug ? "Compaq(EULA)" : "HP-Compaq");
5362  }
5363  else if (INFILE(_LT_HP_PROPRIETARY_1)) {
5364  INTERESTING(lDebug ? "HP-prop(1)" : "HP-Proprietary");
5365  }
5366  else if (INFILE(_LT_HP_PROPRIETARY_2)) {
5367  INTERESTING(lDebug ? "HP-prop(2)" : "HP-Proprietary");
5368  }
5369  else if (INFILE(_LT_HP_PROPRIETARY_3)) {
5370  INTERESTING(lDebug ? "HP-prop(3)" : "HP-Proprietary");
5371  }
5372  else if (INFILE(_LT_HP_IBM_1)) {
5373  INTERESTING(lDebug ? "HP+IBM(1)" : "HP+IBM");
5374  }
5375  else if (INFILE(_LT_HP_IBM_2)) {
5376  INTERESTING(lDebug ? "HP+IBM(2)" : "HP+IBM");
5377  }
5378  else if (!lmem[_mHP] && INFILE(_CR_DEC) && INFILE(_LT_DEC_1)) {
5379  INTERESTING(lDebug ? "HP-DEC(3)" : "HP-DEC");
5380  lmem[_mHP] = 1;
5381  }
5382  else if (!lmem[_mHP] && INFILE(_CR_DEC) && INFILE(_LT_DEC_2)) {
5383  INTERESTING(lDebug ? "HP-DEC(4)" : "HP-DEC");
5384  lmem[_mHP] = 1;
5385  }
5386  else if (INFILE(_LT_EDS_1) && INFILE(_CR_EDS)) {
5387  INTERESTING(lDebug ? "HP-EDS(1)" : "HP");
5388  }
5389  else if (INFILE(_LT_EDS_2) && INFILE(_CR_EDS)) {
5390  INTERESTING(lDebug ? "HP-EDS(2)" : "HP");
5391  }
5392  }
5393  else if (!lmem[_mHP] && INFILE(_LT_DEC_1)) {
5394  INTERESTING(lDebug ? "HP-DEC-style(2)" : "HP-DEC-style");
5395  }
5396  else if (!lmem[_mHP] && INFILE(_LT_DEC_2)) {
5397  INTERESTING(lDebug ? "HP-DEC-style(3)" : "HP-DEC-style");
5398  }
5399  else if (INFILE(_LT_HP_4)) {
5400  INTERESTING(lDebug ? "HP-style(1)" : "HP-style");
5401  }
5402  else if (INFILE(_LT_COMPAQ_1)) {
5403  INTERESTING(lDebug ? "HP-style(2)" : "HP-style");
5404  }
5405  else if (INFILE(_LT_EDS_1)) {
5406  INTERESTING(lDebug ? "HP-EDS(1#2)" : "HP");
5407  }
5408  else if (INFILE(_LT_EDS_2)) {
5409  INTERESTING(lDebug ? "HP-EDS(2#2)" : "HP");
5410  }
5412  /*
5413  * SUN Microsystems
5414  */
5415  if (!lmem[_mSUN] && (INFILE(_CR_SUN) || INFILE(_TEXT_MICROSYSTEMS))) {
5416  if (INFILE(_LT_SUN_PROPRIETARY) || INFILE(_LT_SUN_PROPRIETARY_2) || INFILE(_LT_SUN_PROPRIETARY_3)) {
5417  INTERESTING(lDebug ? "Sun(Prop)" : "Sun-Proprietary");
5418  lmem[_mSUN] = 1;
5419  }
5420  else if (INFILE(_LT_SUN_RPC)) {
5421  INTERESTING("Sun-RPC");
5422  lmem[_mSUN] = 1;
5423  }
5424  else if (INFILE(_LT_SUN_1)) {
5425  if (INFILE(_LT_SUN_FREE)) {
5426  INTERESTING(lDebug ? "Sun(Freeware)" : "Freeware");
5427  }
5428  else {
5429  INTERESTING(lDebug ? "Sun(3)" : "Sun");
5430  }
5431  lmem[_mSUN] = 1;
5432  }
5433  else if (INFILE(_LT_SUN_2)) {
5434  INTERESTING(lDebug ? "Sun(4)" : "Sun-Proprietary");
5435  lmem[_mSUN] = 1;
5436  }
5437  else if (INFILE(_LT_SUN_3)) {
5438  INTERESTING(lDebug ? "Sun(5)" : "Sun");
5439  lmem[_mSUN] = 1;
5440  }
5441  else if (INFILE(_LT_SUN_4)) {
5442  INTERESTING(lDebug ? "Sun(6)" : "Sun");
5443  lmem[_mSUN] = 1;
5444  }
5445  else if (INFILE(_LT_SUN_5)) {
5446  INTERESTING(lDebug ? "Sun(7)" : "Freeware");
5447  lmem[_mSUN] = 1;
5448  }
5449  else if (INFILE(_LT_SUN_6)) {
5450  INTERESTING(lDebug ? "Sun(8)" : "BSD-style");
5451  lmem[_mSUN] = 1;
5452  }
5453  else if (INFILE(_LT_SUN_NC)) {
5454  INTERESTING("Sun.Non-commercial");
5455  lmem[_mSUN] = 1;
5456  }
5457  else if (INFILE(_LT_SUNrestrict)) {
5458  INTERESTING("Sun.RESTRICTED");
5459  lmem[_mSUN] = 1;
5460  }
5461  else if (INFILE(_LT_SUN_BCLA_1) && INFILE(_TITLE_SUN_BCLA)) {
5462  INTERESTING(lDebug ? "BCLA(1)" : "Sun-BCLA");
5463  lmem[_mSUN] = 1;
5464  }
5465  else if (INFILE(_LT_SUN_BCLA_2)) {
5466  INTERESTING(lDebug ? "BCLA(2)" : "Sun-BCLA");
5467  lmem[_mSUN] = 1;
5468  }
5469  else if (INFILE(_LT_SUN_BCLAref)) {
5470  INTERESTING(lDebug ? "BCLA(ref)" : "Sun-BCLA");
5471  lmem[_mSUN] = 1;
5472  }
5473  else if (INFILE(_LT_SUN_ENTITLE)) {
5474  INTERESTING(lDebug ? "Sun(entitlement)" : "Sun");
5475  lmem[_mSUN] = 1;
5476  }
5477  else if (INFILE(_LT_SUN_ANYagreement)) {
5478  INTERESTING("Sun-EULA");
5479  lmem[_mSUN] = 1;
5480  }
5481  else if (INFILE(_LT_SUN_JAVA)) {
5482  INTERESTING("Sun-Java");
5483  lmem[_mSUN] = 1;
5484  }
5485  else if (INFILE(_LT_SUN_IP)) {
5486  INTERESTING("Sun-IP");
5487  lmem[_mSUN] = 1;
5488  lmem[_fIP] = 1;
5489  }
5490  else if (INFILE(_LT_SUN_SCA)) {
5491  INTERESTING("Sun-SCA");
5492  lmem[_mSUN] = 1;
5493  }
5494  else if (INFILE(_LT_SUN_SCSLref)) {
5495  if (INFILE(_TITLE_SCSL_V23)) {
5496  INTERESTING("SCSL-2.3");
5497  }
5498  else if (INFILE(_TITLE_SCSL_V30)) {
5499  INTERESTING("SCSL-3.0");
5500  }
5501  else {
5502  INTERESTING("SCSL");
5503  }
5504  lmem[_mSUN] = 1;
5505  }
5506  else if (INFILE(_TITLE_SUN_SCSL_TSA) &&
5507  INFILE(_LT_SUN_SCSL_TSA)) {
5508  if (INFILE(_TITLE_TSA_10)) {
5509  INTERESTING("SCSL-TSA-1.0");
5510  }
5511  else {
5512  INTERESTING("SCSL-TSA");
5513  }
5514  lmem[_mSUN] = 1;
5515  }
5516  else if (INFILE(_LT_SUN_SISSLref1)
5517  || INFILE(_LT_SUN_SISSLref2)) {
5518  cp = SISSLVERS();
5519  INTERESTING(lDebug ? "SISSL(ref#1)" : cp);
5520  lmem[_mSUN] = 1;
5521  }
5522  }
5523  else if (!lmem[_fREAL] && INFILE(_LT_SUN_PLref)) {
5524  INTERESTING(lDebug ? "Sun-PL(ref)" : "SPL");
5525  lmem[_mSUN] = 1;
5526  }
5527  else if (!lmem[_mSUN] && URL_INFILE(_URL_SUN_BINARY_V150)) {
5528  INTERESTING("Sun-BCLA-1.5.0");
5529  lmem[_mSUN] = 1;
5530  }
5531  else if (!lmem[_mSUN] && URL_INFILE(_URL_SUN_BINARY)) {
5532  INTERESTING(lDebug ? "BCLA(url)" : "Sun-BCLA");
5533  lmem[_mSUN] = 1;
5534  }
5535  else if (!lmem[_mSUN] && INFILE(_LT_SUN_GRAPHICS)) {
5536  INTERESTING(lDebug ? "Sun(8)" : "Sun");
5537  lmem[_mSUN] = 1;
5538  }
5539  else if (!lmem[_mSUN] && INFILE(_LT_SUN_GRAPHICS)) {
5540  INTERESTING(lDebug ? "Sun(9)" : "Sun");
5541  lmem[_mSUN] = 1;
5542  }
5543  else if ((!lmem[_mSUN] && INFILE(_LT_SUN_SISSLref1)) ||
5544  INFILE(_LT_SUN_SISSLref2)) {
5545  cp = SISSLVERS();
5546  INTERESTING(lDebug ? "SISSL(ref#2)" : cp);
5547  lmem[_mSUN] = 1;
5548  }
5549  else if (!lmem[_mSUN] && URL_INFILE(_URL_SISSL)) {
5550  cp = SISSLVERS();
5551  INTERESTING(lDebug ? "SISSL(url)" : cp);
5552  lmem[_mSUN] = 1;
5553  }
5555  if (INFILE(_LT_SUN_PRO)) {
5556  INTERESTING(lDebug ? "SunPro" : "Freeware");
5557  }
5559  /*
5560  * IBM
5561  */
5562  if (INFILE(_TEXT_IBM)) {
5563  if (INFILE(_LT_IBM_RECIP)) {
5564  INTERESTING("IBM-reciprocal");
5565  }
5566  else if (INFILE(_LT_IBM_4)) {
5567  INTERESTING(lDebug ? "IBM(4)" : "IBM-dhcp");
5568  }
5569  else if (INFILE(_LT_IBM_1)) {
5570  INTERESTING(lDebug ? "IBM(1)" : "MIT-style");
5571  }
5572  else if (INFILE(_LT_IBM_3)) {
5573  INTERESTING(lDebug ? "IBM(3)" : "MIT-style");
5574  }
5575  else if (INFILE(_LT_IBM_2)) {
5576  INTERESTING(lDebug ? "IBM(2)" : "IBM");
5577  }
5578  else if (INFILE(_LT_IBM_OWNER)) {
5579  INTERESTING(lDebug ? "IBM(4)" : "IBM");
5580  }
5581  else if (INFILE(_LT_IBM_JIKES)) {
5582  INTERESTING("IBM-JCL");
5583  }
5584  else if (INFILE(_LT_IBM_COURIER)) {
5585  INTERESTING("IBM-Courier");
5586  }
5587  else if (INFILE(_LT_IBM_EULA)) {
5588  INTERESTING(lDebug ? "IBM-EULA(1)" : "IBM-EULA");
5589  }
5590  else if (INFILE(_PHR_IBM_EULA)) {
5591  INTERESTING(lDebug ? "IBM-EULA(2)" : "IBM-EULA");
5592  }
5593  else if (INFILE(_LT_IBM_PIBS)) {
5594  INTERESTING("IBM-pibs");
5595  }
5596  else if (INFILE(_LT_IBM_AS_IS)) {
5597  INTERESTING("IBM-as-is");
5598  }
5599  }
5601  /*
5602  * Motorola
5603  */
5604  if (INFILE(_CR_MOT_1) || INFILE(_CR_MOT_2)) {
5605  if (INFILE(_LT_MOT_1)) {
5606  INTERESTING(lDebug ? "Motorola(1)" : "Motorola");
5607  }
5608  else if (INFILE(_LT_MOT_2)) {
5609  INTERESTING(lDebug ? "Motorola(2)" : "Motorola");
5610  }
5611  }
5612  if (HASTEXT(_TITLE_MOTOROLA_MOBILE, 0)) {
5613  INTERESTING("Motorola-Mobile-SLA");
5614  }
5616  /*
5617  * Java
5618  */
5619  if (INFILE(_LT_JAVA_WSDL4J)) {
5620  INTERESTING("Java-WSDL4J");
5621  }
5622  else if (INFILE(_LT_JAVA_WSDL_SCHEMA)) {
5623  INTERESTING("Java-WSDL-Schema");
5624  }
5625  else if (INFILE(_LT_JAVA_WSDL_POLICY)) {
5626  INTERESTING("Java-WSDL-Policy");
5627  }
5628  else if (INFILE(_LT_JAVA_WSDL_ENUM)) {
5629  INTERESTING("Java-WSDL-Spec");
5630  }
5631  else if (INFILE(_LT_MULTICORP_1)) {
5632  INTERESTING(lDebug ? "Java-Multi(1)" : "Java-Multi-Corp");
5633  }
5634  else if (INFILE(_LT_MULTICORP_2)) {
5635  INTERESTING(lDebug ? "Java-Multi(2)" : "Java-Multi-Corp");
5636  }
5638  /*
5639  * Mibble
5640  */
5641  if (INFILE(_LT_MIBBLE)) {
5642  if (INFILE(_TITLE_MIBBLE_28)) {
5643  INTERESTING("Mibble-2.8");
5644  }
5645  else {
5646  INTERESTING("Mibble");
5647  }
5648  }
5650  /*
5651  * Comtrol Corp
5652  */
5653  if (INFILE(_CR_COMTROL) && INFILE(_LT_COMTROL)) {
5654  INTERESTING("Comtrol");
5655  }
5657  /*
5658  * TrollTech
5659  */
5660  if (INFILE(_LT_TROLLTECH) && INFILE(_CR_TROLLTECH)) {
5661  INTERESTING("Trolltech");
5662  }
5663  else if (INFILE(_LT_QT_COMMref)) {
5664  INTERESTING("Qt.Commercial");
5665  }
5666  else if (INFILE(_LT_QT_PROPRIETARY) || INFILE(_TITLE_QT_PROPRIETARY)) {
5667  INTERESTING("Qt.Commercial");
5668  }
5670  /*
5671  * SNIA (Storage Network Industry) public license
5672  */
5673  if (!lmem[_mMPL] && !lmem[_mSUN] && INFILE(_LT_SNIA_PL)) {
5674  if (INFILE(_TITLE_SNIA_V11)) {
5675  INTERESTING("SNIA-1.1");
5676  }
5677  else if (INFILE(_TITLE_SNIA_V10)) {
5678  INTERESTING("SNIA-1.0");
5679  }
5680  else {
5681  INTERESTING("SNIA");
5682  }
5683  }
5684  else if (INFILE(_LT_SNIAref)) {
5685  if (INFILE(_TITLE_SNIA_V11)) {
5686  INTERESTING(lDebug ? "SNIA-1.1(ref)" : "SNIA-1.1");
5687  }
5688  else if (INFILE(_TITLE_SNIA_V10)) {
5689  INTERESTING(lDebug ? "SNIA-1.0(ref)" : "SNIA-1.0");
5690  }
5691  else {
5692  INTERESTING(lDebug ? "SNIA(ref)" : "SNIA");
5693  }
5694  }
5695  else if (URL_INFILE(_URL_SNIA_V11)) {
5696  INTERESTING(lDebug ? "SNIA-1.1(url)" : "SNIA-1.1");
5697  }
5698  else if (URL_INFILE(_URL_SNIA)) {
5699  INTERESTING(lDebug ? "SNIA(url)" : "SNIA");
5700  }
5702  /*
5703  * BEA
5704  */
5705  if (HASTEXT(_TEXT_BEASYS, 0)) {
5706  if (INFILE(_LT_BEA_1)) {
5707  INTERESTING(lDebug ? "BEA(1)" : "BEA");
5708  }
5709  else if (INFILE(_LT_BEA_2)) {
5710  INTERESTING(lDebug ? "BEA(2)" : "BEA");
5711  }
5712  }
5714  /*
5715  * ADOBE/FRAME
5716  */
5717  if (HASTEXT(_TEXT_ADOBE_FRAME, REG_EXTENDED)) {
5718  if (INFILE(_LT_ADOBE_1)) {
5719  INTERESTING(lDebug ? "Adobe(1)" : "Adobe");
5720  }
5721  else if (!lmem[_mMIT] && INFILE(_LT_ADOBE_2)) {
5722  INTERESTING(lDebug ? "Adobe(2)" : "Adobe");
5723  }
5724  else if (INFILE(_LT_ADOBE_3)) {
5725  INTERESTING(lDebug ? "Adobe(3)" : "Adobe");
5726  }
5727  else if (INFILE(_LT_ADOBE_4)) {
5728  INTERESTING(lDebug ? "Adobe(4)" : "Adobe-EULA");
5729  }
5730  else if (INFILE(_LT_ADOBE_5)) {
5731  INTERESTING(lDebug ? "Adobe(5)" : "Adobe-EULA");
5732  }
5733  else if (INFILE(_LT_ADOBE_6)) {
5734  INTERESTING(lDebug ? "Adobe(6)" : "Adobe-EULA");
5735  }
5736  else if (INFILE(_LT_ADOBE_7)) {
5737  INTERESTING(lDebug ? "Adobe(7)" : "Adobe-EULA");
5738  }
5739  else if (INFILE(_LT_FRAME)) {
5740  INTERESTING(lDebug ? "Adobe(Frame)" : "Adobe");
5741  }
5742  else if (INFILE(_LT_ADOBE_SRC) || INFILE(_TITLE_ADOBE_SRC)) {
5743  INTERESTING(lDebug ? "Adobe(src)" : "Adobe-2006");
5744  }
5745  else if (INFILE(_LT_ADOBE_DATA)) {
5746  INTERESTING(lDebug ? "Adobe(data)" : "Adobe");
5747  }
5748  else if (INFILE(_LT_ADOBE_EULA)) {
5749  INTERESTING("Adobe-EULA");
5750  }
5751  else if (INFILE(_LT_ADOBE_AFM)) {
5752  INTERESTING("APAFML");
5753  }
5754  else if (INFILE(_LT_ADOBE_DNG_SPEC) || INFILE(_TITLE_ADOBE_DNG_SPEC)) {
5755  INTERESTING("Adobe-DNG-Spec");
5756  }
5757  else if (HASTEXT(_TITLE_ADOBE_DNG, 0)) {
5758  INTERESTING("Adobe-DNG");
5759  }
5760  else if (INFILE(_LT_ADOBE_AFMPARSE_1) && INFILE(_LT_ADOBE_AFMPARSE_2)) {
5761  INTERESTING("Afmparse");
5762  }
5763  else if (INFILE(_LT_ADOBE_OTHER)) {
5764  INTERESTING(lDebug ? "Adobe(other)" : "Adobe");
5765  }
5766  else if (INFILE(_LT_ADOBE_SUB)) {
5767  INTERESTING(lDebug ? "Adobe(sub)" : "Adobe");
5768  }
5769  }
5771  /*
5772  * Docbook and Open Source Metadata Framework
5773  */
5774  if (INFILE(_LT_DOCBOOK)) {
5775  if (HASTEXT(_TEXT_DOCBOOK, 0)) {
5776  INTERESTING("DOCBOOK");
5777  }
5778  else if (HASTEXT(_TEXT_METADATA, 0)) {
5779  INTERESTING("OMF");
5780  }
5781  else {
5782  INTERESTING("DOCBOOK-style");
5783  }
5784  }
5786  /*
5787  * MP3 decoder
5788  */
5789  if (INFILE(_LT_MPEG3)) {
5790  INTERESTING("MPEG3-decoder");
5791  }
5793  /*
5794  * Gutmann License (ASN.1 Object Dumping Code)
5795  */
5796  if (INFILE(_LT_GUTMANN)) {
5797  INTERESTING("Gutmann");
5798  }
5800  /*
5801  * Google
5802  */
5803  if (INFILE(_LT_GOOGLE_1)) {
5804  INTERESTING(lDebug ? "Google(1)" : "Google");
5805  }
5806  else if (INFILE(_LT_GOOGLE_2)) {
5807  INTERESTING(lDebug ? "Google(2)" : "Google");
5808  }
5810  /*
5811  * Mandriva
5812  */
5813  if (INFILE(_LT_MANDRIVA)) {
5814  INTERESTING("Mandriva");
5815  }
5817  /*
5818  * Irondoc
5819  */
5820  if (INFILE(_LT_IRONDOC)) {
5821  INTERESTING("IronDoc");
5822  }
5824  /*
5825  * Quarterdeck Office Systems
5826  */
5827  if (INFILE(_LT_QUARTERDECK) && INFILE(_CR_QUARTERDECK)) {
5828  INTERESTING("QuarterDeck");
5829  }
5831  /*
5832  * Electronic Book Technologies
5833  */
5834  if (INFILE(_LT_EBT)) {
5835  if(INFILE(_CR_EBT)) {
5836  INTERESTING("EBT");
5837  } else {
5838  INTERESTING("EBT-style");
5839  }
5840  }
5842  /*
5843  * SGML
5844  */
5845  if (HASTEXT(_TEXT_SGMLUG, 0) && INFILE(_LT_SGML)) {
5846  INTERESTING("SGML");
5847  }
5849  /*
5850  * LaTeX (KOMA-Script)
5851  */
5852  if (HASTEXT(_TEXT_LATEX, REG_EXTENDED)) {
5853  if (INFILE(_LT_LATEXPL_1) || INFILE(_LT_LATEXPL_2) ||
5854  INFILE(_LT_LATEXPL_3)) {
5855  cp = LPPLVERS();
5856  INTERESTING(lDebug ? "LPPL(1)" : cp);
5857  }
5858  else if (INFILE(_LT_LATEX)) {
5859  cp = LPPLVERS();
5860  INTERESTING(lDebug ? "LPPL(2)" : cp);
5861  }
5862  else if (INFILE(_LT_LATEXPLref1) || INFILE(_LT_LATEXPLref2) ||
5863  INFILE(_LT_LATEXPLref3)) {
5864  cp = LPPLVERS();
5865  INTERESTING(lDebug ? "LPPL(3)" : cp);
5866  }
5867  else if (INFILE(_LT_LATEXref1)) {
5868  cp = LPPLVERS();
5869  INTERESTING(lDebug ? "LPPL(4)" : cp);
5870  }
5871  else if (INFILE(_LT_LATEXref2)) {
5872  cp = LPPLVERS();
5873  INTERESTING(lDebug ? "LPPL(5)" : cp);
5874  }
5875  else if (INFILE(_LT_LATEXref3)) {
5876  cp = LPPLVERS();
5877  INTERESTING(lDebug ? "LPPL(6)" : cp);
5878  }
5879  else if (INFILE(_LT_LATEXref4)) {
5880  cp = LPPLVERS();
5881  INTERESTING(lDebug ? "LPPL(7)" : cp);
5882  }
5883  else if (INFILE(_LT_LATEXref5)) {
5884  cp = LPPLVERS();
5885  INTERESTING(lDebug ? "LPPL(8)" : cp);
5886  }
5887  else if (INFILE(_TITLE_LATEX_PL10) || INFILE(_TITLE_LATEX_PL11) ||
5888  INFILE(_TITLE_LATEX_PL12) || INFILE(_TITLE_LATEX_PL13)) {
5889  cp = LPPLVERS();
5890  INTERESTING(lDebug ? "LPPL(title)" : cp);
5891  }
5892  else if (URL_INFILE(_URL_LATEX)) {
5893  cp = LPPLVERS();
5894  INTERESTING(lDebug ? "LPPL(url)" : cp);
5895  }
5896  }
5898  /*
5899  * QPL
5900  */
5901  if (INFILE(_LT_QPL) || INFILE(_LT_QPLref)) {
5902  if (INFILE(_TITLE_QPL10_1) || INFILE(_TITLE_QPL10_2)) {
5903  INTERESTING("QPL-1.0");
5904  lmem[_mQPL] = 1;
5905  }
5906  else if (INFILE(_TITLE_QPL)) {
5907  INTERESTING("QPL");
5908  lmem[_mQPL] = 1;
5909  }
5910  }
5912  /*
5913  * FREE Public License (not really open/free) and GHOSTSCRIPT
5914  */
5915  if (HASTEXT(_TEXT_GHOSTSCRIPT, 0)) {
5916  if (INFILE(_LT_GS)) {
5917  if (INFILE(_TITLE_GS11)) {
5918  INTERESTING("Ghostscript-GPL-1.1");
5919  }
5920  else {
5921  INTERESTING(lDebug ? "GS-GPL(1)" : "Ghostscript-GPL");
5922  }
5923  }
5924  else if (INFILE(_CR_ALADDIN) || INFILE(_CR_ARTOFCODE)) {
5925  if (INFILE(_LT_GS_GNU1) || INFILE(_LT_GS_GNU2)) {
5926  INTERESTING("GNU-Ghostscript");
5927  }
5928  else if (INFILE(_LT_GNU_1) && INFILE(_LT_GNU_2)) {
5929  INTERESTING(lDebug ? "GS-GPL(2)" : "Ghostscript-GPL");
5930  }
5931  else if (INFILE(_LT_FREEPL) || INFILE(_LT_FREEPLref)) {
5932  INTERESTING(lDebug ? "Aladdin(Closed-Source!)" : "Aladdin");
5933  if (INFILE(_PHR_NOT_OPEN)) {
5934  INTERESTING(lDebug ? "Aladdin(Closed-Source!)" : "Aladdin");
5935  lmem[_mALADDIN] = 1;
5936  }
5937  else {
5938  INTERESTING(lDebug ? "Aladdin-Ghostscript" : "Aladdin");
5939  }
5940  }
5941  else if (INFILE(_LT_ALADDIN_RESTRICT)) {
5942  INTERESTING(lDebug ? "Aladdin(RESTRICTED)": "Aladdin");
5943  }
5944  }
5945  else if (INFILE(_LT_AFPL)) {
5946  INTERESTING("AFPL-Ghostscript");
5947  }
5948  }
5949  else if (INFILE(_LT_FREEPLref_1)) {
5950  INTERESTING("Aladdin");
5951  }
5952  else if (INFILE(_LT_FREEPL) || INFILE(_LT_FREEPLref)) {
5953  INTERESTING("Free-PL");
5954  }
5955  /*
5956  * IPTC (International Press Telecommunications Council)
5957  */
5958  else if (INFILE(_TITLE_IPTC) || INFILE(_LT_IPTC_2)) {
5959  INTERESTING("IPTC");
5960  }
5961  else if (INFILE(_LT_IPTC_1) && mCR_IPTC()) {
5962  INTERESTING("IPTC");
5963  }
5964  /*
5965  * Macromedia
5966  */
5967  else if (INFILE(_TITLE_MACROMEDIA_EULA)) {
5968  INTERESTING("MacroMedia-RPSL");
5969  }
5970  /*
5971  * Ontopia
5972  */
5973  else if (INFILE(_LT_ONTOPIA) && INFILE(_TITLE_ONTOPIA)) {
5974  INTERESTING("Ontopia");
5975  }
5977  /*
5978  * Ascender
5979  */
5980  if (INFILE(_LT_ASCENDER_WEBFONT) || INFILE(_LT_ASCENDER_WEBFONT_2) ||
5981  INFILE(_TITLE_ASCENDER_WEBFONT)) {
5982  INTERESTING("Ascender-WebFont-EULA");
5983  }
5984  else if (INFILE(_LT_ASCENDER_EULA) && INFILE(_TITLE_ASCENDER_EULA)) {
5985  INTERESTING("Ascender-EULA");
5986  }
5988  /*
5989  * ADAPTEC
5990  */
5991  if (INFILE(_LT_ADAPTEC_OBJ)) {
5992  INTERESTING("Adaptec.RESTRICTED");
5993  }
5994  else if (INFILE(_CR_ADAPTEC) && INFILE(_LT_ADAPTEC_GPL)) {
5995  INTERESTING("Adaptec-GPL");
5996  }
5998  /*
5999  * Artistic and Perl
6000  */
6001  if (INFILE(_LT_PERL_1)) {
6002  INTERESTING(lDebug ? "Artistic(Perl#1)" : "Artistic-1.0-Perl");
6003  if (!lmem[_mGPL]) {
6004  INTERESTING("Dual-license");
6005  INTERESTING(lDebug ? "GPL(Perl#1)" : "GPL-1.0-or-later");
6006  }
6007  }
6008  else if (INFILE(_LT_PERL_2)) {
6009  INTERESTING(lDebug ? "Artistic(Perl#2)" : "Artistic-1.0-Perl");
6010  if (!lmem[_mGPL]) {
6011  INTERESTING("Dual-license");
6012  INTERESTING(lDebug ? "GPL(Perl#2)" : "GPL-1.0-or-later");
6013  }
6014  }
6015  else if (INFILE(_LT_PERL_3)) {
6016  if (INFILE(_LT_Spencer_86_94_CLAUSE_1) &&
6017  HASTEXT(_LT_PNG_ZLIB_CLAUSE_1, 0) &&
6018  HASTEXT(_LT_PNG_ZLIB_CLAUSE_2, REG_EXTENDED)) {
6019  INTERESTING("Spencer-86");
6020  }
6021  else if (!lmem[_fOPENLDAP] && !TRYGROUP(famOPENLDAP)) {
6022  INTERESTING(lDebug ? "Artistic(Perl#3)" : "Artistic-1.0");
6023  }
6024  }
6025  /*
6026  * Licensed "same as perl itself" will actually be Artistic AND GPL, per
6027  * Larry Wall and the documented licensing terms of "perl"
6028  */
6029  else if (INFILE(_LT_PERLref1)) {
6030  INTERESTING(lDebug ? "Artistic(Perl-ref1)" : "Artistic-1.0-Perl");
6031  if (!lmem[_mGPL]) {
6032  INTERESTING("Dual-license");
6033  INTERESTING(lDebug ? "GPL(Perl-ref1)" : "GPL-1.0-or-later");
6034  }
6035  }
6036  else if (PERL_INFILE(_LT_PERLref2)) {
6037  INTERESTING(lDebug ? "Artistic(Perl-ref2)" : "Artistic-1.0-Perl");
6038  if (!lmem[_mGPL]) {
6039  INTERESTING("Dual-license");
6040  INTERESTING(lDebug ? "GPL(Perl-ref2)" : "GPL-1.0-or-later");
6041  }
6042  }
6043  else if (INFILE(_LT_PERLref3)) {
6044  INTERESTING(lDebug ? "Artistic(Perl-ref3)" : "Artistic-1.0-Perl");
6045  if (!lmem[_mGPL]) {
6046  INTERESTING("Dual-license");
6047  INTERESTING(lDebug ? "GPL(Perl-ref3)" : "GPL-1.0-or-later");
6048  }
6049  }
6050  else if (INFILE(_LT_PERLref4)) {
6051  INTERESTING(lDebug ? "Artistic(Perl-ref4)" : "Artistic-1.0-Perl");
6052  if (!lmem[_mGPL]) {
6053  INTERESTING("Dual-license");
6054  INTERESTING(lDebug ? "GPL(Perl-ref4)" : "GPL-1.0-or-later");
6055  }
6056  }
6057  else if (INFILE(_LT_PERLref5)) {
6058  INTERESTING(lDebug ? "Artistic(Perl-ref5)" : "Artistic-1.0-Perl");
6059  if (!lmem[_mGPL]) {
6060  INTERESTING("Dual-license");
6061  INTERESTING(lDebug ? "GPL(Perl-ref5)" : "GPL-1.0-or-later");
6062  }
6063  }
6064  else if (INFILE(_TITLE_CLARTISTIC)) {
6065  INTERESTING("ClArtistic");
6066  lmem[_fCLA] = 1;
6067  }
6068  else if (!lmem[_fREAL] && !LVAL(_TEXT_GNU_LIC_INFO) &&
6069  (INFILE(_LT_ART_1) || INFILE(_LT_ARTref1) ||
6070  INFILE(_LT_ARTref2) || INFILE(_LT_ARTref3) ||
6071  INFILE(_LT_ARTref4) || PERL_INFILE(_LT_ARTref5) ||
6072  PERL_INFILE(_LT_ARTref6) || INFILE(_TITLE_ART10) ||
6073  INFILE(_TITLE_ART20))) {
6074  if (INFILE(_TITLE_OGTSL)) {
6075  INTERESTING("OGTSL");
6076  }
6077  else if (!lmem[_mLIBRE] && !lmem[_fOPENLDAP] &&
6078  !TRYGROUP(famOPENLDAP)) {
6079  if (INFILE(_LT_ART_V2) || INFILE(_TITLE_ART20)) {
6080  INTERESTING(lDebug ? "Artistic(v2.0#1)" : "Artistic-2.0");
6081  }
6082  else if (INFILE(_PHR_Artistic_20)) {
6083  INTERESTING("Artistic-2.0");
6084  }
6085  else if (INFILE(_TITLE_NBPL_V10)) {
6086  INTERESTING("NBPL-1.0");
6087  lmem[_fARTISTIC] = 1;
6088  }
6089  else if(HASTEXT(_PHR_ARTISTIC_PERL, 0)) {
6090  INTERESTING("Artistic-1.0-Perl");
6091  lmem[_fARTISTIC] = 1;
6092  }
6093  else if (HASTEXT(_PHR_ARTISTIC_CLAUSE8, 0) || INFILE(_TITLE_ART10_CL8))
6094  {
6095  INTERESTING("Artistic-1.0-cl8");
6096  lmem[_fARTISTIC] = 1;
6097  }
6098  else {
6099  INTERESTING(lDebug ? "Artistic(v1.0#other)" : "Artistic-1.0");
6100  lmem[_fARTISTIC] = 1;
6101  }
6102  }
6103  }
6104  else if (INFILE(_LT_ART_2) && INFILE(_TITLE_ART20)) {
6105  INTERESTING(lDebug ? "Artistic(v2.0#2)" : "Artistic-2.0");
6106  }
6107  else if (INFILE(_FILE_ART1) || INFILE(_FILE_ART2)) {
6108  INTERESTING(lDebug ? "Artistic(deb)" : "Artistic-1.0");
6109  }
6110  else if (URL_INFILE(_URL_ART)) {
6111  INTERESTING(lDebug ? "Artistic(url)" : "Artistic-1.0");
6112  }
6114  /*
6115  * LDP, Manpages, OASIS, GPDL, Linux-HOWTO and Linux-doc
6116  */
6117  if (INFILE(_TITLE_LDPL20)) {
6118  INTERESTING("LDPL-2.0");
6119  }
6120  else if (INFILE(_TITLE_LDPL1A)) {
6121  INTERESTING("LDPL-1A");
6122  }
6123  else if (INFILE(_LT_LDPL)) {
6124  INTERESTING(lDebug ? "LDPL(1)" : "LDPL");
6125  }
6126  else if (INFILE(_LT_LDPLref1)) {
6127  INTERESTING(lDebug ? "LDPL(ref1)" : "LDPL");
6128  }
6129  else if (INFILE(_LT_LDPLref2)) {
6130  INTERESTING(lDebug ? "LDPL(ref2)" : "LDPL");
6131  }
6132  else if (INFILE(_LT_LDPLref3)) {
6133  INTERESTING(lDebug ? "LDPL(ref3)" : "LDPL");
6134  }
6135  /*
6136  * GNU-Manpages, Software in the Public Interest (Debian), aka SPI
6137  */
6138  else if (INFILE(_LT_SPI)) {
6139  if (INFILE(_LT_MANPAGE)) {
6140  INTERESTING("GNU-Manpages");
6141  }
6142  else if (!lmem[_fGPL]) {
6143  if (INFILE(_CR_SPI)) {
6144  INTERESTING("Debian-SPI");
6145  }
6146  else {
6147  INTERESTING("Debian-SPI-style");
6148  }
6149  }
6150  }
6151  else if (INFILE(_LT_GPDLref)) {
6152  INTERESTING(lDebug ? "GPDL(1)" : "GPDL");
6153  }
6154  else if (INFILE(_TITLE_GPDL)) {
6155  INTERESTING(lDebug ? "GPDL(2)" : "GPDL");
6156  }
6157  else if (INFILE(_LT_FREEBSD_DOC) && INFILE(_TITLE_FREEBSD_DOC)) {
6158  INTERESTING("FreeBSD-DOC");
6159  }
6160  else if (INFILE(_LT_LINUX_HOWTO)) {
6161  INTERESTING("Linux-HOWTO");
6162  }
6163  else if (INFILE(_LT_LINUXDOC)) {
6164  INTERESTING("LinuxDoc");
6165  }
6166  else if (INFILE(_LT_IEEE_DOC)) {
6167  INTERESTING("IEEE-Doc");
6168  }
6170  /*
6171  * U-Washington
6172  */
6173  if (INFILE(_LT_UW1)) {
6174  if (INFILE(_CR_UWASHINGTON)) {
6175  INTERESTING("U-Wash.Free-Fork");
6176  }
6177  else {
6178  INTERESTING(lDebug ? "U-Wash-style(1)" : "U-Wash-style");
6179  }
6180  }
6181  else if (INFILE(_LT_UW2)) {
6182  if (INFILE(_CR_UWASHINGTON)) {
6183  INTERESTING(lDebug ? "U-Wash(2)" : "U-Washington");
6184  }
6185  else {
6186  INTERESTING(lDebug ? "U-Wash-style(2)" : "U-Wash-style");
6187  }
6188  }
6189  else if (INFILE(_LT_UW3)) {
6190  if (INFILE(_CR_UWASHINGTON)) {
6191  INTERESTING(lDebug ? "U-Wash(3)" : "U-Washington");
6192  }
6193  else {
6194  INTERESTING(lDebug ? "U-Wash-style(3)" : "U-Wash-style");
6195  }
6196  }
6197  else if (INFILE(_LT_UW4)) {
6198  if (INFILE(_CR_UWASHINGTON)) {
6199  INTERESTING(lDebug ? "U-Wash(4)" : "U-Washington");
6200  }
6201  else {
6202  INTERESTING(lDebug ? "U-Wash-style(4)" : "U-Wash-style");
6203  }
6204  }
6206  /*
6207  * WU-ftpd (not the school north of Oregon!
6208  */
6209  if (INFILE(_LT_WU_FTPD)) {
6210  if (INFILE(_TITLE_WU_FTPD) || INFILE(_CR_WASHU)) {
6211  INTERESTING(lDebug ? "Wash-U(1)" : "Wash-U-StLouis");
6212  }
6213  else {
6214  INTERESTING("Wash-U-style");
6215  }
6216  }
6217  else if (INFILE(_LT_WU_FTPDref)) {
6218  INTERESTING(lDebug ? "Wash-U(ref)" : "Wash-U-StLouis");
6219  }
6220  /*
6221  * Delaware
6222  */
6223  else if (INFILE(_LT_DELAWARE)) {
6224  if (INFILE(_CR_DELAWARE)) {
6225  INTERESTING("U-Del");
6226  }
6227  else {
6228  INTERESTING("U-Del-style");
6229  }
6230  }
6231  /*
6232  * Princeton
6233  */
6234  else if (INFILE(_LT_PRINCETON) && NOT_INFILE(_TITLE_WORDNET)) {
6235  if (INFILE(_CR_PRINCETON)) {
6236  INTERESTING("Princeton");
6237  }
6238  else {
6239  INTERESTING("Princeton-style");
6240  }
6241  }
6242  /*
6243  * University of Michigan
6244  */
6245  else if (INFILE(_LT_UMICHIGAN_1)) {
6246  if (INFILE(_CR_MICHIGAN)) {
6247  INTERESTING(lDebug ? "U-Mich(1)" : "U-Michigan");
6248  }
6249  else {
6250  INTERESTING(lDebug ? "U-Mich-style(1)" : "U-Mich-style");
6251  }
6252  }
6253  else if (INFILE(_LT_UMICHIGAN_2)) {
6254  if (INFILE(_CR_MICHIGAN)) {
6255  INTERESTING(lDebug ? "U-Mich(2)" : "U-Michigan");
6256  }
6257  else {
6258  INTERESTING(lDebug ? "U-Mich-style(2)" : "U-Mich-style");
6259  }
6260  }
6261  /*
6262  * Southern Cal
6263  */
6264  else if (INFILE(_LT_USC_NC)) {
6265  if (INFILE(_CR_USC)) {
6266  INTERESTING("USC.Non-commercial");
6267  }
6268  else {
6269  INTERESTING(lDebug ? "NonC(5)" : "Non-commercial");
6270  }
6271  }
6272  else if (INFILE(_LT_USC)) {
6273  if (INFILE(_CR_USC)) {
6274  INTERESTING("USC");
6275  }
6276  else {
6277  INTERESTING("USC-style");
6278  }
6279  }
6280  /*
6281  * Unversity Corporation for Atmospheric Research (UCAR)
6282  */
6283  else if (INFILE(_LT_UCAR_1) && INFILE(_LT_UCAR_2)) {
6284  INTERESTING("UCAR");
6285  }
6286  else if (INFILE(_LT_UCAR_3) && INFILE(_CR_UCAR)) {
6287  if (INFILE(_CR_UCAR)) {
6288  INTERESTING("UCAR");
6289  }
6290  else {
6291  INTERESTING("UCAR-style");
6292  }
6293  }
6294  /*
6295  * Stanford
6296  */
6297  else if (INFILE(_LT_STANFORD)) {
6298  if (INFILE(_CR_STANFORD)) {
6299  INTERESTING("Stanford");
6300  }
6301  else {
6302  INTERESTING("Stanford-style");
6303  }
6304  }
6305  /*
6306  * U-Cambridge
6307  */
6308  else if (INFILE(_LT_CAMBRIDGE)) {
6309  if (HASTEXT(_LT_MSNTP, 0)) {
6310  INTERESTING("MSNTP");
6311  }
6312  else if (INFILE(_CR_CAMBRIDGE_1) || INFILE(_CR_CAMBRIDGE_2)) {
6313  INTERESTING("U-Cambridge");
6314  }
6315  else {
6316  INTERESTING("U-Cambridge-style");
6317  }
6318  }
6319  /*
6320  * Columbia University
6321  */
6322  else if (INFILE(_CR_COLUMBIA) && INFILE(_LT_COLUMBIA)) {
6323  INTERESTING("U-Columbia");
6324  }
6325  /*
6326  * University of Notre Dame (Different from Boost!)
6327  */
6328  if (INFILE(_LT_ND_1)) {
6329  if (INFILE(_CR_NOTREDAME)) {
6330  INTERESTING(lDebug ? "ND(1)" : "NotreDame");
6331  }
6332  else {
6333  INTERESTING(lDebug ? "ND-style(1)" : "NotreDame-style");
6334  }
6335  }
6336  else if (INFILE(_LT_ND_2)) {
6337  if (INFILE(_CR_NOTREDAME)) {
6338  INTERESTING(lDebug ? "ND(2)" : "NotreDame");
6339  }
6340  else {
6341  INTERESTING(lDebug ? "ND-style(2)" : "NotreDame-style");
6342  }
6343  }
6344  else if (INFILE(_LT_ND_3)) {
6345  if (INFILE(_CR_NOTREDAME)) {
6346  INTERESTING(lDebug ? "ND(3)" : "NotreDame");
6347  }
6348  else {
6349  INTERESTING(lDebug ? "ND-style(3)" : "NotreDame-style");
6350  }
6351  }
6353  /*
6354  * Boost references
6355  */
6356  if (!lmem[_mMIT] && INFILE(_LT_BOOST_2)) {
6357  if (INFILE(_CR_BOOST)) {
6358  INTERESTING(lDebug ? "Boost(2)" : "BSL-1.0");
6359  }
6360  else {
6361  INTERESTING(lDebug ? "Boost-style(2)" : "BSL-style");
6362  }
6363  }
6364  else if (INFILE(_LT_BOOSTref1)) {
6365  if (INFILE(_TITLE_BOOST10) || INFILE(_PHR_BOOST_V10) ||
6366  URL_INFILE(_URL_BOOST_10)) {
6367  INTERESTING(lDebug ? "Boost1.0(ref)" : "BSL-1.0");
6368  }
6369  else {
6370  INTERESTING(lDebug ? "Boost(ref)" : "BSL-1.0");
6371  }
6372  }
6373  else if (INFILE(_LT_BOOST_GRAPH)) {
6374  INTERESTING(lDebug ? "Boost(graph)" : "BSL-1.0");
6375  }
6376  else if (INFILE(_LT_BOOST_LAMBDA)) {
6377  INTERESTING(lDebug ? "Boost(lambda)" : "BSL-1.0");
6378  }
6379  else if (URL_INFILE(_URL_BOOST_10)) {
6380  INTERESTING(lDebug ? "Boost-1.0(ref)" : "BSL-1.0");
6381  }
6382  /*
6383  * Sleepycat NON-Commerical
6384  */
6385  else if (INFILE(_LT_SLEEPYCAT_NC)) {
6386  INTERESTING("Sleepycat.Non-commercial");
6387  }
6389  /*
6390  * Vim license
6391  */
6392  if ((INFILE(_LT_Vim_1) || INFILE(_LT_Vim_2)) && INFILE(_TITLE_Vim)) {
6393  INTERESTING("Vim");
6394  }
6395  else if (INFILE(_PHR_Vim)) {
6396  INTERESTING("Vim");
6397  }
6399  /*
6400  * Vixie license
6401  */
6402  if (INFILE(_LT_VIXIE)) {
6403  INTERESTING("Vixie-license");
6404  }
6406  /*
6407  * Yahoo!
6408  */
6409  if (INFILE(_LT_YAHOO_1)) {
6410  if (INFILE(_LT_YAHOO_BINARY)) {
6411  INTERESTING("Yahoo-EULA");
6412  }
6413  else {
6414  INTERESTING("YPL");
6415  }
6416  }
6417  if(INFILE(_TITLE_YPL_V10)) {
6418  INTERESTING("YPL-1.0");
6419  }
6420  else if(INFILE(_TITLE_YPL_V11)) {
6421  INTERESTING("YPL-1.1");
6422  }
6424  /*
6425  * Public Use
6426  */
6427  if (INFILE(_LT_PUBLIC_USE)) {
6428  if (INFILE(_TITLE_PUBUSE_V10)) {
6429  INTERESTING("Public-Use-1.0");
6430  }
6431  else {
6432  INTERESTING("Public-Use");
6433  }
6434  }
6436  /*
6437  * Apple
6438  */
6439  if (INFILE(_TEXT_APPLE)) {
6440  if (INFILE(_LT_MIT_12)) {
6441  INTERESTING(lDebug ? "Apple MIT License" : "AML");
6442  }
6443  else if (INFILE(_LT_APPLE_1)) {
6444  INTERESTING(lDebug ? "Apple(1)" : "Apple");
6445  }
6446  else if (INFILE(_LT_APPLE_2)) {
6447  INTERESTING(lDebug ? "Apple(2)" : "Apple");
6448  }
6449  else if (INFILE(_LT_APPLE_3)) { /* squeak license */
6450  INTERESTING(lDebug ? "Apple(3)" : "Apple");
6451  }
6452  else if (INFILE(_LT_APPLE_4)) { /* squeak license */
6453  INTERESTING(lDebug ? "Apple(4)" : "Apple-EULA");
6454  }
6455  else if (INFILE(_LT_APPLE_FONTFORGE)) {
6456  INTERESTING("Apple.FontForge");
6457  }
6458  else if (INFILE(_LT_APPLE_SAMPLE)) {
6459  INTERESTING("Apple.Sample");
6460  }
6461  else if (INFILE(_LT_APSLref1) || INFILE(_LT_APSLref2) ||
6462  INFILE(_TITLE_APSL)) {
6463  if (INFILE(_TITLE_APSL20)) {
6464  INTERESTING("APSL-2.0");
6465  }
6466  else if (INFILE(_TITLE_Ferris)) {
6467  INTERESTING(lDebug ? "Ferris-1.2" : "APSL-style");
6468  }
6469  else if (INFILE(_TITLE_APSL_style)) {
6470  INTERESTING("APSL-style");
6471  }
6472  else if (INFILE(_TITLE_APSL12)) {
6473  INTERESTING("APSL-1.2");
6474  }
6475  else if (INFILE(_TITLE_APSL11)) {
6476  INTERESTING("APSL-1.1");
6477  }
6478  else if (INFILE(_TITLE_APSL10)) {
6479  INTERESTING("APSL-1.0");
6480  }
6481  else {
6482  INTERESTING("APSL");
6483  }
6484  }
6485  else if (INFILE(_LT_ACDL)) {
6486  INTERESTING("ACDL");
6487  }
6488  else if (INFILE(_TITLE_APPLE_SLA)) {
6489  INTERESTING(lDebug ? "Apple(SLA)" : "Apple-EULA");
6490  }
6491  else if (URL_INFILE(_URL_APSL)) {
6492  INTERESTING(lDebug ? "APSL(url)" : "APSL");
6493  }
6494  else if (URL_INFILE(_URL_ACDL)) {
6495  INTERESTING(lDebug ? "ACDL(url)" : "ACDL");
6496  }
6497  }
6499  /*
6500  * Redland
6501  */
6502  if (INFILE(_LT_REDLAND)) {
6503  INTERESTING("Redland");
6504  }
6506  /*
6507  * Red Hat and Fedora
6508  */
6509  if (INFILE(_LT_RH_PKGS)) {
6510  if (INFILE(_LT_RH_NONCOMMERCIAL)) {
6511  INTERESTING(lDebug ? "RH(NC)" : "RedHat.Non-commercial");
6512  lmem[_mREDHAT] = 1;
6513  }
6514  else if (INFILE(_LT_RH_FEDORA)) {
6515  INTERESTING(lDebug ? "Fedora(1)" : "Fedora");
6516  lmem[_mREDHAT] = 1;
6517  }
6518  }
6519  else if (INFILE(_LT_RH_REDHAT)) {
6520  INTERESTING(lDebug ? "RH(2)" : "RedHat");
6521  lmem[_mREDHAT] = 1;
6522  }
6523  else if (INFILE(_LT_RH_SPECIFIC)) {
6524  INTERESTING(lDebug ? "RH(4)" : "RedHat-specific");
6525  lmem[_mREDHAT] = 1;
6526  }
6527  else if (INFILE(_LT_FEDORA)) {
6528  INTERESTING(lDebug ? "Fedora(2)" : "Fedora");
6529  lmem[_mREDHAT] = 1;
6530  }
6531  else if (INFILE(_LT_FEDORA_CLA) || INFILE(_TITLE_FEDORA_CLA)) {
6532  INTERESTING("FedoraCLA");
6533  lmem[_mREDHAT] = 1;
6534  }
6535  else if (INFILE(_CR_REDHAT)) {
6536  if (INFILE(_LT_RH_1)) {
6537  INTERESTING(lDebug ? "RH(1)" : "RedHat");
6538  lmem[_mREDHAT] = 1;
6539  }
6540  else if (INFILE(_LT_RH_EULA)) {
6541  INTERESTING("RedHat-EULA");
6542  lmem[_mREDHAT] = 1;
6543  }
6544  }
6546  /*
6547  * SUSE/Novell/UnitedLinux
6548  */
6549  if (INFILE(_CR_SUSE) && INFILE(_PHR_YAST_CR)) {
6550  INTERESTING("YaST.SuSE");
6551  }
6552  else if (INFILE(_TITLE_NOVELL_EULA)) {
6553  INTERESTING("Novell-EULA");
6554  }
6555  else if (INFILE(_TITLE_UL_EULA)) {
6556  INTERESTING("UnitedLinux-EULA");
6557  }
6558  else if (INFILE(_LT_NOVELL)) {
6559  INTERESTING("Novell");
6560  lmem[_fIP] = 1;
6561  }
6562  else if (INFILE(_LT_NOVELL_IP_1)) {
6563  INTERESTING(lDebug ? "Novell-IP(1)" : "Novell-IP");
6564  lmem[_fIP] = 1;
6565  }
6566  else if (INFILE(_LT_NOVELL_IP_2)) {
6567  INTERESTING(lDebug ? "Novell-IP(2)" : "Novell-IP");
6568  lmem[_fIP] = 1;
6569  }
6571  /*
6572  * Epson Public license
6573  */
6574  if (INFILE(_LT_EPSON_PL) && INFILE(_TITLE_EPSON_PL)) {
6575  INTERESTING("Epson-PL");
6576  }
6577  else if (INFILE(_LT_EPSON_EULA) && INFILE(_TITLE_EPSON_EULA)) {
6578  INTERESTING("Epson-EULA");
6579  }
6581  /*
6582  * Open Publication license
6583  */
6584  if (INFILE(_LT_OPENPUBL_1) || INFILE(_LT_OPENPUBL_2)) {
6585  if (INFILE(_TITLE_OPENPUBL04)) {
6586  INTERESTING("Open-PL-0.4");
6587  }
6588  else if (INFILE(_TITLE_OPENPUBL10) || URL_INFILE(_URL_OPEN_PL_V10)) {
6589  INTERESTING("Open-PL-1.0");
6590  }
6591  else if (INFILE(_TITLE_OPENPUBL)) {
6592  INTERESTING("Open-PL");
6593  }
6594  else {
6595  INTERESTING("Open-PL-style");
6596  }
6597  }
6598  else if (INFILE(_LT_OPENPUBLref)) {
6599  INTERESTING(lDebug ? "Open-PL(ref)" : "Open-PL");
6600  }
6602  /*
6603  * Free Art License
6604  */
6605  if (INFILE(_LT_FREEART_V10)) {
6606  INTERESTING("FAL-1.0");
6607  }
6608  else if (INFILE(_LT_FREEART_V13)) {
6609  INTERESTING("FAL-1.3");
6610  }
6612  /*
6613  * RSA Security, Inc.
6614  */
6615  if (INFILE(_LT_RSA_4)) {
6616  INTERESTING(lDebug ? "RSA(4)" : "RSA-MD");
6617  }
6618  else if (INFILE(_LT_RSA_5)) {
6619  INTERESTING(lDebug ? "RSA(5)" : "RSA-DNS");
6620  }
6621  else if (INFILE (_LT_RSA_CRYPTOKI_1) && INFILE(_LT_RSA_CRYPTOKI_2)){
6622  INTERESTING("RSA-Cryptoki");
6623  }
6624  else if (INFILE(_LT_RSA_3)) {
6625  INTERESTING(lDebug ? "RSA(3)" : "RSA-Security");
6626  }
6627  else if (INFILE(_CR_RSA)) {
6628  if (INFILE(_LT_RSA_1)) {
6629  INTERESTING(lDebug ? "RSA(1)" : "RSA-Security");
6630  }
6631  else if (INFILE(_LT_RSA_2)) {
6632  INTERESTING(lDebug ? "RSA(2)" : "RSA-Security");
6633  }
6634  }
6635  else if (INFILE(_TITLE_RSA_MD)) {
6636  INTERESTING(lDebug ? "RSA(title)" : "RSA-MD");
6637  }
6639  /* Some licenses only deal with fonts */
6640  if (HASTEXT(_TEXT_FONT, 0)) {
6641  /*
6642  * AGFA Monotype
6643  */
6644  if (INFILE(_LT_AGFA)) {
6645  INTERESTING("AGFA.RESTRICTED");
6646  }
6647  else if (INFILE(_LT_AGFA_EULA)) {
6648  INTERESTING("AGFA-EULA");
6649  }
6650  /*
6651  * Bigelow and Holmes
6652  */
6653  if (INFILE(_LT_BH_FONT)) {
6654  if (INFILE(_CR_BH)) {
6655  INTERESTING("BH-Font");
6656  }
6657  else {
6658  INTERESTING("BH-Font-style");
6659  }
6660  }
6662  /*
6663  * BIZNET
6664  */
6665  if (INFILE(_LT_BIZNET)) {
6666  if (INFILE(_CR_BIZNET)) {
6667  INTERESTING("BIZNET");
6668  }
6669  else {
6670  INTERESTING("BIZNET-style");
6671  }
6672  }
6674  /*
6675  * BITSTREAM
6676  */
6677  if (INFILE(_LT_BITSTREAM_1)) {
6678  INTERESTING(lDebug ? "Bitstream(2)" : "Bitstream");
6679  }
6680  else if (INFILE(_LT_BITSTREAM_2)) {
6681  INTERESTING(lDebug ? "Bitstream(3)" : "Bitstream");
6682  }
6684  /*
6685  * Larabie Fonts
6686  */
6687  if (INFILE(_LT_LARABIE_EULA) && INFILE(_TITLE_LARABIE_EULA)) {
6688  INTERESTING("Larabie-EULA");
6689  }
6691  /*
6692  * Arphic Public License
6693  */
6694  if (INFILE(_LT_ARPHIC)) {
6695  if (INFILE(_CR_ARPHIC)) {
6696  INTERESTING("Arphic-Font-PL");
6697  }
6698  else {
6699  INTERESTING("Arphic-style");
6700  }
6701  }
6702  }
6704  /*
6705  * Baekmuk Fonts and Hwan Design
6706  */
6707  if (INFILE(_LT_BAEKMUK_1)) {
6708  INTERESTING("Baekmuk-Font");
6709  }
6710  else if (INFILE(_LT_BAEKMUK_2)) {
6711  INTERESTING("Baekmuk.Hwan");
6712  }
6714  /*
6715  * Baserow Enterprise Edition License
6716  */
6717  if (INFILE(_LT_BASEROW_EE) || INFILE(_LT_BASEROW_EE_2)) {
6718  INTERESTING("Baserow-EE");
6719  }
6721  /*
6722  * Baserow Premium Edition License
6723  */
6724  if (INFILE(_LT_BASEROW_PE) || INFILE(_LT_BASEROW_PE_2)) {
6725  INTERESTING("Baserow-PE");
6726  }
6728  /*
6729  * Information-Technology Promotion Agency (IPA)
6730  */
6731  if (INFILE(_LT_IPA_EULA)) {
6732  INTERESTING("IPA-Font-EULA");
6733  }
6735  /*
6736  * AT&T
6737  */
6738  if (INFILE(_LT_ATT_1)) {
6739  if (INFILE(_CR_ATT)) {
6740  INTERESTING(lDebug ? "ATT(1)" : "ATT");
6741  }
6742  else {
6743  INTERESTING(lDebug ? "ATT-style(1)" : "ATT-style");
6744  }
6745  }
6746  else if (INFILE(_LT_ATT_2)) {
6747  if (!lmem[_fBSD] && INFILE(_CR_BSDCAL)) {
6748  INTERESTING(lDebug ? "BSD(14)" : "BSD");
6749  lmem[_fBSD] = 1;
6750  }
6751  else if (INFILE(_CR_ATT) || INFILE(_CR_LUCENT)) {
6752  INTERESTING(lDebug ? "ATT(2)" : "ATT");
6753  }
6754  else {
6755  INTERESTING(lDebug ? "ATT-style(2)" : "ATT-style");
6756  }
6757  }
6758  else if (INFILE(_LT_ATT_SRC_1) || INFILE(_LT_ATT_SRC_2)) {
6759  if (INFILE(_TITLE_ATT_SRC_12D)) {
6760  INTERESTING("ATT-Source-1.2d");
6761  }
6762  else if (INFILE(_TITLE_ATT_SRC_10)) {
6763  INTERESTING("ATT-Source-1.0");
6764  }
6765  else {
6766  INTERESTING("ATT-Source");
6767  }
6768  }
6769  else if (INFILE(_LT_ATT_NONCOMMERC1) || INFILE(_LT_ATT_NONCOMMERC2)) {
6770  INTERESTING("ATT.Non-commercial");
6771  }
6773  /*
6774  * Silicon Graphics
6775  */
6776  if (INFILE(_TITLE_SGI_V10)) {
6777  INTERESTING("SGI-B-1.0");
6778  }
6779  else if (INFILE(_TITLE_SGI_V11)) {
6780  INTERESTING("SGI-B-1.1");
6781  }
6782  else if (INFILE(_TITLE_SGI_V20)) {
6783  INTERESTING("SGI-B-2.0");
6784  }
6785  else if (INFILE(_LT_SGI_1)) {
6786  if (HASTEXT(_PHR_SGI_LIBTIFF, REG_EXTENDED)) {
6787  INTERESTING("libtiff");
6788  }
6789  else if (HASTEXT(_PHR_LIBTIFF_STYLE, REG_EXTENDED)) {
6790  INTERESTING("libtiff-style");
6791  }
6792  }
6793  else if (INFILE(_LT_SGI_2)) {
6794  if (INFILE(_LT_SGI_V10)) {
6795  INTERESTING("SGI-B-1.0");
6796  }
6797  else if (INFILE(_LT_SGI_V11)) {
6798  INTERESTING("SGI-B-1.1");
6799  }
6800  else if (INFILE(_LT_SGI_V20)) {
6801  INTERESTING("SGI-B-2.0");
6802  }
6803  else if (INFILE(_CR_SGI) || URL_INFILE(_URL_SGI)) {
6804  INTERESTING("SGI");
6805  }
6806  }
6807  else if (INFILE(_LT_SGI_1)) {
6808  if (INFILE(_CR_SGI) || URL_INFILE(_URL_SGI)) {
6809  INTERESTING("SGI-style");
6810  }
6811  }
6812  else if (INFILE(_LT_SGI_FREEW)) {
6813  INTERESTING("SGI-Freeware");
6814  }
6815  else if (INFILE(_LT_SGI_GLX)) {
6816  if (INFILE(_TITLE_SGI_GLX_V10)) {
6817  INTERESTING(lDebug ? "SGI_GLX(1.0)" : "SGI_GLX-1.0");
6818  }
6819  else {
6820  INTERESTING("SGI_GLX");
6821  }
6822  }
6823  else if (INFILE(_LT_SGI_GLXref) && INFILE(_CR_SGI)) {
6824  if (INFILE(_TITLE_SGI_GLX_V10)) {
6825  INTERESTING(lDebug ? "SGI_GLX(10ref)" : "SGI_GLX-1.0");
6826  }
6827  else {
6828  INTERESTING(lDebug ? "SGI_GLX(ref)" : "SGI_GLX");
6829  }
6830  }
6831  else if (INFILE(_LT_SGI_PROPRIETARY) && INFILE(_CR_SGI)) {
6832  INTERESTING("SGI-Proprietary");
6833  }
6835  /*
6836  * 3DFX (Glide)
6837  */
6838  if (INFILE(_CR_3DFX_1) || INFILE(_CR_3DFX_2)) {
6839  if (INFILE(_LT_GLIDE_3DFX)) {
6840  INTERESTING("Glide");
6841  }
6842  else if (INFILE(_LT_GLIDE_GPL)) {
6843  INTERESTING("3DFX-PL");
6844  }
6845  }
6846  /*
6847  * Nvidia Corp
6848  */
6849  else if (INFILE(_LT_NVIDIA_EULA_3)) {
6850  INTERESTING(lDebug ? "Nvidia(1)" : "Nvidia-EULA-a");
6851  }
6852  else if (INFILE(_CR_NVIDIA) && INFILE(_LT_NVIDIA)) {
6853  INTERESTING(lDebug ? "Nvidia(2)" : "Nvidia");
6854  }
6855  else if (INFILE(_LT_NVIDIA_EULA_2)) {
6856  INTERESTING(lDebug ? "Nvidia(3)" : "Nvidia-EULA-b");
6857  }
6858  else if (INFILE(_LT_NVIDIA_EULA_1) || INFILE(_TITLE_NVIDIA)) {
6859  INTERESTING(lDebug ? "Nvidia(4)" : "Nvidia-EULA-b");
6860  }
6861  else if (INFILE(_LT_NVIDIA_1)) {
6862  INTERESTING(lDebug ? "Nvidia(5)" : "Nvidia");
6863  }
6864  /*
6865  * ATI Corp
6866  */
6867  else if (INFILE(_TITLE_ATI_EULA) && INFILE(_LT_ATI_EULA)) {
6868  INTERESTING("ATI-EULA");
6869  }
6870  /*
6871  * Agere Systems
6872  */
6873  else if (INFILE(_TITLE_AGERE_EULA) && INFILE(_LT_AGERE_EULA)) {
6874  INTERESTING("Agere-EULA");
6875  }
6877  /*
6878  * KD Tools, AB
6879  */
6880  if (INFILE(_TITLE_KDAB_EULA)) {
6881  if (INFILE(_LT_KDAB_1)) {
6882  INTERESTING(lDebug ? "KDAB(1)" : "KD-Tools-EULA");
6883  }
6884  if (INFILE(_LT_KDAB_2)) {
6885  INTERESTING(lDebug ? "KDAB(2)" : "KD-Tools-EULA");
6886  }
6887  }
6889  /*
6890  * KDE
6891  */
6892  if (INFILE(_PHR_KDE_FILE) && INFILE(_LT_KDE)) {
6893  INTERESTING("KDE");
6894  }
6896  /*
6897  * Broadcom
6898  */
6899  if (INFILE(_LT_BROADCOM_EULA) && INFILE(_CR_BROADCOM)) {
6900  INTERESTING("Broadcom-EULA");
6901  }
6903  /*
6904  * DARPA (Defense Advanved Research Projects Agency)
6905  */
6906  if (INFILE(_LT_DARPA_COUGAAR_1)) {
6907  INTERESTING("DARPA-Cougaar");
6908  }
6909  else if (INFILE(_LT_DARPA)) {
6910  INTERESTING("DARPA");
6911  }
6913  /*
6914  * Tektronix
6915  */
6916  if (INFILE(_LT_TEKTRONIX)) {
6917  if (INFILE(_CR_TEKTRONIX)) {
6918  INTERESTING("Tektronix");
6919  }
6920  else {
6921  INTERESTING("Tektronix-style");
6922  }
6923  }
6925  /*
6926  * Alliance for Open Media Patent License
6927  */
6928  if (INFILE(_LT_AOM_Patent)) {
6929  INTERESTING("Alliance for Open Media Patent License 1.0");
6930  }
6932  /*
6933  * Open Market, Inc
6934  */
6935  if (INFILE(_LT_CADENCE) && INFILE(_CR_CADENCE)) {
6936  INTERESTING("Cadence");
6937  }
6939  /*
6940  * Open Market, Inc
6941  */
6942  if (INFILE(_LT_OPENMKT)) {
6943  INTERESTING("OpenMarket");
6944  }
6946  /*
6947  * Unicode
6948  */
6949  if (!lmem[_fUNICODE]) {
6950  if (INFILE(_TITLE_UNICODE)) {
6951  INTERESTING(lDebug ? "Unicode(4)" : "Unicode");
6952  }
6953  else if (INFILE(_LT_UNICODE_1) && INFILE(_CR_UNICODE)) {
6954  INTERESTING(lDebug ? "Unicode(1)" : "Unicode");
6955  }
6956  else if (INFILE(_LT_UNICODE_2)) {
6957  INTERESTING(lDebug ? "Unicode(2)" : "Unicode");
6958  }
6959  else if (INFILE(_LT_UNICODE_3)) {
6960  INTERESTING(lDebug ? "Unicode(3)" : "Unicode");
6961  }
6962  else if (INFILE(_LT_UNICODE_4)) {
6963  INTERESTING(lDebug ? "Unicode(4)" : "Unicode-TOU");
6964  }
6965  else if (URL_INFILE(_URL_UNICODE)) {
6966  INTERESTING(lDebug ? "Unicode(5)" : "Unicode-TOU");
6967  }
6968  else if (INFILE(_TITLE_UNICODE_TOU) && INFILE(_LT_UNICODE_TOU)) {
6969  INTERESTING("Unicode-TOU");
6970  }
6972  }
6973  /*
6974  * Software Research Assoc
6975  */
6976  if (INFILE(_LT_SRA) && INFILE(_CR_SRA)) {
6977  INTERESTING("SW-Research");
6978  }
6980  /*
6981  * MITRE Collaborative Virtual Workspace (CVW) License
6982  */
6983  if (INFILE(_LT_MITRE_1)) {
6984  if (INFILE(_CR_MITRE)) {
6985  INTERESTING(lDebug ? "MitreCVW(1)" : "MitreCVW");
6986  }
6987  else if (INFILE(_TITLE_CVW)) {
6988  INTERESTING(lDebug ? "MitreCVW(2)" : "MitreCVW");
6989  }
6990  else {
6991  INTERESTING("MitreCVW-style");
6992  }
6993  }
6994  else if (INFILE(_LT_MITRE_2)) {
6995  INTERESTING(lDebug ? "Mitre(2)" : "Mitre");
6996  }
6998  /*
6999  * Jabber, Motosoto
7000  */
7001  if (INFILE(_LT_JABBER_1)) {
7002  if (INFILE(_TITLE_MOTOSOTO091)) {
7003  INTERESTING("Motosoto");
7004  }
7005  else if (INFILE(_TITLE_JABBER)) {
7006  INTERESTING("Jabber");
7007  }
7008  }
7009  else if (INFILE(_LT_JABBER_2)) {
7010  if (INFILE(_TITLE_JABBER_V10)) {
7011  INTERESTING(lDebug ? "Jabber(1.0)" : "Jabber-1.0");
7012  }
7013  else {
7014  INTERESTING(lDebug ? "Jabber(2)" : "Jabber");
7015  }
7016  }
7017  else if (URL_INFILE(_URL_JABBER)) {
7018  INTERESTING(lDebug ? "Jabber(url)" : "Jabber");
7019  }
7021  /*
7022  * CPL, Lucent Public License, Eclipse PL
7023  */
7024  int _epl = 0;
7025  if (INFILE(_LT_CPL_1) || INFILE(_LT_CPL_2) || INFILE(_TITLE_IBM_PL10)
7026  || INFILE(_TITLE_IBM_PL20) || INFILE(_TITLE_IBM_PL)) {
7027  if (INFILE(_TITLE_IBM_PL20)) {
7028  INTERESTING("IPL-2.0");
7029  }
7030  else if (INFILE(_TITLE_IBM_PL10)) {
7031  INTERESTING("IPL-1.0");
7032  }
7033  else if (INFILE(_TITLE_IBM_PL)) {
7034  INTERESTING("IPL");
7035  }
7036  else if (INFILE(_TITLE_OpenGroup)) {
7037  INTERESTING("OpenGroup");
7038  }
7039  else if (INFILE(_TITLE_EPL10)) {
7040  INTERESTING(lDebug ? "Eclipse(v.0#1)" : "EPL-1.0");
7041  _epl = 1;
7042  }
7043  else if (INFILE(_TITLE_EPL20)) {
7044  INTERESTING(lDebug ? "Eclipse(v.2#1)" : "EPL-2.0");
7045  _epl = 1;
7046  }
7047  else if (INFILE(_TITLE_EPL) && NOT_INFILE(_TITLE_EPL_IGNORE)) {
7048  INTERESTING(lDebug ? "Eclipse(#1)" : "EPL");
7049  _epl = 1;
7050  }
7051  else if (INFILE(_TITLE_LUCENT102)) {
7052  INTERESTING("LPL-1.02");
7053  }
7054  else if (INFILE(_TITLE_LUCENT10)) {
7055  INTERESTING("LPL-1.0");
7056  }
7057  else if (NOT_INFILE(_LT_CA)) {
7058  cp = CPLVERS();
7059  INTERESTING(lDebug ? "CPL(#1)" : cp);
7060  }
7061  }
7062  else if (INFILE(_LT_LPL_102)) {
7063  INTERESTING("LPL-1.02");
7064  }
7065  else if (!lmem[_fREAL] && INFILE(_LT_CPLref1) && NOT_INFILE(_TITLE_EPL10)) {
7066  cp = CPLVERS();
7067  INTERESTING(lDebug ? "CPL(ref)" : cp);
7068  }
7069  else if (URL_INFILE(_URL_CPL)) {
7070  cp = CPLVERS();
7071  INTERESTING(lDebug ? "CPL(url)" : cp);
7072  }
7073  else if (INFILE(_PHR_CPL_05)) {
7074  INTERESTING(lDebug ? "CPL(0.5)" : "CPL-0.5");
7075  }
7076  else if (INFILE(_PHR_CPL_10)) {
7077  INTERESTING(lDebug ? "CPL(0.5)" : "CPL-1.0");
7078  }
7079  else if (INFILE(_LT_IBM_PLref1)) {
7080  INTERESTING(lDebug ? "IBM-PL(ref)" : "IPL");
7081  }
7082  else if (URL_INFILE(_URL_IBM_PL)) {
7083  INTERESTING(lDebug ? "IBM-PL(url)" : "IPL");
7084  }
7086  /* More EPL cases */
7087  if (!_epl) {
7088  if (INFILE(_LT_EPL20ref_1)) {
7089  INTERESTING(lDebug ? "Eclipse(ref#2)" : "EPL-2.0");
7090  }
7091  else if (INFILE(_LT_EPL10ref_1) || INFILE(_LT_EPL10ref_2) || HASTEXT(_LT_EPL10ref_3, REG_EXTENDED)) {
7092  INTERESTING(lDebug ? "Eclipse(ref#2)" : "EPL-1.0");
7093  }
7094  else if (INFILE(_LT_EPLref)) {
7095  if (INFILE(_TITLE_EPL10)) {
7096  INTERESTING(lDebug ? "Eclipse(v.0#2)" : "EPL-1.0");
7097  }
7098  else if (INFILE(_TITLE_EPL20)) {
7099  INTERESTING(lDebug ? "Eclipse(v.2#2)" : "EPL-2.0");
7100  }
7101  else {
7102  INTERESTING(lDebug ? "Eclipse(#2)" : "EPL");
7103  }
7104  }
7105  else if (INFILE(_LT_EPL10ref_1)) {
7106  INTERESTING(lDebug ? "Eclipse(ref#2)" : "EPL-1.0");
7107  }
7108  else if (INFILE(_LT_EPL) && NOT_INFILE(_TITLE_EPL_IGNORE)) {
7109  if (INFILE(_TITLE_EPL10ref_1)) {
7110  INTERESTING(lDebug ? "Eclipse(v1.0#2)" : "EPL-1.0");
7111  }
7112  if (INFILE(_TITLE_EPL20ref_1)) {
7113  INTERESTING(lDebug ? "Eclipse(v1.0#2)" : "EPL-2.0");
7114  }
7115  }
7116  }
7118  /*
7119  * SyBase/Watcom
7120  */
7121  if (INFILE(_LT_SYBASE)) {
7122  if (INFILE(_TITLE_SYBASE10)) {
7123  INTERESTING("Watcom-1.0");
7124  }
7125  else {
7126  INTERESTING("Watcom");
7127  }
7128  }
7130  /*
7131  * Ricoh
7132  */
7133  if (INFILE(_LT_RICOH)) {
7134  if (INFILE(_TITLE_RICOH10)) {
7135  INTERESTING("RSCPL");
7136  }
7137  }
7139  /*
7140  * OCLC
7141  */
7142  if (INFILE(_LT_OCLC)) {
7143  if (INFILE(_TITLE_OCLC20)) {
7144  INTERESTING("OCLC-2.0");
7145  }
7146  else if (INFILE(_TITLE_OCLC10)) {
7147  INTERESTING("OCLC-1.0");
7148  }
7149  else {
7150  INTERESTING("OCLC");
7151  }
7152  }
7154  /*
7155  * Educational Community License
7156  */
7157  if (INFILE(_LT_ECL1)) {
7158  INTERESTING("ECL-1.0");
7159  lmem[_mMIT] = 1;
7160  }
7161  else if (INFILE(_LT_ECL2)) {
7162  INTERESTING("ECL-2.0");
7163  lmem[_mMIT] = 1;
7164  }
7165  else if (INFILE(_LT_ECL)) {
7166  INTERESTING(lDebug ? "ECL(1)" : "ECL-1.0");
7167  lmem[_mMIT] = 1;
7168  }
7170  /*
7171  * EU DataGrid and Condor PL
7172  */
7173  if (INFILE(_LT_EU)) {
7174  if (INFILE(_TITLE_CONDOR_V10)) {
7175  INTERESTING("Condor-1.0");
7176  } else if (INFILE(_TITLE_CONDOR_V11)) {
7177  INTERESTING("Condor-1.1");
7178  }
7179  else {
7180  INTERESTING("EUDatagrid");
7181  }
7182  }
7183  else if (URL_INFILE(_URL_EUDatagrid)) {
7184  INTERESTING("EUDatagrid");
7185  }
7187  /*
7188  * Adaptive Public License
7189  */
7190  if (INFILE(_LT_ADAPTIVE)) {
7191  if (INFILE(_TITLE_ADAPTIVE10)) {
7192  INTERESTING("APL-1.0");
7193  }
7194  else {
7195  INTERESTING("APL");
7196  }
7197  lmem[_fAPL] = 1;
7198  }
7200  /*
7201  * gSOAP Public License
7202  */
7203  if (!lmem[_mGSOAP] && INFILE(_LT_GSOAPref13)) {
7204  INTERESTING("gSOAP-1.3b");
7205  }
7206  else if (!lmem[_mGSOAP] && INFILE(_LT_GSOAPref)) {
7207  INTERESTING("gSOAP");
7208  }
7210  /*
7211  * Computer Associates
7212  */
7213  if (INFILE(_LT_CA)) {
7214  if (INFILE(_TITLE_CA11)) {
7215  INTERESTING("CATOSL-1.1");
7216  }
7217  else {
7218  INTERESTING("CA");
7219  }
7220  }
7221  else if (INFILE(_TITLE_CA)) {
7222  INTERESTING("CATOSL");
7223  }
7225  /*
7226  * Frameworx
7227  */
7228  if (INFILE(_LT_FRAMEWORX)) {
7229  if (INFILE(_TITLE_FRAMEWORX10)) {
7230  INTERESTING("Frameworx-1.0");
7231  }
7232  else {
7233  INTERESTING("Frameworx");
7234  }
7235  }
7237  /*
7238  * NASA
7239  */
7240  if (INFILE(_LT_NASA)) {
7241  if (INFILE(_TITLE_NASA13)) {
7242  INTERESTING("NASA-1.3");
7243  }
7244  else {
7245  INTERESTING("NASA");
7246  }
7247  }
7249  /*
7250  * Freetype
7251  */
7252  if (INFILE(_LT_FREETYPE)) {
7253  if (INFILE(_TITLE_CATHARON)) {
7254  INTERESTING(lDebug ? "Catharon(1)" : "Catharon");
7255  }
7256  else if (INFILE(_CR_CATHARON)) {
7257  INTERESTING(lDebug ? "Catharon(2)" : "Catharon");
7258  }
7259  else if (INFILE(_TITLE_FREETYPE)) {
7260  INTERESTING("FTL");
7261  }
7262  else {
7263  INTERESTING("FTL-style");
7264  }
7265  }
7266  else if (INFILE(_LT_FTL)) {
7267  INTERESTING("FTL");
7268  }
7269  else if (INFILE(_TITLE_FTL)|| INFILE(_SPDX_FTL)) {
7270  INTERESTING("FTL");
7271  }
7272  else if (INFILE(_LT_CATHARON)) {
7273  INTERESTING(lDebug ? "Catharon(3)" : "Catharon");
7274  }
7275  else if (INFILE(_LT_FREETYPEref)) {
7276  INTERESTING(lDebug ? "FTL(ref)" : "FTL");
7277  }
7279  /*
7280  * Eiffel Forum License
7281  */
7282  if (INFILE(_LT_EIFFEL)) {
7283  if (INFILE(_TITLE_EIFFEL2)) {
7284  INTERESTING("EFL-2.0");
7285  }
7286  else if (INFILE(_TITLE_EIFFEL1)) {
7287  INTERESTING("EFL-1.0");
7288  }
7289  else {
7290  INTERESTING("EFL");
7291  }
7292  }
7293  else if (INFILE(_LT_EIFFEL_20)) {
7294  INTERESTING("EFL-2.0");
7295  }
7296  else if (INFILE(_LT_EIFFEL_1)) {
7297  INTERESTING("EFL");
7298  }
7300  /*
7301  * BISON, Nethack, etc.
7302  */
7303  if (!lmem[_fGPL] && (INFILE(_LT_BISON) || INFILE(_LT_BISONref))) {
7304  if (INFILE(_TITLE_NETHACK)) {
7305  INTERESTING("NGPL");
7306  }
7307  else {
7308  INTERESTING("BISON");
7309  }
7310  }
7312  /*
7313  * Open Software License (OSL) and Academic Free License (AFL) are similar
7314  */
7315  if (INFILE(_LT_OSL_BAD)) {
7316  cp = (INFILE(_TITLE_AFL) ? AFLVERS() : OSLVERS());
7317  INTERESTING(lDebug? "OSL(bad)" : cp);
7318  }
7319  else if (INFILE(_LT_OSLref1)) {
7320  cp = OSLVERS();
7321  INTERESTING(lDebug? "OSL(ref1)" : cp);
7322  }
7323  else if (INFILE(_LT_OSLref2)) {
7324  cp = OSLVERS();
7325  INTERESTING(lDebug? "OSL(ref2)" : cp);
7326  }
7327  else if (INFILE(_LT_AFL)) {
7328  cp = (INFILE(_TITLE_AFL) ? AFLVERS() : OSLVERS());
7329  INTERESTING(lDebug? "AFL#1" : cp);
7330  }
7331  else if (INFILE(_TITLE_OSL21) && NOT_INFILE(_TITLE_OSL21_EXHIBIT)) {
7332  cp = OSLVERS();
7333  INTERESTING(lDebug? "OSL(T2.1)" : cp);
7334  }
7335  else if (INFILE(_TITLE_AFL21)) {
7336  cp = AFLVERS();
7337  INTERESTING(lDebug? "AFL(T2.1)" : cp);
7338  }
7339  else if (INFILE(_TITLE_OSL30) && NOT_INFILE(_TITLE_OSL30_EXHIBIT)) {
7340  cp = OSLVERS();
7341  INTERESTING(lDebug? "OSL(T3.0)" : cp);
7342  }
7343  else if (INFILE(_TITLE_AFL30)) {
7344  cp = AFLVERS();
7345  INTERESTING(lDebug? "AFL(T3.0)" : cp);
7346  }
7347  else if (INFILE(_TITLE_OSL_EARLY)) {
7348  cp = OSLVERS();
7349  INTERESTING(lDebug? "OSL(Tearly)" : cp);
7350  }
7351  else if (URL_INFILE(_URL_OSL11)) {
7352  INTERESTING(lDebug ? "OSL_v1.1(url)" : "OSL-1.1");
7353  }
7354  else if (URL_INFILE(_URL_OSL)) {
7355  INTERESTING(lDebug ? "OSL(url)" : "OSL");
7356  }
7357  else if (URL_INFILE(_URL_AFL)) {
7358  INTERESTING(lDebug ? "AFL(url)" : "AFL");
7359  }
7361  /*
7362  * There are occasions where something is licensed under *either* AFL
7363  * or OSL, so don't keep AFL-refs in the if-then-else-if chain here.
7364  */
7365  if (INFILE(_LT_AFLref1)) {
7366  cp = AFLVERS();
7367  INTERESTING(lDebug? "AFL(ref1)" : cp);
7368  }
7369  else if (INFILE(_LT_AFLref2)) {
7370  cp = AFLVERS();
7371  INTERESTING(lDebug? "AFL(ref2)" : cp);
7372  }
7374  /*
7375  * Inner Net license
7376  */
7377  if (INFILE(_LT_INNERNET)) {
7378  if (INFILE(_TITLE_INNERNET200)) {
7379  INTERESTING("InnerNet-2.00");
7380  }
7381  else if (HASTEXT(_TEXT_INNERNET, 0)) {
7382  INTERESTING("InnerNet");
7383  }
7384  else {
7385  INTERESTING("InnerNet-style");
7386  }
7387  }
7388  else if (INFILE(_LT_INNERNETref_V2)) {
7389  INTERESTING(lDebug ? "InnetNet(v2ref)" : "InnerNet-2.00");
7390  }
7392  /*
7393  * Open Government Licence
7394  */
7395  if (INFILE(_TITLE_OGL_UK)) {
7396  if (INFILE(_TITLE_OGL_UK_10)) {
7397  INTERESTING("OGL-UK-1.0");
7398  }
7399  else if (INFILE(_TITLE_OGL_UK_20)) {
7400  INTERESTING("OGL-UK-2.0");
7401  }
7402  else if (INFILE(_TITLE_OGL_UK_30)) {
7403  INTERESTING("OGL-UK-3.0");
7404  }
7405  /* Full OGL license texts have reference to Creative Commons */
7406  if (HASTEXT(_LT_CC_ref, REG_EXTENDED)) {
7407  lmem[_fCCBY] = 1;
7408  }
7409  }
7411  /*
7412  * Creative Commons Public License, Mindterm, and the Reciprocal PL
7413  */
7414  if (!lmem[_fCCBY] && HASTEXT(_LT_CC_ref, REG_EXTENDED)) {
7415  cp = CCVERS();
7416  INTERESTING(lDebug ? "CC(ref)" : cp);
7417  }
7418  else if (INFILE(_LT_CCPL)) {
7419  if (INFILE(_LT_RECIP_1) || INFILE(_LT_RECIP_2)) {
7420  if (INFILE(_TITLE_RPL15)) {
7421  INTERESTING(lDebug ? "RPL-1.5#1" : "RPL-1.5");
7422  }
7423  else if (INFILE(_TITLE_RPL11)) {
7424  INTERESTING(lDebug ? "RPL-1.1#1" : "RPL-1.1");
7425  }
7426  else if (INFILE(_TITLE_RPL10)) {
7427  INTERESTING(lDebug ? "RPL-1.0#1" : "RPL-1.0");
7428  }
7429  else {
7430  INTERESTING(lDebug ? "RPL#1" : "RPL");
7431  }
7432  }
7433  }
7434  else if (INFILE(_LT_RECIP15)) {
7435  INTERESTING("RPL-1.5");
7436  }
7437  else if (INFILE(_TITLE_MINDTERM)) {
7438  INTERESTING("MindTerm");
7439  }
7440  else if (INFILE(_LT_RECIP_1) || INFILE(_LT_RECIP_2)) {
7441  if (INFILE(_TITLE_RPL15)) {
7442  INTERESTING(lDebug ? "RPL-1.5#2" : "RPL-1.5");
7443  }
7444  else if (INFILE(_TITLE_RPL11)) {
7445  INTERESTING(lDebug ? "RPL-1.1#2" : "RPL-1.1");
7446  }
7447  else if (INFILE(_TITLE_RPL10)) {
7448  INTERESTING(lDebug ? "RPL-1.0#2" : "RPL-1.0");
7449  }
7450  else {
7451  INTERESTING(lDebug ? "RPL#2" : "RPL");
7452  }
7453  }
7454  /*
7455  * For some reason license text strings were defined for few
7456  * Creative Commons licenses.
7457  */
7458  else if (INFILE(_LT_CC_BY_SA_30)) {
7459  INTERESTING("CC-BY-SA-3.0");
7460  }
7461  else if (INFILE(_LT_CC_BY_SA_25)) {
7462  INTERESTING("CC-BY-SA-2.5");
7463  }
7464  else if (INFILE(_LT_CC_BY_NC_30)) {
7465  INTERESTING("CC-BY-NC-3.0");
7466  }
7467  else if (INFILE(_LT_CC_BY_ND_30)) {
7468  INTERESTING("CC-BY-ND-3.0");
7469  }
7470  else if (INFILE(_PHR_CC_BY_40)) {
7471  INTERESTING("CC-BY-4.0");
7472  }
7474  if (URL_INFILE(_URL_RPL)) {
7475  INTERESTING(lDebug ? "RPL(url)" : "RPL");
7476  }
7477  else if (URL_INFILE(_URL_CCLGPL)) {
7478  cp = LGPLVERS();
7479  INTERESTING(lDebug ? "CC-LGPL(url)" : cp);
7480  }
7481  else if (URL_INFILE(_URL_CCGPL)) {
7482  cp = GPLVERS();
7483  INTERESTING(lDebug ? "CC-GPL(url)" : cp);
7484  }
7486  /*
7487  * SpikeSource
7488  */
7489  if (INFILE(_CR_SPIKESOURCE) && INFILE(_LT_SPIKESOURCE)) {
7490  INTERESTING("SpikeSource");
7491  }
7493  /*
7494  * Legato systems
7495  */
7496  if (INFILE(_LT_LEGATO_1) || INFILE(_LT_LEGATO_2)) {
7497  INTERESTING("Legato");
7498  }
7500  /*
7501  * Paradigm associates
7502  */
7503  if (INFILE(_LT_PARADIGM) && INFILE(_CR_PARADIGM)) {
7504  INTERESTING("Paradigm");
7505  }
7507  /*
7508  * Wintertree Software
7509  */
7510  if (INFILE(_LT_WINTERTREE)) {
7511  INTERESTING("Wintertree");
7512  }
7514  /*
7515  * Genivia
7516  */
7517  if (INFILE(_LT_GENIVIAref)) {
7518  INTERESTING("Genivia.Commercial");
7519  }
7521  /*
7522  * Open Directory License
7523  */
7524  if (INFILE(_LT_ODL)) {
7525  INTERESTING("ODL");
7526  }
7528  /*
7529  * Open Directory License
7530  */
7531  if (INFILE(_LT_OSD)) {
7532  INTERESTING("OSD");
7533  }
7535  /*
7536  * Zveno
7537  */
7538  if (INFILE(_LT_ZVENO) && INFILE(_CR_ZVENO)) {
7539  INTERESTING("Zveno");
7540  }
7542  /*
7543  * Brainstorm
7544  */
7545  if (INFILE(_LT_BRAINSTORM_EULA) && INFILE(_TITLE_BRAINSTORM_EULA)) {
7546  INTERESTING("BrainStorm-EULA");
7547  }
7549  /*
7550  * AOL
7551  */
7552  if (INFILE(_LT_AOL_EULA)) {
7553  INTERESTING("AOL-EULA");
7554  }
7556  /*
7557  * Algorithmics
7558  */
7559  if (INFILE(_LT_ALGORITHMICS)) {
7560  INTERESTING("Algorithmics");
7561  }
7563  /*
7564  * Pixware
7565  */
7566  if (INFILE(_LT_PIXWARE_EULA)) {
7567  INTERESTING("Pixware-EULA");
7568  }
7570  /*
7571  * Compuserve
7572  */
7573  if (HASTEXT(_TEXT_COMPUSERVE, 0) && INFILE(_LT_COMPUSERVE)) {
7574  INTERESTING("CompuServe");
7575  }
7577  /*
7578  * Advanved Micro Devices (AMD)
7579  */
7580  if (INFILE(_LT_AMDPLPA) || INFILE(_LT_AMDPLPA_2)) {
7581  INTERESTING("AMDPLPA");
7582  }
7583  else if (INFILE(_LT_RADEON_FIRM) || INFILE(_LT_RADEON_FIRM_2)) {
7584  INTERESTING("Radeon-rlx");
7585  }
7586  else if (INFILE(_LT_AMD_SEV) || INFILE(_LT_AMD_SEV_2) || INFILE(_TITLE_AMD_SEV)) {
7587  INTERESTING("AMD-SEV");
7588  }
7589  else if (INFILE(_LT_AMD)) {
7590  INTERESTING("AMD");
7591  }
7592  else if (INFILE(_LT_AMD_EULA) && INFILE(_TITLE_AMD_EULA)) {
7593  INTERESTING("AMD-EULA");
7594  }
7596  /*
7597  * Acki Nacki Gossip Igniter (ANGI) License
7598  */
7599  if (INFILE(_LT_ANGI) || INFILE(_LT_ANGI_2)) {
7600  INTERESTING("ANGI");
7601  }
7603  /*
7604  * OMRON Corp
7605  */
7606  if ((INFILE(_CR_OMRON_1) || INFILE(_CR_OMRON_2)) &&
7607  (INFILE(_LT_OMRON1) || INFILE(_LT_OMRON2))) {
7608  INTERESTING(lDebug ? "OMRON(2)" : "OMRON");
7609  }
7611  /*
7612  * MetroLink
7613  */
7614  if (INFILE(_TITLE_METROLINK)) {
7615  if (INFILE(_LT_METRO)) {
7616  if (INFILE(_LT_METRO_NONFREE)) {
7617  INTERESTING("MetroLink-nonfree");
7618  }
7619  else {
7620  INTERESTING("MetroLink");
7621  }
7622  }
7623  }
7624  else if (INFILE(_LT_METROLINKref)) {
7625  INTERESTING(lDebug ? "MetroLink(ref)" : "MetroLink");
7626  }
7628  /*
7629  * University of Edinburgh (and a CMU derivative)
7630  */
7631  if (INFILE(_LT_EDINBURGH_1)) {
7632  if (mCR_CMU()) {
7633  INTERESTING(lDebug ? "CMU(3)" : "CMU");
7634  lmem[_mCMU] = 1;
7635  }
7636  else if (mCR_EDIN()) {
7637  INTERESTING(lDebug ? "U-Edinburgh(1)" : "U-Edinburgh");
7638  }
7639  else {
7640  INTERESTING(lDebug ? "UE-style(1)" : "U-Edinburgh-style");
7641  }
7642  }
7643  else if (INFILE(_LT_EDINBURGH_2)) {
7644  if (mCR_EDIN()) {
7645  INTERESTING(lDebug ? "U-Edinburgh(2)" : "U-Edinburgh");
7646  }
7647  else {
7648  INTERESTING(lDebug ? "UE-style(2)" : "U-Edinburgh-style");
7649  }
7650  }
7652  /*
7653  * Older CMU (including the weird "fnord" text) licenses.
7654  * Note that SPDX listed MIT-CMU license is detected earlier.
7655  */
7656  if (!lmem[_mCMU] && INFILE(_LT_CMU_1)) {
7657  if (!lmem[_mREDHAT] && INFILE(_CR_REDHAT)) {
7658  INTERESTING(lDebug ? "RH(5)" : "RedHat");
7659  lmem[_mREDHAT] = 1;
7660  }
7661  else if (INFILE(_CR_NRL)) {
7662  INTERESTING("NRL");
7663  }
7664  else if (!lmem[_mCMU] && mCR_CMU()) {
7665  INTERESTING(lDebug ? "CMU(5)" : "CMU");
7666  lmem[_mCMU] = 1;
7667  }
7668  else {
7669  INTERESTING("CMU-style");
7670  lmem[_mCMU] = 1;
7671  }
7672  }
7673  else if (!lmem[_mCMU] && INFILE(_LT_CMU_2) && mCR_CMU()) {
7674  INTERESTING(lDebug ? "CMU(6)" : "CMU");
7675  lmem[_mCMU] = 1;
7676  }
7677  else if (INFILE(_LT_CMU_3)) {
7678  INTERESTING(lDebug ? "CMU(7)" : "CMU");
7679  lmem[_mCMU] = 1;
7680  }
7681  else if (INFILE(_LT_CMU_4)) {
7682  INTERESTING(lDebug ? "CMU(8)" : "CMU");
7683  lmem[_mCMU] = 1;
7684  }
7685  else if (INFILE(_LT_CMU_5)) {
7686  INTERESTING(lDebug ? "CMU(9)" : "CMU");
7687  lmem[_mCMU] = 1;
7688  }
7689  else if (INFILE(_LT_CMU_6)) {
7690  INTERESTING(lDebug ? "CMU(10)" : "CMU");
7691  lmem[_mCMU] = 1;
7692  }
7694  /*
7695  * University of Chicago
7696  */
7697  if (INFILE(_CR_UCHICAGO) && INFILE(_LT_UCHICAGO)) {
7698  INTERESTING("U-Chicago");
7699  }
7701  /*
7702  * University of Utah
7703  */
7704  if (INFILE(_CR_UUTAH) && INFILE(_LT_UUTAH)) {
7705  INTERESTING("U-Utah");
7706  }
7708  /*
7709  * University of British Columbia
7710  */
7711  if (INFILE(_CR_UBC) && INFILE(_LT_UBC)) {
7712  INTERESTING("U-BC");
7713  }
7715  /*
7716  * ImageMagick Studios - DON'T RECALL THE TEXT FOR THIS LICENSE!
7717  */
7718  if (INFILE(_LT_IMAGEMAGICK)) {
7719  if (INFILE(_CR_IMAGEMAGICK)) {
7720  INTERESTING("ImageMagick");
7721  }
7722  else {
7723  INTERESTING("ImageMagick-style");
7724  }
7725  }
7726  else if (URL_INFILE(_URL_IMAGEMAGICK)) {
7727  INTERESTING(lDebug ? "ImageMagick(url)" : "ImageMagick");
7728  }
7730  /*
7731  * Riverbank
7732  */
7733  if (INFILE(_LT_RIVERBANK) && INFILE(_TITLE_RIVERBANK_EULA)) {
7734  INTERESTING("Riverbank-EULA");
7735  }
7737  /*
7738  * Polyserve
7739  */
7740  if (INFILE(_CR_POLYSERVE) && INFILE(_LT_POLYSERVE)) {
7741  INTERESTING("Polyserve-CONFIDENTIAL");
7742  }
7744  /*
7745  * Fujitsu Limited
7746  */
7747  if (INFILE(_CR_FUJITSU) && INFILE(_LT_FUJITSU)) {
7748  INTERESTING("Fujitsu");
7749  }
7751  /*
7752  * Cypress Semiconductor
7753  */
7754  if (INFILE(_CR_CYPRESS) && INFILE(_LT_CYPRESS)) {
7755  INTERESTING("Cypress-FW");
7756  }
7757  /*
7758  * Keyspan
7759  */
7760  else if (INFILE(_CR_KEYSPAN) && INFILE(_LT_KEYSPAN)) {
7761  INTERESTING("Keyspan-FW");
7762  }
7763  /*
7764  * ATMEL
7765  */
7766  else if (INFILE(_LT_ATMEL_LINUX_FW) && INFILE(_LT_ATMEL_LINUX_FW_2)) {
7767  INTERESTING("Atmel-linux-firmware");
7768  }
7769  else if (INFILE(_CR_ATMEL) && INFILE(_LT_ATMEL)) {
7770  INTERESTING("ATMEL-FW");
7771  }
7773  /*
7774  * Quest Software
7775  */
7776  if (INFILE(_LT_QUEST_EULA) && INFILE(_TITLE_QUEST_EULA)) {
7777  INTERESTING("Quest-EULA");
7778  }
7780  /*
7781  * International Organization for Standarization
7782  */
7783  if (INFILE(_LT_IOS) && INFILE(_CR_IOS)) {
7784  INTERESTING("IOS");
7785  }
7787  /*
7788  * Garmin Ltd.
7789  */
7790  if (INFILE(_LT_GARMIN_EULA) && INFILE(_TITLE_GARMIN_EULA)) {
7791  INTERESTING("Garmin-EULA");
7792  }
7794  /*
7795  * AVM GmbH
7796  */
7797  if (INFILE(_CR_AVM)) {
7798  if (INFILE(_LT_AVM_1)) {
7799  INTERESTING(lDebug ? "AVM(1)" : "AVM");
7800  }
7801  else if (INFILE(_LT_AVM_2)) {
7802  INTERESTING(lDebug ? "AVM(2)" : "AVM");
7803  }
7804  }
7805  else if (INFILE(_LT_AVM_3)) {
7806  INTERESTING(lDebug ? "AVM(3)" : "AVM");
7807  }
7809  /*
7810  * Fair license
7811  */
7812  if (INFILE(_LT_FAIR)) {
7813  if (INFILE(_TITLE_FAIR)) {
7814  INTERESTING("Fair");
7815  }
7816  else {
7817  INTERESTING("Fair-style");
7818  }
7819  }
7821  /*
7822  * GCA (Majordomo)
7823  */
7824  if (INFILE(_LT_GCA)) {
7825  if (INFILE(_TITLE_MAJORDOMO11)) {
7826  INTERESTING("Majordomo-1.1");
7827  }
7828  else {
7829  INTERESTING("Majordomo");
7830  }
7831  }
7833  /*
7834  * Zeus Technology -- this one is kind of a corner-case since the wording
7835  * is VERY general. If there's a Zeus copyright with the license text,
7836  * spell it out; else, look for the same text in the "generic" section.
7837  */
7838  if (INFILE(_CR_ZEUS) && INFILE(_LT_ZEUS)) {
7839  INTERESTING("Zeus");
7840  }
7842  /*
7843  * Information-technology promotion agency
7844  */
7845  if (!lmem[_mXOPEN] && INFILE(_LT_XOPEN_1)) {
7846  if (!lmem[_mOSF] && INFILE(_CR_OSF)) {
7847  INTERESTING(lDebug ? "OSF(2)" : "OSF");
7848  lmem[_mOSF] = 1;
7849  }
7850  else if (INFILE(_CR_UI)) {
7851  INTERESTING(lDebug ? "UI(2)" : "Unix-Intl");
7852  }
7853  else if (INFILE(_CR_XOPEN)) {
7854  INTERESTING(lDebug ? "XOpen(2)" : "X/Open");
7855  lmem[_mXOPEN] = 1;
7856  }
7857  else if (INFILE(_CR_IPA)) {
7858  INTERESTING("IPA");
7859  }
7860  else if (!lmem[_mSUN] && INFILE(_CR_SUN)) {
7861  INTERESTING(lDebug ? "Sun(10)" : "Sun");
7862  lmem[_mSUN] = 1;
7863  }
7864  else {
7865  INTERESTING("X/Open-style");
7866  }
7867  }
7868  /* This one is funky - it includes part of the copyright */
7869  else if (!lmem[_mXOPEN] && INFILE(_LT_XOPEN_2)) {
7870  INTERESTING(lDebug ? "XOpen(3)" : "X/Open");
7871  lmem[_mXOPEN] = 1;
7872  }
7874  /*
7875  * Interlink networks EULA (seen in HP proprietary code)
7876  */
7877  if (INFILE(_LT_INTERLINK_EULA) && INFILE(_TITLE_INTERLINK_EULA)) {
7878  INTERESTING("Interlink-EULA");
7879  }
7881  /*
7882  * Mellanox Technologies
7883  */
7884  if (INFILE(_LT_MELLANOX) && INFILE(_CR_MELLANOX)) {
7885  INTERESTING("Mellanox");
7886  }
7888  /*
7889  * nCipher Corp
7890  */
7891  if (INFILE(_LT_NCIPHER) && INFILE(_CR_NCIPHER)) {
7892  INTERESTING("nCipher");
7893  }
7895  /*
7896  * Distributed Processing Technology Corp
7897  */
7898  if (INFILE(_CR_DPTC) && INFILE(_LT_DPTC)) {
7899  INTERESTING("DPTC");
7900  }
7901  /*
7902  * Distributed Management Task Force
7903  */
7904  else if (HASTEXT(_TEXT_REPRODUCED, 0) && INFILE(_CR_DMTF) &&
7905  INFILE(_LT_DMTF)) {
7906  INTERESTING("DMTF");
7907  lmem[_fATTRIB] = 1;
7908  }
7910  /*
7911  * DSC Technologies Corp
7912  */
7913  if (INFILE(_CR_DSCT) && INFILE(_LT_DSCT)) {
7914  INTERESTING("DSCT");
7915  }
7917  /*
7918  * Epinions, Inc.
7919  */
7920  if (INFILE(_CR_EPINIONS) && INFILE(_LT_EPINIONS)) {
7921  INTERESTING("Epinions");
7922  }
7924  /*
7925  * MITEM, Ltd
7926  */
7927  if (INFILE(_CR_MITEM) && INFILE(_LT_MITEM)) {
7928  INTERESTING("MITEM");
7929  }
7931  /*
7932  * Cylink corp
7933  */
7934  if ((INFILE(_LT_CYLINK_ISC_1) || INFILE(_LT_CYLINK_ISC_2))) {
7935  INTERESTING("Cylink-ISC");
7936  }
7938  /*
7939  * SciTech software
7940  */
7941  if (INFILE(_CR_SCITECH) && INFILE(_LT_SCITECH)) {
7942  INTERESTING("SciTech");
7943  }
7945  /*
7946  * OReilly and Associates
7947  */
7948  if (INFILE(_LT_OREILLY_1)) {
7949  if (INFILE(_CR_OREILLY)) {
7950  INTERESTING("OReilly");
7951  }
7952  else {
7953  INTERESTING("OReilly-style");
7954  }
7955  }
7956  else if (INFILE(_LT_OREILLY_2)) {
7957  if (INFILE(_CR_OREILLY)) {
7958  INTERESTING(lDebug ? "OReilly-2" : "OReilly");
7959  }
7960  else {
7961  INTERESTING(lDebug ? "OReilly-st-2" : "OReilly-style");
7962  }
7963  }
7965  /*
7966  * Bit-Torrent
7967  */
7968  if (INFILE(_LT_BITTORRENT)) {
7969  if (INFILE(_TITLE_BITTORRENT11)) {
7970  INTERESTING("BitTorrent-1.1");
7971  }
7972  else if (INFILE(_TITLE_BITTORRENT10)) {
7973  INTERESTING("BitTorrent-1.0");
7974  }
7975  else {
7976  INTERESTING("BitTorrent");
7977  }
7978  }
7979  else if (INFILE(_LT_BITTORRENT_V11)) {
7980  INTERESTING("BitTorrent-1.1");
7981  }
7982  else if (INFILE(_LT_BITTORRENT_V10)) {
7983  INTERESTING("BitTorrent-1.0");
7984  }
7985  else if (INFILE(_LT_BITTORRENTref)) {
7986  INTERESTING(lDebug ? "BitTorrent(ref)" : "BitTorrent");
7987  }
7989  /*
7990  * Open Software Foundation
7991  */
7992  if (INFILE(_LT_OSF_1)) {
7993  if (INFILE(_CR_OSF)) {
7994  INTERESTING(lDebug ? "OSF(3)" : "OSF");
7995  lmem[_mOSF] = 1;
7996  }
7997  else {
7998  INTERESTING(lDebug ? "OSF-style(1)" : "OSF-style");
7999  }
8000  }
8001  else if (INFILE(_LT_OSF_2)) {
8002  if (INFILE(_CR_OSF)) {
8003  INTERESTING(lDebug ? "OSF(4)" : "OSF");
8004  lmem[_mOSF] = 1;
8005  }
8006  else if (INFILE(_LT_CMU_8)) {
8007  INTERESTING(lDebug ? "CMU(11)" : "CMU");
8008  }
8009  else {
8010  INTERESTING(lDebug ? "OSF-style(2)" : "OSF-style");
8011  }
8012  }
8014  /*
8015  * OpenLDAP (if not already determined above -- the OpenLDAP public license
8016  * borrows text from LOTS of different sources)
8017  */
8018  if (!lmem[_fBSD] && lmem[_tOPENLDAP] && !lmem[_fOPENLDAP]) {
8019  if (INFILE(_LT_OPENLDAP_1)) {
8020  if (!TRYGROUP(famOPENLDAP)) {
8021  INTERESTING("OLDAP-style");
8022  }
8023  }
8024  else if (INFILE(_LT_OPENLDAP_2)) {
8025  INTERESTING("OLDAP");
8026  }
8027  else {
8028  (void) TRYGROUP(famOPENLDAP);
8029  }
8030  }
8032  /*
8033  * The Knuth license is sufficiently bizarre enough it belongs down here,
8034  * towards the end of the search
8035  *****
8036  * Lachman Associates - includes a proprietary-to-the-max paragraph
8037  * IoSoft Ltd.
8038  */
8039  if (INFILE(_CR_KNUTH) && INFILE(_LT_KNUTH_1)) {
8040  INTERESTING(lDebug ? "Knuth(1)" : "D.E.Knuth");
8041  }
8042  else if (INFILE(_LT_KNUTH_2)) {
8043  INTERESTING(lDebug ? "Knuth(2)" : "D.E.Knuth");
8044  }
8045  else if (INFILE(_LT_KNUTH_STYLE)) {
8046  INTERESTING("Knuth-style");
8047  }
8048  else if (INFILE(_LT_LACHMAN_SECRET)) {
8049  INTERESTING("Lachman-Proprietary");
8050  }
8051  else if (INFILE(_LT_IOSOFT_SRCONLY)) {
8052  INTERESTING("IoSoft.COMMERCIAL");
8053  }
8055  /*
8056  * The Free Software License
8057  */
8058  if (INFILE(_LT_FREE_SW)) {
8059  INTERESTING("Free-SW");
8060  }
8061  /*
8062  * NOT free software and explicitly free software
8063  */
8064  else if (INFILE(_PHR_NOT_FREE_SW)) {
8065  if (INFILE(_LT_NOT_FREE) && INFILE(_CR_WTI)) {
8066  INTERESTING("WTI.Not-free");
8067  }
8068  else {
8069  INTERESTING("Not-Free");
8070  }
8071  }
8073  /*
8074  * Code Project Open License
8075  */
8076  if (INFILE(_LT_CPOL)) {
8077  if (HASTEXT(_LT_CPOL_V102, REG_EXTENDED)) {
8078  INTERESTING("CPOL-1.02");
8079  } else {
8080  INTERESTING("CPOL");
8081  }
8082  }
8084  /*
8085  * Macrovision
8086  */
8087  if (INFILE(_LT_MACROV_IA) && INFILE(_PHR_MACROVISION)) {
8088  if (INFILE(_PHR_EULA)) {
8089  INTERESTING("Macrovision-EULA");
8090  }
8091  else {
8092  INTERESTING("Macrovision");
8093  }
8094  }
8096  /*
8097  * VMware
8098  */
8099  if (INFILE(_LT_VMWARE) && INFILE(_TITLE_VMWARE)) {
8100  INTERESTING("VMware-EULA");
8101  }
8103  /*
8104  * UCWARE.com
8105  */
8106  if (INFILE(_LT_UCWARE_EULA_1) || INFILE(_LT_UCWARE_EULA_2)) {
8107  INTERESTING("UCWare-EULA");
8108  }
8110  /*
8111  * InfoSeek Corp
8112  */
8113  if (INFILE(_LT_INFOSEEK) && INFILE(_CR_INFOSEEK)) {
8114  INTERESTING("InfoSeek");
8115  }
8117  /*
8118  * Trident Microsystems
8119  */
8120  if (INFILE(_LT_TRIDENT_EULA) && INFILE(_CR_TRIDENT)) {
8121  INTERESTING("Trident-EULA");
8122  }
8124  /*
8125  * ARJ Software Inc
8126  */
8127  if (INFILE(_LT_ARJ) && INFILE(_CR_ARJ)) {
8128  INTERESTING("ARJ");
8129  }
8131  /*
8132  * ArgoUML license (UC Regents, research-purposes clause)
8133  */
8134  if (INFILE(_LT_ARGOUML) || INFILE(_LT_ARGOUML_2)) {
8135  INTERESTING("ArgoUML");
8136  }
8138  /*
8139  * Piriform Ltd
8140  */
8141  if (INFILE(_LT_PIRIFORM) && INFILE(_CR_PIRIFORM)) {
8142  INTERESTING("Piriform");
8143  }
8145  /*
8146  * Design Science License (DSL)
8147  */
8148  if (INFILE(_LT_DSL)) {
8149  INTERESTING("DSL");
8150  }
8152  /*
8153  * Skype
8154  */
8155  if (INFILE(_TITLE_SKYPE) && INFILE(_LT_SKYPE)) {
8156  INTERESTING("Skype-EULA");
8157  }
8159  /*
8160  * Hauppauge
8161  */
8162  if (INFILE(_LT_HAUPPAUGE)) {
8163  INTERESTING("Hauppauge");
8164  }
8166  /*
8167  * Platform Computing Corp (or a generic on-your-intranet-only restriction)
8168  */
8169  if (INFILE(_LT_INTRANET_ONLY)) {
8170  if (INFILE(_CR_PLATFORM_COMP)) {
8171  INTERESTING(lDebug ? "Platfm(1)" : "Platform-Computing(RESTRICTED)");
8172  } else {
8173  MEDINTEREST("Intranet-only");
8174  }
8175  } else if (INFILE(_LT_NOT_INTERNET)) {
8176  if (INFILE(_CR_PLATFORM_COMP)) {
8177  INTERESTING(lDebug ? "Platfm(2)" : "Platform-Computing(RESTRICTED)");
8178  } else {
8179  MEDINTEREST("Not-Internet");
8180  }
8181  }
8183  /*
8184  * Curl
8185  */
8186  if (URL_INFILE(_URL_CURL)) {
8187  INTERESTING(lDebug ? "Curl(URL)" : "curl");
8188  }
8190  /*
8191  * ID Software
8192  */
8193  if (INFILE(_LT_ID_EULA)) {
8194  INTERESTING("ID-EULA");
8195  }
8197  /*
8198  * M+ Fonts Project
8199  */
8200  if (INFILE(_LT_MPLUS_FREE_FONT) && INFILE(_CR_MPLUS)) {
8201  INTERESTING("M-Plus-Project");
8202  }
8204  /*
8205  * Powder Development
8206  */
8207  if (INFILE(_LT_POWDER)) {
8208  INTERESTING("Powder-Proprietary");
8209  }
8211  /*
8212  * Against DRM
8213  */
8214  if (INFILE(_LT_AGAINST_DRM)) {
8215  INTERESTING("AgainstDRM");
8216  }
8218  /*
8219  * The TeXinfo exception clause
8220  */
8221  if (INFILE(_LT_TEX_EXCEPT)) {
8222  INTERESTING(lDebug ? "TeX-except" : "TeX-exception");
8223  }
8225  /*
8226  * The U.S. Gummint
8227  */
8228  if (INFILE(_LT_USGOVT_1)) {
8229  if (INFILE(_CR_URA)) {
8230  MEDINTEREST("URA.govt");
8231  }
8232  else {
8233  MEDINTEREST(lDebug ? "Govt-Wk(1)" : "Govt-work");
8234  }
8235  }
8236  else if (INFILE(_LT_USGOVT_2)) {
8237  /*
8238  * mpich2
8239  */
8240  if (INFILE(_LT_MPICH2)) {
8241  INTERESTING("mpich2");
8242  }
8243  else {
8244  MEDINTEREST(lDebug ? "Govt-Wk(2)" : "Govt-work");
8245  }
8246  }
8247  else if (INFILE(_LT_USGOVT_RIGHTS1) && INFILE(_LT_PUBLIC)) {
8248  MEDINTEREST(lDebug ? "US-Govt(1)" : "Govt-rights");
8249  }
8250  else if (INFILE(_LT_USGOVT_RIGHTS2)) {
8251  MEDINTEREST(lDebug ? "US-Govt(2)" : "Govt-rights");
8252  }
8254  /*
8255  * AACA (Ada Conformity Assessment Authority)
8256  */
8257  if (INFILE(_LT_ACAA_RIGHTS) && INFILE(_LT_PUBLIC)) {
8258  INTERESTING("ACAA");
8259  }
8261  /*
8262  * Zend Engine License
8263  */
8264  if (INFILE(_LT_ZEND_1) || URL_INFILE(_URL_ZEND)) {
8265  INTERESTING("Zend-2.0");
8266  }
8267  else if (INFILE(_LT_ZEND_2)) {
8268  INTERESTING("Zend-1.0");
8269  }
8271  /*
8272  * WebM
8273  * Changed to BSD-3-Clause, WebM is not OSI nor SPDX recognized license
8274  */
8275  if (URL_INFILE(_URL_WEBM)) {
8276  INTERESTING(lDebug ? "WebM" : "BSD-3-Clause");
8277  }
8279  /* Dyade Public License
8280  * http://old.koalateam.com/jackaroo/DYADE_PUBLIC_LICENSE.TXT
8281  */
8282  if (INFILE(_LT_DYADE) && INFILE(_LT_DYADE_2))
8283  {
8284  INTERESTING("Dyade");
8285  }
8286  /*
8287  * Zimbra
8288  */
8289  if (INFILE(_TITLE_ZIMBRA_13)) {
8290  INTERESTING("Zimbra-1.3");
8291  }
8292  else if (INFILE(_TITLE_ZIMBRA_12)) {
8293  INTERESTING("Zimbra-1.2");
8294  }
8295  else if (INFILE(_TITLE_ZIMBRA)) {
8296  INTERESTING("Zimbra");
8297  }
8299  /*
8300  * Open Database
8301  */
8302  if (INFILE(_TITLE_ODBL)) {
8303  INTERESTING("ODbL-1.0");
8304  lmem[_fODBL] = 1;
8305  }
8307  /*
8308  * Multics
8309  */
8310  if (INFILE(_LT_MULTICS)) {
8311  INTERESTING("Multics");
8312  }
8314  /*
8315  * H2
8316  * Note, H2 title is also checked in MPL section
8317  */
8318  if (INFILE(_TITLE_H2_V10)) {
8319  INTERESTING("H2-1.0");
8320  }
8322  /*
8323  * CRYPTOGAMS
8324  */
8325  if (INFILE(_LT_CRYPTOGAMS)) {
8326  INTERESTING("Cryptogams");
8327  }
8329  /*
8330  * Cygnus-eCos-1.0
8331  * Note, Cygnus-eCos title is also checked in MPL section
8332  */
8333  if (INFILE(_TITLE_CYGNUS_ECOS_V10)) {
8334  INTERESTING("Cygnus-eCos-1.0");
8335  }
8337  /*
8338  * RHeCos-1.1
8339  * Note, RHeCos-1.1 title is also checked in MPL section
8340  */
8341  if (INFILE(_TITLE_RHeCos_V11)) {
8342  INTERESTING("RHeCos-1.1");
8343  }
8345  /*
8346  * TMate
8347  * Note, TMate is also recognized with BSD-2-Clause detection
8348  */
8349  if (INFILE(_TITLE_TMATE)) {
8350  INTERESTING("TMate");
8351  }
8353  /*
8354  * Abstyles
8355  */
8356  if (INFILE(_LT_ABSTYLES_1) && INFILE(_LT_ABSTYLES_2)) {
8357  INTERESTING("Abstyles");
8358  }
8360  if (INFILE(_LT_ABRS)) {
8361  INTERESTING("ABRS");
8362  }
8364  if (INFILE(_LT_ANDRE_ADRIAN_DFS) || INFILE(_LT_ANDRE_ADRIAN_DFS_2)) {
8365  INTERESTING("Andre-Adrian-DFS");
8366  }
8368  if (INFILE(_LT_ACTIVESTATE) || INFILE(_TITLE_ACTIVESTATE)) {
8369  INTERESTING("ActiveState-Community");
8370  }
8372  /*
8373  * Amazon Digital Services License
8374  */
8375  if (INFILE(_LT_ADSL) && (INFILE(_CR_AMAZON) || HASTEXT(_TEXT_AMAZON_DIG, REG_ICASE))) {
8376  INTERESTING("ADSL");
8377  }
8379  /*
8380  * CrystalStacker License
8381  */
8382  if (HASTEXT(_LT_CRYSTALSTACKER, REG_EXTENDED)) {
8383  INTERESTING("CrystalStacker");
8384  }
8386  /*
8387  * 3GPP
8388  */
8389  if (INFILE(_LT_3GPP)) {
8390  INTERESTING("3GPP");
8391  }
8393  /*
8394  * ITU-T
8395  */
8396  if (INFILE(_LT_ITU_T_1) || INFILE(_LT_ITU_T_2) || HASTEXT(_TITLE_ITU_T, 0)) {
8397  INTERESTING("ITU-T");
8398  }
8400  /*
8401  * Sun Public License
8402  */
8403  if (!lmem[_mSUN] && !lmem[_mMPL]) {
8404  if (INFILE(_TITLE_SUN_PL10)) {
8405  INTERESTING("SPL-1.0");
8406  }
8407  else if (!lmem[_fREAL] && INFILE(_TITLE_SUN_PL)) {
8408  INTERESTING("SPL");
8409  }
8410  }
8412  /*
8413  * libtiff, note that license text is detected earlier
8414  */
8415  if (INFILE(_PHR_LIBTIFF)) {
8416  INTERESTING("libtiff");
8417  }
8419  /*
8420  * Imlib2
8421  */
8422  if (INFILE(_PHR_Imlib2)) {
8423  INTERESTING("Imlib2");
8424  }
8426  /*
8427  * Wide Open License (WOL)
8428  */
8429  if (INFILE(_TITLE_WOL) || INFILE(_URL_WOL)) {
8430  INTERESTING("WOL");
8431  }
8433  /*
8434  * naist-2003
8435  */
8436  if (INFILE(_LT_NAIST_2003) && HASTEXT(_TEXT_NAIST, 0)) {
8437  INTERESTING("naist-2003");
8438  }
8440  /*
8441  * EDL-1.0
8442  */
8443  if (INFILE(_TITLE_EDL_V10)) {
8444  INTERESTING("EDL-1.0");
8445  }
8447  /*
8448  * HSQLDB
8449  */
8450  if (INFILE(_LT_HSQLDB_1) || INFILE(_LT_HSQLDB_2) || INFILE(_LT_HSQLDB_3)) {
8451  INTERESTING("HSQLDB");
8452  }
8454  /*
8455  * Sony Computer Entertainment (SCEA) Shared Source License
8456  */
8457  if (INFILE(_TITLE_SCEA)) {
8458  INTERESTING("SCEA");
8459  }
8461  /*
8462  * OpenMap
8463  */
8464  if (INFILE(_TITLE_OPENMAP)) {
8465  INTERESTING("OpenMap");
8466  lmem[_fPDDL] = 1;
8467  }
8469  /*
8470  * ICU 1.8.1
8471  */
8472  if (INFILE(_LT_ICU_1) || INFILE(_TITLE_ICU) || INFILE(_SPDX_ICU)) {
8473  INTERESTING("ICU");
8474  }
8475  else if (INFILE(_PHR_ICU_1)) {
8476  INTERESTING("ICU");
8477  }
8479  /*
8480  * Ubuntu Font License
8481  */
8482  if (INFILE(_TITLE_UBUNTU_FONT)) {
8483  INTERESTING("ubuntu-font-1.0");
8484  lmem[_fPDDL] = 1;
8485  }
8487  /*
8488  * ODC Attribution License
8489  */
8490  if (INFILE(_LT_ODC)) {
8491  INTERESTING("ODC-By-1.0");
8492  pd = 0;
8493  }
8495  /*
8496  * Community Data License Agreement
8497  */
8498  if (INFILE(_TITLE_CDLA_Permissive_10)) {
8499  INTERESTING("CDLA-Permissive-1.0");
8500  }
8501  else if (INFILE(_TITLE_CDLA_Sharing_10)) {
8502  INTERESTING("CDLA-Sharing-1.0");
8503  }
8505  /*
8506  * Toolbar2000
8507  */
8508  if (INFILE(_TITLE_Toolbar2000) || INFILE(_URL_Toolbar2000)) {
8509  INTERESTING("Toolbar2000");
8510  }
8512  /*
8513  * unboundID-ldap-sdk
8514  */
8515  if (INFILE(_TITLE_unboundID_ldap_sdk) || INFILE(_LT_unboundID_ldap_sdk)) {
8516  INTERESTING("unboundID-ldap-sdk");
8517  }
8519  /*
8520  * BlueOak-1.0.0
8521  */
8522  if (INFILE(_TITLE_BlueOak_100) || URL_INFILE(_URL_BlueOak_100)) {
8523  INTERESTING("BlueOak-1.0.0");
8524  }
8525  else if (INFILE(_LT_BlueOak_100_Purpose) && INFILE(_LT_BlueOak_100_Acceptance)) {
8526  INTERESTING("BlueOak-1.0.0");
8527  }
8529  /*
8530  * CERN-OHL
8531  */
8532  if (INFILE(_TITLE_CERN_OHL_11)) {
8533  INTERESTING("CERN-OHL-1.1");
8534  }
8535  else if (INFILE(_TITLE_CERN_OHL_12)) {
8536  INTERESTING("CERN-OHL-1.2");
8537  }
8539  /*
8540  * MulanPSL
8541  */
8542  if (INFILE(_TITLE_MulanPSL_10) || URL_INFILE(_URL_MulanPSL) || INFILE(_LT_MulanPSL_10)) {
8543  INTERESTING("MulanPSL-1.0");
8544  }
8546  /*
8547  * SSH
8548  */
8549  if (INFILE(_LT_FREE_72) && HASTEXT(_LT_SSH, REG_EXTENDED)) {
8550  if (INFILE(_LT_SSH_OpenSSH)) {
8551  INTERESTING("SSH-OpenSSH");
8552  }
8553  else {
8554  INTERESTING("SSH-short");
8555  }
8556  }
8558 
8559  SPDXREF();
8561  EXCEPTIONS();
8563 
8564  /*
8565  * The Stallman paper "Why Software Should Be Free" is a red-herring.
8566  * His 1986 interview in Byte magazine also is, too.
8567  */
8568  if ((INFILE(_TITLE_RMS_WSSBF) && INFILE(_PHR_RMS1) &&
8569  INFILE(_PHR_RMS2)) || INFILE(_TITLE_RMS_BYTE86)) {
8570  if (lDiags) {
8571  printf("... RMS propaganda\n");
8572  }
8573  lmem[_fDOC] = 1;
8574  }
8576  /*
8577  * If there's a no-warranty statement in the file, remember the regex.
8578  * Ditto for phrase stating restrictions.
8579  */
8580  if (maxInterest != IL_HIGH) {
8581  for (i = 0; i < NNOWARRANTY; i++) {
8582  if (INFILE((j = _NO_WARRANTY_first+i))) {
8583  nw = j;
8584  break;
8585  }
8586  }
8587  }
8588  addLicence(cur.theMatches,"NoWarranty");
8589 
8590  /*
8591  * Statements about IP (Intellectual Property) rights
8592  */
8593  if (!lmem[_fIP] && INFILE(_LT_GEN_IP_1)) {
8594  INTERESTING(lDebug ? "IP(1)" : "IP-claim");
8595  }
8596  else if (!lmem[_fIP] && INFILE(_LT_GEN_IP_2) && NOT_INFILE(_TITLE_MIROS)) {
8597  INTERESTING(lDebug ? "IP(2)" : "IP-claim");
8598  }
8599  else if (!lmem[_fIP] && INFILE(_LT_GEN_IP_3)) {
8600  INTERESTING(lDebug ? "IP(3)" : "IP-claim");
8601  }
8603  /*
8604  * Dual licenses
8605  */
8606  if (INFILE(_LT_DUAL_LICENSE_0) && NOT_INFILE(_TITLE_NOSL)) {
8607  MEDINTEREST(lDebug ? "Dual-license(0)" : "Dual-license");
8608  }
8609  else if (INFILE(_LT_DUAL_LICENSE_22)) {
8610  MEDINTEREST(lDebug ? "Dual-license(22)" : "Dual-license");
8611  }
8612  else if (INFILE(_LT_DUAL_LICENSE_1) && NOT_INFILE(_TITLE_NOSL)) {
8613  MEDINTEREST(lDebug ? "Dual-license(1)" : "Dual-license");
8614  }
8615  else if (INFILE(_LT_DUAL_LICENSE_2)) {
8616  MEDINTEREST(lDebug ? "Dual-license(2)" : "Dual-license");
8617  }
8618  else if (INFILE(_LT_DUAL_LICENSE_3) && NOT_INFILE(_LT_DUAL_LICENSE_3_EXHIBIT)) {
8619  MEDINTEREST(lDebug ? "Dual-license(3)" : "Dual-license");
8620  }
8621  else if (INFILE(_LT_DUAL_LICENSE_4)) {
8622  MEDINTEREST(lDebug ? "Dual-license(4)" : "Dual-license");
8623  }
8624  else if (INFILE(_LT_DUAL_LICENSE_5)) {
8625  MEDINTEREST(lDebug ? "Dual-license(5)" : "Dual-license");
8626  }
8627  else if (INFILE(_LT_DUAL_LICENSE_6)) {
8628  MEDINTEREST(lDebug ? "Dual-license(6)" : "Dual-license");
8629  }
8630  else if (INFILE(_LT_DUAL_LICENSE_7)) {
8631  MEDINTEREST(lDebug ? "Dual-license(7)" : "Dual-license");
8632  }
8633  else if (INFILE(_LT_DUAL_LICENSE_8)) {
8634  MEDINTEREST(lDebug ? "Dual-license(8)" : "Dual-license");
8635  }
8636  else if (INFILE(_LT_DUAL_LICENSE_9)) {
8637  MEDINTEREST(lDebug ? "Dual-license(9)" : "Dual-license");
8638  }
8639  else if (INFILE(_LT_DUAL_LICENSE_10)) {
8640  MEDINTEREST(lDebug ? "Dual-license(10)" : "Dual-license");
8641  }
8642  else if (INFILE(_LT_DUAL_LICENSE_11)) {
8643  MEDINTEREST(lDebug ? "Dual-license(11)" : "Dual-license");
8644  }
8645  else if (INFILE(_LT_DUAL_LICENSE_12)) {
8646  MEDINTEREST(lDebug ? "Dual-license(12)" : "Dual-license");
8647  }
8648  else if (INFILE(_LT_DUAL_LICENSE_13)) {
8649  INTERESTING(lDebug ? "Dual-license(13)" : "Dual-license");
8650  INTERESTING("BSD");
8651  INTERESTING("MIT");
8652  /*
8653  * A special case for NomosTestfiles/Dual-license/respond.js
8654  * that has two dual-license statements.
8655  */
8656  if (!lmem[_mGPL]) {
8657  if (INFILE(_LT_DUAL_LICENSE_16)) {
8658  INTERESTING(lDebug ? "GPLV2(Dual-license(16))" : "GPL-2.0-only");
8659  }
8660  }
8661  }
8662  else if (INFILE(_LT_DUAL_LICENSE_14)) {
8663  INTERESTING(lDebug ? "Dual-license(14)" : "Dual-license");
8664  INTERESTING("BSD");
8665  if (!lmem[_mGPL]) {
8666  INTERESTING("GPL");
8667  }
8668  }
8669  else if (INFILE(_LT_DUAL_LICENSE_15)) {
8670  MEDINTEREST(lDebug ? "Dual-license(15)" : "Dual-license");
8671  }
8672  else if (INFILE(_LT_DUAL_LICENSE_16)) {
8673  INTERESTING(lDebug ? "Dual-license(16)" : "Dual-license");
8674  INTERESTING("MIT");
8675  INTERESTING(lDebug ? "GPLV2(Dual-license(16))" : "GPL-2.0-only");
8676  }
8677  else if (INFILE(_LT_DUAL_LICENSE_17)) {
8678  MEDINTEREST(lDebug ? "Dual-license(17)" : "Dual-license");
8679  }
8680  else if (INFILE(_LT_DUAL_LICENSE_18)) {
8681  MEDINTEREST(lDebug ? "Dual-license(18)" : "Dual-license");
8682  }
8683  else if (INFILE(_LT_DUAL_LICENSE_19)) {
8684  MEDINTEREST(lDebug ? "Dual-license(19)" : "Dual-license");
8685  }
8686  else if (INFILE(_LT_DUAL_LICENSE_20)) {
8687  MEDINTEREST(lDebug ? "Dual-license(20)" : "Dual-license");
8688  }
8689  else if (INFILE(_LT_DUAL_LICENSE_21)) {
8690  MEDINTEREST(lDebug ? "Dual-license(21)" : "Dual-license");
8691  }
8692  else if (INFILE(_LT_DUAL_LICENSE_23)) {
8693  MEDINTEREST(lDebug ? "Dual-license(23)" : "Dual-license");
8694  }
8695  else if (INFILE(_LT_DUAL_LICENSE_24)) {
8696  MEDINTEREST(lDebug ? "Dual-license(24)" : "Dual-license");
8697  }
8698  else if (INFILE(_LT_DUAL_LICENSE_25)) {
8699  MEDINTEREST(lDebug ? "Dual-license(25)" : "Dual-license");
8700  }
8701  else if (INFILE(_LT_DUAL_LICENSE_26)) {
8702  MEDINTEREST(lDebug ? "Dual-license(26)" : "Dual-license");
8703  }
8704  else if (INFILE(_LT_DUAL_LICENSE_27)) {
8705  MEDINTEREST(lDebug ? "Dual-license(27)" : "Dual-license");
8706  }
8707  else if (INFILE(_LT_DUAL_LICENSE_28)) {
8708  MEDINTEREST(lDebug ? "Dual-license(28)" : "Dual-license");
8709  }
8710  else if (INFILE(_LT_DUAL_LICENSE_29) && NOT_INFILE(_LT_MPL_SECONDARY_LICENSE)) {
8711  MEDINTEREST(lDebug ? "Dual-license(29)" : "Dual-license");
8712  }
8713  else if (INFILE(_LT_DUAL_LICENSE_30)) {
8714  MEDINTEREST(lDebug ? "Dual-license(30)" : "Dual-license");
8715  }
8716  else if (INFILE(_LT_DUAL_LICENSE_31)) {
8717  MEDINTEREST(lDebug ? "Dual-license(31)" : "Dual-license");
8718  }
8719  else if (INFILE(_LT_DUAL_LICENSE_32)) {
8720  MEDINTEREST(lDebug ? "Dual-license(32)" : "Dual-license");
8721  }
8722  else if (INFILE(_LT_DUAL_LICENSE_33)) {
8723  MEDINTEREST(lDebug ? "Dual-license(33)" : "Dual-license");
8724  }
8725  else if (INFILE(_LT_DUAL_LICENSE_34)) {
8726  MEDINTEREST(lDebug ? "Dual-license(34)" : "Dual-license");
8727  }
8728  else if (HASTEXT(_LT_DUAL_LICENSE_35, 0)) {
8729  MEDINTEREST(lDebug ? "Dual-license(35)" : "Dual-license");
8730  /*
8731  * GPL is not detected correctly in this case, therefore it is set here.
8732  */
8733  INTERESTING("GPL");
8734  }
8735  else if (INFILE(_LT_DUAL_LICENSE_36)) {
8736  MEDINTEREST(lDebug ? "Dual-license(36)" : "Dual-license");
8737  }
8738  else if (INFILE(_LT_DUAL_LICENSE_37)) {
8739  MEDINTEREST(lDebug ? "Dual-license(37)" : "Dual-license");
8740  }
8741  else if (INFILE(_LT_DUAL_LICENSE_38)) {
8742  MEDINTEREST(lDebug ? "Dual-license(38)" : "Dual-license");
8743  }
8744  else if (INFILE(_LT_DUAL_LICENSE_39)) {
8745  MEDINTEREST(lDebug ? "Dual-license(39)" : "Dual-license");
8746  }
8747  else if (INFILE(_LT_DUAL_LICENSE_40)) {
8748  MEDINTEREST(lDebug ? "Dual-license(40)" : "Dual-license");
8749  }
8750  else if (INFILE(_LT_DUAL_LICENSE_41)) {
8751  MEDINTEREST(lDebug ? "Dual-license(41)" : "Dual-license");
8752  }
8753  else if (INFILE(_LT_DUAL_LICENSE_42)) {
8754  MEDINTEREST(lDebug ? "Dual-license(42)" : "Dual-license");
8755  }
8756  else if (INFILE(_LT_DUAL_LICENSE_43)) {
8757  MEDINTEREST(lDebug ? "Dual-license(43)" : "Dual-license");
8758  }
8759  else if (HASTEXT(_LT_DUAL_LICENSE_44, 0)) {
8760  MEDINTEREST(lDebug ? "Dual-license(44)" : "Dual-license");
8761  }
8762  else if (INFILE(_LT_DUAL_LICENSE_45)) {
8763  MEDINTEREST(lDebug ? "Dual-license(45)" : "Dual-license");
8764  INTERESTING("MIT");
8765  }
8766  else if (HASTEXT(_LT_DUAL_LICENSE_46, REG_EXTENDED)) {
8767  MEDINTEREST(lDebug ? "Dual-license(46)" : "Dual-license");
8768  }
8769  else if (HASTEXT(_LT_DUAL_LICENSE_47, REG_EXTENDED) && NOT_INFILE(_LT_MPL_SECONDARY_LICENSE)) {
8770  MEDINTEREST(lDebug ? "Dual-license(47)" : "Dual-license");
8771  }
8772  else if (INFILE(_LT_DUAL_LICENSE_48)) {
8773  MEDINTEREST(lDebug ? "Dual-license(48)" : "Dual-license");
8774  }
8775  else if (HASTEXT(_LT_DUAL_LICENSE_49, REG_EXTENDED)) {
8776  MEDINTEREST(lDebug ? "Dual-license(49)" : "Dual-license");
8777  }
8779  /*
8780  * The Beer-ware license(!)
8781  */
8782  if (INFILE(_LT_BEERWARE)) {
8783  INTERESTING("Beerware");
8784  }
8786  /*
8787  * CMake license
8788  */
8789  if (URL_INFILE(_URL_CMAKE)) {
8790  INTERESTING("CMake");
8791  }
8793  /*
8794  * unRAR restriction
8795  */
8796  if (INFILE(_LT_UNRARref1) || INFILE(_LT_UNRARref2)) {
8797  INTERESTING("unRAR restriction");
8798  }
8800  /*
8801  * ANTLR Software Rights Notice
8802  */
8803  if (INFILE(_LT_ANTLR)) {
8804  INTERESTING("ANTLR-PD");
8805  lmem[_fANTLR] = 1;
8806  }
8808  /*
8809  * Creative Commons Zero v1.0 Universal
8810  */
8811  if (INFILE(_SPDX_CC0_10)) {
8812  INTERESTING("CC0-1.0");
8813  }
8814  else if (INFILE(_TITLE_CC0_10_1) || INFILE(_PHR_CC0_1) || INFILE(_PHR_CC0_2)) {
8815  INTERESTING("CC0-1.0");
8816  }
8817  else if (INFILE(_SPDX_CC0)) {
8818  INTERESTING("CC0");
8819  }
8821  /*
8822  * PA Font License (IPA)
8823  */
8824  if (INFILE(_TITLE_IPA)) {
8825  INTERESTING("IPA");
8826  }
8828  /*
8829  * European Union Public Licence
8830  */
8831  if (INFILE(_PHR_EUPL_10) || INFILE(_TITLE_EUPL_10)
8832  || INFILE(_PHR_EUPL_NAMED_10)) {
8833  INTERESTING("EUPL-1.0");
8834  }
8835  else if (INFILE(_PHR_EUPL_11) || INFILE(_TITLE_EUPL_11)
8836  || INFILE(_PHR_EUPL_NAMED_11)) {
8837  INTERESTING("EUPL-1.1");
8838  }
8839  else if (INFILE(_TITLE_EUPL_12) || INFILE(_PHR_EUPL_NAMED_12)) {
8840  INTERESTING("EUPL-1.2");
8841  }
8842  else if (INFILE(_PHR_EUPL)) {
8843  INTERESTING("EUPL");
8844  }
8846  /* University of Illinois/NCSA Open Source License */
8847  if (!lmem[_fNCSA] && INFILE(_TITLE_NCSA) && NOT_INFILE(_TITLE_NCSA_EXHIBIT)) {
8848  INTERESTING(lDebug ? "NCSA(2)" : "NCSA");
8849  /* OZPLB-1.1 refers both to NCSA and OZPLB-1.1 licenses */
8850  if (INFILE(_TITLE_OZPLB_11)) {
8851  INTERESTING("OZPLB-1.1");
8852  }
8853  lmem[_fBSD] = 1;
8854  lmem[_mMIT] = 1;
8855  }
8857  /* ODC Public Domain Dedication & License 1.0 */
8858  if (INFILE(_TITLE_PDDL)) {
8859  INTERESTING("PDDL-1.0");
8860  lmem[_fPDDL] = 1;
8861  }
8863  /* PostgreSQL License */
8864  if (INFILE(_TITLE_POSTGRES) || INFILE(_TITLE_POSTGRES_1)) {
8865  INTERESTING("PostgreSQL");
8866  lmem[_fBSD] = 1;
8867  }
8869  /* Sax Public Domain Notice */
8870  if (INFILE(_LT_SAX_PD)) {
8871  INTERESTING("SAX-PD");
8872  lmem[_fSAX] = 1;
8873  }
8875  /*
8876  * WTF Public "license"
8877  */
8878  if (INFILE(_LT_WTFPL)) {
8879  INTERESTING("WTFPL");
8880  }
8881  else if (INFILE(_LT_WTFPLref)) {
8882  INTERESTING(lDebug ? "WTFPL(ref)" : "WTFPL");
8883  }
8884  else if (INFILE(_LT_WTFPLref_1)) {
8885  INTERESTING(lDebug ? "WTFPL(ref#1)" : "WTFPL");
8886  }
8887  else if (INFILE(_PHR_WTFPL)) {
8888  INTERESTING(lDebug ? "WTFPL(phr)" : "WTFPL");
8889  }
8891  /* Independent JPEG Group License */
8892  if (!lmem[_fIJG]) {
8893  if (HASTEXT(_PHR_IJG_1, REG_EXTENDED)) {
8894  INTERESTING("IJG");
8895  }
8896  else if (HASTEXT(_PHR_IJG_2, 0)) {
8897  INTERESTING("IJG");
8898  }
8899  else if (HASTEXT(_TITLE_IJG_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_2, 0)) {
8900  INTERESTING("IJG");
8901  }
8902  /* the licence, not just the group */
8903  else if (HASTEXT(_TITLE_IJG_LICENSE, 0) && !HASTEXT(_PHR_IJG_INTERFACE_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_2, 0)) {
8904  INTERESTING("IJG");
8905  }
8906  /* Independent JPEG Group can be referenced without IJG license*/
8907  else if (HASTEXT(_TITLE_IJG_2, 0) && !HASTEXT(_PHR_IJG_INTERFACE_1, 0) && !HASTEXT(_PHR_IJG_INTERFACE_2, 0)) {
8908  INTERESTING("IJG-possibility");
8909  }
8911  }
8912  /* Netizen Open Source License */
8913  if (!lmem[_mMPL] && INFILE(_TITLE_NOSL)) {
8914  INTERESTING(lDebug ? "NOSL(#2)" : "NOSL");
8915  }
8917  /* Net Boolean Public License v1 */
8918  if (INFILE(_TITLE_NBPL_V10)) {
8919  INTERESTING("NBPL-1.0");
8920  }
8922  /* Flora License */
8923  if (INFILE(_TITLE_Flora_V10)) {
8924  INTERESTING("Flora-1.0");
8925  }
8926  else if (INFILE(_TITLE_Flora_V11)) {
8927  INTERESTING("Flora-1.1");
8928  }
8929  else if (URL_INFILE(_URL_Flora)) {
8930  INTERESTING("Flora");
8931  }
8933  /* Standard ML of New Jersey License */
8934  if (INFILE(_TITLE_SMLNJ)) {
8935  INTERESTING("SMLNJ");
8936  }
8938  /* Mozilla Public License possibility */
8939  if (!lmem[_mMPL]) {
8940  if (INFILE(_TEXT_MPLV2) && INFILE(_URL_MPL20)) {
8941  INTERESTING("MPL-2.0");
8942  lmem[_mMPL] = 1;
8943  }
8944  else if (INFILE(_TEXT_MPL20_UNDER)) {
8945  INTERESTING("MPL-2.0");
8946  lmem[_mMPL] = 1;
8947  }
8948  /* _URL_MPL_LATEST also matches the NPL paths, and lmem[_mMPL] would
8949  then stop mplNplVersion() resolving them */
8950  else if (URL_INFILE(_URL_NPL10)) {
8951  INTERESTING("NPL-1.0");
8952  lmem[_mMPL] = 1;
8953  }
8954  else if (URL_INFILE(_URL_NPL11)) {
8955  INTERESTING("NPL-1.1");
8956  lmem[_mMPL] = 1;
8957  }
8958  else if (URL_INFILE(_URL_MPL_LATEST)) {
8959  INTERESTING(lDebug ? "MPL(latest)" : "MPL");
8960  lmem[_mMPL] = 1;
8961  }
8962  }
8964  /* Citrix License */
8965  if (INFILE(_TITLE_CITRIX)) {
8966  INTERESTING("Citrix");
8967  lmem[_fCITRIX] = 1;
8968  }
8970  /* CUA office public license */
8971  if (INFILE(_TITLE_CUA10)) {
8972  INTERESTING("CUA-OPL-1.0");
8973  }
8975  /* the Erlang Public License */
8976  if (INFILE(_TITLE_ERLPL_ref)) {
8977  INTERESTING("ErlPL-1.1");
8978  }
8980  /* German Free Software License */
8981  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))
8982  {
8983  INTERESTING("D-FSL-1.0");
8984  lmem[_mGPL] = 1;
8985  }
8987  /* CCLRC License */
8988  if (INFILE(_TITLE_CCLRC)) {
8989  INTERESTING("CCLRC");
8990  }
8992 
8993  /* Some GPL cases are still missing */
8994  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)))
8995  {
8996  INTERESTING(lDebug ? "GPL_V2_ref" : "GPL-2.0-only");
8997  lmem[_mGPL] = 1;
8998  }
8999  else if (!lmem[_mGPL] && INFILE(_LT_GPL_V3_ref))
9000  {
9001  INTERESTING(lDebug ? "GPL_V3_ref" : "GPL-3.0-only");
9002  lmem[_mGPL] = 1;
9003  }
9004  else if (!lmem[_mGPL] && INFILE(_LT_GPLref22))
9005  {
9006  INTERESTING(lDebug ? "GPLref22" : "GPL");
9007  lmem[_mGPL] = 1;
9008  }
9009  else if (!lmem[_mGPL] && NOT_INFILE(_LT_IGNORE_CLAUSE_2) && INFILE(_LT_GPLref21))
9010  {
9011  INTERESTING(lDebug ? "GPLref21" : "GPL");
9012  lmem[_mGPL] = 1;
9013  }
9014  /*
9015  * SPDX-License-Identifier lines may use a tab separator (e.g. ":\tGPL-2.0"),
9016  * which prevents _LT_GPL_NAMED3 from firing (it requires printable ASCII before
9017  * <gpl>). Check SPDX GPL identifiers directly here so they are not missed.
9018  */
9019  if (!lmem[_mGPL] && HASTEXT(_SPDX_GPL_20_or_later, REG_EXTENDED)
9020  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
9021  INTERESTING(lDebug ? "GPL-2.0-or-later(SPDX-direct)" : "GPL-2.0-or-later");
9022  lmem[_mGPL] = 1;
9023  }
9024  else if (!lmem[_mGPL] && HASTEXT(_SPDX_GPL_20, REG_EXTENDED)) {
9025  INTERESTING(lDebug ? "GPL-2.0-only(SPDX-direct)" : "GPL-2.0-only");
9026  lmem[_mGPL] = 1;
9027  }
9029 
9030  /* MX4J License version 1.0 */
9031  if (INFILE(_LT_MX4J_V10))
9032  {
9033  INTERESTING("MX4J-1.0");
9034  }
9035  else if (INFILE(_LT_MX4J))
9036  {
9037  INTERESTING("MX4J");
9038  }
9040  /* postfix license */
9041  if (INFILE(_TITLE_POSTFIX))
9042  {
9043  INTERESTING("Postfix");
9044  }
9046  /* not public domain */
9047  if (HASTEXT(_LT_PUBDOM_NOTclaim, REG_EXTENDED)) {
9048  if (INFILE(_LT_PUBDOM_CC)) {
9049  INTERESTING(lDebug ? "Pubdom(CC)" : "CC-PDDC");
9050  pd = 1;
9051  }
9052  else {
9053  INTERESTING(LS_NOT_PD);
9054  pd = 0;
9055  }
9056  }
9058  /* LIBGCJ license */
9059  if (INFILE(_LT_LIBGCJ))
9060  {
9061  INTERESTING("LIBGCJ");
9062  }
9064  /* open cascade technology public license */
9065  if (INFILE(_TITLE_OPEN_CASCADE))
9066  {
9067  INTERESTING("OpenCASCADE-PL");
9068  }
9070  /* KnowledgeTree Public License */
9071  if (INFILE(_LT_KnowledgeTree_V11))
9072  {
9073  INTERESTING("KnowledgeTree-1.1");
9074  }
9076  /* Interbase Public License */
9077  if (INFILE(_LT_Interbase_V10))
9078  {
9079  INTERESTING("Interbase-1.0");
9080  }
9082  /* ClearSilver license */
9083  if (INFILE(_LT_ClearSilver))
9084  {
9085  INTERESTING("ClearSilver");
9086  }
9088  /* ACE, TAO, CIAO */
9089  if(INFILE(_LT_ACE)) {
9090  INTERESTING("ACE");
9091  }
9092  else if(INFILE(_LT_FACE)) {
9093  INTERESTING("FaCE");
9094  }
9096  /* JISP */
9097  if(INFILE(_LT_JISP)) {
9098  INTERESTING("JISP");
9099  }
9101  /* Qmail */
9102  if(INFILE(_LT_QMAIL)) {
9103  INTERESTING("Qmail");
9104  }
9106  /* Migemo */
9107  if(INFILE(_LT_MIGEMO)) {
9108  INTERESTING("Migemo");
9109  }
9111  /* Sendmail */
9112  if(INFILE(_LT_Sendmail_title) ) {
9113  INTERESTING("Sendmail");
9114  }
9116  /* Giftware */
9117  if(INFILE(_LT_GIFTWARE)) {
9118  INTERESTING("Giftware");
9119  }
9121  /* Logica opensource */
9122  if(INFILE(_LT_LOGICA)) {
9123  INTERESTING("Logica-OSL-1.0");
9124  }
9126  /* Unidex */
9127  if(INFILE(_LT_UNIDEX)) {
9128  INTERESTING("Unidex");
9129  }
9131  /* TCL License */
9132  if (!lmem[_fTCL]) {
9133  if (INFILE(_TITLE_TCL)) {
9134  INTERESTING("TCL");
9135  }
9136  else if (INFILE(_SPDX_TCL)) {
9137  INTERESTING("TCL");
9138  }
9139  else if (INFILE(_LT_TCL)) {
9140  INTERESTING("TCL");
9141  }
9142  }
9144  /* AndroidSDK-Commercial license */
9145  if (INFILE(_LT_GOOGLE_SDK)) {
9146  INTERESTING("AndroidSDK.Commercial");
9147  }
9149  /* Qhull license */
9150  if (INFILE(_PHR_Qhull)) {
9151  INTERESTING("Qhull");
9152  }
9154  /* OZPLB-1.0 license */
9155  if (INFILE(_PHR_OZPLB_10)) {
9156  INTERESTING("OZPLB-1.0");
9157  }
9159  /* Texas Instruments license */
9160  if (INFILE(_LT_TI_BASE)) {
9161  if (INFILE(_LT_TI_TSPA)) {
9162  INTERESTING("TI-TSPA");
9163  } else if (INFILE(_LT_TI_TFL)) {
9164  INTERESTING("TI-TFL");
9165  }
9166  }
9168 
9169  /*
9170  * Some licenses say "licensed under the same terms as FOO".
9171  */
9172  gl.flags |= FL_SAVEBASE; /* save match buffer (if any) */
9173  if (*licStr == NULL_CHAR) {
9174  i = 0;
9175  if (INFILE(_LT_SAME_LICENSE_1)) {
9176  INTERESTING(lDebug ? "Same-lic-1" : "Same-license-as");
9177  i = 1;
9178  } else if (INFILE(_LT_SAME_LICENSE_2)) {
9179  INTERESTING(lDebug ? "Same-lic-2" : "Same-license-as");
9180  i = 2;
9181  }
9182  if (i) {
9183  if (cur.licPara == NULL_STR) {
9184  saveLicenseParagraph(cur.matchBase, isML, isPS, NO);
9185  }
9186  }
9187  }
9189  gl.flags |= ~FL_SAVEBASE; /* turn off, regardless */
9190  /*
9191  * ... and, there are several generic claims that "you are free to use this
9192  * software".
9193  * We call these claims "Freeware", because you can use the software free of charge,
9194  * but some other copyright holder exclusive rights are not granted in some cases.
9195  */
9196  /* Specific freeware-like licenses */
9197  if (INFILE(_LT_SASH)) {
9198  INTERESTING("Sash-Notice");
9199  }
9200  else if (INFILE(_LT_LILO)) {
9201  INTERESTING("LILO");
9202  }
9203  else if (INFILE(_LT_INNO_SETUP)) {
9204  INTERESTING("InnoSetup");
9205  }
9206  else if (INFILE(_LT_APP_S2P)) {
9207  INTERESTING("App-s2p");
9208  }
9209  else if (INFILE(_LT_FONT_ALIAS)) {
9210  INTERESTING("font-alias");
9211  }
9212  else if (INFILE(_LT_HDPARM)) {
9213  INTERESTING("hdparm");
9214  }
9215  else if (INFILE(_LT_HXD)) {
9216  INTERESTING("HxD");
9217  }
9218  else if (INFILE(_LT_JAM)) {
9219  INTERESTING("Jam");
9220  }
9221  else if (INFILE(_LT_JMAGNETIC)) {
9222  INTERESTING("JMagnetic");
9223  }
9224  else if (INFILE(_LT_PYCRYPTO)) {
9225  INTERESTING("PyCrypto");
9226  }
9227  else if (INFILE(_LT_TESTED_SOFTWARE)) {
9228  INTERESTING("Tested-Software");
9229  }
9230  else if (INFILE(_LT_TSO_LICENSE)) {
9231  INTERESTING("Theodore-Ts-o");
9232  }
9233  if (*licStr == NULL_CHAR || pd >= 0) {
9234  for (i = 0; i < NFREECLAIM; i++) {
9235  if (CANSKIP(i, _KW_permission, _FREE_first_perm,
9236  _FREE_last_perm)) {
9237  i = _FREE_last_perm;
9238  continue;
9239  }
9240  if (CANSKIP(i, _KW_distribut, _FREE_first_dist,
9241  _FREE_last_dist)) {
9242  i = _FREE_last_dist;
9243  continue;
9244  }
9245  if (INFILE(_FREECLAIM_first+i)) {
9246  (void) strcpy(name, "Freeware");
9247  if (lDebug) {
9248  (void) sprintf(name+8, "(%d)", i+1);
9249  }
9250  INTERESTING(name);
9251  break;
9252  }
9253  }
9254  }
9256  /* Specific public-domain-like licenses */
9257  if (INFILE(_LT_ZHORN_STICKIES)) {
9258  INTERESTING("Zhorn-Stickies");
9259  pd = 1;
9260  }
9261  else if (INFILE(_LT_LZMA_SDK_LICENSE)) {
9262  INTERESTING("LZMA-SDK-license");
9263  pd = 1;
9264  }
9265  else if (INFILE(_LT_CRYPTOPP)) {
9266  INTERESTING("Crypto");
9267  pd = 1;
9268  }
9269  else if (INFILE(_LT_BITZI_PD)) {
9270  INTERESTING("Bitzi-PD");
9271  pd = 1;
9272  }
9273  else if (INFILE(_LT_AGENTXPP)) {
9274  INTERESTING("AgentX");
9275  pd = 1;
9276  }
9277  else if (INFILE(_LT_AES_128_3_0)) {
9278  INTERESTING("AES-128-3.0");
9279  pd = 1;
9280  }
9281  else if (INFILE(_LT_ALASIR)) {
9282  INTERESTING("Alasir");
9283  pd = 1;
9284  }
9285  else if (INFILE(_LT_ALTOVA_EULA)) {
9286  INTERESTING("Altova");
9287  pd = 1;
9288  }
9289  else if (INFILE(_LT_AMS_FONTS)) {
9290  INTERESTING("AMSFonts");
9291  pd = 1;
9292  }
9293  else if (INFILE(_LT_BRENT_CORKUM)) {
9294  INTERESTING("Brent-Corkum");
9295  pd = 1;
9296  }
9297  else if (INFILE(_LT_BROADCOM_PROPRIETARY)) {
9298  INTERESTING("Broadcom-Proprietary");
9299  pd = 1;
9300  }
9301  else if (INFILE(_LT_C_UDA_1_0)) {
9302  INTERESTING("C-UDA-1.0");
9303  pd = 1;
9304  }
9305  else if (INFILE(_LT_CDLA_PERMISSIVE_2_0)) {
9306  INTERESTING("CDLA-Permissive-2.0");
9307  pd = 1;
9308  }
9309  else if (INFILE(_LT_DOUG_LEA)) {
9310  INTERESTING("Doug-Lea");
9311  pd = 1;
9312  }
9313  else if (INFILE(_LT_GREGORY_PIETSCH)) {
9314  INTERESTING("Gregory-Pietsch-Liberal");
9315  pd = 1;
9316  }
9317  else if (INFILE(_LT_GUTENBERG_2020)) {
9318  INTERESTING("Gutenberg-2020");
9319  pd = 1;
9320  }
9321  else if (INFILE(_LT_JQUERY_PD)) {
9322  INTERESTING("jQuery-Tools-PD");
9323  pd = 1;
9324  }
9325  else if (INFILE(_LT_MICHAEL_BARR)) {
9326  INTERESTING("Michael-Barr");
9327  pd = 1;
9328  }
9329  else if (INFILE(_LT_NCBI)) {
9330  INTERESTING("NCBI-PD");
9331  pd = 1;
9332  }
9333  else if (INFILE(_LT_NETAPP_SDK_AUG2020)) {
9334  INTERESTING("NetApp-SDK-rev.-Aug2020");
9335  pd = 1;
9336  }
9337  else if (INFILE(_LT_NIST_PD_FALLBACK)) {
9338  INTERESTING("NIST-PD-fallback");
9339  pd = 1;
9340  }
9341  else if (INFILE(_LT_NIST_PD)) {
9342  INTERESTING("NIST-PD");
9343  pd = 1;
9344  }
9345  else if (INFILE(_LT_NUMERICAL_RECIPES_NOTICE)) {
9346  INTERESTING("Numerical-Recipes-Notice");
9347  pd = 1;
9348  }
9349  else if (INFILE(_LT_O_UDA_1_0)) {
9350  INTERESTING("O-UDA-1.0");
9351  pd = 1;
9352  }
9353  else if (INFILE(_LT_OCULUS_SDK_3_5)) {
9354  INTERESTING("Oculus-SDK-v3.5");
9355  pd = 1;
9356  }
9357  else if (INFILE(_LT_OSWEGO_CONCURRENT)) {
9358  INTERESTING("Oswego-Concurrent");
9359  pd = 1;
9360  }
9361  else if (INFILE(_LT_PHIL_BUNCE)) {
9362  INTERESTING("Phil-Bunce");
9363  pd = 1;
9364  }
9365  else if (INFILE(_LT_LIBSELINUX_1_0)) {
9366  INTERESTING("libselinux-1.0");
9367  pd = 1;
9368  }
9369  else if (INFILE(_LT_SNMP4J_SMI)) {
9370  INTERESTING("SNMP4J-SMI");
9371  pd = 1;
9372  }
9373  else if (INFILE(_LT_SPLUNK_MINT_TOS_2018)) {
9374  INTERESTING("Splunk-MINT-TOS-2018");
9375  pd = 1;
9376  }
9377  else if (INFILE(_LT_STANFORD_PVRG)) {
9378  INTERESTING("Stanford-PVRG");
9379  pd = 1;
9380  }
9381  else if (INFILE(_LT_TFL)) {
9382  INTERESTING("TFL");
9383  pd = 1;
9384  }
9385  else if (INFILE(_LT_TIZEN_SDK)) {
9386  INTERESTING("Tizen-SDK");
9387  pd = 1;
9388  }
9389  else if (INFILE(_LT_US_GOVT_PUBLIC_DOMAIN)) {
9390  INTERESTING("US-Government-Public-Domain");
9391  pd = 1;
9392  }
9393  else if (INFILE(_LT_VIC_METCALFE_PD)) {
9394  INTERESTING("Vic-Metcalfe-Public-Domain");
9395  pd = 1;
9396  }
9397  else if (INFILE(_LT_YOLO_2_0)) {
9398  INTERESTING("YOLO-v2");
9399  pd = 1;
9400  }
9401  /* Check for Public Domain */
9402  if (!lmem[_fANTLR] && !lmem[_fCLA] && !lmem[_mPYTHON] && !lmem[_mGFDL] &&
9403  !lmem[_fODBL] && !lmem[_fPDDL] && !lmem[_fRUBY] && !lmem[_fSAX] && !lmem[_fAPL] && !lmem[_mAPACHE] && !lmem[_mAPACHE10] && !lmem[_mAPACHE11] &&
9404  !lmem[_fARTISTIC] && !lmem[_fCITRIX] && !lmem[_mLGPL] && !lmem[_fBSD]&& NOT_INFILE(_TITLE_D_FSL_10)
9405  && !INFILE(_LT_CPOL)) {
9406  pd = checkPublicDomain(filetext, size, score, kwbm, isML, isPS);
9407  }
9409  /*
9410  * Some licenses point you to files/URLs...
9411  */
9412  /* Specific licenses that would otherwise be caught by See-URL */
9413  if (INFILE(_LT_PIXABAY_CONTENT)) {
9414  INTERESTING("Pixabay-Content");
9415  }
9416  else if (INFILE(_LT_MCRAE_PL_4_R53)) {
9417  INTERESTING("McRae-PL-v4.r53");
9418  }
9419  else if (INFILE(_LT_DAY_SPEC)) {
9420  INTERESTING("Day-Specification");
9421  }
9422  else if (INFILE(_LT_996_ICU_1_0)) {
9423  INTERESTING("Anti-996-1.0");
9424  }
9425  else if (INFILE(_LT_ANEPOKIS_1_0)) {
9426  INTERESTING("Anepokis-1.0");
9427  }
9428  else if (INFILE(_LT_ARACHNI_PSL_1_0)) {
9429  INTERESTING("Arachni-PSL-v1.0");
9430  }
9431  else if (INFILE(_LT_ARRAY_INPUT_METHOD_PL)) {
9432  INTERESTING("Array-Input-Method-Public");
9433  }
9434  else if (INFILE(_LT_ATMEL_FIRMWARE)) {
9435  INTERESTING("Atmel-Firmware");
9436  }
9437  else if (INFILE(_LT_BAKOMA_FONTS_1995)) {
9438  INTERESTING("BaKoMa-Fonts-1995");
9439  }
9440  else if (INFILE(_LT_BROADLEAF_FAIR_USE)) {
9441  INTERESTING("Broadleaf-Fair-Use-v1.0");
9442  }
9443  else if (INFILE(_LT_BSD_ARTWORK)) {
9444  INTERESTING("BSD-Artwork");
9445  }
9446  else if (INFILE(_LT_C_FSL_1_1)) {
9447  INTERESTING("C-FSL-1.1");
9448  }
9449  else if (INFILE(_LT_CLASSIC_VB)) {
9450  INTERESTING("Classic-VB");
9451  }
9452  else if (INFILE(_LT_CPM_2022)) {
9453  INTERESTING("CP-M-2022");
9454  }
9455  else if (INFILE(_LT_DUENDE_SLA_2022)) {
9456  INTERESTING("Duende-2022");
9457  }
9458  else if (INFILE(_LT_EGRAPPLER)) {
9459  INTERESTING("eGrappler");
9460  }
9461  else if (INFILE(_LT_FAIR_SOURCE_0_9)) {
9462  INTERESTING("Fair-Source-v0.9");
9463  }
9464  else if (INFILE(_LT_FATFS)) {
9465  INTERESTING("FatFs");
9466  }
9467  else if (INFILE(_LT_FOOBAR2000)) {
9468  INTERESTING("foobar2000");
9469  }
9470  else if (INFILE(_LT_INFONODE_1_1)) {
9471  INTERESTING("InfoNode-Software-1.1");
9472  }
9473  else if (INFILE(_LT_JETTY_CCLA_1_1)) {
9474  INTERESTING("Jetty-CCLA-1.1");
9475  }
9476  else if (INFILE(_LT_JSCHEME)) {
9477  INTERESTING("Jscheme");
9478  }
9479  else if (INFILE(_LT_JSR_107_JCACHE_SPEC_2013)) {
9480  INTERESTING("JSR-107-JCache-Specification-2013");
9481  }
9482  else if (INFILE(_LT_JSR_107_JCACHE_SPEC)) {
9483  INTERESTING("JSR-107-JCache-Specification");
9484  }
9485  else if (INFILE(_LT_LAVANTECH)) {
9486  INTERESTING("LavanTech");
9487  }
9488  else if (INFILE(_LT_LHA)) {
9489  INTERESTING("lha");
9490  }
9491  else if (INFILE(_LT_NORTHWOODS_SLA_2021)) {
9492  INTERESTING("Northwoods-Software-2021");
9493  }
9494  else if (INFILE(_LT_OCSL_1_0)) {
9495  INTERESTING("OCSL-1.0");
9496  }
9497  else if (INFILE(_LT_OCULUS_SDK_2020)) {
9498  INTERESTING("Oculus-SDK-2020");
9499  }
9500  else if (INFILE(_LT_OCULUS_SDK)) {
9501  INTERESTING("Oculus-SDK");
9502  }
9503  else if (INFILE(_LT_OLF_CCLA_1_0)) {
9504  INTERESTING("OLF-CCLA-1.0");
9505  }
9506  else if (INFILE(_LT_OLL_1_0)) {
9507  INTERESTING("OLL-1.0");
9508  }
9509  else if (INFILE(_LT_PDL_1_0)) {
9510  INTERESTING("PDL-1.0");
9511  }
9512  else if (INFILE(_LT_POLYFORM_DEFENSIVE_1_0_0)) {
9513  INTERESTING("PolyForm-Defensive-1.0.0");
9514  }
9515  else if (INFILE(_LT_POLYFORM_FREE_TRIAL_1_0_0)) {
9516  INTERESTING("PolyForm-Free-Trial-1.0.0");
9517  }
9518  else if (INFILE(_LT_POLYFORM_INTERNAL_USE_1_0_0)) {
9519  INTERESTING("PolyForm-Internal-Use-1.0.0");
9520  }
9521  else if (INFILE(_LT_POLYFORM_NONCOMMERCIAL_1_0_0)) {
9522  INTERESTING("PolyForm-Noncommercial-1.0.0");
9523  }
9524  else if (INFILE(_LT_POLYFORM_PERIMETER_1_0_0)) {
9525  INTERESTING("PolyForm-Perimeter-1.0.0");
9526  }
9527  else if (INFILE(_LT_POLYFORM_SHIELD_1_0_0)) {
9528  INTERESTING("PolyForm-Shield-1.0.0");
9529  }
9530  else if (INFILE(_LT_POLYFORM_SMALL_BUSINESS_1_0_0)) {
9531  INTERESTING("PolyForm-Small-Business-1.0.0");
9532  }
9533  else if (INFILE(_LT_POLYFORM_STRICT_1_0_0)) {
9534  INTERESTING("PolyForm-Strict-1.0.0");
9535  }
9536  else if (INFILE(_LT_PROSPERITY_1_0_1)) {
9537  INTERESTING("Prosperity-Public-1.0.1");
9538  }
9539  else if (INFILE(_LT_PROSPERITY_2_0)) {
9540  INTERESTING("Prosperity-Public-2.0");
9541  }
9542  else if (INFILE(_LT_SUSTAINABLE_USE_1_0)) {
9543  INTERESTING("SUL-1.0");
9544  }
9545  else if (INFILE(_LT_TTCL)) {
9546  INTERESTING("Talis-Community");
9547  }
9548  else if (INFILE(_LT_UNSPLASH)) {
9549  INTERESTING("Unsplash");
9550  }
9551  else if (INFILE(_LT_YAHOO_BROWSERPLUS_EULA)) {
9552  INTERESTING("Yahoo-BrowserPlus");
9553  }
9554  if (*licStr == NULL_CHAR) {
9555  checkFileReferences(filetext, size, score, kwbm, isML, isPS);
9556  }
9558  /*
9559  * And, If no other licenses are present but there's a reference to
9560  * something being non-commercial, better note it now.
9561  */
9562 #if 0
9563  if (*licStr == NULL_CHAR && !HASKW(kwbm, _KW_public_domain))
9564 #endif
9565  /* Specific non-commercial license identification */
9566  if (INFILE(_LT_MATTKRUSE)) {
9567  INTERESTING("Matt-Kruse");
9568  }
9569  else if (INFILE(_LT_IMAGEN)) {
9570  INTERESTING("IMAGEN");
9571  }
9572  else if (INFILE(_LT_DYNARCH_LINKWARE)) {
9573  INTERESTING("Dynarch-Linkware");
9574  }
9575  else if (INFILE(_LT_ACTUATE_BIRT_IHUB_FTYPE_SLA)) {
9576  INTERESTING("BIRT-iHub-F-Type-Software");
9577  }
9578  else if (INFILE(_LT_ADOBE_AIR_SDK_2014)) {
9579  INTERESTING("Adobe-AIR-SDK-2014");
9580  }
9581  else if (INFILE(_LT_ADOBE_AIR_SDK)) {
9582  INTERESTING("Adobe-AIR-SDK-2008");
9583  }
9584  else if (INFILE(_LT_ADOBE_FLASH_PLAYER_EULA_21_0)) {
9585  INTERESTING("Adobe-Flash-Player-21.0");
9586  }
9587  else if (INFILE(_LT_ADOBE_FLEX_4_SDK)) {
9588  INTERESTING("Adobe-Flex-4-SDK");
9589  }
9590  else if (INFILE(_LT_ADOBE_GENERAL_TOU)) {
9591  INTERESTING("Adobe-General-TOU");
9592  }
9593  else if (INFILE(_LT_AGO_PRIVATE_1_0)) {
9594  INTERESTING("Ago-Private-1.0");
9595  }
9596  else if (INFILE(_LT_BAPL_1_0)) {
9597  INTERESTING("Booz-Allen-Public-v1.0");
9598  }
9599  else if (INFILE(_LT_BITTORRENT_EULA)) {
9600  INTERESTING("bittorrent-eula");
9601  }
9602  else if (INFILE(_LT_BITWARDEN_1_0)) {
9603  INTERESTING("Bitwarden-v1");
9604  }
9605  else if (INFILE(_LT_BRAD_MARTINEZ_VB_32)) {
9606  INTERESTING("Brad-Martinez-VB-32");
9607  }
9608  else if (INFILE(_LT_BROADCOM_COMMERCIAL)) {
9609  INTERESTING("Broadcom-Commercial-Notice");
9610  }
9611  else if (INFILE(_LT_BROADCOM_WICED)) {
9612  INTERESTING("Broadcom-WICED-SDK");
9613  }
9614  else if (INFILE(_LT_CHRISTOPHER_VELAZQUEZ)) {
9615  INTERESTING("Christopher-Velazquez");
9616  }
9617  else if (INFILE(_LT_COM_OREILLY_SERVLET)) {
9618  INTERESTING("com.oreilly.servlet");
9619  }
9620  else if (INFILE(_LT_COMMONS_CLAUSE)) {
9621  INTERESTING("Commons-Clause");
9622  }
9623  else if (INFILE(_LT_CRASHLYTICS_AGREEMENT_2018)) {
9624  INTERESTING("Crashlytics-2018");
9625  }
9626  else if (INFILE(_LT_DYNAMIC_DRIVE_TOU)) {
9627  INTERESTING("Dynamic-Drive-TOU");
9628  }
9629  else if (INFILE(_LT_ETALAB_2_0_FR)) {
9630  INTERESTING("Etalab-Open-2.0-French");
9631  }
9632  /* NOTE: etalab-2.0 and etalab-2.0-fr are identical bilingual texts; only etalab-2.0-fr fires */
9633  else if (INFILE(_LT_EXAMDIFF)) {
9634  INTERESTING("ExamDiff");
9635  }
9636  else if (INFILE(_LT_FANCYZOOM)) {
9637  INTERESTING("FancyZoom");
9638  }
9639  else if (INFILE(_LT_FIRST_WORKS_APPRECIATIVE_1_2)) {
9640  INTERESTING("First-Works-Appreciative-1.2");
9641  }
9642  else if (INFILE(_LT_GCO_V3_0)) {
9643  INTERESTING("GCO-v3.0");
9644  }
9645  else if (INFILE(_LT_GOAHEAD)) {
9646  INTERESTING("GoAhead");
9647  }
9648  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS_2015)) {
9649  INTERESTING("Google-Analytics-Terms-of-Service-2015");
9650  }
9651  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS_2016)) {
9652  INTERESTING("Google-Analytics-Terms-of-Service-2016");
9653  }
9654  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS_2019)) {
9655  INTERESTING("Google-Analytics-Terms-of-Service-2019");
9656  }
9657  else if (INFILE(_LT_GOOGLE_ANALYTICS_TOS)) {
9658  INTERESTING("Google-Analytics-Terms-of-Service");
9659  }
9660  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_02_07)) {
9661  INTERESTING("Google-Maps-Platform-ToS-2018-02-07");
9662  }
9663  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_05_01)) {
9664  INTERESTING("Google-Maps-Platform-ToS-2018-05-01");
9665  }
9666  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_06_07)) {
9667  INTERESTING("Google-Maps-Platform-ToS-2018-06-07");
9668  }
9669  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_07_09)) {
9670  INTERESTING("Google-Maps-Platform-ToS-2018-07-09");
9671  }
9672  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_07_19)) {
9673  INTERESTING("Google-Maps-Platform-ToS-2018-07-19");
9674  }
9675  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_10_01)) {
9676  INTERESTING("Google-Maps-Platform-ToS-2018-10-01");
9677  }
9678  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2018_10_31)) {
9679  INTERESTING("Google-Maps-Platform-ToS-2018-10-31");
9680  }
9681  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2019_05_02)) {
9682  INTERESTING("Google-Maps-Platform-ToS-2019-05-02");
9683  }
9684  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2019_11_21)) {
9685  INTERESTING("Google-Maps-Platform-ToS-2019-11-21");
9686  }
9687  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2020_04_02)) {
9688  INTERESTING("Google-Maps-Platform-ToS-2020-04-02");
9689  }
9690  else if (INFILE(_LT_GOOGLE_MAPS_TOS_2020_04_27)) {
9691  INTERESTING("Google-Maps-Platform-ToS-2020-04-27");
9692  }
9693  else if (INFILE(_LT_GOOGLE_TOS_2013)) {
9694  INTERESTING("Google-TOS-2013");
9695  }
9696  else if (INFILE(_LT_GOOGLE_TOS_2014)) {
9697  INTERESTING("Google-TOS-2014");
9698  }
9699  else if (INFILE(_LT_GOOGLE_TOS_2017)) {
9700  INTERESTING("Google-TOS-2017");
9701  }
9702  else if (INFILE(_LT_GOOGLE_TOS_2019)) {
9703  INTERESTING("Google-TOS-2019");
9704  }
9705  else if (INFILE(_LT_HELIOS_EULA)) {
9706  INTERESTING("Helios");
9707  }
9708  else if (INFILE(_LT_IRFANVIEW_EULA)) {
9709  INTERESTING("IrfanView");
9710  }
9711  else if (INFILE(_LT_ISO_RECORDER)) {
9712  INTERESTING("ISO-Recorder");
9713  }
9714  else if (INFILE(_LT_ISOTOPE_CLA)) {
9715  INTERESTING("Isotope-Commercial");
9716  }
9717  else if (INFILE(_LT_JAM_STAPL)) {
9718  INTERESTING("Jam-STAPL-Software");
9719  }
9720  else if (INFILE(_LT_JAVA_RESEARCH_1_5)) {
9721  INTERESTING("Java-Research-1.5");
9722  }
9723  else if (INFILE(_LT_JAVA_RESEARCH_1_6)) {
9724  INTERESTING("Java-Research-1.6");
9725  }
9726  else if (INFILE(_LT_JETBRAINS_TOOLBOX_OPEN_SOURCE_3)) {
9727  INTERESTING("JetBrains-Toolbox-Open-Source-v3");
9728  }
9729  else if (INFILE(_LT_JRUNNER)) {
9730  INTERESTING("JRunner");
9731  }
9732  else if (INFILE(_LT_MAME)) {
9733  INTERESTING("MAME");
9734  }
9735  else if (INFILE(_LT_MATTHEW_WELCH_FONT_LICENSE)) {
9736  INTERESTING("Matthew-Welch-Font");
9737  }
9738  else if (INFILE(_LT_METAGEEK_INSSIDER_EULA)) {
9739  INTERESTING("inSSIDer");
9740  }
9741  else if (INFILE(_LT_MIKE95)) {
9742  INTERESTING("Mike95");
9743  }
9744  else if (INFILE(_LT_MS_DEVELOPER_SERVICES_AGREEMENT_2018_06)) {
9745  INTERESTING("MS-Developer-Services-2018-06");
9746  }
9747  else if (INFILE(_LT_MS_INVISIBLE_EULA_1_0)) {
9748  INTERESTING("MS-Invisible-Computing-1.0");
9749  }
9750  else if (INFILE(_LT_MS_RESEARCH_SHARED_SOURCE)) {
9751  INTERESTING("MS-Research-Shared-Source");
9752  }
9753  else if (INFILE(_LT_MS_WINDOWS_CONTAINER_BASE_IMAGE_EULA_2020)) {
9754  INTERESTING("MS-Windows-Container-Base-Image-2020");
9755  }
9756  else if (INFILE(_LT_NVIDIA_ISAAC_EULA_2019_1)) {
9757  INTERESTING("NVIDIA-ISAAC-v2019.1");
9758  }
9759  else if (INFILE(_LT_NVIDIA_NGX_EULA_2019)) {
9760  INTERESTING("NVIDIA-NGX-2019");
9761  }
9762  else if (INFILE(_LT_OCB_NON_MILITARY_2013)) {
9763  INTERESTING("ocb-non-military-2013");
9764  }
9765  else if (INFILE(_LT_ORACLE_BCL_JAVASE_JAVAFX_2012)) {
9766  INTERESTING("Oracle-BCL-for-JavaSE-and-JavaFX-2012");
9767  }
9768  else if (INFILE(_LT_ORACLE_BCL_JAVASE_PLATFORM_JAVAFX_2013)) {
9769  INTERESTING("oracle-bcl-javase-platform-javafx-2013");
9770  }
9771  else if (INFILE(_LT_ORACLE_BCL_JAVASE_PLATFORM_JAVAFX_2017)) {
9772  INTERESTING("oracle-bcl-javase-platform-javafx-2017");
9773  }
9774  else if (INFILE(_LT_ORACLE_WEB_SITES_TOU)) {
9775  INTERESTING("Oracle-Web-Sites-TOU");
9776  }
9777  else if (INFILE(_LT_PFTUS_1_1)) {
9778  INTERESTING("PFTUS-license");
9779  }
9780  else if (INFILE(_LT_PHILIPS_PROPRIETARY_NOTICE_2000)) {
9781  INTERESTING("Philips-Proprietary-Notice-2000");
9782  }
9783  else if (INFILE(_LT_PIVOTAL_TOU)) {
9784  INTERESTING("Pivotal-Software-Terms-of-Use");
9785  }
9786  else if (INFILE(_LT_QUIN_STREET)) {
9787  INTERESTING("QuinStreet");
9788  }
9789  else if (INFILE(_LT_ROGUE_WAVE)) {
9790  INTERESTING("Rogue-Wave-Software");
9791  }
9792  else if (INFILE(_LT_RSA_MD2)) {
9793  INTERESTING("RSA-MD2");
9794  }
9795  else if (INFILE(_LT_RUTE)) {
9796  INTERESTING("Rute-Users-Tutorial-and-Exposition-0.8.0");
9797  }
9798  else if (INFILE(_LT_SCILAB_EN_2005)) {
9799  INTERESTING("SCILAB-en-2005");
9800  }
9801  else if (INFILE(_LT_SCILAB_FR)) {
9802  INTERESTING("SCILAB-FR");
9803  }
9804  else if (INFILE(_LT_SCSL_3_0)) {
9805  INTERESTING("SCSL-3.0");
9806  }
9807  else if (INFILE(_LT_SLYSOFT_EULA)) {
9808  INTERESTING("SlySoft");
9809  }
9810  else if (INFILE(_LT_SMSC_NON_COMMERCIAL_2012)) {
9811  INTERESTING("SMSC-Non-Commercial-2012");
9812  }
9813  else if (INFILE(_LT_STREAM_BENCHMARK)) {
9814  INTERESTING("STREAM-Benchmark");
9815  }
9816  else if (INFILE(_LT_TENABLE_NESSUS)) {
9817  INTERESTING("Tenable-Nessus");
9818  }
9819  else if (INFILE(_LT_TGPPL_1_0)) {
9820  INTERESTING("TGPPL-1.0");
9821  }
9822  else if (INFILE(_LT_THOMAS_BANDT)) {
9823  INTERESTING("Thomas-Bandt");
9824  }
9825  else if (INFILE(_LT_TRIPTRACKER)) {
9826  INTERESTING("TripTracker");
9827  }
9828  else if (INFILE(_LT_VNC_VIEWER_IOS)) {
9829  INTERESTING("VNCViewer-iOS");
9830  }
9831  else if (INFILE(_LT_WIFI_ALLIANCE)) {
9832  INTERESTING("Wi-Fi-Alliance");
9833  }
9834  else if (INFILE(_LT_YAHOO_MESSENGER_EULA)) {
9835  INTERESTING("Yahoo-Messenger");
9836  }
9837  if (maxInterest != IL_HIGH && !HASKW(kwbm, _KW_public_domain) &&
9838  NOT_INFILE(_PHR_COMMERC_NONCOMM)) {
9839  if (INFILE(_LT_NONCOMMERCIAL_1)) {
9840  INTERESTING(lDebug ? "NonC(1)" : "Non-commercial");
9841  }
9842  else if (INFILE(_LT_ZZNON_COMMERC1)) {
9843  INTERESTING(lDebug ? "NonC(2)" : "Non-commercial");
9844  }
9845  else if (INFILE(_LT_ZZNON_COMMERC2)) {
9846  INTERESTING(lDebug ? "NonC(3)" : "Non-commercial");
9847  }
9848  else if (HASTEXT(_TEXT_COMMERC, 0) &&
9849  INFILE(_PHR_NONCOMMERCIAL)) {
9850  INTERESTING(lDebug ? "NonC(4)" : "Non-commercial");
9851  }
9852  }
9853  if (INFILE(_LT_NOT_OPENSOURCE)) {
9854  INTERESTING("Not-OpenSource");
9855  }
9856  listClear(&whereList, NO); /* again, clear "unused" matches */
9858  /*
9859  * Look for footprints that declare something as proprietary... if we such
9860  * a statement, we care about the Copyright owner, too.
9861  */
9862  if (maxInterest != IL_HIGH) { /* if (*licStr == NULL_CHAR) { */
9863  j = 0; /* just a flag */
9864  if (INFILE(_LT_GEN_PROPRIETARY_1)) {
9865  INTERESTING(lDebug ? "Prop(1)" : "COMMERCIAL");
9866  j++;
9867  }
9868  else if (INFILE(_LT_GEN_PROPRIETARY_2)) {
9869  INTERESTING(lDebug ? "Prop(2)" : "COMMERCIAL");
9870  j++;
9871  }
9872  else if (INFILE(_LT_GEN_PROPRIETARY_3)) {
9873  INTERESTING(lDebug ? "Prop(3)" : "COMMERCIAL");
9874  j++;
9875  }
9876  else if (INFILE(_LT_GEN_PROPRIETARY_4)) {
9877  INTERESTING(lDebug ? "Prop(4)" : "COMMERCIAL");
9878  j++;
9879  }
9880  else if (INFILE(_LT_GEN_PROPRIETARY_5)) {
9881  INTERESTING(lDebug ? "Prop(5)" : "COMMERCIAL");
9882  j++;
9883  }
9884  else if (INFILE(_LT_GEN_PROPRIETARY_6)) {
9885  INTERESTING(lDebug ? "Prop(6)" : "COMMERCIAL");
9886  j++;
9887  }
9888  else if (INFILE(_LT_GEN_PROPRIETARY_7)) {
9889  INTERESTING(lDebug ? "Prop(7)" : "COMMERCIAL");
9890  j++;
9891  }
9892  else if (INFILE(_LT_GEN_PROPRIETARY_8)) {
9893  INTERESTING(lDebug ? "Prop(8)" : "COMMERCIAL");
9894  j++;
9895  }
9896  if (j) {
9897  checkCornerCases(filetext, size, score, kwbm, isML,
9898  isPS, nw, YES);
9899  }
9900  }
9901  listClear(&whereList, NO); /* again, clear "unused" matches */
9903  /*
9904  * Haskell Language Report License
9905  */
9906  if (INFILE(_LT_HASKELL_REPORT)) {
9907  INTERESTING("HaskellReport");
9908  }
9910  /*
9911  * Scheme Language Report License
9912  */
9913  if (INFILE(_LT_SCHEME_REPORT)) {
9914  INTERESTING("SchemeReport");
9915  }
9917  /*
9918  * German Data Licences (DL-DE family)
9919  */
9920  if (INFILE(_LT_DL_DE_ZERO_2)) {
9921  INTERESTING("DL-DE-ZERO-2.0");
9922  }
9923  else if (INFILE(_LT_DL_DE_BY_2_EN) || INFILE(_LT_DL_DE_BY_2_DE)) {
9924  INTERESTING("DL-DE-BY-2.0");
9925  }
9926  else if (INFILE(_LT_DL_DE_BY_1_EN) || INFILE(_LT_DL_DE_BY_1_DE)) {
9927  INTERESTING("DL-DE-BY-1.0");
9928  }
9930  /*
9931  * Norwegian Licence for Open Government Data (NLOD)
9932  */
9933  if (INFILE(_LT_NLOD_20_TEXT)) {
9934  INTERESTING("NLOD-2.0");
9935  }
9936  else if (INFILE(_LT_NLOD_10_TEXT)) {
9937  INTERESTING("NLOD-1.0");
9938  }
9940  /*
9941  * Statistics Canada Open License (SCOLA - French)
9942  */
9943  if (INFILE(_LT_SCOLA_FR)) {
9944  INTERESTING("OGL-Canada-SCOL");
9945  }
9947  /*
9948  * Canadian Open Government Licences
9949  */
9950  if (INFILE(_LT_OGL_TORONTO)) {
9951  INTERESTING("OGL-Toronto-1.0");
9952  }
9953  else if (INFILE(_LT_OGL_ONTARIO)) {
9954  INTERESTING("OGL-Ontario-1.0");
9955  }
9956  else if (INFILE(_LT_OGL_NOVA_SCOTIA)) {
9957  INTERESTING("OGL-Nova-Scotia-1.0");
9958  }
9959  else if (INFILE(_LT_OGL_BC)) {
9960  INTERESTING("OGL-British-Columbia-2.0");
9961  }
9962  else if (INFILE(_LT_OGL_ALBERTA)) {
9963  INTERESTING("OGL-Alberta-2.1");
9964  }
9965  else if (INFILE(_LT_OGL_CANADA_EN) || INFILE(_LT_OGL_CANADA_FR)) {
9966  INTERESTING("OGL-Canada-2.0");
9967  }
9969  /*
9970  * Parity Public License 6.0.0
9971  */
9972  if (INFILE(_LT_PARITY_600)) {
9973  INTERESTING("Parity-6.0.0");
9974  }
9975  else if (INFILE(_LT_PARITY_700)) {
9976  INTERESTING("Parity-7.0.0");
9977  }
9979  /*
9980  * Cryptographic Autonomy License
9981  */
9982  if (INFILE(_LT_CAL_10_CWE)) {
9983  INTERESTING("CAL-1.0-Combined-Work-Exception");
9984  }
9985  else if (INFILE(_LT_CAL_10)) {
9986  INTERESTING("CAL-1.0");
9987  }
9989  /*
9990  * Licence Art Libre 1.3
9991  */
9992  if (INFILE(_LT_LAL_13)) {
9993  INTERESTING("LAL-1.3");
9994  }
9996  /*
9997  * COIL-1.0 (Copyfree Open Innovation License)
9998  */
9999  if (INFILE(_LT_COIL_10)) {
10000  INTERESTING("COIL-1.0");
10001  }
10003  /*
10004  * TTWL (Text-Tabs+Wrap License)
10005  */
10006  if (INFILE(_LT_TTWL)) {
10007  INTERESTING("TTWL");
10008  }
10010  /*
10011  * HIDAPI License
10012  */
10013  if (INFILE(_LT_HIDAPI)) {
10014  INTERESTING("HIDAPI");
10015  }
10017  /*
10018  * ulem License
10019  */
10020  if (INFILE(_LT_ULEM)) {
10021  INTERESTING("ulem");
10022  }
10024  /*
10025  * UnixCrypt License
10026  */
10027  if (INFILE(_LT_UNIXCRYPT)) {
10028  INTERESTING("UnixCrypt");
10029  }
10031  /*
10032  * fwlw License
10033  */
10034  if (INFILE(_LT_FWLW)) {
10035  INTERESTING("fwlw");
10036  }
10038  /*
10039  * McPhee Slideshow License
10040  */
10041  if (INFILE(_LT_MCPHEE_SLIDESHOW)) {
10042  INTERESTING("McPhee-slideshow");
10043  }
10045  /*
10046  * MIPS Computer Systems License
10047  */
10048  if (INFILE(_LT_MIPS_CS)) {
10049  INTERESTING("MIPS");
10050  }
10052  /*
10053  * MPEG Software Simulation Group License
10054  */
10055  if (INFILE(_LT_MPEG_SSG)) {
10056  INTERESTING("MPEG-SSG");
10057  }
10059  /*
10060  * Kastrup License
10061  */
10062  if (INFILE(_LT_KASTRUP)) {
10063  INTERESTING("Kastrup");
10064  }
10066  /*
10067  * swrule License
10068  */
10069  if (INFILE(_LT_SWRULE)) {
10070  INTERESTING("swrule");
10071  }
10073  /*
10074  * softSurfer License
10075  */
10076  if (INFILE(_LT_SOFTSURFER)) {
10077  INTERESTING("softSurfer");
10078  }
10080  /*
10081  * Widget Workshop License
10082  */
10083  if (INFILE(_LT_WIDGET_WORKSHOP)) {
10084  INTERESTING("Widget-Workshop");
10085  }
10087  /*
10088  * LPD-document (Peter Deutsch Document License)
10089  */
10090  if (INFILE(_LT_LPD_DOCUMENT)) {
10091  INTERESTING("LPD-document");
10092  }
10094  /*
10095  * Zeeff License
10096  */
10097  if (INFILE(_LT_ZEEFF)) {
10098  INTERESTING("Zeeff");
10099  }
10101  /*
10102  * DEC-3-Clause License
10103  */
10104  if (INFILE(_LT_DEC_3_CLAUSE)) {
10105  INTERESTING("DEC-3-Clause");
10106  }
10108  /*
10109  * Lucida Bitmap Fonts (Bigelow & Holmes)
10110  */
10111  if (INFILE(_LT_LUCIDA_BITMAP)) {
10112  INTERESTING("Lucida-Bitmap-Fonts");
10113  }
10115  /*
10116  * ISO 8879 Permission
10117  */
10118  if (INFILE(_LT_ISO_8879)) {
10119  INTERESTING("ISO-permission");
10120  }
10122  /*
10123  * threeparttable License
10124  */
10125  if (INFILE(_LT_THREEPARTTABLE)) {
10126  INTERESTING("threeparttable");
10127  }
10129  /*
10130  * OWL-0.9.4 (Open Works License)
10131  */
10132  if (INFILE(_LT_OWL_094)) {
10133  INTERESTING("OWL-0.9.4");
10134  }
10136  /*
10137  * vhfPL 1.1
10138  */
10139  if (INFILE(_LT_VHFPL_11)) {
10140  INTERESTING("vhfPL-1.1");
10141  }
10143  /*
10144  * NXLOG Public License 1.0
10145  */
10146  if (INFILE(_LT_NXLOG_PL_10)) {
10147  INTERESTING("NXLOG-PL-1.0");
10148  }
10150  /*
10151  * Devblocks Public License 1.0
10152  */
10153  if (INFILE(_LT_DEVBLOCKS_10)) {
10154  INTERESTING("Devblocks-1.0");
10155  }
10157  /*
10158  * Treeware License
10159  */
10160  if (INFILE(_LT_TREEWARE_1) || INFILE(_LT_TREEWARE_2) || INFILE(_LT_TREEWARE_OPT2)) {
10161  INTERESTING("Treeware");
10162  }
10164  /*
10165  * AMD ASPF 2023
10166  */
10167  if (INFILE(_LT_AMD_ASPF_2023) && NOT_INFILE(_TITLE_AMD_SEV)) {
10168  INTERESTING("AMD-ASPF-2023");
10169  }
10171  /*
10172  * Bosch Sensortec 2023
10173  */
10174  if (INFILE(_LT_BOSCH_SENSORTEC)) {
10175  INTERESTING("Bosch-Sensortec");
10176  }
10178  /*
10179  * Broadcom firmware licenses
10180  */
10181  if (INFILE(_LT_BROADCOM_RPI)) {
10182  INTERESTING("Broadcom-Raspberry-Pi");
10183  }
10184  else if (INFILE(_LT_BROADCOM_CONFIDENTIAL)) {
10185  INTERESTING("Broadcom-Confidential");
10186  }
10188  /*
10189  * Marvell Firmware 2019
10190  */
10191  if (INFILE(_LT_MARVELL_FW)) {
10192  INTERESTING("Marvell-Firmware-2019");
10193  }
10195  /*
10196  * MediaTek Proprietary 2008
10197  */
10198  if (INFILE(_LT_MEDIATEK_2008)) {
10199  INTERESTING("MediaTek-Proprietary-2008");
10200  }
10202  /*
10203  * Microchip Products 2018
10204  */
10205  if (INFILE(_LT_MICROCHIP_2018)) {
10206  INTERESTING("Microchip-Products-2018");
10207  }
10209  /*
10210  * Motorola License
10211  */
10212  if (INFILE(_LT_MOTOROLA)) {
10213  INTERESTING("Motorola");
10214  }
10216  /*
10217  * Nortel DASA License
10218  */
10219  if (INFILE(_LT_NORTEL_DASA)) {
10220  INTERESTING("Nortel-DASA");
10221  }
10223  /*
10224  * NVIDIA with Government Qualifications
10225  */
10226  if (INFILE(_LT_NVIDIA_GOV)) {
10227  INTERESTING("NVIDIA-Gov");
10228  }
10230  /*
10231  * NXP Linux Firmware
10232  */
10233  if (INFILE(_LT_NXP_LINUX_FW)) {
10234  INTERESTING("NXP-Linux-Firmware");
10235  }
10237  /*
10238  * Rockchip Proprietary (various years)
10239  */
10240  if (INFILE(_LT_ROCKCHIP_2023)) {
10241  INTERESTING("Rockchip-Proprietary-2023");
10242  }
10243  else if (INFILE(_LT_ROCKCHIP_2022)) {
10244  INTERESTING("Rockchip-Proprietary-2022");
10245  }
10246  else if (INFILE(_LT_ROCKCHIP_2019)) {
10247  INTERESTING("Rockchip-Proprietary-2019");
10248  }
10250  /*
10251  * Silicon Image 2007
10252  */
10253  if (INFILE(_LT_SILICON_IMAGE)) {
10254  INTERESTING("Silicon-Image-2007");
10255  }
10257  /*
10258  * Texas Instruments licenses
10259  */
10260  if (INFILE(_LT_TI_RESTRICTED)) {
10261  INTERESTING("TI-Restricted");
10262  }
10263  else if (INFILE(_LT_TI_LINUX_FW) && NOT_INFILE(_LT_TI_TFL)) {
10264  INTERESTING("TI-Linux-Firmware");
10265  }
10267  /*
10268  * Wind River Commercial License
10269  */
10270  if (INFILE(_LT_WIND_RIVER)) {
10271  INTERESTING("Wind-River-Commercial");
10272  }
10274  /*
10275  * BigScience/CreativeML RAIL licenses
10276  */
10277  if (INFILE(_LT_CREATIVEML_RAIL_M2)) {
10278  INTERESTING("CreativeML-OpenRAIL-M2");
10279  }
10280  else if (INFILE(_LT_STABLE_DIFFUSION)) {
10281  INTERESTING("CreativeML-OpenRAIL-M");
10282  }
10283  else if (INFILE(_LT_BIGSCIENCE_RAIL_M)) {
10284  INTERESTING("BigScience-OpenRAIL-M");
10285  }
10287  /*
10288  * NYSL 0.9982 (Japanese license)
10289  */
10290  if (INFILE(_LT_NYSL_JP)) {
10291  INTERESTING("NYSL-0.9982");
10292  }
10294  /*
10295  * AI/ML model licenses
10296  */
10297  if (INFILE(_LT_GEMMA_PUP)) {
10298  INTERESTING("Gemma-PUP");
10299  }
10301  if (INFILE(_LT_GEMINI_TOS)) {
10302  INTERESTING("Gemini-API-TOS");
10303  }
10305  if (INFILE(_LT_PLAYGROUND_V2)) {
10306  INTERESTING("Playground-v2-Community");
10307  }
10309  if (INFILE(_LT_SALESFORCE_AI_AUP)) {
10310  INTERESTING("Salesforce-AI-AUP");
10311  }
10313  if (INFILE(_LT_OPENAI_TOU)) {
10314  INTERESTING("OpenAI-TOU");
10315  }
10317  if (INFILE(_LT_GOOGLE_ML_KIT)) {
10318  INTERESTING("Google-ML-Kit-TOS");
10319  }
10321  if (INFILE(_LT_MAX_MOJO)) {
10322  INTERESTING("MAX-Mojo-Community");
10323  }
10325  if (INFILE(_LT_STACK_TOS)) {
10326  INTERESTING("The-Stack-TOS");
10327  }
10329  if (INFILE(_LT_DATABRICKS_DB)) {
10330  INTERESTING("Databricks-DB");
10331  }
10333  /*
10334  * Patent licenses
10335  */
10336  if (INFILE(_LT_CISCO_AVC)) {
10337  INTERESTING("Cisco-AVC-H264");
10338  }
10340  if (INFILE(_LT_XIPH_PATENT)) {
10341  INTERESTING("Xiph-Opus-Patent");
10342  }
10344  /*
10345  * CERN Attribution 1995
10346  */
10347  if (INFILE(_LT_CERN_ATTRIB)) {
10348  INTERESTING("CERN-Attribution-1995");
10349  }
10351  /*
10352  * Font licenses
10353  */
10354  if (INFILE(_LT_KFGQPC)) {
10355  INTERESTING("KFGQPC-Uthmanic-Script");
10356  }
10358  if (INFILE(_LT_MANFRED_KLEIN)) {
10359  INTERESTING("Manfred-Klein-Fonts");
10360  }
10362  if (INFILE(_LT_WADALAB)) {
10363  INTERESTING("Wadalab");
10364  }
10366  if (INFILE(_LT_GENERALUSER_GS)) {
10367  INTERESTING("GeneralUser-GS-2.0");
10368  }
10370  /*
10371  * ASN.1 Object Dumping Code License
10372  */
10373  if (INFILE(_LT_ASN1_DUMP)) {
10374  INTERESTING("ASN1-Object-Dump");
10375  }
10377  /*
10378  * musl attribution exception
10379  */
10380  if (INFILE(_LT_MUSL_EXCEPTION)) {
10381  INTERESTING("musl-exception");
10382  }
10384  /*
10385  * Commercial/proprietary software licenses
10386  */
10387  if (INFILE(_LT_CLEARTHOUGHT_20)) {
10388  INTERESTING("Clearthought-2.0");
10389  }
10391  if (INFILE(_LT_CODEXIA)) {
10392  INTERESTING("Codexia");
10393  }
10395  if (INFILE(_LT_CRUNCHBASE)) {
10396  INTERESTING("Crunchbase-Data");
10397  }
10399  if (INFILE(_LT_CUBIWARE_10)) {
10400  INTERESTING("Cubiware-Software-1.0");
10401  }
10403  if (INFILE(_LT_CWE_TOU)) {
10404  INTERESTING("CWE-TOU");
10405  }
10407  if (INFILE(_LT_DAMAIL)) {
10408  INTERESTING("DAMAIL");
10409  }
10411  if (INFILE(_LT_DATAMEKANIX)) {
10412  INTERESTING("DataMekanix");
10413  }
10415  if (INFILE(_LT_DENNIS_FERGUSON)) {
10416  INTERESTING("Dennis-Ferguson");
10417  }
10419  if (INFILE(_LT_DHTMLAB_PUBLIC)) {
10420  INTERESTING("dhtmlab-Public");
10421  }
10423  if (INFILE(_LT_DOKPLOY_DSAL)) {
10424  INTERESTING("Dokploy-DSAL-1.0");
10425  }
10427  if (INFILE(_LT_DTREE)) {
10428  INTERESTING("dtree");
10429  }
10431  if (INFILE(_LT_ECFONTS)) {
10432  INTERESTING("ECFonts-1.0");
10433  }
10435  if (INFILE(_LT_ECMA_NO_PATENT)) {
10436  INTERESTING("Ecma-No-Patent");
10437  }
10438  else if (INFILE(_LT_ECMA_STD_2024)) {
10439  INTERESTING("Ecma-Standard-2024");
10440  }
10441  else if (INFILE(_LT_ECMA_DOC)) {
10442  INTERESTING("Ecma-Documentation");
10443  }
10445  if (INFILE(_LT_EPAPERPRESS)) {
10446  INTERESTING("ePaperPress");
10447  }
10449  if (INFILE(_LT_EQVSL)) {
10450  INTERESTING("eQVSL-1.0");
10451  }
10453  if (INFILE(_LT_FABIEN_TASSIN)) {
10454  INTERESTING("Fabien-Tassin");
10455  }
10457  if (INFILE(_LT_FLEXBYTE)) {
10458  INTERESTING("Flexbyte");
10459  }
10461  if (INFILE(_LT_FPL)) {
10462  INTERESTING("FPL");
10463  }
10465  if (INFILE(_LT_FTDI)) {
10466  INTERESTING("FTDI");
10467  }
10469  if (INFILE(_LT_GDCL)) {
10470  INTERESTING("GDCL");
10471  }
10473  if (INFILE(_LT_GOOD_BOY)) {
10474  INTERESTING("Good-Boy");
10475  }
10477  if (INFILE(_LT_HACKING_LICENSE)) {
10478  INTERESTING("Hacking-License");
10479  }
10481  if (INFILE(_LT_HERE_PROPRIETARY)) {
10482  INTERESTING("HERE-Proprietary");
10483  }
10484  else if (INFILE(_LT_HERE_DISCLAIMER)) {
10485  INTERESTING("HERE-Disclaimer");
10486  }
10488  if (INFILE(_LT_HOT_POTATO)) {
10489  INTERESTING("Hot-Potato");
10490  }
10492  if (INFILE(_LT_HTML5_SPEC)) {
10493  INTERESTING("HTML5-License");
10494  }
10496  if (INFILE(_LT_IAN_KAPLAN)) {
10497  INTERESTING("Ian-Kaplan");
10498  }
10500  if (INFILE(_LT_ICANN_PUBLIC)) {
10501  INTERESTING("ICANN-Public");
10502  }
10504  if (INFILE(_LT_ISSL_2022)) {
10505  INTERESTING("ISSL-2022");
10506  }
10508  if (INFILE(_LT_JASON_MAYES)) {
10509  INTERESTING("Jason-Mayes");
10510  }
10512  if (INFILE(_LT_JJ2000)) {
10513  INTERESTING("JJ2000");
10514  }
10516  if (INFILE(_LT_JSFROMHELL)) {
10517  INTERESTING("JSFromHell");
10518  }
10520  if (INFILE(_LT_KARL_PETERSON)) {
10521  INTERESTING("Karl-Peterson");
10522  }
10524  if (INFILE(_LT_KEITH_RULE)) {
10525  INTERESTING("Keith-Rule");
10526  }
10528  if (INFILE(_LT_KO_MAN_PAGE)) {
10529  INTERESTING("Korean-Manpage");
10530  }
10532  if (INFILE(_LT_LENS_TOS)) {
10533  INTERESTING("Lens-TOS-2023");
10534  }
10536  if (INFILE(_LT_LINUXHOWTOS)) {
10537  INTERESTING("LinuxHowtos");
10538  }
10540  if (INFILE(_LT_MARKUS_MUMMERT)) {
10541  INTERESTING("Markus-Mummert");
10542  }
10544  if (INFILE(_LT_MATTHEW_KWAN)) {
10545  INTERESTING("Matthew-Kwan");
10546  }
10548  if (INFILE(_LT_NCSC_NL)) {
10549  INTERESTING("NCSC-NL-Disclaimer");
10550  }
10552  if (INFILE(_LT_NEWRAN)) {
10553  INTERESTING("Newran");
10554  }
10556  if (INFILE(_LT_NIST_SRD)) {
10557  INTERESTING("NIST-SRD");
10558  }
10560  if (INFILE(_LT_NWHM)) {
10561  INTERESTING("NWHM");
10562  }
10564  if (INFILE(_LT_OOURA_2001)) {
10565  INTERESTING("OOURA-2001");
10566  }
10568  /*
10569  * Oracle licenses
10570  */
10571  if (INFILE(_LT_ORACLE_MASTER)) {
10572  INTERESTING("Oracle-Master-Agreement");
10573  }
10574  else if (INFILE(_LT_ORACLE_COMM_DB)) {
10575  INTERESTING("Oracle-Commercial-DB-11g2");
10576  }
10577  else if (INFILE(_LT_ORACLE_FREE)) {
10578  INTERESTING("Oracle-Free-2018");
10579  }
10581  if (INFILE(_LT_O_YOUNG_JONG)) {
10582  INTERESTING("O-Young-Jong");
10583  }
10585  if (INFILE(_LT_PAUL_HSIEH_DERIV)) {
10586  INTERESTING("Paul-Hsieh-Derivative");
10587  }
10591  if (INFILE(_LT_PAULO_SOARES)) {
10592  INTERESTING("Paulo-Soares");
10593  }
10595  if (INFILE(_LT_PERL_10)) {
10596  INTERESTING("Perl-1.0");
10597  }
10599  if (INFILE(_LT_PFE_NOTICE)) {
10600  INTERESTING("PFE-Proprietary");
10601  }
10603  if (INFILE(_LT_POKE_WIGGLE)) {
10604  INTERESTING("Poke-Wiggle-Proprietary");
10605  }
10607  if (INFILE(_LT_QUIRKSMODE)) {
10608  INTERESTING("Quirksmode");
10609  }
10611  if (INFILE(_LT_RED_HAT_TM)) {
10612  INTERESTING("Red-Hat-Trademarks");
10613  }
10615  if (INFILE(_LT_RYSZARD_SZOPA)) {
10616  INTERESTING("Ryszard-Szopa");
10617  }
10619  if (INFILE(_LT_SCRIPT_ASYLUM)) {
10620  INTERESTING("Script-Asylum");
10621  }
10623  if (INFILE(_LT_SCRUB)) {
10624  INTERESTING("SCRUB");
10625  }
10627  if (INFILE(_LT_SHITAL_SHAH)) {
10628  INTERESTING("Shital-Shah");
10629  }
10631  if (INFILE(_LT_SNAPEDA_EXCEPTION)) {
10632  INTERESTING("SnapEDA-Design-Exception-1.0");
10633  }
10635  if (INFILE(_LT_STU_NICHOLLS)) {
10636  INTERESTING("Stu-Nicholls");
10637  }
10639  if (INFILE(_LT_TEAMDEV)) {
10640  INTERESTING("TeamDev-Services");
10641  }
10643  if (INFILE(_LT_TCG_SPEC_V2)) {
10644  INTERESTING("TCG-Spec-License-v2");
10645  }
10647  if (INFILE(_LT_TIGER_CRYPTO)) {
10648  INTERESTING("Tiger-Crypto");
10649  }
10651  if (INFILE(_LT_TIGRA_CAL)) {
10652  INTERESTING("Tigra-Calendar-3.2");
10653  }
10655  if (INFILE(_LT_TIMESTAMP_PICKER)) {
10656  INTERESTING("Timestamp-Picker");
10657  }
10659  if (INFILE(_LT_UBC_FREE)) {
10660  INTERESTING("UBC");
10661  }
10663  if (INFILE(_LT_UNPBOOK)) {
10664  INTERESTING("unpbook");
10665  }
10667  if (INFILE(_LT_VBACCELERATOR)) {
10668  INTERESTING("vbAccelerator");
10669  }
10671  if (INFILE(_LT_VISUAL_IDIOT)) {
10672  INTERESTING("Visual-Idiot");
10673  }
10675  if (INFILE(_LT_WHOSONFIRST)) {
10676  INTERESTING("WhosOnFirst");
10677  }
10679  if (INFILE(_LT_WILLIAM_ALEXANDER)) {
10680  INTERESTING("William-Alexander");
10681  }
10683  if (INFILE(_LT_WINK)) {
10684  INTERESTING("Wink");
10685  }
10687  if (INFILE(_LT_WINZIP_SE)) {
10688  INTERESTING("WinZip-Self-Extractor");
10689  }
10691  if (INFILE(_LT_WROX_DOWNLOAD)) {
10692  INTERESTING("Wrox-Download");
10693  }
10695  if (INFILE(_LT_WXWINDOWS_U_30)) {
10696  INTERESTING("wxWindows-Unrestricted-3.0");
10697  }
10699  if (INFILE(_LT_XXD)) {
10700  INTERESTING("xxd");
10701  }
10703  if (INFILE(_LT_YALE_CAS)) {
10704  INTERESTING("Yale-CAS");
10705  }
10707  if (INFILE(_LT_YENSDESIGN)) {
10708  INTERESTING("Yensdesign");
10709  }
10711  if (INFILE(_LT_YOLO_10)) {
10712  INTERESTING("YOLO-1.0");
10713  }
10715  if (INFILE(_LT_ZIPEG)) {
10716  INTERESTING("Zipeg");
10717  }
10719  if (INFILE(_LT_ZUGFERD)) {
10720  INTERESTING("ZUGFeRD-2.2.0");
10721  }
10723  if (INFILE(_LT_CAREWARE)) {
10724  INTERESTING("Careware");
10725  }
10727  if (INFILE(_LT_CCL_2026)) {
10728  INTERESTING("CCL-2026");
10729  }
10731  if (INFILE(_LT_CCLRC)) {
10732  INTERESTING("CCLRC");
10733  }
10735  if (INFILE(_LT_DBAD_11)) {
10736  INTERESTING("DBAD-1.1");
10737  }
10738  else if (INFILE(_LT_DBAD)) {
10739  INTERESTING("DBAD");
10740  }
10742  if (INFILE(_LT_ASWF_DIGITAL_11)) {
10743  INTERESTING("ASWF-Digital-Assets-1.1");
10744  }
10745  else if (INFILE(_LT_ASWF_DIGITAL_10)) {
10746  INTERESTING("ASWF-Digital-Assets-1.0");
10747  }
10749  if (INFILE(_LT_CERN_OHL_S_20)) {
10750  INTERESTING("CERN-OHL-S-2.0");
10751  }
10752  else if (INFILE(_LT_CERN_OHL_W_20)) {
10753  INTERESTING("CERN-OHL-W-2.0");
10754  }
10755  else if (INFILE(_LT_CERN_OHL_P_20)) {
10756  INTERESTING("CERN-OHL-P-2.0");
10757  }
10759  if (INFILE(_LT_ESA_PL_SC_24)) {
10760  INTERESTING("ESA-PL-strong-copyleft-2.4");
10761  }
10762  else if (INFILE(_LT_ESA_PL_PERM_24)) {
10763  INTERESTING("ESA-PL-permissive-2.4");
10764  }
10766  if (INFILE(_LT_ADOBE_UTOPIA)) {
10767  INTERESTING("Adobe-Utopia");
10768  }
10770  if (INFILE(_LT_ALGLIB_DOC)) {
10771  INTERESTING("ALGLIB-Documentation");
10772  }
10774  if (INFILE(_LT_ARPHIC_1999)) {
10775  INTERESTING("Arphic-1999");
10776  }
10778  if (INFILE(_LT_ASPELL_RU)) {
10779  INTERESTING("Aspell-RU");
10780  }
10782  if (INFILE(_LT_ASTERISK_EXCEPTION)) {
10783  INTERESTING("Asterisk-exception");
10784  }
10786  if (INFILE(_LT_BRIAN_GLADMAN)) {
10787  INTERESTING("Brian-Gladman-2-Clause");
10788  }
10790  if (INFILE(_LT_CAPEC_TOU)) {
10791  INTERESTING("CAPEC-tou");
10792  }
10794  if (INFILE(_LT_CHECK_CVS)) {
10795  INTERESTING("check-cvs");
10796  }
10798  if (INFILE(_LT_CRONYX)) {
10799  INTERESTING("Cronyx");
10800  }
10802  if (INFILE(_LT_CVE_TOU)) {
10803  INTERESTING("cve-tou");
10804  }
10806  if (INFILE(_LT_DANTE_TREGLIA)) {
10807  INTERESTING("Game-Programming-Gems");
10808  }
10810  if (INFILE(_LT_FBM)) {
10811  INTERESTING("FBM");
10812  }
10814  if (INFILE(_LT_FREEBSD_DOC)) {
10815  INTERESTING("FreeBSD-DOC");
10816  }
10818  if (INFILE(_LT_GNOME_EXAMPLES_EXCEPTION)) {
10819  INTERESTING("GNOME-examples-exception");
10820  }
10822  if (INFILE(_LT_HYPHEN_BULGARIAN)) {
10823  INTERESTING("hyphen-bulgarian");
10824  }
10826  if (INFILE(_LT_IEC_CODE_EULA)) {
10827  INTERESTING("IEC-Code-Components-EULA");
10828  }
10830  if (INFILE(_LT_JOVE)) {
10831  INTERESTING("jove");
10832  }
10834  if (INFILE(_LT_MAGAZ)) {
10835  INTERESTING("magaz");
10836  }
10838  if (INFILE(_LT_MAILPRIO)) {
10839  INTERESTING("mailprio");
10840  }
10842  if (INFILE(_LT_MINECRAFT_MOD)) {
10843  INTERESTING("MMPL-1.0.1");
10844  }
10846  if (INFILE(_LT_MMIXWARE)) {
10847  INTERESTING("MMIXware");
10848  }
10850  if (INFILE(_LT_MPI_PERMISSIVE)) {
10851  INTERESTING("mpi-permissive");
10852  }
10854  if (INFILE(_LT_MPLUS_FREE_FONT) && NOT_INFILE(_CR_MPLUS)) {
10855  INTERESTING("mplus");
10856  }
10858  if (INFILE(_LT_NTIA_PD)) {
10859  INTERESTING("NTIA-PD");
10860  }
10862  if (INFILE(_LT_OFFIS)) {
10863  INTERESTING("OFFIS");
10864  }
10866  if (INFILE(_LT_OPENVISION)) {
10867  INTERESTING("OpenVision");
10868  }
10870  if (INFILE(_LT_OPL_UK_30)) {
10871  INTERESTING("OPL-UK-3.0");
10872  }
10874  if (INFILE(_LT_PARATYPE_FREE_13)) {
10875  INTERESTING("ParaType-Free-Font-1.3");
10876  }
10878  if (INFILE(_LT_PNMSTITCH)) {
10879  INTERESTING("pnmstitch");
10880  }
10882  if (INFILE(_LT_SSH_KEYSCAN)) {
10883  INTERESTING("ssh-keyscan");
10884  }
10886  if (INFILE(_LT_THIRDEYE)) {
10887  INTERESTING("ThirdEye");
10888  }
10890  if (INFILE(_LT_UNRAR)) {
10891  INTERESTING("UnRAR");
10892  }
10894  if (INFILE(_LT_XZOOM)) {
10895  INTERESTING("xzoom");
10896  }
10898  if (INFILE(_LT_AARDVARK_PY_2014)) {
10899  INTERESTING("Aardvark-I2C-SPI-2014");
10900  }
10902  if (INFILE(_LT_ACCELLERA_SYSTEMC)) {
10903  INTERESTING("SystemC-Open-Source-License-Agreement");
10904  }
10906  if (INFILE(_LT_ACTER_PSL_1_0)) {
10907  INTERESTING("Acter-Public-Source-License-1.0");
10908  }
10910  if (INFILE(_LT_ADAPTEC_EULA)) {
10911  INTERESTING("Adaptec-EULA");
10912  }
10914  if (INFILE(_LT_ADDTHIS_MOBILE_SDK_1_0)) {
10915  INTERESTING("AddThis-Mobile-Application-SDK-License-1.0");
10916  }
10918  if (INFILE(_LT_ADOBE_EULA)) {
10919  INTERESTING("Adobe-EULA");
10920  }
10922  if (INFILE(_LT_AG_GRID_ENTERPRISE)) {
10923  INTERESTING("AG-Grid-Enterprise-License");
10924  }
10926  if (INFILE(_LT_AGTPL)) {
10927  INTERESTING("AGTPL");
10928  }
10930  if (INFILE(_LT_ALEXISISAAC_FREEWARE)) {
10931  INTERESTING("Alexisisaac-Freeware-License");
10932  }
10934  if (INFILE(_LT_AMAZON_REDSHIFT_JDBC)) {
10935  INTERESTING("Amazon-Redshift-JDBC-Driver-License-Agreement");
10936  }
10938  if (INFILE(_LT_AMAZON_SL)) {
10939  INTERESTING("Amazon-Software-License");
10940  }
10942  if (INFILE(_LT_AMD_LINUX_FIRMWARE_EXPORT)) {
10943  INTERESTING("AMD-Linux-Firmware-Export-License");
10944  }
10946  if (INFILE(_LT_ANACONDA_TOS_2024_03_30)) {
10947  INTERESTING("Anaconda-TOS-2024-03-30");
10948  }
10950  if (INFILE(_LT_ANDROID_SDK_PREVIEW_2015)) {
10951  INTERESTING("Android-SDK-Preview-License");
10952  }
10954  if (INFILE(_LT_ANSWERCAREFULLY_TOU_2025)) {
10955  INTERESTING("AnswerCarefully-Dataset-ToU-2025");
10956  }
10958  if (INFILE(_LT_APPFIRE_EULA)) {
10959  INTERESTING("Appfire-EULA");
10960  }
10962  if (INFILE(_LT_APPLE_ATTRIBUTION)) {
10963  INTERESTING("Apple-Attribution-License");
10964  }
10966  if (INFILE(_LT_APPLE_MPEG_4)) {
10967  INTERESTING("Apple-MPEG-4-License");
10968  }
10970  if (INFILE(_LT_APPSFLYER_FRAMEWORK)) {
10971  INTERESTING("AppsFlyer-Framework-License");
10972  }
10974  if (INFILE(_LT_ARM_CORTEX_MX)) {
10975  INTERESTING("ARM-Cortex-Mx-Proprietary");
10976  }
10978  if (INFILE(_LT_ARM_LLVM_SGA)) {
10979  INTERESTING("ARM-LLVM-Grant");
10980  }
10982  if (INFILE(_LT_ASMUS)) {
10983  INTERESTING("ASMUS-License");
10984  }
10986  if (INFILE(_LT_ATLASSIAN_MARKETPLACE_TOU)) {
10987  INTERESTING("Atlassian-Marketplace-Terms-of-Use");
10988  }
10990  if (INFILE(_LT_AUTHORIZENET_SDK)) {
10991  INTERESTING("AuthorizeNet-SDK-License");
10992  }
10994  if (INFILE(_LT_AUTODESK_3D_SFT_3_0)) {
10995  INTERESTING("Autodesk-3D-Studio-File-Toolkit-for-Release-3");
10996  }
10998  if (INFILE(_LT_AUTOIT_EULA)) {
10999  INTERESTING("Autoit-EULA");
11000  }
11002  if (INFILE(_LT_BEA_2_1)) {
11003  INTERESTING("BEA-2.1");
11004  }
11006  if (INFILE(_LT_BEAL_SCREAMER)) {
11007  INTERESTING("Beal-Screamer-License");
11008  }
11010  if (INFILE(_LT_BEEGFS_EULA_2024)) {
11011  INTERESTING("BeeGFS-EULA-2024");
11012  }
11014  if (INFILE(_LT_BINARY_LINUX_FIRMWARE)) {
11015  INTERESTING("Binary-Only-Linux-Firmware-License");
11016  }
11018  if (INFILE(_LT_BIOPYTHON)) {
11019  INTERESTING("Biopython-License");
11020  }
11022  if (INFILE(_LT_BPEL4WS_SPEC)) {
11023  INTERESTING("BPEL4WS-Specification-license");
11024  }
11026  if (INFILE(_LT_BRANKAS_OPEN_LICENSE_1_0)) {
11027  INTERESTING("Brankas-Open-License-1.0");
11028  }
11030  if (INFILE(_LT_BROADCOM_LINKING_UNMODIFIED)) {
11031  INTERESTING("Broadcom-Linking-Exception-if-unmodified");
11032  }
11034  if (INFILE(_LT_BROADCOM_LINUX_FIRMWARE)) {
11035  INTERESTING("Broadcom-Linux-Firmware-License");
11036  }
11038  if (INFILE(_LT_BROADCOM_LINUX_TIMER)) {
11039  INTERESTING("Broadcom-Warranty-Disclaimer");
11040  }
11042  if (INFILE(_LT_BROADCOM_OPUS_PATENT)) {
11043  INTERESTING("Broadcom-Opus-Patent-License");
11044  }
11046  if (INFILE(_LT_BROADCOM_STANDARD_TERMS)) {
11047  INTERESTING("Broadcom-Standard-Terms");
11048  }
11050  if (INFILE(_LT_BROADCOM_UNMODIFIED_EXCEPTIO)) {
11051  INTERESTING("Broadcom-Unmodified-Linking-Exception");
11052  }
11054  if (INFILE(_LT_BSD_DPT)) {
11055  INTERESTING("BSD-DPT");
11056  }
11058  if (INFILE(_LT_BUDIBASE_SQS_2023)) {
11059  INTERESTING("Budibase-SQS-License-2023");
11060  }
11062  if (INFILE(_LT_BUGSENSE_SDK)) {
11063  INTERESTING("BugSense-SDK-License");
11064  }
11066  if (INFILE(_LT_BYTEMARK)) {
11067  INTERESTING("BYTEmark-License");
11068  }
11070  if (INFILE(_LT_CADENCE_LINUX_FIRMWARE)) {
11071  INTERESTING("Cadence-Linux-Firmware-License");
11072  }
11074  if (INFILE(_LT_CAMUNDA_1_0)) {
11075  INTERESTING("Camunda-License-1.0");
11076  }
11078  if (INFILE(_LT_CANONICAL_HA_CLA_ANY_E_V1_2)) {
11079  INTERESTING("Canonical-HA-CLA-ANY-E-v1.2");
11080  }
11082  if (INFILE(_LT_CANONICAL_HA_CLA_ANY_I_V1_2)) {
11083  INTERESTING("Canonical-HA-CLA-ANY-I-v1.2");
11084  }
11086  if (INFILE(_LT_CAVIUM_MALLOC)) {
11087  INTERESTING("Cavium-malloc-License");
11088  }
11090  if (INFILE(_LT_CEXCEPT_2008)) {
11091  INTERESTING("cexcept-License-2008");
11092  }
11094  if (INFILE(_LT_CGIC)) {
11095  INTERESTING("CGIC-License");
11096  }
11098  if (INFILE(_LT_CHILLICREAM_1_0)) {
11099  INTERESTING("ChilliCream-License-1.0");
11100  }
11102  if (INFILE(_LT_CNCF_CORPORATE_CLA_1_0)) {
11103  INTERESTING("CNCF-Corporate-CLA-1.0");
11104  }
11106  if (INFILE(_LT_CNCF_INDIVIDUAL_CLA_1_0)) {
11107  INTERESTING("CNCF-Individual-CLA-1.0");
11108  }
11110  if (INFILE(_LT_CODEGURU_PERMISSIONS)) {
11111  INTERESTING("CodeGuru-Permissions");
11112  }
11114  if (INFILE(_LT_COMMONJ_TIMER)) {
11115  INTERESTING("CommonJ-Timer-License");
11116  }
11118  if (INFILE(_LT_COUCHBASE_COMMUNITY)) {
11119  INTERESTING("Couchbase-Community-Edition-License");
11120  }
11122  if (INFILE(_LT_CPP_CORE_GUIDELINES)) {
11123  INTERESTING("CppCoreGuidelines-License");
11124  }
11126  if (INFILE(_LT_CRAPL_0_1)) {
11127  INTERESTING("CRAPL-v0-BETA-1");
11128  }
11130  if (INFILE(_LT_CSLA)) {
11131  INTERESTING("CSLA-License");
11132  }
11134  if (INFILE(_LT_DCO_1_0)) {
11135  INTERESTING("DCO-1.0");
11136  }
11138  if (INFILE(_LT_DCO_1_1)) {
11139  INTERESTING("DCO-1.1");
11140  }
11142  if (INFILE(_LT_DEEPSEEK_LA_1_0)) {
11143  INTERESTING("DeepSeek-License-Agreement-v1.0");
11144  }
11146  if (INFILE(_LT_DIFFGRAM_DLV2)) {
11147  INTERESTING("Diffgram-DLv2");
11148  }
11150  if (INFILE(_LT_DIVX_OPEN_2_1)) {
11151  INTERESTING("DivX-Open-License-2.1");
11152  }
11154  if (INFILE(_LT_DO_NO_HARM_0_1)) {
11155  INTERESTING("Do-No-Harm");
11156  }
11158  if (INFILE(_LT_DOUGLAS_YOUNG)) {
11159  INTERESTING("Douglas-Young-License");
11160  }
11162  if (INFILE(_LT_DYNARCH_DEVELOPER)) {
11163  INTERESTING("Dynarch-Developer-Agreement");
11164  }
11166  if (INFILE(_LT_ECLIPSE_TCK_1_1)) {
11167  INTERESTING("Eclipse-TCK-v1.1");
11168  }
11170  if (INFILE(_LT_ECMA_PATENT_COC_0)) {
11171  INTERESTING("Ecma-Patent-COC");
11172  }
11174  if (INFILE(_LT_ECMA_PATENT_COC_1)) {
11175  INTERESTING("Ecma-Patent-COC-1.0");
11176  }
11178  if (INFILE(_LT_ECMA_PATENT_COC_2)) {
11179  INTERESTING("Ecma-Patent-COC-2.0");
11180  }
11182  if (INFILE(_LT_ENHYDRA_1_1)) {
11183  INTERESTING("Enhydra-1.1");
11184  }
11186  if (INFILE(_LT_ENISA_LEGAL_NOTICE_2025)) {
11187  INTERESTING("ENISA-Legal-Notice-2025");
11188  }
11190  if (INFILE(_LT_ERIC_GLASS)) {
11191  INTERESTING("Eric-Glass-License");
11192  }
11194  if (INFILE(_LT_ESRI_DEVKIT)) {
11195  INTERESTING("Esri-Developer-Kit-License");
11196  }
11198  if (INFILE(_LT_EXCELSIOR_JET_RUNTIME)) {
11199  INTERESTING("Excelsior-JET-Runtime-License");
11200  }
11202  if (INFILE(_LT_FACEBOOK_NUCLIDE)) {
11203  INTERESTING("Facebook-Nuclide-Software-License");
11204  }
11206  if (INFILE(_LT_FACEBOOK_PATENT_RIGHTS_2)) {
11207  INTERESTING("Facebook-Patent-Rights-2");
11208  }
11210  if (INFILE(_LT_FIRST_EPSS_USAGE)) {
11211  INTERESTING("FIRST-EPSS-Usage-Agreement");
11212  }
11214  if (INFILE(_LT_FISH_AUDIO_RESEARCH_2026_03_)) {
11215  INTERESTING("Fish-Audio-Research-License-Agreement-2026-03-07");
11216  }
11218  if (INFILE(_LT_FRAUNHOFER_ISO_14496_10)) {
11219  INTERESTING("Fraunhofer-ISO-14496-10-License");
11220  }
11222  if (INFILE(_LT_FTPBEAN)) {
11223  INTERESTING("FtpBean-License");
11224  }
11226  if (INFILE(_LT_GARETH_MCCAUGHAN)) {
11227  INTERESTING("Gareth-McCaughan-License");
11228  }
11230  if (INFILE(_LT_GATLING_HIGHCHARTS)) {
11231  INTERESTING("Gatling-Highcharts-License");
11232  }
11234  if (INFILE(_LT_GEMMA_TOU_2024_04_01)) {
11235  INTERESTING("Gemma-ToU-2024-04-01");
11236  }
11238  if (INFILE(_LT_GEMMA_TOU_2025_03_24)) {
11239  INTERESTING("Gemma-ToU-2025-03-24");
11240  }
11242  if (INFILE(_LT_GENERIC_CLA)) {
11243  INTERESTING("Generic-CLA");
11244  }
11246  if (INFILE(_LT_GITHUB_CODEQL_TERMS_2020)) {
11247  INTERESTING("GitHub-CodeQL-Terms-2020");
11248  }
11250  if (INFILE(_LT_GITLEAKS_ACTION_EULA)) {
11251  INTERESTING("Gitleaks-Action-EULA");
11252  }
11254  if (INFILE(_LT_GNU_EMACS_GPL_1985)) {
11255  INTERESTING("GNU-emacs-General-Public-License-1985");
11256  }
11258  if (INFILE(_LT_GOOGLE_APIS_TOS_2021)) {
11259  INTERESTING("Google-APIs-TOS-2021");
11260  }
11262  if (INFILE(_LT_GOOGLE_CLA)) {
11263  INTERESTING("Google-CLA");
11264  }
11266  if (INFILE(_LT_GOOGLE_CORPORATE_CLA)) {
11267  INTERESTING("Google-Corporate-CLA");
11268  }
11270  if (INFILE(_LT_GOOGLE_PATENT_LICENSE_FUCHSI)) {
11271  INTERESTING("Google-Patent-License-for-Fuchsia");
11272  }
11274  if (INFILE(_LT_GOOGLE_PATENT_LICENSE_GOLANG)) {
11275  INTERESTING("Google-Patent-License-for-Go");
11276  }
11278  if (INFILE(_LT_GOOGLE_PATENT_LICENSE)) {
11279  INTERESTING("Google-Patent-License");
11280  }
11282  if (INFILE(_LT_GOOGLE_TOS_2020)) {
11283  INTERESTING("Google-TOS-2020");
11284  }
11286  if (INFILE(_LT_GRADLE_ENTERPRISE_SLA_2022_1)) {
11287  INTERESTING("Gradle-Enterprise-SLA-2022-");
11288  }
11290  if (INFILE(_LT_GRADLE_TOU_2022_01_13)) {
11291  INTERESTING("Gradle-Terms-of-Use-2022-01-13");
11292  }
11294  if (INFILE(_LT_GSAP_STANDARD_NO_CHARGE_2025)) {
11295  INTERESTING("Standard-No-Charge-GSAP-License-2025");
11296  }
11298  if (INFILE(_LT_GTPL_V2)) {
11299  INTERESTING("GTPL-v2");
11300  }
11302  if (INFILE(_LT_HESSLA)) {
11303  INTERESTING("HESSLA");
11304  }
11306  if (INFILE(_LT_HFOIL_1_0)) {
11307  INTERESTING("HFOILv1.0");
11308  }
11310  if (INFILE(_LT_HISTORICAL_NTP)) {
11311  INTERESTING("Historical-Notice-NTP");
11312  }
11314  if (INFILE(_LT_HTTPGET)) {
11315  INTERESTING("httpget-notice-and-disclaimer");
11316  }
11318  if (INFILE(_LT_HUGO)) {
11319  INTERESTING("Hugo-License");
11320  }
11322  if (INFILE(_LT_IBM_DEVELOPERWORKS_COMMUNITY)) {
11323  INTERESTING("IBM-developerWorks-Community-Download-Agreement");
11324  }
11326  if (INFILE(_LT_IBM_EMPLOYEE_WRITTEN)) {
11327  INTERESTING("IBM-Employee-Written-Software-License");
11328  }
11330  if (INFILE(_LT_IBM_SAMPLE)) {
11331  INTERESTING("IBM-Sample-License");
11332  }
11334  if (INFILE(_LT_ICOT_FREE)) {
11335  INTERESTING("ICOT-Free-Software");
11336  }
11338  if (INFILE(_LT_IDT_NOTICE)) {
11339  INTERESTING("IDT-License-Notice");
11340  }
11342  if (INFILE(_LT_INFINEON_FREE)) {
11343  INTERESTING("Infineon-Free-Software-License");
11344  }
11346  if (INFILE(_LT_INSTALLSITE)) {
11347  INTERESTING("InstallSite-License-Agreement");
11348  }
11350  if (INFILE(_LT_INTEL_SAMPLE_SOURCE_CODE_201)) {
11351  INTERESTING("Intel-Sample-Source-Code-2015");
11352  }
11354  if (INFILE(_LT_INTEL_SCL)) {
11355  INTERESTING("Intel-Source-Code-License-Agreement");
11356  }
11358  if (INFILE(_LT_IOZONE)) {
11359  INTERESTING("IOzone-License");
11360  }
11362  if (INFILE(_LT_ISO_14496_10)) {
11363  INTERESTING("ISO-14496-10");
11364  }
11366  if (INFILE(_LT_ISO_SCHEMATRON_19757_3)) {
11367  INTERESTING("ISO-IEC-19757-3");
11368  }
11370  if (INFILE(_LT_ITC_EULA)) {
11371  INTERESTING("ITC-EULA");
11372  }
11374  if (INFILE(_LT_ITU)) {
11375  INTERESTING("ITU-License");
11376  }
11378  if (INFILE(_LT_ITU_T)) {
11379  INTERESTING("ITU-T-License");
11380  }
11382  if (INFILE(_LT_JETBRAINS_PURCHASE_TERMS)) {
11383  INTERESTING("JetBrains-Purchase-Terms");
11384  }
11386  if (INFILE(_LT_JGRAPH_GENERAL)) {
11387  INTERESTING("JGraph-General-License");
11388  }
11390  if (INFILE(_LT_JIDE_SLA)) {
11391  INTERESTING("JIDE-SLA");
11392  }
11394  if (INFILE(_LT_JOINBASE_CELA_2022)) {
11395  INTERESTING("JoinBase-Community-Edition-License-2022");
11396  }
11398  if (INFILE(_LT_JPEGXR)) {
11399  INTERESTING("JPEG-XR-License");
11400  }
11402  if (INFILE(_LT_KEVAN_STANNARD)) {
11403  INTERESTING("Kevan-Stannard-License");
11404  }
11406  if (INFILE(_LT_KUMAR_ROBOTICS)) {
11407  INTERESTING("Kumar-Robotics-License");
11408  }
11410  if (INFILE(_LT_LARABIE)) {
11411  INTERESTING("Larabie-Fonts-EULA");
11412  }
11414  if (INFILE(_LT_LATTICE_OSL_2017)) {
11415  INTERESTING("Lattice-Open-Source-License-2017");
11416  }
11418  if (INFILE(_LT_LCS_TELEGRAPHICS)) {
11419  INTERESTING("LCS-Telegraphics-License");
11420  }
11422  if (INFILE(_LT_LIBRATO_EXCEPTION)) {
11423  INTERESTING("Librato-Open-License-1.0");
11424  }
11426  if (INFILE(_LT_LIFERAY_EE)) {
11427  INTERESTING("Liferay-Portal-EE-License");
11428  }
11430  if (INFILE(_LT_LIFERAY_MARKETPLACE_TOS)) {
11431  INTERESTING("Liferay-Marketplace-TOS");
11432  }
11434  if (INFILE(_LT_LINUX_DEVICE_DRIVERS)) {
11435  INTERESTING("Linux-Device-Drivers");
11436  }
11438  if (INFILE(_LT_LIVEKIT_MODEL_2024)) {
11439  INTERESTING("LiveKit-Model-License-Agreement-2024");
11440  }
11442  if (INFILE(_LT_LLAMA_2_LICENSE_2023)) {
11443  INTERESTING("Llama-2-Community-License-Agreement-2023");
11444  }
11446  if (INFILE(_LT_LLAMA_3_1_LICENSE_2024)) {
11447  INTERESTING("Llama-3.1-Community-License-Agreement-2024");
11448  }
11450  if (INFILE(_LT_LLAMA_3_2_LICENSE_2024)) {
11451  INTERESTING("Llama-3.2-Community-License-Agreement-2024");
11452  }
11454  if (INFILE(_LT_LLAMA_3_3_LICENSE_2024)) {
11455  INTERESTING("Llama-3.3-Community-License-Agreement-2024");
11456  }
11458  if (INFILE(_LT_LLAMA_4_CLA_2025)) {
11459  INTERESTING("Llama-4-Community-License-Agreement-2025");
11460  }
11462  if (INFILE(_LT_LLAMA_4_LICENSE_2025)) {
11463  INTERESTING("Llama-4-Acceptable-Use-Policy-2025");
11464  }
11466  if (INFILE(_LT_MAPBOX_TOS_2021)) {
11467  INTERESTING("Mapbox-TOS-2021");
11468  }
11470  if (INFILE(_LT_MAPBOX_TOS_2024)) {
11471  INTERESTING("Mapbox-TOS-2024");
11472  }
11474  if (INFILE(_LT_MARVELL_FIRMWARE)) {
11475  INTERESTING("Marvell-Firmware-License");
11476  }
11478  if (INFILE(_LT_MATT_GALLAGHER_ATTRIBUTION)) {
11479  INTERESTING("Matt-Gallagher-Attribution-License");
11480  }
11482  if (INFILE(_LT_MCAFEE_TOU)) {
11483  INTERESTING("McAfee-Free-License");
11484  }
11486  if (INFILE(_LT_MEDIATEK_NO_WARRANTY)) {
11487  INTERESTING("MediaTek-No-Warranty-Clause");
11488  }
11490  if (INFILE(_LT_MEDIATEK_PROPRIETARY_2005)) {
11491  INTERESTING("Mediatek-Proprietary-License-2005");
11492  }
11494  if (INFILE(_LT_MEDIATEK_PROPRIETARY_2010)) {
11495  INTERESTING("Mediatek-Proprietary-License-2010");
11496  }
11498  if (INFILE(_LT_MEDIATEK_PROPRIETARY_2016)) {
11499  INTERESTING("Mediatek-Proprietary-License-2016");
11500  }
11502  if (INFILE(_LT_MELANGE)) {
11503  INTERESTING("Melange-Public-License");
11504  }
11506  if (INFILE(_LT_MICROCHIP_ENC28J60_2009)) {
11507  INTERESTING("Microchip-ENC28J60-License-2009");
11508  }
11510  if (INFILE(_LT_MICROCHIP_LINUX_FIRMWARE)) {
11511  INTERESTING("Microchip-Linux-Firmware-License");
11512  }
11514  if (INFILE(_LT_MICROCHIP_PK2CMD_2009)) {
11515  INTERESTING("Microchip-pk2cmd-License-2009");
11516  }
11518  if (INFILE(_LT_MICROSOFT_ENTERPRISE_LIBRARY)) {
11519  INTERESTING("MS-Enterprise-Library-EULA");
11520  }
11522  if (INFILE(_LT_MINIMAX_MODEL_M2_5)) {
11523  INTERESTING("MiniMax-Model-License-M2.5");
11524  }
11526  if (INFILE(_LT_MIT_NAGY)) {
11527  INTERESTING("MIT-Nagy-Variant");
11528  }
11530  if (INFILE(_LT_MODERNE_SALA_2024)) {
11531  INTERESTING("Moderne-Source-Available-License-2024");
11532  }
11534  if (INFILE(_LT_MOE_SPEECH)) {
11535  INTERESTING("MoeSpeech-License");
11536  }
11538  if (INFILE(_LT_MOV_AI_1_0)) {
11539  INTERESTING("Mov.AI-License-version-1.0");
11540  }
11542  if (INFILE(_LT_MOXA_LINUX_FIRMWARE)) {
11543  INTERESTING("Moxa-Linux-Firmware-License");
11544  }
11546  if (INFILE(_LT_MPEG_7)) {
11547  INTERESTING("MPEG-7-License");
11548  }
11550  if (INFILE(_LT_MPEG_ISO)) {
11551  INTERESTING("MPEG-2-NBC-MPEG-4-Audio-ISO");
11552  }
11554  if (INFILE(_LT_MS_ASP_NET_AJAX_SUPPLEMENTAL)) {
11555  INTERESTING("MS-Supplemental-License-ASP.NET-2.0-AJAX-EXT");
11556  }
11558  if (INFILE(_LT_MS_AZURE_RTOS_2020_05)) {
11559  INTERESTING("MS-Azure-RTOS-2020-05");
11560  }
11562  if (INFILE(_LT_MS_AZURE_RTOS_2020_07)) {
11563  INTERESTING("MS-Azure-RTOS-2020-07");
11564  }
11566  if (INFILE(_LT_MS_AZURE_RTOS_2023_05)) {
11567  INTERESTING("MS-Azure-RTOS-2023-05");
11568  }
11570  if (INFILE(_LT_MS_CONTAINER_EULA)) {
11571  INTERESTING("Microsoft-Container-EULA");
11572  }
11574  if (INFILE(_LT_MS_DIRECT3D_D3D120N7_1_1_0)) {
11575  INTERESTING("MS-Direct3D-D3D12On7-1.1.0");
11576  }
11578  if (INFILE(_LT_MS_DXSDK_D3DX_9_29_952_3)) {
11579  INTERESTING("MS-DXSDK.D3DX-9.29.952.3");
11580  }
11582  if (INFILE(_LT_MS_ENTITY_FRAMEWORK_5)) {
11583  INTERESTING("MS-Entity-Framework-5-License");
11584  }
11586  if (INFILE(_LT_MS_IIS_CONTAINER_IMAGES_EULA)) {
11587  INTERESTING("MS-IIS-Container-Images-EULA-2020");
11588  }
11590  if (INFILE(_LT_MSJ_SAMPLE_CODE)) {
11591  INTERESTING("MS-Systems-Journal-Sample-Code-License");
11592  }
11594  if (INFILE(_LT_MS_LIMITED_COMMUNITY)) {
11595  INTERESTING("MS-Limited-Community-License");
11596  }
11598  if (INFILE(_LT_MS_NET_LIBRARY_2019_06)) {
11599  INTERESTING("MS-.NET-Library-License-2019-06");
11600  }
11602  if (INFILE(_LT_MS_OFFICE_SYSTEM_PROGRAMS_EU)) {
11603  INTERESTING("MS-Office-System-Programs-Software-EULA");
11604  }
11606  if (INFILE(_LT_MS_OPUS_PATENT_2012)) {
11607  INTERESTING("MS-Opus-Patent-Terms-2012");
11608  }
11610  if (INFILE(_LT_MS_PATENT_PROMISE)) {
11611  INTERESTING("MS-Patent-Promise-for-.NET");
11612  }
11614  if (INFILE(_LT_MS_PATENT_PROMISE_MONO)) {
11615  INTERESTING("Microsoft-Patent-Promise-for-Mono");
11616  }
11618  if (INFILE(_LT_MS_PYTHON_VSCODE_PYLANCE_202)) {
11619  INTERESTING("MS-Pylance-Extension-for-VSCode-License");
11620  }
11622  if (INFILE(_LT_MS_SSPL)) {
11623  INTERESTING("MS-SS-PL");
11624  }
11626  if (INFILE(_LT_MSTAR_2007)) {
11627  INTERESTING("MStar-Proprietary-License-2007");
11628  }
11630  if (INFILE(_LT_MSTAR_2012)) {
11631  INTERESTING("MStar-Proprietary-License-2012");
11632  }
11634  if (INFILE(_LT_MTX_LICENSING_STATEMENT)) {
11635  INTERESTING("MicroType-Express-MTX");
11636  }
11638  if (INFILE(_LT_MUT_LICENSE)) {
11639  INTERESTING("muT-License");
11640  }
11642  if (INFILE(_LT_MYSQL_LINKING_EXCEPTION_2018)) {
11643  INTERESTING("MySQL-linking-exception-2018");
11644  }
11646  if (INFILE(_LT_NAUGHTER)) {
11647  INTERESTING("Naughter-Software-License");
11648  }
11650  if (INFILE(_LT_NEMOTRON_OPEN_MODEL_2025_12_)) {
11651  INTERESTING("NVIDIA-Nemotron-Open-Model-2025-12-15");
11652  }
11654  if (INFILE(_LT_NETCOMPONENTS)) {
11655  INTERESTING("NetComponents-License");
11656  }
11658  if (INFILE(_LT_NETDATA_NCUL1)) {
11659  INTERESTING("Netdata-Cloud-UI-NCUL1-v1.0");
11660  }
11662  if (INFILE(_LT_NETRONOME_FIRMWARE)) {
11663  INTERESTING("Netronome-Firmware-License");
11664  }
11666  if (INFILE(_LT_NEW_RELIC)) {
11667  INTERESTING("New-Relic-License");
11668  }
11670  if (INFILE(_LT_NON_VIOLENT_4_0)) {
11671  INTERESTING("NVPL-4.0");
11672  }
11674  if (INFILE(_LT_NON_VIOLENT_7_0)) {
11675  INTERESTING("NVPL-7.0");
11676  }
11678  if (INFILE(_LT_NTLM)) {
11679  INTERESTING("NTLM-License");
11680  }
11682  if (INFILE(_LT_NVIDIA_APEX_SDK_EULA_2011)) {
11683  INTERESTING("NVIDIA-APEX-SDK-EULA-2011");
11684  }
11686  if (INFILE(_LT_NVIDIA_MODEL_TRAINING_2025)) {
11687  INTERESTING("NVIDIA-Data-Agreement-for-Model-Training-2025");
11688  }
11690  if (INFILE(_LT_NVIDIA_OPEN_MODEL_2025_04_28)) {
11691  INTERESTING("NVIDIA-Open-Model-License-Agreement-2025-04-28");
11692  }
11694  if (INFILE(_LT_NXP_FIRMWARE_PATENT)) {
11695  INTERESTING("NXP-Firmware-with-Patent-License");
11696  }
11698  if (INFILE(_LT_NXP_MC_FIRMWARE)) {
11699  INTERESTING("NXP-MC-Firmware-License");
11700  }
11702  if (INFILE(_LT_NXP_WARRANTY_DISCLAIMER)) {
11703  INTERESTING("NXP-Warranty-Disclaimer");
11704  }
11706  if (INFILE(_LT_NYSL_0_9982)) {
11707  INTERESTING("NYSL-0.9982");
11708  }
11710  if (INFILE(_LT_ODIN_2000)) {
11711  INTERESTING("Odin-Software-License-2000");
11712  }
11714  if (INFILE(_LT_ODMG)) {
11715  INTERESTING("ODMG-License");
11716  }
11718  if (INFILE(_LT_OGL_1_0A)) {
11719  INTERESTING("OGL-1.0a");
11720  }
11722  if (INFILE(_LT_OKNOSOFT_2021)) {
11723  INTERESTING("Oknosoft-License-2021");
11724  }
11726  if (INFILE(_LT_ON2_PATENT)) {
11727  INTERESTING("On2-VP3-Codec-Software-Patent-grant");
11728  }
11730  if (INFILE(_LT_OPENAI_TOU_20241211)) {
11731  INTERESTING("OpenAI-Terms-of-Use-20241211");
11732  }
11734  if (INFILE(_LT_OPENATOM_MODEL_1_0)) {
11735  INTERESTING("OpenAtom-Model-License-1.0");
11736  }
11738  if (INFILE(_LT_OPENVPN_AS_EULA)) {
11739  INTERESTING("OpenVPN-AS-EULA");
11740  }
11742  if (INFILE(_LT_OPEN_WEIGHTS_PERMISSIVE_1_0_)) {
11743  INTERESTING("Open-Weights-Permissive-License-v1.0.0");
11744  }
11746  if (INFILE(_LT_OPERA_EULA_2018)) {
11747  INTERESTING("Opera-EULA-2018");
11748  }
11750  if (INFILE(_LT_OPERA_EULA_EEA_2018)) {
11751  INTERESTING("Opera-EULA-EEA-2018");
11752  }
11754  if (INFILE(_LT_OPNL_1_0)) {
11755  INTERESTING("OPNL-1.0");
11756  }
11758  if (INFILE(_LT_OPNL_2_0)) {
11759  INTERESTING("OPNL-2.0");
11760  }
11762  if (INFILE(_LT_ORACLE_ENTITLEMENT_05_15)) {
11763  INTERESTING("Oracle-Entitlement-5-plus-15");
11764  }
11766  if (INFILE(_LT_ORACLE_GFTC_2023_06_12)) {
11767  INTERESTING("Oracle-GFTC-2023-06-12");
11768  }
11770  if (INFILE(_LT_ORACLE_NFTC_2021)) {
11771  INTERESTING("Oracle-NFTC-2021");
11772  }
11774  if (INFILE(_LT_ORACLE_OTN_JAVASE_2019)) {
11775  INTERESTING("OTN-for-Oracle-Java-SE-2019");
11776  }
11778  if (INFILE(_LT_ORACLE_SQL_DEVELOPER)) {
11779  INTERESTING("Oracle-SQL-Developer-License-Terms");
11780  }
11782  if (INFILE(_LT_OREILLY_NOTICE)) {
11783  INTERESTING("OReilly-Code-Sample-Notice");
11784  }
11786  if (INFILE(_LT_OSGI_SPEC_2_0)) {
11787  INTERESTING("OSGi-Specification-License-2.0");
11788  }
11790  if (INFILE(_LT_OS_MAINTENANCE_FEE_EULA)) {
11791  INTERESTING("Open-Source-Maintenance-Fee-EULA");
11792  }
11794  if (INFILE(_LT_OTN_DEV_DIST_2016)) {
11795  INTERESTING("OTN-License-2016");
11796  }
11798  if (INFILE(_LT_OTNLA_2016_11_30)) {
11799  INTERESTING("OTNLA-2016-11-30");
11800  }
11802  if (INFILE(_LT_OWFA_1_0_2023_05)) {
11803  INTERESTING("OWFa-1.0-Patent-and-Copyright-Grants-2023-05");
11804  }
11806  if (INFILE(_LT_OWFA_1_0)) {
11807  INTERESTING("OWFa-1.0-Patent-and-Copyright-Grants");
11808  }
11810  if (INFILE(_LT_OWFA_1_0_PATENT_ONLY)) {
11811  INTERESTING("OWFa-1.0-Patent-Only");
11812  }
11814  if (INFILE(_LT_OWF_CLA_1_0_COPYRIGHT)) {
11815  INTERESTING("OWF-CLA-1.0-Copyright");
11816  }
11818  if (INFILE(_LT_OWF_CLA_1_0_COPYRIGHT_PATENT)) {
11819  INTERESTING("OWF-CLA-1.0-Copyright-and-Patent");
11820  }
11822  if (INFILE(_LT_OXYGEN_XML_WEBHELP_EULA)) {
11823  INTERESTING("Oxygen-XML-WebHelp-EULA");
11824  }
11826  if (INFILE(_LT_PAOLO_MESSINA_2000)) {
11827  INTERESTING("Paolo-Messina-2000");
11828  }
11830  if (INFILE(_LT_PAYPAL_SDK_2013_2016)) {
11831  INTERESTING("PayPal-SDK-License-2013-2016");
11832  }
11834  if (INFILE(_LT_PDF_CREATOR_PILOT)) {
11835  INTERESTING("PDF-Creator-Pilot-License-Agreement");
11836  }
11838  if (INFILE(_LT_PD_PROGRAMMING)) {
11839  INTERESTING("PDProgramming-License");
11840  }
11842  if (INFILE(_LT_PHASER_CCP4)) {
11843  INTERESTING("Phaser-Commercial-EULA-CCP4");
11844  }
11846  if (INFILE(_LT_PHASER_PHENIX)) {
11847  INTERESTING("Phaser-Commercial-EULA-Phenix");
11848  }
11850  if (INFILE(_LT_PHILIPPE_DE_MUYTER)) {
11851  INTERESTING("Philippe-De-Muyter-License");
11852  }
11854  if (INFILE(_LT_PLANET_SOURCE_CODE)) {
11855  INTERESTING("Planet-Source-Code-License");
11856  }
11858  if (INFILE(_LT_PLASTIMATCH_1_0)) {
11859  INTERESTING("Plastimatch-1.0");
11860  }
11862  if (INFILE(_LT_PML_2020)) {
11863  INTERESTING("Amazon-PML-2020");
11864  }
11866  if (INFILE(_LT_PNGSUITE)) {
11867  INTERESTING("PngSuite-License");
11868  }
11870  if (INFILE(_LT_POWERVR_TOOLS_SOFTWARE_EULA)) {
11871  INTERESTING("PowerVR-Tools-Software-EULA");
11872  }
11874  if (INFILE(_LT_PROPRIETARY_LICENSE)) {
11875  INTERESTING("Proprietary-License");
11876  }
11878  if (INFILE(_LT_PSION_S3AEMUL)) {
11879  INTERESTING("Psion-User-LIcence-for-S3AEMUL");
11880  }
11882  if (INFILE(_LT_PSION_SIEMUL)) {
11883  INTERESTING("Psion-User-LIcence-for-SiEMUL");
11884  }
11886  if (INFILE(_LT_PSION_WRKAEMUL)) {
11887  INTERESTING("Psion-User-LIcence-for-WrkAEmul");
11888  }
11890  if (INFILE(_LT_PSYTEC_FREESOFT)) {
11891  INTERESTING("Psytec-Free-Software-License");
11892  }
11894  if (INFILE(_LT_QAPLUG)) {
11895  INTERESTING("QAPlug-License");
11896  }
11898  if (INFILE(_LT_QCA_LINUX_FIRMWARE)) {
11899  INTERESTING("QCA-Linux-Firmware-License");
11900  }
11902  if (INFILE(_LT_QCA_TECHNOLOGY)) {
11903  INTERESTING("QCA-Technology-License");
11904  }
11906  if (INFILE(_LT_QTI_LINUX_FIRMWARE)) {
11907  INTERESTING("QTI-Linux-Firmware");
11908  }
11910  if (INFILE(_LT_QUALCOMM_ISO)) {
11911  INTERESTING("Qualcomm-ISO-IEC-MPEG-B-DASH");
11912  }
11914  if (INFILE(_LT_QUICKNET_DOCUMENT_1999)) {
11915  INTERESTING("Quicknet-Document-License-1999");
11916  }
11918  if (INFILE(_LT_QWEN_2024)) {
11919  INTERESTING("Qwen-License-Agreement-2024");
11920  }
11922  if (INFILE(_LT_RACKSPACE)) {
11923  INTERESTING("Rackspace-License");
11924  }
11926  if (INFILE(_LT_REDIS_SOURCE_AVAILABLE_1_0)) {
11927  INTERESTING("Redis-Source-Available-License-1.0");
11928  }
11930  if (INFILE(_LT_RESPONSIBLE_AI_SOURCE_1_0)) {
11931  INTERESTING("Reponsible-AI-Source-Code-License-v1.0");
11932  }
11934  if (INFILE(_LT_RETYPE_3_7_0)) {
11935  INTERESTING("Retype-Software-License-Agreement-v3.7.0");
11936  }
11938  if (INFILE(_LT_RICHARD_BLACK)) {
11939  INTERESTING("Richard-Black-License");
11940  }
11942  if (INFILE(_LT_ROOT_CERT_3_0)) {
11943  INTERESTING("Root-Certificate-License-Agreement-v3.0");
11944  }
11946  if (INFILE(_LT_RSA_DEMO)) {
11947  INTERESTING("RSA-Demo-License");
11948  }
11950  if (INFILE(_LT_RUBYENCODER_COMMERCIAL)) {
11951  INTERESTING("RubyEncoder-Commercial-Licence");
11952  }
11954  if (INFILE(_LT_RUBYENCODER_LOADER)) {
11955  INTERESTING("RubyEncoder-Loader-Licence");
11956  }
11958  if (INFILE(_LT_SAFECOPY_EULA)) {
11959  INTERESTING("SafeCopy-EULA");
11960  }
11962  if (INFILE(_LT_SALESFORCESANS_FONT)) {
11963  INTERESTING("SalesforceSans-Font-License");
11964  }
11966  if (INFILE(_LT_SAM_2025_11_19)) {
11967  INTERESTING("SAM-License-2025-11-19");
11968  }
11970  if (INFILE(_LT_SANDEEP)) {
11971  INTERESTING("Sandeep-License");
11972  }
11974  if (INFILE(_LT_SCANLOGD_LICENSE)) {
11975  INTERESTING("scanlogd-License");
11976  }
11978  if (INFILE(_LT_SCOLA_EN)) {
11979  INTERESTING("Statistics-Canada-Open-Licence-Agreement");
11980  }
11982  if (INFILE(_LT_SCRIPT_NIKHILK)) {
11983  INTERESTING("ScriptSharp-License");
11984  }
11986  if (INFILE(_LT_SEMGREP_REGISTRY)) {
11987  INTERESTING("Semgrep-Registry-License");
11988  }
11990  if (INFILE(_LT_SEMGREP_RULES_1_0)) {
11991  INTERESTING("Semgrep-Rules-License-v.1.0");
11992  }
11994  if (INFILE(_LT_SERVICE_COMP_ARCH)) {
11995  INTERESTING("Service-Component-Architecture-License");
11996  }
11998  if (INFILE(_LT_SGI_CID_1_0)) {
11999  INTERESTING("SGI-CID-Font-Code-Public-License-1.0");
12000  }
12002  if (INFILE(_LT_SLINT_COMMERCIAL_2_0)) {
12003  INTERESTING("Slint-Commercial-License-2.0");
12004  }
12006  if (INFILE(_LT_SMARTLABS_FREEWARE)) {
12007  INTERESTING("SmartLabs-Freeware-License");
12008  }
12010  if (INFILE(_LT_SOCKETXX_2003)) {
12011  INTERESTING("Socketxx-License-2003");
12012  }
12014  if (INFILE(_LT_SOFTFLOAT_2C)) {
12015  INTERESTING("SoftFloat-Legal-Notice-2c");
12016  }
12018  if (INFILE(_LT_SPARK_JIVE)) {
12019  INTERESTING("Spark-Jive-License");
12020  }
12022  if (INFILE(_LT_SPLUNK_3PP_EULA)) {
12023  INTERESTING("Splunk-EULA-for-Third-Party-Content");
12024  }
12026  if (INFILE(_LT_SQUARE_CLA)) {
12027  INTERESTING("Square-CLA");
12028  }
12030  if (INFILE(_LT_STABILITY_AI_COMMUNITY_2024)) {
12031  INTERESTING("Stability-AI-Community-License-Agreement-2024");
12032  }
12034  if (INFILE(_LT_STMICROELECTRONICS_LINUX_FIR)) {
12035  INTERESTING("STMicroelectronics-Linux-Firmware-License");
12036  }
12038  if (INFILE(_LT_SUN_BCL_JAVA_SERVLET_IMP_2_1)) {
12039  INTERESTING("Sun-BCL-Java-Servlet-Implementation-2.1.1");
12040  }
12042  if (INFILE(_LT_SUN_BSD_EXTRA)) {
12043  INTERESTING("Sun-BSD-Style-with-Additional-Restrictions");
12044  }
12046  if (INFILE(_LT_SUN_CC_PP_1_0)) {
12047  INTERESTING("Sun-CC-PP-Processing-License-1.0");
12048  }
12050  if (INFILE(_LT_SUN_EJB_SPEC_3_0)) {
12051  INTERESTING("Sun-EJB-Specification-3.0");
12052  }
12054  if (INFILE(_LT_SUN_GLASSFISH)) {
12055  INTERESTING("Sun-GlassFish-License");
12056  }
12058  if (INFILE(_LT_SUN_JAVAMAIL)) {
12059  INTERESTING("Sun-JavaMail");
12060  }
12062  if (INFILE(_LT_SUN_JAVA_TRANSACTION_API)) {
12063  INTERESTING("Sun-Java-Transaction-API-License");
12064  }
12066  if (INFILE(_LT_SUN_JSR_SPEC_04_2006)) {
12067  INTERESTING("Sun-JSR-Specification-04-2006");
12068  }
12070  if (INFILE(_LT_SUN_JTA_SPEC_1_0_1B)) {
12071  INTERESTING("Sun-JTA-Specification-License-1.0.1B");
12072  }
12074  if (INFILE(_LT_SUN_NO_HIGH_RISK_ACTIVITIES)) {
12075  INTERESTING("Sun-No-High-Risk-Activities-License");
12076  }
12078  if (INFILE(_LT_SYNOPSYS_ATTRIBUTION)) {
12079  INTERESTING("Synopsys-Attribution-License");
12080  }
12082  if (INFILE(_LT_TALIGENT_JDK)) {
12083  INTERESTING("Taligent-JDK-Proprietary-Notice");
12084  }
12086  if (INFILE(_LT_TANUKI_MAINTENANCE)) {
12087  INTERESTING("Tanuki-Maintenance-Addendum-1.3");
12088  }
12090  if (INFILE(_LT_TENCENT_HUNYUAN_IMAGE_3_0_CL)) {
12091  INTERESTING("Tencent-Hunyuan-Image-3.0-CLA");
12092  }
12094  if (INFILE(_LT_T_ENGINE_PUBLIC)) {
12095  INTERESTING("T-Engine-Public-License");
12096  }
12098  if (INFILE(_LT_TI_BROADBAND_APPS)) {
12099  INTERESTING("TI-Broadband-Applications-License");
12100  }
12102  if (INFILE(_LT_T_LICENSE_1_0)) {
12103  INTERESTING("T-License-1.0");
12104  }
12106  if (INFILE(_LT_T_LICENSE_2_0)) {
12107  INTERESTING("T-License-2.0");
12108  }
12110  if (INFILE(_LT_T_LICENSE_2_1)) {
12111  INTERESTING("T-License-2.1");
12112  }
12114  if (INFILE(_LT_T_LICENSE_2_2)) {
12115  INTERESTING("T-License-2.2");
12116  }
12118  if (INFILE(_LT_T_LICENSE_AMP_T_KERNEL)) {
12119  INTERESTING("T-License-for-AMP-T-Kernel");
12120  }
12122  if (INFILE(_LT_T_LICENSE_AMP_TKSE)) {
12123  INTERESTING("T-License-for-AMP-TKSE");
12124  }
12126  if (INFILE(_LT_T_LICENSE_SMP_T_KERNEL)) {
12127  INTERESTING("T-License-for-SMP-T-Kernel");
12128  }
12130  if (INFILE(_LT_T_LICENSE_SMP_TKSE)) {
12131  INTERESTING("T-License-for-SMP-TKSE");
12132  }
12134  if (INFILE(_LT_T_LICENSE_TKSE)) {
12135  INTERESTING("T-License-for-TKSE");
12136  }
12138  if (INFILE(_LT_TONGYI_QIANWEN_2023)) {
12139  INTERESTING("Tongyi-Qianwen-License-Agreement-2023");
12140  }
12142  if (INFILE(_LT_TOPPERS_EDUCATIONAL)) {
12143  INTERESTING("TOPPERS-Educational");
12144  }
12146  if (INFILE(_LT_TOPPERS_LICENSE)) {
12147  INTERESTING("TOPPERS-License");
12148  }
12150  if (INFILE(_LT_TRCA_ODL_1_0)) {
12151  INTERESTING("TRCA-Open-Data-Licence-1.0");
12152  }
12154  if (INFILE(_LT_TREEVIEW_DEVELOPER)) {
12155  INTERESTING("TreeView-Developer-License");
12156  }
12158  if (INFILE(_LT_TREEVIEW_DISTRIBUTOR)) {
12159  INTERESTING("TreeView-Distributor-License");
12160  }
12162  if (INFILE(_LT_TRENDMICRO_CL_1_0)) {
12163  INTERESTING("Trend-Micro-Community-License-1.0");
12164  }
12166  if (INFILE(_LT_TRUSTONIC_PROPRIETARY_2013)) {
12167  INTERESTING("Trustonic-Proprietary-License-2013");
12168  }
12170  if (INFILE(_LT_TXL_10_5)) {
12171  INTERESTING("TXL-10.5-License");
12172  }
12174  if (INFILE(_LT_CCAI_CLAUSE)) {
12175  INTERESTING("CCAI-clause");
12176  }
12178  /* FatFs uses this same wording; prefer the more specific licence. */
12179  if (INFILE(_LT_UGUI) && NOT_INFILE(_LT_FATFS)) {
12180  INTERESTING("UGUI-License");
12181  }
12183  if (INFILE(_LT_UNLIMITED_BINARY_LINKING)) {
12184  INTERESTING("Unlimited-Binary-Linking-Exception");
12185  }
12187  if (INFILE(_LT_UNLIMITED_BINARY_USE_EXCEPTI)) {
12188  INTERESTING("Unlimited-Binary-Use-Exception");
12189  }
12191  if (INFILE(_LT_UNPUBLISHED_SOURCE)) {
12192  INTERESTING("Unpublished-Source-License");
12193  }
12195  if (INFILE(_LT_US_GOVT_GEOTRANFORM)) {
12196  INTERESTING("US-Government-GeoTransform");
12197  }
12199  if (INFILE(_LT_USROBOTICS_PERMISSIVE)) {
12200  INTERESTING("USRobotics-Permissive-License");
12201  }
12203  if (INFILE(_LT_UTAH_CSL)) {
12204  INTERESTING("Utah-CSL-License");
12205  }
12207  if (INFILE(_LT_VCALENDAR)) {
12208  INTERESTING("VCalendar-License");
12209  }
12211  if (INFILE(_LT_VERISIGN)) {
12212  INTERESTING("VeriSign-License");
12213  }
12215  if (INFILE(_LT_VICOMSOFT_SOFTWARE)) {
12216  INTERESTING("Vicomsoft-Software-License");
12217  }
12219  if (INFILE(_LT_VISUAL_NUMERICS)) {
12220  INTERESTING("Visual-Numerics-License");
12221  }
12223  if (INFILE(_LT_VITA_NUOVA_LIBERAL)) {
12224  INTERESTING("Vita-Nuova-Liberal-Source-License");
12225  }
12227  if (INFILE(_LT_VITESSE_PROP)) {
12228  INTERESTING("Vitesse-Proprietary-Notice");
12229  }
12231  if (INFILE(_LT_VPL_1_1)) {
12232  INTERESTING("VPL-1.1");
12233  }
12235  if (INFILE(_LT_VPL_1_2)) {
12236  INTERESTING("VPL-1.2");
12237  }
12239  if (INFILE(_LT_VS10X_CODE_MAP)) {
12240  INTERESTING("VS10x-Code-Map");
12241  }
12243  if (INFILE(_LT_W3C_COMMUNITY_CLA)) {
12244  INTERESTING("W3C-Community-CLA");
12245  }
12247  if (INFILE(_LT_W3C_COMMUNITY_FINAL_SPEC)) {
12248  INTERESTING("W3C-Community-Final-Specification-Agreement");
12249  }
12251  if (INFILE(_LT_WINCE_50_SHARED_SOURCE)) {
12252  INTERESTING("MS-Windows-CE-5.0-Shared-Source-License");
12253  }
12255  if (INFILE(_LT_WINIDEA_SDK_2025)) {
12256  INTERESTING("winIDEA-SDK-2025");
12257  }
12259  if (INFILE(_LT_XMOS_COMMERCIAL_2017)) {
12260  INTERESTING("XMOS-Commercial-2017");
12261  }
12263  if (INFILE(_LT_ZAPATEC_CALENDAR)) {
12264  INTERESTING("Zapatec-Calendar-License");
12265  }
12267  if (INFILE(_LT_ZEUSBENCH)) {
12268  INTERESTING("ZeusBench-notice");
12269  }
12271  if (INFILE(_LT_ZIPLIST5_GEOCODE_DUPLICATION)) {
12272  INTERESTING("ZIPList5-Geocode-Duplication-Addendum");
12273  }
12275  if (INFILE(_LT_ZVENO_RESEARCH)) {
12276  INTERESTING("Zveno-Research-License");
12277  }
12279  if (INFILE(_LT_EJ_TECHNOLOGIES_EULA)) {
12280  INTERESTING("ej-technologies-EULA");
12281  }
12283  if (INFILE(_LT_HUGO_LICENSE) && NOT_INFILE(_LT_HUGO)) {
12284  INTERESTING("Hugo-License");
12285  }
12287  if (INFILE(_LT_MOVAI_1_0)) {
12288  INTERESTING("Mov.AI-1.0");
12289  }
12291  if (INFILE(_LT_SBIA_B)) {
12292  INTERESTING("SBIA-B");
12293  }
12295  if (INFILE(_LT_YANDEXGPT_2025)) {
12296  INTERESTING("YandexGPT-5-Lite-8B-2025");
12297  }
12299  if (INFILE(_LT_ACTIVESTATE_COMMUNITY)) {
12300  INTERESTING("ActiveState-Community");
12301  }
12303  if (INFILE(_LT_CHRIS_STOY)) {
12304  INTERESTING("Chris-Stoy-Attribution");
12305  }
12307  if (INFILE(_LT_GLWTPL)) {
12308  INTERESTING("GLWTPL");
12309  }
12311  if (INFILE(_LT_RED_HAT_TRADEMARKS)) {
12312  INTERESTING("Red-Hat-Trademarks");
12313  }
12315  if (INFILE(_LT_RTOOLS_UTIL)) {
12316  INTERESTING("RTools-Util");
12317  }
12319  if (INFILE(_LT_TGC_SPEC_V2)) {
12320  INTERESTING("TCG-Spec-License-v2");
12321  }
12323  if (INFILE(_LT_TIGRA_CALENDAR_32)) {
12324  INTERESTING("Tigra-Calendar-3.2");
12325  }
12327  if (INFILE(_LT_TIM_JANIK_2003)) {
12328  INTERESTING("Tim-Janik-License-2003");
12329  }
12331  if (INFILE(_LT_ATMEL_FW_LINUX)) {
12332  INTERESTING("Atmel-linux-firmware");
12333  }
12337  if (INFILE(_LT_KFGQPC_UTHMANIC)) {
12338  INTERESTING("KFGQPC-Uthmanic-Script-HAFS");
12339  }
12341  if (INFILE(_LT_KICAD_LIB_EXC)) {
12342  INTERESTING("KiCad-libraries-exception");
12343  }
12345  if (INFILE(_LT_QPL_INRIA_2004)) {
12346  INTERESTING("QPL-1.0-INRIA-2004-exception");
12347  }
12349  if (INFILE(_LT_BITSTREAM_CHARTER)) {
12350  INTERESTING("Bitstream-Charter");
12351  }
12353  if (INFILE(_LT_GRAPHICS_GEMS)) {
12354  INTERESTING("Graphics-Gems");
12355  }
12357  if (INFILE(_LT_KNUTH_CTAN)) {
12358  INTERESTING("Knuth-CTAN");
12359  }
12361  if (INFILE(_LT_LAL_12)) {
12362  INTERESTING("LAL-1.2");
12363  }
12365  if (INFILE(_LT_LILIQ_P_11)) {
12366  INTERESTING("LiLiQ-P-1.1");
12367  }
12369  if (INFILE(_LT_NLPL_PROSE)) {
12370  INTERESTING("NLPL");
12371  }
12373  if (INFILE(_LT_OSC_10)) {
12374  INTERESTING("OSC-1.0");
12375  }
12377  if (INFILE(_LT_SGP4_LIC)) {
12378  INTERESTING("SGP4");
12379  }
12381  if (INFILE(_LT_SL_LIC)) {
12382  INTERESTING("SL");
12383  }
12385  if (INFILE(_LT_FMT_EXCEPTION)) {
12386  INTERESTING("fmt-exception");
12387  }
12389  if (INFILE(_LT_ADVANCED_CRYPTICS)) {
12390  INTERESTING("Advanced-Cryptics-Dictionary");
12391  }
12393  if (INFILE(_LT_CFITSIO)) {
12394  INTERESTING("CFITSIO");
12395  }
12397  if (INFILE(_LT_ELASTIC_20)) {
12398  INTERESTING("Elastic-2.0");
12399  }
12401  if (INFILE(_LT_OPENMDW_10)) {
12402  INTERESTING("OpenMDW-1.0");
12403  }
12405  if (INFILE(_LT_TPDL)) {
12406  INTERESTING("TPDL");
12407  }
12409  if (INFILE(_LT_WTFNMFPL)) {
12410  INTERESTING("WTFNMFPL");
12411  }
12413  /*
12414  * END of license-footprint checking of known patterns/strings
12415  ******
12416  * Plan-B: look for things attorneys generally believe aren't "overly
12417  * legally-binding" or "uninterestring from a license perspective':
12418  * ... notable references to commercial, non-commercial, not-for-profit,
12419  * not-an-open-source-license, etc.
12420  */
12421  if (maxInterest != IL_HIGH) {
12422  if (INFILE(_LT_COMMERCIAL_1)) {
12423  INTERESTING(lDebug ? "COMM(1)" : "COMMERCIAL");
12424  }
12425  else if (INFILE(_LT_COMMERCIAL_2)) {
12426  INTERESTING(lDebug ? "COMM(2)" : "COMMERCIAL");
12427  }
12428  else if (HASTEXT(_LT_COMMERCIAL_3, REG_EXTENDED)) {
12429  if (HASTEXT(_LT_COMMERCIAL_Intel, REG_EXTENDED)) {
12430  INTERESTING("Intel.Commercial");
12431  } else if (HASTEXT(_LT_COMMERCIAL_Broadcom, REG_EXTENDED)) {
12432  INTERESTING("Broadcom.Commercial");
12433  } else {
12434  INTERESTING(lDebug ? "COMM(3)" : "COMMERCIAL");
12435  }
12436  }
12437  else if (INFILE(_LT_COMMERCIAL_4)) {
12438  if (HASTEXT(_LT_COMMERCIAL_Android_Fraunhofer, 0)) {
12439  INTERESTING("AndroidFraunhofer.Commercial");
12440  } else {
12441  INTERESTING(lDebug ? "COMM(4)" : "COMMERCIAL");
12442  }
12443  }
12444  else if (HASTEXT(_TEXT_BOOK, 0) && INFILE(_LT_BOOKPURCHASE)) {
12445  INTERESTING(lDebug ? "PurchBook" : "COMMERCIAL");
12446  }
12447  else if (INFILE(_LT_COMMERCIAL_5)) {
12448  INTERESTING(lDebug ? "COMM(5)" : "COMMERCIAL");
12449  }
12450  else if (INFILE(_LT_COMMERCIAL_6)) {
12451  INTERESTING(lDebug ? "COMM(6)" : "COMMERCIAL");
12452  }
12453  else if (INFILE(_LT_COMMERCIAL_7)) {
12454  INTERESTING(lDebug ? "COMM(7)" : "COMMERCIAL");
12455  }
12456  if (INFILE(_LT_NONPROFIT_1)) {
12457  MEDINTEREST(lDebug ? "NonP(1)" : "Non-profit");
12458  }
12459  else if (!lmem[_mPYTH_TEXT] && HASTEXT(_TEXT_PROFIT, 0) &&
12460  INFILE(_PHR_NONPROFIT)) {
12461  if (!(lmem[_fIETF] + lmem[_fDOC])) {
12462  MEDINTEREST(lDebug ? "NonP(2)" : "Non-profit");
12463  }
12464  }
12465  if (INFILE(_PHR_NO_SALE)) {
12466  MEDINTEREST("Not-for-sale");
12467  }
12468  if (!lmem[_mALADDIN] && INFILE(_PHR_NOT_OPEN)) {
12469  MEDINTEREST("NOT-Open-Source");
12470  }
12471  if (HASKW(kwbm, _KW_patent) && INFILE(_PHR_PATENT) && NOT_INFILE(_PHR_PATENT_NOT)) {
12472  MEDINTEREST("Patent-ref");
12473  }
12474  if (INFILE(_PHR_RESTRICT_RIGHTS)) {
12475  if (INFILE(_PHR_USGOVT_RESTRICT)) {
12476  MEDINTEREST("Govt-restrict");
12477  }
12478  else {
12479  MEDINTEREST("Restricted-rights");
12480  }
12481  }
12482  if (INFILE(_LT_EXPORTS_USA)) {
12483  MEDINTEREST("US-Export-restrict");
12484  }
12485  if (pd < 0) {
12486  checkPublicDomain(filetext, size, score, kwbm, isML, isPS);
12487  }
12488  }
12489  listClear(&whereList, NO); /* again, clear "unused" matches */
12491  /*
12492  * These "minimal-reference possibilities" MUST adhere to a prescribed
12493  * format: the name to be used MUST be the first of several name to match:
12494  * "(NAME identifier|NAME license|license NAME)"
12495  *****
12496  * Furthermore, licenses should be ordered from the most-specific to the
12497  * least-specific; e.g., look for LGPL_v3 before looking for LGPL -- the
12498  * strGrep() calls below ensure reporting only more-specific license
12499  * versions if found. For instance, if you order LGPL *before* LGPL_v3
12500  * we'll get both LGPLv3 and LGPL, which is redundant AND looks stupid.
12501  */
12502  if (*licStr == NULL_CHAR && HASKW(kwbm, _KW_license)) {
12503  for (i = 0, j = _MINlicense_first; i < NMINlicense; i++, j++) {
12504  if (dbgIdxGrep(j, filetext, lDiags)) {
12505  cp = strchr(_REGEX(j), ' ');
12506  if (cp == NULL_STR) {
12507  Assert(NO, "Bad reference[1] %d", j);
12508  continue;
12509  }
12510  *cp = NULL_CHAR;
12511  if (!(*licStr) || !strGrep(_REGEX(j)+1, licStr,
12512  REG_ICASE)) {
12513  (void) sprintf(name, "%s-possibility",
12514  _REGEX(j)+1);
12515  LOWINTEREST(name);
12516  }
12517  *cp = ' ';
12518  }
12519  }
12520  }
12521  listClear(&whereList, NO); /* again, clear "unused" matches */
12523  if (*licStr == NULL_CHAR && HASTEXT(_TEXT_SOURCE, 0)) {
12524  for (i = 0, j = _MINsource_first; i < NMINsource; i++, j++) {
12525  if (dbgIdxGrep(j, filetext, lDiags)) {
12526  cp = strchr(_REGEX(j), ' ');
12527  if (cp == NULL_STR) {
12528  Assert(NO, "Bad reference[2] %d", j);
12529  continue;
12530  }
12531  *cp = NULL_CHAR;
12532  if (!(*licStr) || !strGrep(_REGEX(j)+1, licStr,
12533  REG_ICASE)) {
12534  (void) sprintf(name, "%s-possibility",
12535  _REGEX(j)+1);
12536  LOWINTEREST(name);
12537  }
12538  *cp = ' ';
12539  }
12540  }
12541  }
12542  listClear(&whereList, NO); /* again, clear "unused" matches */
12544  if (*licStr == NULL_CHAR && HASTEXT(_KW_copyright, 0)) {
12545  for (i = 0, j = _MINcpyrt_first; i < NMINcpyrt; i++, j++) {
12546  if (dbgIdxGrep(j, filetext, lDiags)) {
12547  cp = strchr(_REGEX(j), ' ');
12548  if (cp == NULL_STR) {
12549  Assert(NO, "Bad reference[2] %d", j);
12550  continue;
12551  }
12552  *cp = NULL_CHAR;
12553  if (!(*licStr) || !strGrep(_REGEX(j)+1, licStr,
12554  REG_ICASE)) {
12555  (void) sprintf(name, "%s-possibility",
12556  _REGEX(j)+1);
12557  LOWINTEREST(name);
12558  }
12559  *cp = ' ';
12560  }
12561  }
12562  }
12563  listClear(&whereList, NO); /* again, clear "unused" matches */
12565  /*
12566  * NOW look for unclassified licenses, if we haven't found anything yet.
12567  * And avoid checking .po files -- message catalogues are known to have
12568  * false-positives.
12569  *****
12570  * FIX-ME: if a file contains ONLY a "no warranty" description/clause, it
12571  * will (currently) get flagged as an UnclassifiedLicense (so the check
12572  * for no-warranty was moved ABOVE this check in case we can use that info)
12573  */
12574  if (maxInterest != IL_HIGH && !lmem[_fDOC]) {
12575  if (!pd &&
12576  checkUnclassified(filetext, size, scp->score, isML,
12577  isPS, nw)) {
12578  strcpy(name, LS_UNCL);
12579  if (isPS) {
12580  strcat(name, "(PS)");
12581  }
12582  MEDINTEREST(name);
12583  checkCornerCases(filetext, size, score, kwbm, isML, isPS, nw, YES);
12584  }
12585 #ifdef UNKNOWN_CHECK_DEBUG
12586  else {
12587  printf("... NOT an Unclassified license, NW %d PD %d\n",
12588  nw, pd);
12589  }
12590 #endif /* UNKNOWN_CHECK_DEBUG */
12591  }
12592  listClear(&whereList, NO); /* clear "unused" matches */
12594  /*
12595  * If we still haven't found anything, check for the really-low interest
12596  * items such as copyrights, and references to keywords (patent/trademark)
12597  */
12598  if (maxInterest != IL_HIGH && pd <= 0) {
12599  checkCornerCases(filetext, size, score, kwbm, isML, isPS,
12600  nw, NO);
12601  }
12602 #ifdef MEMSTATS
12603  printf("DEBUG: static lists in parseLicenses():\n");
12604  listDump(&searchList, -1);
12605  memStats("parseLicenses: pre-Free");
12606 #endif /* MEMSTATS */
12607  listClear(&searchList, NO);
12608 #ifdef MEMSTATS
12609  memStats("parseLicenses: EOP");
12610 #endif /* MEMSTATS */
12611 #ifdef LTSR_DEBUG
12612  showLTCache("LTSR-results AFTER:");
12613 #endif /* LTSR_DEBUG */
12614 #ifdef FLAG_NO_COPYRIGHT
12615  if (!SEEN(_CR_ZZZANY)) {
12616  (void) INFILE(_CR_ZZZANY);
12617  }
12618  if (!SEEN(_CR_ZZZWRONG_1)) {
12619  (void) INFILE(_CR_ZZZWRONG_1);
12620  }
12621  if (LVAL(_CR_ZZZANY)+LVAL(_CR_ZZZWRONG_1)+
12622  HASREGEX(_CR_ZZZWRONG_2, filetext) == 0) {
12623  gl.flags |= FL_NOCOPYRIGHT;
12624  }
12625 #endif /* FLAG_NO_COPYRIGHT */
12626  listClear(&whCacheList, NO);
12627  if (whereList.used) {
12628  listClear(&whereList, NO); /* may already be cleared! */
12629  }
12630  return(licStr+1); /* don't include the leading comma */
12631 }
12632 
12641 char *sisslVersion(char *filetext, int size, int isML, int isPS)
12642 {
12643  char *lstr = NULL_STR;
12644 
12645 #ifdef PROC_TRACE
12646  traceFunc("== sisslVersion()\n");
12647 #endif /* PROC_TRACE */
12648 
12649  if (INFILE(_TITLE_SISSL_V11)) {
12650  lstr = "SISSL-1.1";
12651  }
12652  else if (INFILE(_TITLE_SISSL_V12)) {
12653  lstr = "SISSL-1.2";
12654  } else {
12655  lstr = "SISSL";
12656  }
12657  return lstr;
12658 }
12659 
12668 char *aslVersion(char *filetext, int size, int isML, int isPS)
12669 {
12670  char *lstr = NULL_STR;
12671 
12672 #ifdef PROC_TRACE
12673  traceFunc("== aslVersion()\n");
12674 #endif /* PROC_TRACE */
12675 
12676  /*
12677  * Exclude first non-Apache licenses
12678  */
12679  if (INFILE(_TITLE_PHORUM) || INFILE(_CR_PHORUM)) {
12680  lstr = "Phorum";
12681  lmem[_mAPACHE] = 1;
12682  }
12683  else if (INFILE(_CR_IMAGEMAGICK)) {
12684  lstr = "ImageMagick(Apache)";
12685  lmem[_mAPACHE] = 1;
12686  }
12687  else if (INFILE(_LT_MODIFIED_APACHE)) {
12688  /* modified text must not report the pristine licence */
12689  lstr = "Apache-style";
12690  lmem[_mAPACHE] = 1;
12691  }
12692  /*
12693  * Apache-2.0 cases
12694  */
12695  else if (INFILE(_SPDX_Apache_20)) {
12696  lstr = (lDebug ? "Apache-2.0(SPDX)" : "Apache-2.0");
12697  lmem[_mAPACHE] = 1;
12698  }
12699  else if (INFILE(_TITLE_Apache_20)) {
12700  lstr = (lDebug ? "Apache-2(f)" : "Apache-2.0");
12701  lmem[_mAPACHE] = 1;
12702  }
12703  else if (INFILE(_PHR_Apache_20_ref1) || INFILE(_PHR_Apache_20_ref2) || INFILE(_PHR_Apache_20_ref3))
12704  {
12705  lstr = (lDebug ? "PHR_Apache_20_ref(1-5)" : "Apache-2.0");
12706  lmem[_mAPACHE] = 1;
12707  }
12708  else if (URL_INFILE(_URL_Apache_20)) {
12709  lstr = (lDebug ? "Apache-2.0(u)" : "Apache-2.0");
12710  lmem[_mAPACHE] = 1;
12711  }
12712  else if (INFILE(_LT_Apache_20) && NOT_INFILE(_TITLE_Flora_V10) && NOT_INFILE(_TITLE_Flora_V11) && !URL_INFILE(_URL_Flora))
12713  {
12714  lstr = (lDebug ? "Apache(2.0#2)" : "Apache-2.0");
12715  lmem[_mAPACHE] = 1;
12716  }
12717  else if (INFILE(_PHR_Apache_20_ref4) || INFILE(_PHR_Apache_20_ref5) || INFILE(_PHR_Apache_20_ref6) || INFILE(_PHR_Apache_20_ref7)) {
12718  lstr = (lDebug ? "Apache(2.0#3)" : "Apache-2.0");
12719  lmem[_mAPACHE] = 1;
12720  }
12721  else if (INFILE(_TITLE_Apache_20)) {
12722  lstr = (lDebug ? "Apache(2.0#4)" : "Apache-2.0");
12723  lmem[_mAPACHE] = 1;
12724  }
12725  else if (URL_INFILE(_URL_Apache_20_1)) {
12726  lstr = (lDebug ? "Apache2(url#1)" : "Apache-2.0");
12727  lmem[_mAPACHE] = 1;
12728  }
12729  else if (URL_INFILE(_URL_Apache_20_2)) {
12730  lstr = (lDebug ? "Apache2(url#2)" : "Apache-2.0");
12731  lmem[_mAPACHE] = 1;
12732  }
12733  /*
12734  * Apache-1.1 cases
12735  */
12736  else if (INFILE(_SPDX_Apache_11)) {
12737  lstr = (lDebug ? "Apache-1.1(SPDX)" : "Apache-1.1");
12738  lmem[_mAPACHE11] = 1;
12739  }
12740  else if (INFILE(_TITLE_Apache_11)) {
12741  lstr = (lDebug ? "Apache-1.1(f)" : "Apache-1.1");
12742  lmem[_mAPACHE11] = 1;
12743  }
12744  else if (URL_INFILE(_URL_Apache_11)) {
12745  lstr = (lDebug ? "Apache-1.1(u)" : "Apache-1.1");
12746  lmem[_mAPACHE11] = 1;
12747  }
12748  else if (INFILE(_LT_Apache_11_CLAUSE_3) && INFILE(_LT_Apache_11_CLAUSE_4) && INFILE(_LT_Apache_11_CLAUSE_5)) {
12749  lstr = (lDebug ? "Apache-1.1(clauses)" : "Apache-1.1");
12750  lmem[_mAPACHE11] = 1;
12751  }
12752  else if (INFILE(_PHR_Apache_11_ref1)) {
12753  lstr = (lDebug ? "Apache(1.1#phr)" : "Apache-1.1");
12754  lmem[_mAPACHE11] = 1;
12755  }
12756  /*
12757  * Apache-1.0 cases
12758  */
12759  else if (INFILE(_SPDX_Apache_10)) {
12760  lstr = (lDebug ? "Apache-1.0(SPDX)" : "Apache-1.0");
12761  lmem[_mAPACHE10] = 1;
12762  }
12763  else if (INFILE(_PHR_Apache_ref2)) {
12764  lstr = (lDebug ? "Apache-1.0(f)" : "Apache-1.0");
12765  lmem[_mAPACHE10] = 1;
12766  }
12767  else if (INFILE(_LT_Apache_10_CLAUSE_4)) {
12768  lstr = (lDebug ? "Apache-1.0(g)" : "Apache-1.0");
12769  lmem[_mAPACHE10] = 1;
12770  }
12771  else if (URL_INFILE(_URL_Apache_10)) {
12772  lstr = (lDebug ? "Apache-1.0(u)" : "Apache-v1.0");
12773  lmem[_mAPACHE10] = 1;
12774  }
12775  /*
12776  * BSD-style cases
12777  */
12778  else if (INFILE(_LT_BSD_1)) {
12779  if (INFILE(_CR_APACHE) || INFILE(_TITLE_Apache)) {
12780  if (INFILE(_PHR_Apache_20_ref6)) {
12781  lstr = (lDebug ? "Apache-20_ref6" : "Apache-2.0");
12782  lmem[_mAPACHE] = 1;
12783  }
12784  else if (INFILE(_PHR_Apache_11_ref2)) {
12785  lstr = (lDebug ? "Apache(1.1#2)" : "Apache-1.1");
12786  lmem[_mAPACHE11] = 1;
12787  }
12788  else if ((INFILE(_PHR_Apache_ref2) || INFILE(_LT_Apache_10_CLAUSE_4))) {
12789  lstr = (lDebug ? "Apache(1.0#2)" : "Apache-1.0");
12790  lmem[_mAPACHE10] = 1;
12791  }
12792  else {
12793  lstr = (lDebug ? "Apache(title)" : "Apache");
12794  lmem[_mAPACHE] = 1;
12795  }
12796  }
12797  }
12798  /*
12799  * Apache without versions
12800  */
12801  else if (!lmem[_fREAL] && INFILE(_SPDX_Apache)) {
12802  lstr = (lDebug ? "Apache(SPDX)" : "Apache");
12803  lmem[_mAPACHE] = 1;
12804  }
12805  else if (INFILE(_PHR_Apache_ref1)) {
12806  INTERESTING(lDebug ? "Apache(ref#1)" : "Apache");
12807  lmem[_mAPACHE] = 1;
12808  }
12809  else if (INFILE(_PHR_Apache_ref4)) {
12810  lstr = (lDebug ? "Apache(ref#3)" : "Apache");
12811  lmem[_mAPACHE] = 1;
12812  }
12813  else if (INFILE(_PHR_Apache_ref3)) {
12814  lstr = (lDebug ? "Apache(ref#4)" : "Apache");
12815  lmem[_mAPACHE] = 1;
12816  }
12817  else if (URL_INFILE(_URL_Apache_1)) {
12818  lstr = (lDebug ? "Apache(url#1)" : "Apache");
12819  lmem[_mAPACHE] = 1;
12820  }
12821  else if (URL_INFILE(_URL_Apache_2)) {
12822  lstr = (lDebug ? "Apache(url#2)" : "Apache");
12823  lmem[_mAPACHE] = 1;
12824  }
12825  else if (INFILE(_PHR_Apache_ref6)) {
12826  lstr = (lDebug ? "Apache(ref#6)" : "Apache");
12827  lmem[_mAPACHE] = 1;
12828  }
12829  /*
12830  * _LT_Apache_1 and _2 cannot be identified in any Apache license
12831  * versions. They have been defined in very early nomos versions. They
12832  * are kept here, although, there are no special test cases for them.
12833  */
12834  else if (INFILE(_LT_Apache_1)) {
12835  lstr = (lDebug ? "Apache(1)" : "Apache");
12836  lmem[_mAPACHE] = 1;
12837  }
12838  else if (INFILE(_LT_Apache_2)) {
12839  lstr = (lDebug ? "Apache(2)" : "Apache");
12840  lmem[_mAPACHE] = 1;
12841  }
12842  else if (INFILE(_LT_APACHESTYLEref)) {
12843  lstr = ("Apache-style");
12844  lmem[_mAPACHE] = 1;
12845  }
12846  return lstr;
12847 }
12848 
12857 char *mplNplVersion(char *filetext, int size, int isML, int isPS)
12858 {
12859  char *lstr = NULL_STR;
12860 
12861 #ifdef PROC_TRACE
12862  traceFunc("== mplNplVersion()\n");
12863 #endif /* PROC_TRACE */
12864 
12865  if (INFILE(_TITLE_MPL11_OR_LATER)) {
12866  lstr = "MPL-1.1+";
12867  }
12868  else if (INFILE(_LT_MPL11_ref)) {
12869  lstr = "MPL-1.1";
12870  }
12871  else if (INFILE(_TITLE_NPL11_MPL)) {
12872  lstr = "NPL-1.1";
12873  }
12874  else if (INFILE(_TITLE_MPL11) && INFILE(_TITLE_MPL_style)) {
12875  lstr = "MPL-1.1-style";
12876  }
12877  else if (INFILE(_TITLE_SUGARCRM_PL)) {
12878  lstr = "SugarCRM-1.1.3";
12879  lmem[_mMPL] = 1;
12880  lmem[_fATTRIB] = 1;
12881  }
12882  else if (INFILE(_TITLE_MPL11) && !HASTEXT(_LT_NP_AME, REG_EXTENDED)) {
12883  lstr = "MPL-1.1";
12884  }
12885  else if ((INFILE(_TITLE_MPL20_EXCEPTION) || INFILE(_TITLE_MPL20_NO_COPYLEFT_NAMED))
12886  && NOT_INFILE(_LT_MPL20_BODY)) {
12887  lstr = "MPL-2.0-no-copyleft-exception";
12888  }
12889  else if (INFILE(_TITLE_MPL20) || URL_INFILE(_URL_MPL20) || HASTEXT(_LT_MPL20_ref, REG_EXTENDED)) {
12890  lstr = "MPL-2.0";
12891  }
12892  else if (INFILE(_TITLE_MPL10) && INFILE(_TITLE_ERLPL)) {
12893  lstr = "ErlPL-1.1";
12894  }
12895  else if (INFILE(_TITLE_MPL10)) {
12896  lstr = "MPL-1.0";
12897  }
12898  else if (INFILE(_TITLE_MPL_EULA_30)) {
12899  lstr = "MPL-EULA-3.0";
12900  }
12901  else if (INFILE(_TITLE_MPL_EULA_20)) {
12902  lstr = "MPL-EULA-2.0";
12903  }
12904  else if (INFILE(_TITLE_MPL_EULA_11)) {
12905  lstr = "MPL-EULA-1.1";
12906  }
12907  else if (URL_INFILE(_URL_NPL10)) {
12908  lstr = (lDebug ? "NPL1.0(url)" : "NPL-1.0");
12909  }
12910  else if (URL_INFILE(_URL_NPL11)) {
12911  lstr = (lDebug ? "NPL1.1(url)" : "NPL-1.1");
12912  }
12913  else if (URL_INFILE(_URL_MPL10)) {
12914  lstr = (lDebug ? "MPL1.0(url)" : "MPL-1.0");
12915  }
12916  else if (URL_INFILE(_URL_MPL11)) {
12917  lstr = (lDebug ? "MPL1.1(url)" : "MPL-1.1");
12918  }
12919  else if (INFILE(_FILE_MPL10)) {
12920  lstr = (lDebug ? "MPL1.0(file)" : "MPL-1.0");
12921  }
12922  else if (INFILE(_FILE_MPL11)) {
12923  lstr = (lDebug ? "MPL1.1(file)" : "MPL-1.1");
12924  }
12925  else if (INFILE(_TITLE_NPL11_OR_LATER)) {
12926  lstr = "NPL-1.1+";
12927  }
12928  else if (INFILE(_TITLE_NPL11)) {
12929  lstr = "NPL-1.1";
12930  }
12931  else if (INFILE(_TITLE_NPL10)) {
12932  lstr = "NPL-1.0";
12933  }
12934  else if (URL_INFILE(_URL_NPL)) {
12935  lstr = (lDebug ? "NPL(url)" : "NPL");
12936  }
12937  else if (INFILE(_SPDX_MPL_10)) {
12938  lstr = "MPL-1.0";
12939  }
12940  else if (INFILE(_SPDX_MPL_11)) {
12941  lstr = "MPL-1.1";
12942  }
12943  else if (INFILE(_SPDX_MPL_20_no_copyleft_exception)) {
12944  lstr = "MPL-2.0-no-copyleft-exception";
12945  }
12946  else if (INFILE(_SPDX_MPL_20)) {
12947  lstr = "MPL-2.0";
12948  }
12949  else if (URL_INFILE(_URL_MPL_LATEST)) {
12950  lstr = (lDebug ? "MPL(latest)" : "MPL");
12951  }
12952  else if (URL_INFILE(_URL_MPL)) {
12953  lstr = (lDebug ? "MPL(url)" : "MPL");
12954  }
12955  else if (INFILE(_TITLE_NPL)) {
12956  lstr = "NPL";
12957  }
12958  else if (INFILE(_TITLE_MPL)) {
12959  lstr = "MPL";
12960  }
12961  else {
12962  lstr = (lDebug ? "MPL(last)" : "MPL");
12963  }
12964  return lstr;
12965 }
12966 
12975 char *realVersion(char *filetext, int size, int isML, int isPS, int ref)
12976 {
12977  char *lstr = NULL_STR;
12978 
12979 #ifdef PROC_TRACE
12980  traceFunc("== realVersion()\n");
12981 #endif /* PROC_TRACE */
12982 
12983  if (ref == _TITLE_RPSL) {
12984  if (INFILE(_TITLE_RPSL_V30)) {
12985  lstr = "RPSL-3.0";
12986  }
12987  else if (INFILE(_TITLE_RPSL_V20)) {
12988  lstr = "RPSL-2.0";
12989  }
12990  else if (INFILE(_TITLE_RPSL_V10)) {
12991  lstr = "RPSL-1.0";
12992  }
12993  else if (INFILE(_TITLE_RPSL)) {
12994  lstr = "RPSL";
12995  }
12996  }
12997  else if (ref == _TITLE_RCSL) {
12998  if (INFILE(_TITLE_RCSL_V30)) {
12999  lstr = "RCSL-3.0";
13000  }
13001  else if (INFILE(_TITLE_RCSL_V20)) {
13002  lstr = "RCSL-2.0";
13003  }
13004  else if (INFILE(_TITLE_RCSL_V10)) {
13005  lstr = "RCSL-1.0";
13006  }
13007  else if (INFILE(_TITLE_RCSL)) {
13008  lstr = "RCSL";
13009  }
13010  }
13011  else {
13012  lstr = "RealNetworks-Unknown";
13013  }
13014  return lstr;
13015 }
13016 
13025 char *pythonVersion(char *filetext, int size, int isML, int isPS)
13026 {
13027  char *lstr = NULL_STR;
13028 
13029 #ifdef PROC_TRACE
13030  traceFunc("== pythonVersion()\n");
13031 #endif /* PROC_TRACE */
13032 
13033  if (INFILE(_TITLE_PYTHON201)) {
13034  lstr = "Python-2.0.1";
13035  }
13036  else if (INFILE(_TITLE_PYTHON202)) {
13037  lstr = "Python-2.0.2";
13038  }
13039  else if (INFILE(_TITLE_PYTHON211)) {
13040  lstr = "Python-2.1.1";
13041  }
13042  else if (INFILE(_TITLE_PYTHON213)) {
13043  lstr = "Python-2.1.3";
13044  }
13045  else if (INFILE(_TITLE_PYTHON223)) {
13046  lstr = "Python-2.2.3";
13047  }
13048  else if (INFILE(_TITLE_PYTHON227)) {
13049  lstr = "Python-2.2.7";
13050  }
13051  else if (INFILE(_TITLE_PYTHON237)) {
13052  lstr = "Python-2.3.7";
13053  }
13054  else if (INFILE(_TITLE_PYTHON244)) {
13055  lstr = "Python-2.4.4";
13056  }
13057  else if (INFILE(_TITLE_PYTHON22)) {
13058  lstr = "Python-2.2";
13059  }
13060  else if (INFILE(_TITLE_PYTHON23)) {
13061  lstr = "Python-2.3";
13062  }
13063  else if (INFILE(_TITLE_PYTHON_20_1) || INFILE(_TITLE_PYTHON_20_2)) {
13064  lstr = "Python-2.0";
13065  }
13066  else {
13067  lstr = "Python";
13068  }
13069  return lstr;
13070 }
13071 
13080 char *aflVersion(char *filetext, int size, int isML, int isPS)
13081 {
13082  char *lstr = NULL_STR;
13083 
13084 #ifdef PROC_TRACE
13085  traceFunc("== aflVersion()\n");
13086 #endif /* PROC_TRACE */
13087 
13088  if (INFILE(_TITLE_AFL30)) {
13089  lstr = lDebug? "AFL(v3.0#1)" : "AFL-3.0";
13090  }
13091  else if (INFILE(_TITLE_AFL21)) {
13092  lstr = lDebug? "AFL(v2.1#1)" : "AFL-2.1";
13093  }
13094  else if (INFILE(_TITLE_AFL20)) {
13095  lstr = lDebug? "AFL(v2.0#1)" : "AFL-2.0";
13096  }
13097  else if (INFILE(_TITLE_AFL12)) {
13098  lstr = lDebug? "AFL(v1.2#1)" : "AFL-1.2";
13099  }
13100  else if (INFILE(_TITLE_AFL11)) {
13101  lstr = lDebug? "AFL(v1.1#1)" : "AFL-1.1";
13102  }
13103  else if (INFILE(_TITLE_AFL10)) {
13104  lstr = lDebug? "AFL(v1.0#1)" : "AFL-1.0";
13105  }
13106  else {
13107  lstr = "AFL";
13108  }
13109  return lstr;
13110 }
13111 
13120 char *oslVersion(char *filetext, int size, int isML, int isPS)
13121 {
13122  char *lstr = NULL_STR;
13123  /* */
13124 #ifdef PROC_TRACE
13125  traceFunc("== oslVersion()\n");
13126 #endif /* PROC_TRACE */
13127  /* */
13128  if (INFILE(_TITLE_NON_PROFIT_OSL30)) {
13129  lstr = "NPOSL-3.0";
13130  }
13131  else if (INFILE(_TITLE_OSL30)) {
13132  lstr = lDebug? "OSL(v3.0#1)" : "OSL-3.0";
13133  }
13134  else if (INFILE(_TITLE_OSL21)) {
13135  lstr = lDebug? "OSL(v2.1#1)" : "OSL-2.1";
13136  }
13137  else if (INFILE(_TITLE_OSL20)) {
13138  lstr = lDebug? "OSL(v2.0#1)" : "OSL-2.0";
13139  }
13140  else if (INFILE(_TITLE_OSL11)) {
13141  lstr = lDebug? "OSL(v1.1#1)" : "OSL-1.1";
13142  }
13143  else if (INFILE(_TITLE_OSL10)) {
13144  lstr = lDebug? "OSL(v1.0#1)" : "OSL-1.0";
13145  }
13146  else {
13147  lstr = "OSL";
13148  }
13149  return lstr;
13150 }
13151 
13160 char *cddlVersion(char *filetext, int size, int isML, int isPS)
13161 {
13162  char *lstr = NULL_STR;
13163  /* */
13164 #ifdef PROC_TRACE
13165  traceFunc("== cddlVersion()\n");
13166 #endif /* PROC_TRACE */
13167  /* */
13168  if (INFILE(_TITLE_CDDL_10)) {
13169  lstr = "CDDL-1.0";
13170  }
13171  else if (INFILE(_SPDX_CDDL_10)) {
13172  INTERESTING("CDDL-1.0");
13173  }
13174  else if (URL_INFILE(_URL_CDDL_10)) {
13175  lstr = "CDDL-1.0";
13176  }
13177  else if (INFILE(_TITLE_CDDL_11)) {
13178  lstr = "CDDL-1.1";
13179  }
13180  else if (INFILE(_SPDX_CDDL_11)) {
13181  INTERESTING("CDDL-1.1");
13182  }
13183  else if (URL_INFILE(_URL_CDDL)) {
13184  lstr = "CDDL";
13185  }
13186  else {
13187  lstr = "CDDL";
13188  }
13189  return lstr;
13190 }
13191 
13200 char *lpplVersion(char *filetext, int size, int isML, int isPS)
13201 {
13202  char *lstr = NULL_STR;
13203  /* */
13204 #ifdef PROC_TRACE
13205  traceFunc("== lpplVersion()\n");
13206 #endif /* PROC_TRACE */
13207  /* */
13208  if (INFILE(_PHR_LATEX_PL13A_OR_LATER_1) ||
13209  INFILE(_PHR_LATEX_PL13A_OR_LATER_2)) {
13210  if (INFILE(_LT_LATEX_PREAMBLE)) {
13211  lstr = lDebug ? "LPPL-v1.3a(#1)" : "LPPL-1.3a";
13212  }
13213  else {
13214  lstr = "LPPL-1.3a+";
13215  }
13216  }
13217  else if (INFILE(_TITLE_LATEX_PL13A) || INFILE(_PHR_LATEX_PL13A)) {
13218  lstr = lDebug ? "LPPL-v1.3a(#2)" : "LPPL-1.3a";
13219  }
13220  else if (INFILE(_PHR_LATEX_PL13B_OR_LATER_1) ||
13221  INFILE(_PHR_LATEX_PL13B_OR_LATER_2)) {
13222  if (INFILE(_LT_LATEX_PREAMBLE)) {
13223  lstr = lDebug ? "LPPL-v1.3b(#1)" : "LPPL-1.3b";
13224  }
13225  else {
13226  lstr = "LPPL-1.3b+";
13227  }
13228  }
13229  else if (INFILE(_TITLE_LATEX_PL13B) || INFILE(_PHR_LATEX_PL13B)) {
13230  lstr = lDebug ? "LPPL-v1.3b(#2)" : "LPPL-1.3b";
13231  }
13232  else if (INFILE(_PHR_LATEX_PL13C_OR_LATER_1) ||
13233  INFILE(_PHR_LATEX_PL13C_OR_LATER_2)) {
13234  if (INFILE(_LT_LATEX_PREAMBLE)) {
13235  lstr = lDebug ? "LPPL-v1.3c(#1)" : "LPPL-1.3c";
13236  }
13237  else {
13238  lstr = "LPPL-1.3c+";
13239  }
13240  }
13241  else if (INFILE(_TITLE_LATEX_PL13C) || INFILE(_PHR_LATEX_PL13C)) {
13242  lstr = lDebug ? "LPPL-v1.3c(#2)" : "LPPL-1.3c";
13243  }
13244  else if (INFILE(_PHR_LATEX_PL13_OR_LATER_1) ||
13245  INFILE(_PHR_LATEX_PL13_OR_LATER_2)) {
13246  if (INFILE(_LT_LATEX_PREAMBLE)) {
13247  lstr = lDebug ? "LPPL-v1.3(#1)" : "LPPL-1.3";
13248  }
13249  else {
13250  lstr = "LPPL-1.3+";
13251  }
13252  }
13253  else if (INFILE(_TITLE_LATEX_PL13) || INFILE(_PHR_LATEX_PL13)) {
13254  lstr = lDebug ? "LPPL-v1.3(#2)" : "LPPL-1.3";
13255  }
13256  else if (INFILE(_PHR_LATEX_PL12_OR_LATER_1) ||
13257  INFILE(_PHR_LATEX_PL12_OR_LATER_2)) {
13258  if (INFILE(_LT_LATEX_PREAMBLE)) {
13259  lstr = lDebug ? "LPPL-v1.2(#1)" : "LPPL-1.2";
13260  }
13261  else {
13262  lstr = "LPPL-1.2+";
13263  }
13264  }
13265  else if (INFILE(_TITLE_LATEX_PL12) || INFILE(_PHR_LATEX_PL12)) {
13266  lstr = lDebug ? "LPPL-v1.2(#2)" : "LPPL-1.2";
13267  }
13268  else if (INFILE(_PHR_LATEX_PL11_OR_LATER_1) ||
13269  INFILE(_PHR_LATEX_PL11_OR_LATER_2)) {
13270  if (INFILE(_LT_LATEX_PREAMBLE)) {
13271  lstr = lDebug ? "LPPL-v1.1(#1)" : "LPPL-1.1";
13272  }
13273  else {
13274  lstr = "LPPL-1.1+";
13275  }
13276  }
13277  else if (INFILE(_TITLE_LATEX_PL11) || INFILE(_PHR_LATEX_PL11)) {
13278  lstr = lDebug ? "LPPL-v1.1(#2)" : "LPPL-1.1";
13279  }
13280  else if (INFILE(_PHR_LATEX_PL10_OR_LATER_1) ||
13281  INFILE(_PHR_LATEX_PL10_OR_LATER_2)) {
13282  if (INFILE(_LT_LATEX_PREAMBLE)) {
13283  lstr = lDebug ? "LPPL-v1.0(#1)" : "LPPL-1.0";
13284  }
13285  else {
13286  lstr = "LPPL-1.0+";
13287  }
13288  }
13289  else if (INFILE(_TITLE_LATEX_PL10) || INFILE(_PHR_LATEX_PL10)) {
13290  lstr = lDebug ? "LPPL-v1.0(#2)" : "LPPL-1.0";
13291  }
13292  else {
13293  lstr = "LPPL";
13294  }
13295  return lstr;
13296 }
13297 
13306 char *agplVersion(char *filetext, int size, int isML, int isPS)
13307 {
13308  char *lstr = NULL_STR;
13309  /* */
13310 #ifdef PROC_TRACE
13311  traceFunc("== agplVersion()\n");
13312 #endif /* PROC_TRACE */
13313  /* */
13314  /*
13315  * Look for version 1 BEFORE version 3; the text of version 1 license says
13316  * you can also license it under GPL version 3... same reasoning goes with
13317  * the actual v3 license (vs the reference).
13318  */
13319  /* Version 2 is a bridging licence whose own text grants v3-or-later, so it
13320  must be recognised before the v1 and v3 patterns claim it. */
13321  if (INFILE(_LT_AGPL_20)) {
13322  lstr = "AGPL-2.0";
13323  }
13324  else if (INFILE(_PHR_AGPL_10_or_later)
13325  || INFILE(_TITLE_AGPL_10_or_later)
13326  || INFILE(_SPDX_AGPL_10_or_later)
13327  || HASTEXT(_SPDX_AGPL_10plus, REG_EXTENDED)
13328  || HASTEXT(_PHR_AGPL_10plus, REG_EXTENDED))
13329  {
13330  lstr = "AGPL-1.0-or-later";
13331  }
13332  else if (INFILE(_PHR_FSF_V1_ONLY)
13333  || INFILE(_TITLE_AGPL_10_only)
13334  || INFILE(_SPDX_AGPL_10))
13335  {
13336  lstr = "AGPL-1.0-only";
13337  }
13338  else if (INFILE(_PHR_AGPL_30_or_later)
13339  || INFILE(_TITLE_AGPL_30_or_later_ref1)
13340  || INFILE(_TITLE_AGPL_30_or_later)
13341  || INFILE(_SPDX_AGPL_30_or_later)
13342  || HASTEXT(_SPDX_AGPL_30plus, REG_EXTENDED)
13343  || HASTEXT(_PHR_AGPL_30plus, REG_EXTENDED))
13344  {
13345  if (INFILE(_LT_AGPL_30)) {
13346  lstr = lDebug ? "Affero-v3(#1)" : "AGPL-3.0-only";
13347  }
13348  else {
13349  lstr = "AGPL-3.0-or-later";
13350  }
13351  }
13352  else if (HASTEXT(_PHR_AGPL_30_1, REG_EXTENDED) || INFILE(_SPDX_AGPL_30)) {
13353  lstr = "AGPL-3.0-only";
13354  }
13355  else if (GPL_INFILE(_PHR_FSF_V3_ONLY)) {
13356  if (INFILE(_TITLE_GPL3)) {
13357  lstr = lDebug ? "GPLv3(Affero#1)" : "GPL-3.0-only";
13358  }
13359  else if (INFILE(_LT_GPL3ref3)){
13360  lstr = lDebug ? "GPLv3(special)" : "GPL-3.0-only";
13361  }
13362  else {
13363  lstr = lDebug ? "Affero-v3(#2)" : "AGPL-3.0-only";
13364  }
13365  }
13366  else if (INFILE(_TITLE_AGPL_30_only)) {
13367  lstr = lDebug ? "Affero-v3(#3)" : "AGPL-3.0-only";
13368  }
13369  else if (INFILE(_TITLE_GPL3)) {
13370  lstr = lDebug ? "GPLv3(Affero#2)" : "GPL-3.0-only";
13371  }
13372  else if (URL_INFILE(_URL_AGPL3)) {
13373  lstr = lDebug ? "Affero-v3(url)" : "AGPL-3.0-only";
13374  }
13375  else {
13376  lstr = "AGPL";
13377  }
13378  return lstr;
13379 }
13380 
13389 char *gfdlVersion(char *filetext, int size, int isML, int isPS)
13390 {
13391  char *lstr = NULL_STR;
13392  /* */
13393 #ifdef PROC_TRACE
13394  traceFunc("== gfdlVersion()\n");
13395 #endif /* PROC_TRACE */
13396  /* */
13397  /*
13398  * Have to be careful here; the text of the 1.2 license says it's licensed
13399  * under 1.1 or later - have to be careful what we're looking for, and in a
13400  * specific order
13401  */
13402  if (INFILE(_TITLE_GFDL_V13_FULL_LICENSE)) {
13403  lstr = "GFDL-1.3-only";
13404  /* Full GFDL-1.3 license text has a reference to Creative Commons */
13405  if (HASTEXT(_LT_CC_ref, REG_EXTENDED)) {
13406  lmem[_fCCBY] = 1;
13407  }
13408  }
13409  else if (INFILE(_TITLE_GFDL_V13_OR_LATER)) {
13410  lstr = "GFDL-1.3-or-later";
13411  }
13412  else if (INFILE(_TITLE_GFDL_V13_ONLY)) {
13413  lstr = lDebug ? "GFDL-1.3-only(#1)" : "GFDL-1.3-only";
13414  }
13415  else if (INFILE(_TITLE_GFDL_V12_FULL_LICENSE)) {
13416  lstr = lDebug ? "GFDL-1.2-only(#1)" : "GFDL-1.2-only";
13417  }
13418  else if (INFILE(_PHR_FSF_V12_OR_LATER) ||
13419  INFILE(_TITLE_GFDL_V12_OR_LATER)) {
13420  lstr = "GFDL-1.2-or-later";
13421  }
13422  else if (INFILE(_TITLE_GFDL_V12_ONLY)) {
13423  lstr = lDebug ? "GFDL-1.2-only(#1)" : "GFDL-1.2-only";
13424  }
13425  else if (INFILE(_TITLE_GFDL_V11_FULL_LICENSE)) {
13426  lstr = lDebug ? "GFDL-1.1-only(#1)" : "GFDL-1.1-only";
13427  }
13428  else if (INFILE(_PHR_FSF_V11_OR_LATER) ||
13429  INFILE(_TITLE_GFDL_V11_OR_LATER)) {
13430  lstr = "GFDL-1.1-or-later";
13431  }
13432  else if (INFILE(_TITLE_GFDL_V11_ONLY)) {
13433  lstr = lDebug ? "GFDL-1.1-only(#1)" : "GFDL-1.1-only";
13434  }
13435  else if (INFILE(_PHR_FSF_V12_ONLY)) {
13436  lstr = lDebug ? "GFDL-1.2-only(#2)" : "GFDL-1.2-only";
13437  }
13438  else if (INFILE(_PHR_FSF_V11_ONLY)) {
13439  lstr = lDebug ? "GFDL-1.1-only(#2)" : "GFDL-1.1-only";
13440  }
13441  else {
13442  lstr = "GFDL";
13443  }
13444  return lstr;
13445 }
13446 
13455 char *lgplVersion(char *filetext, int size, int isML, int isPS)
13456 {
13457  char *lstr = NULL_STR;
13458  /* */
13459 #ifdef PROC_TRACE
13460  traceFunc("== lgplVersion()\n");
13461 #endif /* PROC_TRACE */
13462  /* */
13463  if ((INFILE(_PHR_LGPL21_OR_LATER_1)
13464  || INFILE(_PHR_LGPL21_OR_LATER_2)
13465  || HASTEXT(_PHR_LGPL21_OR_LATER_3, REG_EXTENDED)
13466  || HASTEXT(_PHR_LGPL21_OR_LATER_4, REG_EXTENDED))
13467  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
13468  {
13469  if (INFILE(_TITLE_LGPL_KDE)) {
13470  lstr = "LGPL-2.1-or-later-KDE-exception";
13471  }
13472  else {
13473  lstr = "LGPL-2.1-or-later";
13474  }
13475  }
13476  else if ((INFILE(_PHR_LGPL3_OR_LATER)
13477  || INFILE(_PHR_LGPL3_OR_LATER_ref1)
13478  || INFILE(_PHR_LGPL3_OR_LATER_ref2)
13479  || HASTEXT(_PHR_LGPL3_OR_LATER_ref3, REG_EXTENDED)
13480  || HASTEXT(_SPDX_LGPL_30plus, REG_EXTENDED)
13481  || HASTEXT(_PHR_LGPL_30plus, REG_EXTENDED))
13482  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
13483  {
13484  lstr = "LGPL-3.0-or-later";
13485  }
13486  else if (INFILE(_LT_LGPL3ref) && NOT_INFILE(_PHR_NOT_UNDER_LGPL)) {
13487  lstr = "LGPL-3.0-only";
13488  lmem[_mLGPL] = 1;
13489  }
13490  else if (GPL_INFILE(_PHR_LGPL3_ONLY)
13491  || INFILE(_FILE_LGPLv3)
13492  || GPL_INFILE(_PHR_LGPL3_ONLY_ref1)
13493  || GPL_INFILE(_PHR_LGPL3_ONLY_ref2))
13494  {
13495  lstr = "LGPL-3.0-only";
13496  }
13497  else if (INFILE(_PHR_LGPL21_ONLY)
13498  || INFILE(_FILE_LGPLv21)
13499  || URL_INFILE(_URL_LGPL_V21)
13500  || INFILE(_PHR_LGPL21_ONLY_ref)
13501  || INFILE(_PHR_LGPL21_ONLY_ref2)
13502  || INFILE(_PHR_LGPL21_ONLY_ref3)
13503  || INFILE(_PHR_LGPL21_ONLY_ref4))
13504  {
13505  lstr = "LGPL-2.1-only";
13506  }
13507  else if ((INFILE(_PHR_LGPL2_OR_LATER)
13508  || HASTEXT(_PHR_LGPL2_OR_LATER_2, REG_EXTENDED)
13509  || HASTEXT(_PHR_LGPL2_OR_LATER_3, REG_EXTENDED))
13510  && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED))
13511  {
13512  lstr = "LGPL-2.0-or-later";
13513  }
13514  else if (RM_INFILE(_PHR_LGPL2_ONLY) || RM_INFILE(_PHR_LGPL2_ONLY_ref1) || INFILE(_FILE_LGPLv2)) {
13515  lstr = "LGPL-2.0-only";
13516  }
13517  else if (INFILE(_PHR_LGPL1_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
13518  lstr = "LGPL-1.0-or-later";
13519  }
13520  else if (INFILE(_PHR_LGPL1_ONLY) || INFILE(_PHR_FSF_V1_ONLY)) {
13521  lstr = "LGPL-1.0-only";
13522  }
13523  else if (URL_INFILE(_URL_CCLGPL_V21)) {
13524  lstr = lDebug ? "CC-LGPL-2.1" : "LGPL-2.1-only";
13525  }
13526  else if (INFILE(_LT_CC_GPL) || INFILE(_TITLE_CC_LGPL)) {
13527  lstr = "CC-LGPL";
13528  }
13529  else if (NY_INFILE(_TEXT_LGPLV3) && NOT_INFILE(_TEXT_LGPLV3_FOOTNOTE) &&
13530  HASREGEX(_TEXT_LGPLV3, filetext)) {
13531  lstr = lDebug ? "LGPL-v3(#2)" : "LGPL-3.0-only";
13532  }
13533  else if (INFILE(_TEXT_LGPLV21) &&
13534  HASREGEX(_TEXT_LGPLV21, filetext)) {
13535  lstr = lDebug ? "LGPL-v2.1(#2)" : "LGPL-2.1-only";
13536  }
13537  else if (INFILE(_TEXT_LGPLV2) &&
13538  HASREGEX(_TEXT_LGPLV2, filetext)) {
13539  lstr = lDebug ? "LGPL-v2(#2)" : "LGPL-2.0-only";
13540  }
13541  else if (INFILE(_SPDX_LGPL_20)) {
13542  lstr = "LGPL-2.0-only";
13543  }
13544  else if (INFILE(_SPDX_LGPL_21)) {
13545  lstr = "LGPL-2.1-only";
13546  }
13547  else if (INFILE(_SPDX_LGPL_30)) {
13548  lstr = "LGPL-3.0-only";
13549  }
13550  else {
13551  lstr = "LGPL";
13552  }
13553  return lstr;
13554 }
13555 
13564 char *gplVersion(char *filetext, int size, int isML, int isPS)
13565 {
13566  char *cp, *lstr = NULL_STR;
13567  /* */
13568 #ifdef PROC_TRACE
13569  traceFunc("== gplVersion()\n");
13570 #endif /* PROC_TRACE */
13571  /* */
13572 
13573  /*
13574  * GPL-3.0-only cases
13575  */
13576  if (GPL_INFILE(_PHR_GPL3_OR_LATER_ref2)
13577  || GPL_INFILE(_PHR_GPL3_OR_LATER_ref3)
13578  || GPL_INFILE(_PHR_GPL3_OR_LATER)
13579  || GPL_INFILE(_PHR_GPL3_OR_LATER_ref1)
13580  || HASTEXT(_SPDX_GPL_30plus, REG_EXTENDED)
13581  || HASTEXT(_PHR_GPL_30plus, REG_EXTENDED))
13582  {
13583  if (!HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
13584  lstr = "GPL-3.0-or-later";
13585  if (INFILE(_PHR_GPL2_OR_LATER_1)) {
13586  lstr = "GPL-2.0-or-later,GPL-3.0-or-later";
13587  }
13588  }
13589  }
13590  else if (GPL_INFILE(_PHR_FSF_V3_ONLY)
13591  || GPL_INFILE(_PHR_GPL3_ONLY)
13592  || INFILE(_FILE_GPLv3)
13593  || GPL_INFILE(_PHR_GPL3_ONLY_ref1)
13594  || GPL_INFILE(_PHR_GPL3_ONLY_ref2)) {
13595  lstr = lDebug ? "GPL-v3(#2)" : "GPL-3.0-only";
13596  if (INFILE(_PHR_GPL2_OR_LATER_1))
13597  {
13598  lstr = "GPL-2.0-or-later,GPL-3.0-only";
13599  }
13600  }
13601  else if (NY_INFILE(_TEXT_GPLV3) && NOT_INFILE(_TEXT_GPLV3_FOOTNOTE) &&
13602  HASREGEX(_TEXT_GPLV3, filetext)) {
13603  lstr = lDebug ? "GPL-v3(#3)" : "GPL-3.0-only";
13604  }
13605  /*
13606  * GPL-2.0-only cases
13607  */
13608  else if (HASTEXT(_LT_GPL_V2_NAMED_later, REG_EXTENDED) || INFILE(_TITLE_GPL2_ref1_later)) {
13609  lstr = lDebug ? "GPLV2+(named)" : "GPL-2.0-or-later";
13610  }
13611  else if (HASTEXT(_SPDX_GPL_20_or_later, REG_EXTENDED)) {
13612  lstr = lDebug ? "GPL-2.0-or-later(SPDX)" : "GPL-2.0-or-later";
13613  }
13614  else if (INFILE(_PHR_GPL2_OR_LATER_1)) {
13615  if (INFILE(_TITLE_GPL_KDE)) {
13616  lstr = "GPL-2.0-or-laterKDEupgradeClause";
13617  }
13618  else if (INFILE(_PHR_GPL2_ONLY_2) || INFILE(_PHR_GPL2_ONLY_3)) {
13619  lstr = "GPL-2.0-only";
13620  }
13621  else if (!HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
13622  lstr = lDebug ? "PHR(GPL2_OR_LATER#3)" : "GPL-2.0-or-later";
13623  }
13624  else if (INFILE(_TITLE_GPL2_ref1) || INFILE(_TITLE_GPL2_ref2)) {
13625  lstr = lDebug ? "GPL-2.0-only(title)" : "GPL-2.0-only";
13626  }
13627  }
13628  else if (HASTEXT(_SPDX_GPL_20, REG_EXTENDED)) {
13629  lstr = lDebug ? "GPL-2.0-only(SPDX)" : "GPL-2.0-only";
13630  }
13631  else if (INFILE(_PHR_GPL2_ONLY_4)) {
13632  lstr = "GPL-2.0-only";
13633  }
13634  else if (INFILE(_PHR_GPL2_ONLY_5)) {
13635  lstr = "GPL-2.0-only";
13636  }
13637  else if (GPL_INFILE(_PHR_GPL2_OR_GPL3)) {
13638  lstr = "GPL-2.0-only,GPL-3.0-only";
13639  }
13640  else if (INFILE(_PHR_FSF_V2_ONLY) || INFILE(_PHR_GPL2_ONLY) || INFILE(_PHR_GPL2_ONLY_1) ||
13641  INFILE(_FILE_GPLv2) || INFILE(_LT_GPL_V2_NAMED)) {
13642  lstr = lDebug ? "GPL-v2(#2)" : "GPL-2.0-only";
13643  }
13644  else if (INFILE(_LT_GPL_V2_ref5)) {
13645  lstr = lDebug ? "GPL-2.0-only(ref5)" : "GPL-2.0-only";
13646  }
13647  else if (NY_INFILE(_TEXT_GPLV2)) {
13648  lstr = lDebug ? "GPL-v2(#3)" : "GPL-2.0-only";
13649  }
13650  /*
13651  * GPL-1.0-only cases
13652  */
13653  else if (GPL_INFILE(_PHR_FSF_V1_OR_LATER)
13654  || INFILE(_PHR_GPL1_OR_LATER)
13655  || HASTEXT(_SPDX_GPL_10plus, REG_EXTENDED)
13656  || HASTEXT(_PHR_GPL_10plus, REG_EXTENDED))
13657  {
13658  if (INFILE(_TITLE_GPL1)) {
13659  lstr = lDebug ? "GPL-v1(#1)" : "GPL-1.0-only";
13660  }
13661  else if (!HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
13662  lstr = "GPL-1.0-or-later";
13663  }
13664  }
13665  else if (INFILE(_PHR_FSF_V1_ONLY) || INFILE(_PHR_GPL1_ONLY)) {
13666  lstr = lDebug ? "GPL-v1(#2)" : "GPL-1.0-only";
13667  }
13668  else if (URL_INFILE(_URL_CCGPL_V2)) {
13669  lstr = "GPL-2.0-only";
13670  }
13671  else if (INFILE(_LT_CC_GPL) || INFILE(_TITLE_CC_GPL)) {
13672  lstr = lDebug ? "GPL(CC_GPL)" : "GPL";
13673  }
13674  else if (NY_INFILE(_TEXT_GPLV1) &&
13675  HASREGEX(_TEXT_GPLV1, filetext)) {
13676  lstr = lDebug ? "GPL-v1(#3)" : "GPL-1.0-only";
13677  }
13678  else if (HASTEXT(_SPDX_GPL_10, REG_EXTENDED)) {
13679  lstr = lDebug ? "GPL-1.0-only(SPDX)" : "GPL-1.0-only";
13680  }
13681  else if (HASTEXT(_SPDX_GPL_30, REG_EXTENDED)) {
13682  lstr = lDebug ? "GPL-3.0-only(SPDX)" : "GPL-3.0-only";
13683  }
13684  /* special case for Debian copyright files
13685  Moved from the beginning here under else if ... is this anymore needed
13686  */
13687  else if (INFILE(_TEXT_GPLV3_CR) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
13688  lstr = "GPL-3.0-only";
13689  }
13690  else if (INFILE(_FILE_GPL1) || INFILE(_FILE_GPL2)) {
13691  lstr = lDebug ? "GPL(deb)" : "GPL";
13692  }
13693  /*
13694  * MODULE("GPL") cannot be unambiguously interpreted as GPL-2.0-only
13695  * license. Same statement is used also outside Linux kernel.
13696  * Furthermore, many of the files which have this MODULE statement,
13697  * have explicit GPL license statement. Therefore this is changed
13698  * to GPL.
13699  */
13700  else if (INFILE(_TITLE_MODULE_LICENSE_GPL)) {
13701  lstr = lDebug ? "GPL(linux-kernel)" : "GPL";
13702  }
13703  /*
13704  * Finally let's see if there is a type error in license version
13705  */
13706  else if (INFILE(_PHR_GPL21_OR_LATER) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
13707  lstr = "GPL-2.1+[sic]";
13708  }
13709  else if (INFILE(_PHR_FSF_V21_ONLY) || INFILE(_PHR_GPL21_ONLY)) {
13710  lstr = lDebug ? "GPL-v2.1[sic]" : "GPL-2.1[sic]";
13711  }
13712  /*
13713  * Special case, HACK: "Debian packaging ... licensed under GPL"
13714  *****
13715  * IF we've scanned the regex that might contain it, then kludge.buf != NULL.
13716  * Make darn sure that pointer IS set to NULL before leaving this routine.
13717  */
13718  if (lstr == NULL_STR && kludge.base != NULL_STR) {
13719 #ifdef PHRASE_DEBUG
13720  printf("GPL-META-CHECK: base %p, so %d eo %d\n",
13721  kludge.base, kludge.sso, kludge.seo);
13722 #endif /* PHRASE_DEBUG */
13723  cp = kludge.base + (kludge.sso < 256 ? 0 : kludge.sso-256);
13724  if (HASREGEX(_LT_GPL_META_DEBIAN, cp)) {
13725  lstr = "GPL-Meta";
13726  }
13727  kludge.base = NULL_STR;
13728  }
13729  if (lstr == NULL_STR && NOT_INFILE(_PHR_JYTHON_NOTGPL) && !HASTEXT(_TITLE_QT_GPL_EXCEPTION_10, 0) && !HASTEXT(_LT_OPENBSD_GPL_EXCEPTION, 0)) {
13730  lstr = lDebug ? "GPL(NULL)" : "GPL";
13731  }
13732  return lstr;
13733 }
13734 
13743 char *cplVersion(char *filetext, int size, int isML, int isPS)
13744 {
13745  char *lstr = NULL_STR;
13746  /* */
13747 #ifdef PROC_TRACE
13748  traceFunc("== cplVersion()\n");
13749 #endif /* PROC_TRACE */
13750  /* */
13751  if (INFILE(_TITLE_CPL_10)) {
13752  lstr = "CPL-1.0";
13753  }
13754  else if (URL_INFILE(_URL_CPL_10)) {
13755  lstr = "CPL-1.0";
13756  }
13757  else if (INFILE(_TITLE_CPL_05)) {
13758  lstr = "CPL-0.5";
13759  }
13760  else {
13761  lstr = "CPL";
13762  }
13763  return lstr;
13764 }
13765 
13774 char *ccVersion(char *filetext, int size, int isML, int isPS)
13775 {
13776  char *lstr = NULL_STR;
13777  /* */
13778 #ifdef PROC_TRACE
13779  traceFunc("== ccVersion()\n");
13780 #endif /* PROC_TRACE */
13781  /*
13782  * Creative Commons Attribution-ShareAlike
13783  */
13784  if (INFILE(_TITLE_CC_BY_SA_10) || URL_INFILE(_URL_CC_BY_SA_10)) {
13785  lstr = "CC-BY-SA-1.0";
13786  }
13787  else if (INFILE(_TITLE_CC_BY_SA_20) || URL_INFILE(_URL_CC_BY_SA_20)) {
13788  lstr = "CC-BY-SA-2.0";
13789  }
13790  else if (INFILE(_TITLE_CC_BY_SA_25) || URL_INFILE(_URL_CC_BY_SA_25)) {
13791  lstr = "CC-BY-SA-2.5";
13792  }
13793  else if (INFILE(_TITLE_CC_BY_SA_30) || URL_INFILE(_URL_CC_BY_SA_30)) {
13794  lstr = "CC-BY-SA-3.0";
13795  }
13796  else if (INFILE(_PHR_CC_BY_SA_30)) {
13797  lstr = "CC-BY-SA-3.0";
13798  }
13799  else if (INFILE(_TITLE_CC_BY_SA_40) || URL_INFILE(_URL_CC_BY_SA_40)) {
13800  lstr = "CC-BY-SA-4.0";
13801  }
13802  else if (URL_INFILE(_URL_CC_BY_SA_20)) {
13803  lstr = "CC-BY-SA-2.0";
13804  }
13805  else if (INFILE(_TITLE_CC_BY_SA) || URL_INFILE(_URL_CC_BY_SA)) {
13806  lstr = lDebug ? "CCA-SA(1)" : "CC-BY-SA";
13807  }
13808  /*
13809  * Creative Commons Attribution-NonCommercial-ShareAlike
13810  */
13811  else if (INFILE(_TITLE_CC_BY_NC_SA_40) || URL_INFILE(_URL_CC_BY_NC_SA_40)) {
13812  lstr = "CC-BY-NC-SA-4.0";
13813  }
13814  else if (INFILE(_TITLE_CC_BY_NC_SA_30) || URL_INFILE(_URL_CC_BY_NC_SA_30)) {
13815  lstr = "CC-BY-NC-SA-3.0";
13816  }
13817  else if (INFILE(_TITLE_CC_BY_NC_SA_25) || URL_INFILE(_URL_CC_BY_NC_SA_25)) {
13818  lstr = "CC-BY-NC-SA-2.5";
13819  }
13820  else if (INFILE(_TITLE_CC_BY_NC_SA_20) || URL_INFILE(_URL_CC_BY_NC_SA_20)) {
13821  lstr = "CC-BY-NC-SA-2.0";
13822  }
13823  else if (INFILE(_TITLE_CC_BY_NC_SA_10) || URL_INFILE(_URL_CC_BY_NC_SA_10)) {
13824  lstr = "CC-BY-NC-SA-1.0";
13825  }
13826  /*
13827  * Creative Commons NonCommercial NoDerivs
13828  */
13829  else if (INFILE(_TITLE_CC_BY_NC_ND_40) || URL_INFILE(_URL_CC_BY_NC_ND_40)) {
13830  lstr = "CC-BY-NC-ND-4.0";
13831  }
13832  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)) {
13833  lstr = "CC-BY-NC-ND-3.0";
13834  }
13835  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)) {
13836  lstr = "CC-BY-NC-ND-2.5";
13837  }
13838  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)) {
13839  lstr = "CC-BY-NC-ND-2.0";
13840  }
13841  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)) {
13842  lstr = "CC-BY-NC-ND-1.0";
13843  }
13844  /*
13845  * Creative Commons NonCommercial
13846  */
13847  else if (INFILE(_TITLE_CC_BY_NC_40) || URL_INFILE(_URL_CC_BY_NC_40)) {
13848  lstr = "CC-BY-NC-4.0";
13849  }
13850  else if (INFILE(_TITLE_CC_BY_NC_30) || URL_INFILE(_URL_CC_BY_NC_30)) {
13851  lstr = "CC-BY-NC-3.0";
13852  }
13853  else if (INFILE(_TITLE_CC_BY_NC_25) || URL_INFILE(_URL_CC_BY_NC_25)) {
13854  lstr = "CC-BY-NC-2.5";
13855  }
13856  else if (INFILE(_TITLE_CC_BY_NC_20) || URL_INFILE(_URL_CC_BY_NC_20)) {
13857  lstr = "CC-BY-NC-2.0";
13858  }
13859  else if (INFILE(_TITLE_CC_BY_NC_10) || URL_INFILE(_URL_CC_BY_NC_10)) {
13860  lstr = "CC-BY-NC-1.0";
13861  }
13862  /*
13863  * Creative Commons Attribution-NoDerivatives
13864  */
13865  else if (INFILE(_TITLE_CC_BY_ND_40) || URL_INFILE(_URL_CC_BY_ND_40)) {
13866  lstr = "CC-BY-ND-4.0";
13867  }
13868  else if (INFILE(_TITLE_CC_BY_ND_30) || URL_INFILE(_URL_CC_BY_ND_30)) {
13869  lstr = "CC-BY-ND-3.0";
13870  }
13871  else if (INFILE(_TITLE_CC_BY_ND_25) || URL_INFILE(_URL_CC_BY_ND_25)) {
13872  lstr = "CC-BY-ND-2.5";
13873  }
13874  else if (INFILE(_TITLE_CC_BY_ND_20) || URL_INFILE(_URL_CC_BY_ND_20)) {
13875  lstr = "CC-BY-ND-2.0";
13876  }
13877  else if (INFILE(_TITLE_CC_BY_ND_10) || URL_INFILE(_URL_CC_BY_ND_10)) {
13878  lstr = "CC-BY-ND-1.0";
13879  }
13880  /*
13881  * Creative Commons Attribution
13882  */
13883  else if (INFILE(_TITLE_CC_BY_10) || URL_INFILE(_URL_CC_BY_10)) {
13884  lstr = "CC-BY-1.0";
13885  }
13886  else if (INFILE(_TITLE_CC_BY_20) || URL_INFILE(_URL_CC_BY_20)) {
13887  lstr = "CC-BY-2.0";
13888  }
13889  else if (INFILE(_TITLE_CC_BY_25) || URL_INFILE(_URL_CC_BY_25)) {
13890  lstr = "CC-BY-2.5";
13891  }
13892  else if (INFILE(_TITLE_CC_BY_30) || URL_INFILE(_URL_CC_BY_30)) {
13893  lstr = "CC-BY-3.0";
13894  }
13895  else if (INFILE(_PHR_CC_BY_40) || INFILE(_TITLE_CC_BY_40) || URL_INFILE(_URL_CC_BY_40)) {
13896  lstr = "CC-BY-4.0";
13897  }
13898  /*
13899  * Creative Commons CC0
13900  */
13901  else if (INFILE(_TITLE_CC0_10_2)) {
13902  lstr = lDebug ? "CC0(2)" : "CC0-1.0";
13903  }
13904  else if (INFILE(_PHR_CC0_2)) {
13905  lstr = lDebug ? "CC0(2)" : "CC0-1.0";
13906  }
13907  else if (URL_INFILE(_URL_CC0)) {
13908  lstr = lDebug ? "CC0(URL)" : "CC0-1.0";
13909  }
13910  else if (URL_INFILE(_URL_CC_PDDC)) {
13911  lstr = lDebug ? "CC(PD)" : "CC-PDDC";
13912  pd = 1;
13913  }
13914  else if (INFILE(_TITLE_CCPL)) {
13915  INTERESTING("CCPL");
13916  }
13917  else if (INFILE(_TITLE_CC_BY) && NOT_INFILE(_TITLE_CC_RESTRICTED)) {
13918  lstr = lDebug ? "CCA(1)" : "CC-BY";
13919  }
13920  else {
13921  /* unidentified Creative Commons: report the family, not CC-BY */
13922  lstr = lDebug ? "CCA(def)" : "CCPL";
13923  }
13924  lmem[_fCCBY] = 1;
13925  return lstr;
13926 }
13927 
13944 int findPhrase(int index, char *filetext, int size, int isML, int isPS,
13945  int qType)
13946 {
13947  char *ptr = NULL_STR;
13948  char *q = ltsr+index;
13949  char *cp = 0;
13950  int ret;
13951  int i;
13952  int j;
13953  int n;
13954  int wordMatch = 0;
13955  int metaKludge = 0;
13956  int saved = 0;
13957  int sso;
13958  int seo;
13959  item_t *sp;
13960  item_t *op;
13961  list_t *lp;
13962  licText_t *ltp;
13963 #ifdef PARSE_STOPWATCH
13964  DECL_TIMER; /* timer declaration */
13965  char timerName[64];
13966 #endif /* PARSE_STOPWATCH */
13967 
13968 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG) || defined(DOCTOR_DEBUG)
13969  traceFunc("== findPhrase(%d, %p, %d, %d, %d, %d)\n", index, filetext,
13970  size, isML, isPS, qType);
13971  traceFunc("... (regex) \"%s\"\n", _REGEX(index));
13972  traceFunc("... (seed) \"%s\"\n", _SEED(index));
13973 #endif /* PROC_TRACE || PHRASE_DEBUG || DOCTOR_DEBUG */
13974 
13975  ltp = licText + index; /* &licText[index] */
13976  if (ltp->tseed == NULL_STR) {
13977  LOG_FATAL("Regex #%d not suitable for findPhrase()", index)
13978  Bail(-__LINE__);
13979  }
13980  *q |= LTSR_SMASK; /* init: tested, no match */
13981 #ifdef PARSE_STOPWATCH
13982  (void) sprintf(timerName, "findPhrase(%03d): ", index);
13983  START_TIMER;
13984 #endif /* PARSE_STOPWATCH */
13985 #if (DEBUG > 5)
13986  printf("findPhrase: firstword[%d] == \"%s\", used = %d\n", index,
13987  ltp->tseed, searchList.used);
13988 #endif /* DEBUG > 5 */
13989  /*
13990  * See if the first-word of the requested entry has been searched
13991  * previously. The entry we get from listGetItem() refCount (val) field is:
13992  * =0 if this is the first search for this word (non-zero == "seen it"!)
13993  * <0 if the word was NOT FOUND
13994  * >0 if we have doctored-text results cached
13995  */
13996  if ((sp = listGetItem(&searchList, ltp->tseed)) == NULL_ITEM) {
13997  LOG_FATAL("search cache")
13998  Bail(-__LINE__);
13999  }
14000  if (sp->refCount < 0) { /* tseed not found in text */
14001  sp->refCount--;
14002 #ifdef PARSE_STOPWATCH
14003  END_TIMER; /* stop the timer */
14004  (void) strcat(timerName, "Cache-NO - ");
14005  (void) strcat(timerName, ltp->tseed);
14006  PRINT_TIMER(timerName, 0);
14007 #endif /* PARSE_STOPWATCH */
14008  return(0);
14009  }
14010  else if (sp->refCount == 0) { /* e.g., first occurence */
14011 
14012  /*
14013  * Since this is the first search of this word, see if it's in the text.
14014  * NOTE: getInstances() returns a pointer to static (non-allocated) storage
14015  */
14016  if ((cur.nLines) <= 5) {
14017  i = 1;
14018  j = 2;
14019  } else if ((size / cur.nLines) <= 10) {
14020  i = 2;
14021  j = 4;
14022  } else {
14023  i = 3;
14024  j = 6;
14025  }
14026 
14027  /* change to not get record offsets since there is a good sized memory
14028  leak in that code */
14029  //ptr = getInstances(filetext, size, i, j, sp->str, YES);
14030  ptr = getInstances(filetext, size, i, j, sp->str, NO);
14031 
14032  if (ptr == NULL_STR) {
14033  sp->refCount = -1;
14034  /* sp->buf = NULL_STR; */
14035 #ifdef PARSE_STOPWATCH
14036  END_TIMER; /* stop the timer */
14037  (void) strcat(timerName, "tseed-NO - ");
14038  (void) strcat(timerName, ltp->tseed);
14039  PRINT_TIMER(timerName, 0);
14040 #endif /* PARSE_STOPWATCH */
14041  return(0); /* known !match */
14042  }
14043  sp->buf = copyString(ptr, "paragraph");
14044 #ifdef MEMSTATS
14045  printf("... adding %d bytes (search-lookup: \"%s\")\n",
14046  strlen(sp->buf), sp->str);
14047 #endif /* MEMSTATS */
14048  /*
14049  * If the search-seed and regex are the same, we found what we're looking
14050  * for. Else, use doctorBuffer() to strip out punctuation, XML/HTML
14051  * directives, etc.
14052  */
14053 #ifdef PARSE_STOPWATCH
14054  START_TIMER;
14055 #endif /* PARSE_STOPWATCH */
14056 #ifdef DOCTOR_DEBUG
14057  printf(" ... doctoring buffer for \"%s\"\n", sp->str);
14058 #endif /* DOCTOR_DEBUG */
14059  (void) doctorBuffer(sp->buf, isML, isPS, NO);
14060 #ifdef PARSE_STOPWATCH
14061  RESET_TIMER;
14062  (void) sprintf(timerName, "... doctor(%03d): %s (%d)",
14063  index, ltp->tseed, strlen(sp->buf));
14064  PRINT_TIMER(timerName, 0);
14065 #endif /* PARSE_STOPWATCH */
14066  }
14067  sp->refCount++; /* incr ref-count for this seed */
14068  /*
14069  * We need populate the list of "paragraph matches" with offsets in the
14070  * doctored-up buffers; this seems the best place to do it.
14071  */
14072  op = listGetItem(&cur.offList, sp->str);
14073  if (op->nMatch <= 0) {
14074  LOG_FATAL("File-offset list, nMatch(%s): bad entry", sp->str)
14075  Bail(-__LINE__);
14076  }
14077 #if DEBUG>5
14078  printf("matches for key \"%s\": %d\n", sp->str, op->nMatch);
14079 #endif /* DEBUG>5 */
14080  n = strlen(sp->buf);
14081  lp = (list_t *)op->bList;
14082  if ((lp) && (lp->items[0].bDocLen == 0)) {
14083  if (op->nMatch == 1) {
14084  lp->items[0].bDocLen = n;
14085  } else {
14086  ptr = sp->buf;
14087  i = j = 0; /* i is index, j is total offset */
14088  while (strGrep(" xyzzy ", ptr, REG_ICASE)) {
14089  lp->items[i++].bDocLen = j + cur.regm.rm_so;
14090  ptr += cur.regm.rm_eo;
14091  j += (cur.regm.rm_eo + 7); /* strlen(" xyzzy ") */
14092  }
14093  lp->items[i].bDocLen = n + 7; /* last paragraph */
14094  }
14095  }
14096  if (ltp->tseed == ltp->regex) { /* e.g., regex IS seed/key */
14097  wordMatch++;
14098  ret = 1;
14099  } else {
14100  metaKludge = ((qType == 2) && (index == _LT_GPLref1));
14101  if (metaKludge || qType == 4) {
14102  saved = 1;
14103  gl.flags |= FL_SAVEBASE;
14104  }
14105  ret = HASREGEX_RI(index, sp->buf);
14106  if (saved) {
14107  if (ret) {
14108  kludge.base = cur.matchBase;
14109  kludge.sso = cur.regm.rm_so;
14110  kludge.seo = cur.regm.rm_eo;
14111  }
14112  gl.flags &= ~FL_SAVEBASE;
14113  }
14114  }
14115  sso = cur.regm.rm_so; /* do NOT modify this!! */
14116  seo = cur.regm.rm_eo; /* ... or this, either! */
14117  if (ret && !wordMatch) {
14118  *q = LTSR_YES; /* remember this "yes" search result */
14119 
14120  /*
14121  * VERY low-level string-search kludges happen here. This is VERY ugly!!
14122  *****
14123  * If we used idxGrep to search for "GPL" in a "doctored" buffer, we do NOT
14124  * want to match "lesser GPL" or "library GPL" in our searches (it's the
14125  * wrong license name/title). Unfortunately, two aliases for LGPL are
14126  * exactly those above. If we match "GPL" with a wildcard preceeding it, it
14127  * JUST MIGHT BE those words. Rather than perform 2 exclusionary searches
14128  * one for "lesser gpl" and another for "library gpl", look here and if we
14129  * find it, (ugh) KLUDGE the return value to indicate "no match"...
14130  *****
14131  * However, since it's here, it's now extensible. Next search-string kludge
14132  * (that cannot be quickly fixed via changing a regex) should be number 2.
14133  * Just make a new macro (defined above parseLicenses), ala GPL_INFILE().
14134  */
14135  if ((qType > 0) && !wordMatch) {
14136  if ((qType > 4) || (qType < 0)) {
14137  LOG_FATAL("Unknown string-search kludge %d", qType)
14138  Bail(-__LINE__);
14139  }
14140  /*
14141  * Special filter #1: over-write matched text with commas -- this choice is
14142  * significant because doctorBuffer() ensures 'stripped' text has no commas
14143  */
14144  if (qType == 1) { /* destroy text-match */
14145  cp = sp->buf+seo;
14146  ptr = sp->buf+sso;
14147  ltsr[index] = 0; /* reset search cache */
14148  while (ptr <= cp) {
14149  *ptr++ = ',';
14150  }
14151 #ifdef DEBUG
14152  if (lDiags) {
14153  printf("Now, buf %p contains:\n%s\n",
14154  sp->buf, (char *)sp->buf);
14155  }
14156 #endif /* DEBUG */
14157  /*
14158  * Special filter #2: various checks to make sure LGPL/GFDL/GPL license
14159  * references are not confused -- they CAN look quite similar. Specifically
14160  * we don't want to confuse a SINGLE reference to the LGPL as a reference to
14161  * the GPL. BUT -- sometimes references to BOTH are in the same file.
14162  */
14163  }
14164  if ((qType == 2) &&
14165  HASREGEX(_TEXT_LGPL_NOT_GPL, sp->buf+sso) &&
14166  !HASREGEX(_TEXT_GPL_NOT_LGPL, sp->buf+sso) &&
14167  NOT_INFILE(_TEXT_LGPL_DETAILS) &&
14168  NOT_INFILE(_TEXT_LICSET)) {
14169  if (lDiags) {
14170  printf("... \"GPL\" -> LGPL (%d)\n",
14171  index);
14172  }
14173  ltsr[_TEXT_LGPL_NOT_GPL] = LTSR_YES;
14174  ret = 0;
14175  *q = LTSR_NO; /* oops, make that a "no" */
14176  } else if ((qType == 2) &&
14177  HASREGEX(_TEXT_GFDL_NOT_GPL, sp->buf+sso)) {
14178  if (lDiags) {
14179  printf("... \"GPL\" -> GFDL (%d)\n",
14180  index);
14181  }
14182  ltsr[_TEXT_GFDL_NOT_GPL] = LTSR_YES;
14183  ret = 0;
14184  *q = LTSR_NO;
14185  } else if ((index == _LT_GPL3ref) && (qType == 2)) {
14186  if (HASREGEX(_PHR_QEMU_NOT_GPLV3, sp->buf+sso)) {
14187  if (lDiags) {
14188  printf("... \"GPL\" -> QEMU\n");
14189  }
14190  ltsr[_PHR_QEMU_NOT_GPLV3] = LTSR_YES;
14191  ret = 0;
14192  *q = LTSR_NO;
14193  } else if (INFILE(_PHR_SCF_HOWTO)) {
14194  if (lDiags) {
14195  printf("... SCF-Howto\n");
14196  }
14197  ret = 0;
14198  *q = LTSR_NO;
14199  } else if (HASREGEX(_TEXT_DRBD_NOT_GPL3, sp->buf)) {
14200  if (lDiags) {
14201  printf("... mysgl/DRBD\n");
14202  }
14203  ltsr[_TEXT_DRBD_NOT_GPL3] = LTSR_YES;
14204  ret = 0;
14205  *q = LTSR_NO;
14206  }
14207 #ifdef GPLV2_BEATS_GPLV3
14208  else if (strNbuf(sp->buf+sso, "version 2")) {
14209  if (sp->buf + sso + cur.regm.rm_eo <
14210  sp->buf + seo) {
14211  if (lDiags) {
14212  printf("... v%c!\n", *cp);
14213  }
14214  ret = 0;
14215  *q = LTSR_NO;
14216  }
14217  }
14218 #endif /* GPLV2_BEATS_GPLV3 */
14219  } else if ((index == _PHR_GPL3_OR_LATER) &&
14220  (qType == 2) &&
14221  strNbuf(sp->buf+sso, "v2 ")) {
14222  if (lDiags) {
14223  printf("... v2 and version 3\"\n");
14224  }
14225  ret = 0;
14226  *q = LTSR_NO;
14227  } else if ((index == _PHR_GPL3_OR_LATER) &&
14228  (qType == 2) &&
14229  HASREGEX(_TEXT_NOT_GPLV3_DRAFT, sp->buf+sso)) {
14230  if (lDiags) {
14231  printf("... exclude \"GPLv3 draft\"\n");
14232  }
14233  ltsr[_TEXT_NOT_GPLV3_DRAFT] = LTSR_YES;
14234  ret = 0;
14235  *q = LTSR_NO;
14236  } else if ((index == _PHR_GPL3_ONLY) &&
14237  (qType == 2) &&
14238  HASREGEX(_TEXT_NOT_LIBSTDC, sp->buf+sso)) {
14239  if (lDiags) {
14240  printf("... exclude libstdc vers\"\n");
14241  }
14242  ltsr[_TEXT_NOT_LIBSTDC] = LTSR_YES;
14243  ret = 0;
14244  *q = LTSR_NO;
14245  }
14246  /*
14247  * POSIX regex matches the longest string possible, and a '3' can follow a
14248  * "version 2 or later phrase" -- we want to match the '2'. "Vim" has this:
14249  *****
14250  * e) When the GNU General Public License (GPL) applies to the changes,
14251  * you may distribute the modified code under the GNU GPL version 2 or
14252  * any later version.
14253  * 3) A message must be added, at least in the output of the ":version"
14254  * command and in the intro screen, such that the user ...
14255  *****
14256  * So... if there's a NUMBER (!= '3') between the word "version" and the
14257  * end-of-match (at sp->buf+seo), that matches the number AND NOT the 3.
14258  */
14259  else if ((qType == 2) &&
14260  ((index == _PHR_GPL3_ONLY) || (index == _PHR_LGPL3_ONLY))) {
14261  if (strNbuf(sp->buf+sso, "version") ||
14262  strNbuf(sp->buf+sso, "v3")) {
14263  cp = sp->buf + cur.regm.rm_eo;
14264  } else {
14265  cp = sp->buf + seo; /* "nil" loop */
14266  }
14267  for (ptr = sp->buf+seo; cp < ptr; cp++) {
14268  if (isdigit(*cp) && *cp != '3') {
14269  if (lDiags) {
14270  printf("... vers %c!\n",
14271  *cp);
14272  }
14273  ret = 0;
14274  *q = LTSR_NO;
14275  break;
14276  }
14277  }
14278  } else if (index == _PHR_FSF_V3_ONLY && qType == 2) {
14279  if (strNbuf(sp->buf+sso, "version")) {
14280 #ifdef GPLV2_BEATS_GPLV3
14281  ptr = sp->buf + sso + cur.regm.rm_so + 7;
14282 #endif /* GPLV2_BEATS_GPLV3 */
14283  cp = strchr(sp->buf+sso, '3');
14284  if (strncasecmp(cp, "3 tlb", 5) == 0) {
14285  if (lDiags) {
14286  printf("... v3 tlb\n");
14287  }
14288  ret = 0;
14289  *q = LTSR_NO;
14290  }
14291 #ifdef GPLV2_BEATS_GPLV3
14292  else if ((*ptr == ' ') && (*(ptr+1) == '2')) {
14293  if (lDiags) {
14294  printf("... v2, !v3\n");
14295  }
14296  ret = 0;
14297  *q = LTSR_NO;
14298  }
14299 #endif /* GPLV2_BEATS_GPLV3 */
14300  }
14301  else if (strNbuf(sp->buf+sso, "v3")) {
14302  cp = sp->buf + sso + cur.regm.rm_so;
14303  if (strncasecmp(cp-4, "arm ", 4) == 0) {
14304  if (lDiags) {
14305  printf("... arm v3\n");
14306  }
14307  ret = 0;
14308  *q = LTSR_NO;
14309  } else if (strncasecmp(cp, "v3020 ",
14310  6) == 0) {
14311  if (lDiags) {
14312  printf("... v3020\n");
14313  }
14314  ret = 0;
14315  *q = LTSR_NO;
14316  }
14317  }
14318  } else if ((index == _LT_LGPL_OR) &&
14319  (strncasecmp(sp->buf+sso, "or fitness f", 12) == 0)) {
14320  if (lDiags) {
14321  printf("... merch-or-fitness\n");
14322  }
14323  ret = 0;
14324  *q = LTSR_NO;
14325  } else if ((index == _LT_GPLref1) &&
14326  (qType == 2) &&
14327  INFILE(_PHR_LIC_CHANGE)) {
14328  if (lDiags) {
14329  printf("... exclude lic-change\"\n");
14330  }
14331  ret = 0;
14332  *q = LTSR_NO;
14333  } else if ((qType == 2) && (sso > 4)) {
14334  cp = sp->buf+sso-4;
14335  if (strncasecmp(cp, "not ", 4) == 0) {
14336  if (lDiags) {
14337  printf("... NOT l?gpl-ish\n");
14338  }
14339  ret = 0;
14340  *q = LTSR_NO; /* "no" */
14341  }
14342  } else if (qType == 3 && INFILE(_PHR_ARTISTIC_DESC1)) {
14343  /*
14344  Special filter #3: match specific versions of Perl
14345  references, but not all
14346  */
14347  if (lDiags) {
14348  printf("... exclude artistic defn\"\n");
14349  }
14350  ret = 0;
14351  *q = LTSR_NO;
14352  } else if (qType == 4) {
14353  /*
14354  Special filter #4: look for a numerical version
14355  number IFF NOT IN a string of (at least) 4 numerical
14356  characters (signifying a year/datestamp)
14357  */
14358  char *x;
14359  x = cp = cur.matchBase + sso;
14360  ptr = cp - (sso < 100 ? sso : 100);
14361  while (!isdigit(*cp)) {
14362  cp++;
14363  }
14364  if (isdigit(*(cp+1)) && isdigit(*(cp+2)) && isdigit(*(cp+3))) {
14365  if (lDiags) {
14366  printf("... don't want year\n");
14367  }
14368  ret = 0;
14369  *q = LTSR_NO;
14370  } else if (HASREGEX(_TEXT_GNU_HELLO_23, ptr)) {
14371  if (lDiags) {
14372  printf("... gnu example\n");
14373  }
14374  ret = 0;
14375  *q = LTSR_NO;
14376  }
14377 #ifdef GPLV2_BEATS_GPLV3
14378  else if (strncasecmp(x-5, "v2 or ", 5) == 0) {
14379  if (lDiags) {
14380  printf("... v2 or v3\n");
14381  }
14382  ret = 0;
14383  *q = LTSR_NO;
14384  }
14385 #endif /* GPLV2_BEATS_GPLV3 */
14386  /*
14387  * Special case - don't know where better to look for this... other strings
14388  * match TEXT_GPLV3 and should be filtered. This should be a fairly low
14389  * frequency check.
14390  */
14391  else if (index == _TEXT_GPLV3) {
14392  x = cur.matchBase + seo;
14393  if (isdigit(*x) && *x != '0') {
14394  if (lDiags) {
14395  printf("... v3#!0\n");
14396  }
14397  ret = 0;
14398  *q = LTSR_NO;
14399  }
14400  }
14401  }
14402  }
14403 #if (DEBUG > 5)
14404  printf(">>===> \"%s\"\n", ltp->regex);
14405 #endif /* DEBUG > 5 */
14406  }
14407 #ifdef PARSE_STOPWATCH
14408  END_TIMER; /* stop the timer */
14409  (void) sprintf(timerName, "findPhrase(%03d): RET=%d (%s:%d)", index,
14410  ret, ltp->tseed, strlen(sp->buf));
14411  PRINT_TIMER(timerName, 0);
14412 #endif /* PARSE_STOPWATCH */
14413  if (lDiags && ret) {
14414  printRegexMatch(index, NO);
14415  /* locateRegex(filetext, op, index, size, sso, seo); */
14416  }
14417  return(ret);
14418 }
14419 
14434 void locateRegex(char *text, item_t *op, int index, int size, int sso, int seo)
14435 {
14436  int i;
14437  int j;
14438  int n;
14439  int off;
14440  int len;
14441  item_t *sp;
14442  list_t *lp = (list_t *)op->bList;
14443  char *cp;
14444  char *ptr;
14445  char *start;
14446  char save;
14447 
14448 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG)
14449  traceFunc("== locateRegex(%p, %p, %d, %d, %d, %d)\n", text, op, index,
14450  size, sso, seo);
14451 #endif /* PROC_TRACE || PHRASE_DEBUG */
14452 
14453  /*
14454  * First step, simplest case - try to locate the regex in the file. It
14455  * *might* be that easy (but not very often, it turns out).
14456  */
14457  if (idxGrep(index, text, REG_ICASE|REG_EXTENDED)) {
14458  saveRegexLocation(index, cur.regm.rm_so,
14459  cur.regm.rm_eo - cur.regm.rm_so, YES);
14460  return;
14461  }
14462  /*
14463  * Regex is not directly in the raw text file, so now we need to try to
14464  * map a location from a 'doctored buffer' to a location in the original
14465  * text file. Not impossible, yet not overly straight-forward.
14466  */
14467 #ifdef DEBUG
14468  listDump(lp, NO);
14469  printf("Doc-buffer match @ %d:%d\n", sso, seo);
14470  printf("Possible \"%s\" entries to search: %d (%d)\n", op->str,
14471  op->nMatch, lp->used);
14472  for (n = i = 0; (sp=listIterate(lp)); i++) {
14473  printf("Ent[%d]: bDocLen %d (len %d) == file %d+%d (%d)\n",
14474  i, sp->bDocLen, (sp->bDocLen)-n, sp->bStart, sp->bLen,
14475  sp->bStart+sp->bLen);
14476  n = sp->bDocLen;
14477  }
14478 #endif /* DEBUG */
14479  /*
14480  * At this point, the matched phrase should be bounded by {sso} and {seo}
14481  * as offsets within the doctored buffer we're scanning. We also have a
14482  * mapping of offsets within the doctored buffer to more-or-less where it
14483  * exists in the original (raw text) file -- so go find it. Walk through the
14484  * offsets-list; the entry with the LOWEST end-of-doctored-buffer offset
14485  * exceeding the value of 'sso' IS the paragraph where we found the regex.
14486  */
14487  i = -1;
14488  j = -1;
14489  n = 0;
14490  while ((sp = listIterate(lp))) {
14491  if (sso > sp->bDocLen) {
14492  n = sp->bDocLen;
14493  continue;
14494  }
14495  i = sp->bStart;
14496  j = sp->bLen;
14497 #ifdef DEBUG
14498  printf("sso(%d), limit(%d), Possible: @%d+%d\n", sso,
14499  sp->bDocLen, i, j);
14500 #endif /* DEBUG */
14501  listIterationReset(lp);
14502  break;
14503  }
14504  if (i < 0) { /* something is wrong... */
14505  LOG_FATAL("Cannot map reduced-text to raw file contents (#%d)", index)
14506  Bail(-__LINE__);
14507  }
14508  /*
14509  * Remember, the length of text matched in the doctored-buffer will likely
14510  * not match the length of the "same" (unmodified) text in the raw file!
14511  * And, an offset within the doctored buffer CANNOT be any larger than the
14512  * corresponding text segment in the raw file (we only _remove_ characters).
14513  * Next, find the last occurrence (in the raw file) of the last word in
14514  * the license-footprint
14515  */
14516  sso -= n;
14517  seo -= n;
14518  off = i + sso;
14519  len = j - sso;
14520 #ifdef DEBUG
14521  printf("WINDOW-first: offset %d, len %d\n", off, len);
14522 #endif /* DEBUG */
14523  /*printf("BUF: %s\n", sp->buf);*/
14524  start = _REGEX(index);
14525  cp = start + licSpec[index].text.csLen - 1; /* 'end' of regex */
14526 #ifdef DEBUG
14527  printf("EO-Regex, cp == '%c'\n", *cp);
14528 #endif /* DEBUG */
14529  n = 0;
14530  while (*cp == ' ') {
14531  cp--;
14532  }
14533  while ((n == 1) || ((cp != start) && (*cp != ' ') && (*cp != ')') &&
14534  (*cp != '}'))) {
14535  if (*cp == ']') {
14536  n = 1;
14537  } else if (*cp == '[') {
14538  n = 0;
14539  }
14540  if (cp == _REGEX(index)) {
14541  cp = ":no:match";
14542  break;
14543  }
14544  cp--;
14545  }
14546  if (*cp == ')') {
14547  cp--;
14548  n = 1;
14549  while (n) {
14550  if (*cp == '(') {
14551  n--;
14552  } else if (*cp == ')') {
14553  n++;
14554  }
14555  /*printf("'%c' -- n %d\n", *cp, n);*/
14556  if (cp != start) {
14557  cp--;
14558  }
14559  }
14560  while ((cp != start) && (*cp != ' ') && (*cp != '.') && (*cp != ')')
14561  && (*cp != ']') && (*cp != '}')) {
14562  /*printf("skip '%c'...\n", *cp);*/
14563  cp--;
14564  }
14565 #ifdef DEBUG
14566  printf("_END_@%ld '%c'\n", cp-_REGEX(index), *cp);
14567 #endif /* DEBUG */
14568  }
14569  if (cp != start) {
14570  if (*cp != '.') {
14571  cp++;
14572  }
14573  if ((*cp == '?') || (*cp == '+')) {
14574  cp++;
14575  }
14576  }
14577  ptr = sp->buf + sso;
14578  i = j = 0;
14579 #ifdef DEBUG
14580  printf("SEARCH @foot is now \"%s\"\n", cp);
14581 #endif /* DEBUG */
14582  while (strGrep(cp, ptr, REG_ICASE|REG_EXTENDED)) {
14583  i++;
14584  ptr += cur.regm.rm_eo;
14585  j += cur.regm.rm_eo;
14586 #ifdef DEBUG
14587  printf("Found match (%d bytes) @ offset %d (%d tot)\n",
14588  cur.regm.rm_eo - cur.regm.rm_so, cur.regm.rm_so, j);
14589 #endif /* DEBUG */
14590  }
14591 #ifdef DEBUG
14592  printf("Total # of matches == %d\n", i);
14593 #endif /* DEBUG */
14594  if (i && j) {
14595  len = j;
14596 #ifdef DEBUG
14597  printf("WINDOW-adjst: offset %d, len %d\n", off, len);
14598 #endif /* DEBUG */
14599  } else {
14600  Assert(NO, "Regex \"%s\" (foot-end) not in raw text", cp);
14601  }
14602  /*
14603  * Then, find the first occurrence (in the raw file) of the first word
14604  * in the license-footprint; the exception here is that if the "last word"
14605  * turned out to be the entire regex, then the "first word" will be, too.
14606  */
14607  if (cp != start) {
14608  cp = _REGEX(index);
14609  j = 1;
14610 #ifdef DEBUG
14611  printf("BO-Regex, cp == '%c'\n", *cp);
14612 #endif /* DEBUG */
14613  while (*cp == ' ') {
14614  cp++;
14615  }
14616  while (*cp && (*cp != ' ') && (*cp != '.') && (*cp != '(') &&
14617  (*cp != '{')) {
14618  if (*cp == '[') {
14619  if (*(cp + 1) == '^') {
14620  j = 0;
14621  }
14622  while (*cp && (*cp != ']')) {
14623  cp++;
14624  }
14625  if (*(cp+1) && (*(cp+1) == '?')) {
14626  cp++;
14627  }
14628  if (j) {
14629  cp++;
14630  break;
14631  }
14632  }
14633  cp++;
14634  }
14635  if (*cp == '(') {
14636  /*printf("Start@%d '%c'\n", cp-_REGEX(index), *cp);*/
14637  for (n = 1, cp++; n; cp++) {
14638  /*printf("... '%c'\n", *cp);*/
14639  if ((*cp == '(') && (*(cp-1) != '\\')) {
14640  n++;
14641  } else if ((*cp == ')') && (*(cp-1) != '\\')) {
14642  n--;
14643  }
14644  }
14645  while (*cp && (*cp != ' ') && (*cp != '.') && (*cp != '(') &&
14646  (*cp != '[')) {
14647  cp++;
14648  }
14649  /*printf("_END_@%d '%c'\n", cp-_REGEX(index), *cp);*/
14650  }
14651  if ((*cp == '?') ||
14652  (*cp == '+') ||
14653  ((*cp == '.') && (*(cp-1) == '\\'))) {
14654  cp++;
14655  }
14656  if (*cp) {
14657  save = *cp;
14658  *cp = NULL_CHAR;
14659 #ifdef DEBUG
14660  printf("SEARCH @head is now \"%s\"\n", _REGEX(index));
14661 #endif /* DEBUG */
14662  ptr = sp->buf+sso;
14663  if (strGrep(_REGEX(index), ptr,
14664  REG_ICASE|REG_EXTENDED)) {
14665  len -= cur.regm.rm_so;
14666  off += cur.regm.rm_so;
14667  } else {
14668  LOG_NOTICE("Regex \"%s\" (foot-start) not in raw text", _REGEX(index));
14669  }
14670  *cp = save; /* restore to original text */
14671  }
14672 #ifdef DEBUG
14673  else {
14674  LOG_NOTICE("Nothing to trim from the front (*cp == NULL)");
14675  }
14676 #endif /* DEBUG */
14677  }
14678 #ifdef DEBUG
14679  else {
14680  printf("Hey, last-word IS the entire regex!\n");
14681  }
14682 #endif /* DEBUG */
14683  saveRegexLocation(index, off, len, YES);
14684 #ifdef DEBUG
14685  printf("WINDOW-FINAL: offset %d, len %d\n", off, len);
14686 #endif /* DEBUG */
14687  /*
14688  * At this point, the window is as small as we can (reasonably) make it,
14689  * given that we mundged the original file-text and didn't make a complete
14690  * map of every character. The variable off contains the start of the
14691  * window (the absolute offset within the raw file) and the variable len
14692  * contains the length of the text window.
14693  *****
14694  * DON'T FORGET that some license-footprints are determined merely by
14695  * searching for a string in the raw-text file (calling idxGrep()), e.g.,
14696  * not using the doctored buffers. See fileHasPatt() for details.
14697  *****
14698  * And finally, note how the list of entries matched (in 'whereList') is
14699  * manipulated -- see the very bottom of "addRef()".
14700  */
14701  if ((off + len) > size) {
14702  LOG_FATAL("off %d + len %d (== %d) exceeds filesize %d!", off, len, off + len, size);
14703  Bail(-__LINE__);
14704  }
14705  return;
14706 }
14707 
14715 void saveRegexLocation(int index, int offset, int length, int saveCache)
14716 {
14717  item_t *ip;
14718  item_t *sp;
14719 
14720 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG)
14721  traceFunc("== saveRegexLocation(%d, %d, %d, %d)\n", index, offset, length,
14722  saveCache);
14723 #endif /* PROC_TRACE || PHRASE_DEBUG */
14724 
14725  (void) sprintf(name, "reg%04d", index);
14726  sp = listGetItem(&whereList, name);
14727  sp->bIndex = whereList.used;
14728  sp->bStart = offset;
14729  sp->bLen = length;
14730  if (saveCache) {
14731  ip = listGetItem(&whCacheList, name);
14732  ip->bIndex = index;
14733  ip->bStart = offset;
14734  ip->bLen = length;
14735  }
14736  return;
14737 }
14738 
14739 
14740 void saveUnclBufLocation(int bufNum)
14741 {
14742  item_t *p;
14743  item_t *bp;
14744  list_t *lp;
14745 
14746 #if defined(PROC_TRACE) || defined(PHRASE_DEBUG)
14747  traceFunc("== saveUnclBufLocation(%d, %d, %d, %d)\n", bufNum);
14748 #endif /* PROC_TRACE || PHRASE_DEBUG */
14749 
14750  listClear(&whereList, NO); /* empty all prior matches */
14751  p = listGetItem(&cur.offList, _REGEX(_LEGAL_first));
14752  lp = (list_t *) p->bList;
14753  (void) sprintf(name, "buf%05d", bufNum);
14754  p = listGetItem(lp, name);
14755  bp = listGetItem(&whereList, LS_UNCL);
14756  bp->bStart = p->bStart;
14757  bp->bLen = p->bLen;
14758  bp->bIndex = -1;
14759  return;
14760 }
14761 
14767 void addRef(char *str, int interest)
14768 {
14769  item_t *p;
14770  char *bp;
14771  char *sp = str;
14772  if(!(str && str[0]))
14773  return;
14774 
14775 #ifdef PROC_TRACE
14776  traceFunc("== addRef(\"%s\", %d)\n", str, interest);
14777 #endif /* PROC_TRACE */
14778 
14779 #if defined(DEBUG)
14780  listDump(&whereList, YES);
14781 #endif /* DEBUG */
14782  /*
14783  * Add this to the list of individual pieces found, and mark the license
14784  * to make generating a license-summary easier. The general strategy is
14785  * to COMPLETELY ignore anything NOT considered 'noteworthy'. So if the
14786  * license is noteworthy, we add one to the count, so that we can call
14787  * listCount() on the list to find if there's a 'real license' in here.
14788  * see makeLicenseSummary() in license.c for more details.
14789  *****
14790  * This little trick is also used in distroReport() and rawSourceReport(),
14791  * see report.c
14792  */
14793  if (str == NULL_STR) {
14794  Assert(YES, "license detected != NULL");
14795  }
14796  if (*str == NULL_CHAR) {
14797  Assert(YES, "license string not start with NULL");
14798  }
14799  bp = licStr+refOffset;
14800  *bp++ = ',';
14801  /*
14802  CDB - Opportunity for optimization via memcpy
14803  */
14804  while (*sp) {
14805  *bp++ = *sp++;
14806  }
14807  *bp = NULL_CHAR;
14808  refOffset = bp - licStr;
14809  /*
14810  * Stuff this license in to several lists:
14811  * - parseList is used to create a package "computed license summary"
14812  * - briefList is used to compute a "terse/brief" license summary
14813  */
14814  p = listGetItem(&cur.parseList, str);
14815  if (interest) {
14816  p->iFlag++;
14817  if (interest > IL_LOW) {
14818  p->iLevel = interest;
14819  }
14820  }
14821  if (interest > maxInterest) {
14822  maxInterest = interest;
14823  }
14824  if (lDiags && whereList.used) {
14825  int i = 0;
14826  listSort(&whereList, SORT_BY_COUNT_ASC);
14827  printf("WINDOW for \"%s\": ", str);
14828  while ((p = listIterate(&whereList))) {
14829  if (i++ > 0) {
14830  printf(", ");
14831  }
14832  printf("%d+%d", p->bStart, p->bLen);
14833  }
14834  printf("\n");
14835  }
14836  listClear(&whereList, NO);
14837 #ifdef DEBUG
14838  if (lDiags) {
14839  printf("++ \"%s\" [int=%d]\n", str, interest);
14840  }
14841 #endif /* DEBUG */
14842 
14843  addLicence(cur.theMatches,str);
14844 
14845  return;
14846 }
14847 
14853 int famOPENLDAP(char *filetext, int size, int isML, int isPS)
14854 {
14855  int ret = 0;
14856 
14857  if (lmem[_tOPENLDAP]) {
14858  if (INFILE(_TITLE_OPENLDAP25)) {
14859  INTERESTING("OLDAP-2.5");
14860  ret = 1;
14861  }
14862  else if (INFILE(_TITLE_OPENLDAP26)) {
14863  INTERESTING("OLDAP-2.6");
14864  ret = 1;
14865  }
14866  else if (INFILE(_TITLE_OPENLDAP27)) {
14867  INTERESTING("OLDAP-2.7");
14868  ret = 1;
14869  }
14870  else if (INFILE(_TITLE_OPENLDAP28)) {
14871  INTERESTING("OLDAP-2.8");
14872  ret = 1;
14873  }
14874  else if (INFILE(_TITLE_OPENLDAP201)) {
14875  INTERESTING("OLDAP-2.0.1");
14876  ret = 1;
14877  }
14878  else if (INFILE(_TITLE_OPENLDAP20)) {
14879  INTERESTING("OLDAP-2.0");
14880  ret = 1;
14881  }
14882  else if (INFILE(_TITLE_OPENLDAP21)) {
14883  INTERESTING("OLDAP-2.1");
14884  ret = 1;
14885  }
14886  else if (INFILE(_TITLE_OPENLDAP221) || INFILE(_SPDX_OLDAP_221)) {
14887  INTERESTING("OLDAP-2.2.1");
14888  ret = 1;
14889  }
14890  else if (INFILE(_TITLE_OPENLDAP222) || INFILE(_SPDX_OLDAP_222)) {
14891  INTERESTING("OLDAP-2.2.2");
14892  ret = 1;
14893  }
14894  else if (INFILE(_TITLE_OPENLDAP22)) {
14895  INTERESTING("OLDAP-2.2");
14896  ret = 1;
14897  }
14898  else if (INFILE(_TITLE_OPENLDAP11)) {
14899  INTERESTING("OLDAP-1.1");
14900  ret = 1;
14901  }
14902  else if (INFILE(_TITLE_OPENLDAP23)) {
14903  INTERESTING("OLDAP-2.3");
14904  ret = 1;
14905  }
14906  else if (INFILE(_TITLE_OPENLDAP24)) {
14907  INTERESTING("OLDAP-2.4");
14908  ret = 1;
14909  }
14910  else if (INFILE(_TITLE_OPENLDAP12)) {
14911  INTERESTING("OLDAP-1.2");
14912  ret = 1;
14913  }
14914  else if (INFILE(_TITLE_OPENLDAP13)) {
14915  INTERESTING("OLDAP-1.3");
14916  ret = 1;
14917  }
14918  else if (INFILE(_TITLE_OPENLDAP14)) {
14919  INTERESTING("OLDAP-1.4");
14920  ret = 1;
14921  }
14922  else if (INFILE(_CR_OPENLDAP) && INFILE(_TITLE_OPENLDAP)) {
14923  INTERESTING("OLDAP");
14924  ret = 1;
14925  }
14926  }
14927  lmem[_fOPENLDAP] = ret;
14928  return(ret);
14929 }
14930 
14931 
14955 int checkUnclassified(char *filetext, int size, int score,
14956  int isML, int isPS, int nw)
14957 {
14958  char *buf;
14959  char *curptr;
14960  char *cp;
14961  int m = 0;
14962 #ifdef UNKNOWN_CHECK_DEBUG
14963  int pNum = 0;
14964 #endif /* UNKNOWN_CHECK_DEBUG */
14965  int i = 0;
14966 
14967 #ifdef PROC_TRACE
14968  traceFunc("== checkUnclassified(%p, %d, %d, %d, %d, %d)\n", filetext,
14969  size, score, isML, isPS, nw);
14970 #endif /* PROC_TRACE */
14971 
14972  /*
14973  * Based on experience, this is a good place to look for false-positives:
14974  *****
14975  * Occasionally IETF documents (RFCs, technical descriptions and the like)
14976  * have enough text to trip the unclassified-license detector falsely.
14977  * As a first quick check, see if there's an IETF copyright in the file
14978  * and if so, avoid this (somewhat expensive) check.
14979  *****
14980  * The "Debian social contract" has some very legal-looking verbage, too.
14981  */
14982  if (mCR_IETF()) {
14983  return(0);
14984  }
14985  if (INFILE(_LT_DEB_CONTRACT) || INFILE(_LT_DEB_CONTRACTref)){
14986  INTERESTING("Debian-social-DFSG");
14987  return(0);
14988  }
14989  if (INFILE(_LT_TROLLTECH)) {
14990  return(1);
14991  }
14992 
14993  /*
14994  * A Generic EULA 'qualifies' as an UnclassifiedLicense, or the clause 'License agreement' as an UnclassifiedLicense, check this
14995  * one before trying the word-matching magic checks (below).
14996  */
14997  gl.flags |= FL_SAVEBASE; /* save match buffer (if any) */
14998  m = INFILE(_LT_GEN_EULA) || INFILE(_LT_LG) || INFILE(_LT_GENERIC_UNCLASSIFIED);
14999  /* gl.flags & ~FL_SAVEBASE; CDB -- This makes no sense, given line above */
15000  if (m) {
15001  if (cur.licPara == NULL_STR && cur.matchBase) {
15002  saveLicenseParagraph(cur.matchBase, isML, isPS, NO);
15003  }
15004  return(1);
15005  }
15006  checknw = nw;
15007  /*
15008  * Look for paragraphs of text that could be licenses. We'll check the
15009  * resulting text for 4 types of different words (all in proximity leads
15010  * us to believe it's a license of some sort). If we don't get a paragraph
15011  * to search based on the first set of words, look no further.
15012  */
15013 #ifdef UNKNOWN_CHECK_DEBUG
15014  printf("... first regex: \"%s\"\n", _REGEX(_LEGAL_first));
15015 #endif /* UNKNOWN_CHECK_DEBUG */
15016  if ((buf = getInstances(filetext, size, gl.uPsize, gl.uPsize,
15017  _REGEX(_LEGAL_first), YES)) == NULL_STR) {
15018 #ifdef UNKNOWN_CHECK_DEBUG
15019  printf("... getInstances returns NULL\n");
15020 #endif /* UNKNOWN_CHECK_DEBUG */
15021  return(0);
15022  }
15023  if (lDiags) {
15024  printRegexMatch(_LEGAL_first, NO);
15025  }
15026  /*
15027  * Without examining each paragraph, make sure the file contains the
15028  * components we're looking for... if not, don't check any further.
15029  */
15030  if (/*size > 102400 && */
15031  !match3(_LEGAL_first, buf, score, NO, isML, isPS)) {
15032 #ifdef UNKNOWN_CHECK_DEBUG
15033  printf("... first check fails\n");
15034 #endif /* UNKNOWN_CHECK_DEBUG */
15035  return(0);
15036  }
15037  /*
15038  * buf now points to a series of paragraphs that have 6 lines above
15039  * AND below the regex we've matched, PLUS a separator line between
15040  * each paragraph. The LAST paragraph doesn't have a separator-line.
15041  *****
15042  * For the sake of the search, make the separator line 'disappear'.
15043  */
15044  curptr = buf;
15045  while (idxGrep(_UTIL_XYZZY, curptr, 0)) {
15046  cp = curptr + cur.regm.rm_so;
15047  *cp = NULL_CHAR;
15048 #ifdef UNKNOWN_CHECK_DEBUG
15049  printf("DEBUG: paragraph #%d:\n[START-PARA]\n%s\n[END-PARA]\n",
15050  ++pNum, curptr);
15051 #endif /* UNKNOWN_CHECK_DEBUG */
15052  i++;
15053  /*
15054  * Now that we have our 'paragraph span', check the contents of the
15055  * paragraph for the other 3 groups of words. A match in EACH group
15056  * (plus other criteria checked, of course) means we've likely found
15057  * as-of-yet unclassified license.
15058  *****
15059  * A generic "no warranty" paragraph also looks like a license, so in
15060  * that case don't return a false positive.
15061  */
15062  if (match3(_LEGAL_first, curptr, score, YES, isML, isPS)) {
15063  saveUnclBufLocation(i);
15064  return(1);
15065  }
15066 #ifdef UNKNOWN_CHECK_DEBUG
15067  else {
15068  printf("DEBUG: match() returns 0, look again\n");
15069  }
15070 #endif /* UNKNOWN_CHECK_DEBUG */
15071  /*
15072  * NO-match means this paragraph doesn't contain the magic words we
15073  * seek. However, this file still _may_ contain the magic paragraph --
15074  * it'll be searched in this while-loop until either the magic OR
15075  * end-of-file is found)...
15076  */
15077  *cp++ = '='; /* reset line */
15078  if ((cp = findEol(cp)) == NULL_STR) {
15079  LOG_FATAL("Cannot find delimeter!")
15080  Bail(-__LINE__);
15081  }
15082  curptr = cp+1;
15083  }
15084  /*
15085  * One last buffer to try...
15086  */
15087 #ifdef UNKNOWN_CHECK_DEBUG
15088  printf("DEBUG: %s paragraph (#%d):\n[START-PARA]\n%s\n[END-PARA]\n",
15089  pNum == 0 ? "ONLY" : "LAST", ++pNum, curptr);
15090 #endif /* UNKNOWN_CHECK_DEBUG */
15091  if (match3(_LEGAL_first, curptr, score, YES, isML, isPS)) {
15092  saveUnclBufLocation(++i);
15093  return(1);
15094  }
15095  return(0);
15096 }
15097 
15098 
15102 void checkFileReferences(char *filetext, int size, int score, int kwbm,
15103  int isML, int isPS)
15104 {
15105  int i;
15106 
15107 #ifdef PROC_TRACE
15108  traceFunc("== checkFileReferences(%p, %d, %d, 0x%x, %d, %d)\n", filetext,
15109  size, score, kwbm, isML, isPS);
15110 #endif /* PROC_TRACE */
15111  for (i = 0; i < NSEECOPYING; i++) {
15112  if (INFILE(_SEECOPYING_first+i)) {
15113  if (lDebug) {
15114  (void) sprintf(name, "Gen-CPY-%d", ++i);
15115  INTERESTING(name);
15116  } else {
15117  INTERESTING("See-file.COPYING");
15118  }
15119  return;
15120  }
15121  }
15122  /* */
15123  for (i = 0; i < NSEELICENSE; i++) {
15124  if (INFILE(_SEELICENSE_first+i)) {
15125  if (lDebug) {
15126  (void) sprintf(name, "Gen-CPY-%d", ++i);
15127  INTERESTING(name);
15128  } else {
15129  INTERESTING("See-file.LICENSE");
15130  }
15131  return;
15132  }
15133  }
15134  /* */
15135  for (i = 0; i < NSEEREADME; i++) {
15136  if (INFILE(_SEEREADME_first+i)) {
15137  if (lDebug) {
15138  (void) sprintf(name, "Gen-CPY-%d", ++i);
15139  INTERESTING(name);
15140  } else {
15141  INTERESTING("See-file.README");
15142  }
15143  return;
15144  }
15145  }
15146  /* */
15147  for (i = 0; i < NSEEOTHER; i++) {
15148  if (INFILE(_SEEOTHER_first+i)) {
15149  if (lDebug) {
15150  (void) sprintf(name, "Gen-CPY-%d", ++i);
15151  INTERESTING(name);
15152  } else {
15153  INTERESTING("See-doc.OTHER");
15154  }
15155  return;
15156  }
15157  }
15158  /* */
15159  if (INFILE(_LT_SEE_OUTPUT_1)) {
15160  INTERESTING(lDebug ? "Gen-EXC-1" : "GNU-style.EXECUTE");
15161  }
15162 #if 0
15163  else if (INFILE(_LT_SEE_OUTPUT_2)) {
15164  INTERESTING(lDebug ? "Gen-EXC-2" : "Free-SW.run-COMMAND");
15165  } else if (INFILE(_LT_SEE_OUTPUT_3)) {
15166  INTERESTING(lDebug ? "Gen-EXC-3" : "Free-SW.run-COMMAND");
15167  }
15168 #endif
15169  if(HASTEXT(_LT_SEE_COPYING_LICENSE_1, REG_EXTENDED) || HASTEXT(_LT_SEE_COPYING_LICENSE_2, REG_EXTENDED)) {
15170  INTERESTING("See-file");
15171  }
15172  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)) {
15173  INTERESTING("See-URL");
15174  }
15175  return;
15176 
15177 #ifdef OLD_VERSION
15178  if (INFILE(_LT_SEE_COPYING_1)) {
15179  INTERESTING(lDebug ? "Gen-CPY-1" : "See-file.COPYING");
15180  }
15181  else if (INFILE(_LT_SEE_COPYING_2)) {
15182  INTERESTING(lDebug ? "Gen-CPY-2" : "See-file.COPYING");
15183  }
15184  else if (INFILE(_LT_SEE_COPYING_3)) {
15185  INTERESTING(lDebug ? "Gen-CPY-3" : "See-file.COPYING");
15186  }
15187  else if (INFILE(_LT_SEE_COPYING_4)) {
15188  INTERESTING(lDebug ? "Gen-CPY-4" : "See-file.COPYING");
15189  }
15190  else if (INFILE(_LT_SEE_COPYING_5)) {
15191  INTERESTING(lDebug ? "Gen-CPY-5" : "See-file.COPYING");
15192  }
15193  else if (INFILE(_LT_SEE_COPYING_6)) {
15194  INTERESTING(lDebug ? "Gen-CPY-6" : "See-file.COPYING");
15195  }
15196  else if (INFILE(_LT_SEE_COPYING_7)) {
15197  INTERESTING(lDebug ? "Gen-CPY-7" : "See-file.COPYING");
15198  }
15199  else if (INFILE(_LT_SEE_COPYING_8)) {
15200  INTERESTING(lDebug ? "Gen-CPY-8" : "See-file.COPYING");
15201  }
15202  else if (INFILE(_LT_SEE_COPYING_9)) {
15203  INTERESTING(lDebug ? "Gen-CPY-9" : "See-file.COPYING");
15204  }
15205  else if (INFILE(_LT_SEE_COPYING_10)) {
15206  INTERESTING(lDebug ? "Gen-CPY-10" : "See-file.COPYING");
15207  }
15208  else if (INFILE(_LT_SEE_COPYING_LAST1)) {
15209  INTERESTING(lDebug ? "Gen-CPY-L1" : "See-file.COPYING");
15210  }
15211  else if (INFILE(_LT_SEE_COPYING_LAST2)) {
15212  INTERESTING(lDebug ? "Gen-CPY-L2" : "See-file.COPYING");
15213  }
15214  else if (INFILE(_LT_SEE_LICENSE_1)) {
15215  INTERESTING(lDebug ? "Gen-LIC-1" : "See-file.LICENSE");
15216  }
15217  else if (INFILE(_LT_SEE_LICENSE_2)) {
15218  INTERESTING(lDebug ? "Gen-LIC-2" : "See-file.LICENSE");
15219  }
15220  else if (INFILE(_LT_SEE_LICENSE_3)) {
15221  INTERESTING(lDebug ? "Gen-LIC-3" : "See-file.LICENSE");
15222  }
15223  else if (INFILE(_LT_SEE_LICENSE_4)) {
15224  INTERESTING(lDebug ? "Gen-LIC-4" : "See-file.LICENSE");
15225  }
15226  else if (INFILE(_LT_SEE_LICENSE_5)) {
15227  INTERESTING(lDebug ? "Gen-LIC-5" : "See-file.LICENSE");
15228  }
15229  else if (INFILE(_LT_SEE_LICENSE_6)) {
15230  INTERESTING(lDebug ? "Gen-LIC-6" : "See-file.LICENSE");
15231  }
15232  else if (INFILE(_LT_SEE_LICENSE_7)) {
15233  INTERESTING(lDebug ? "Gen-LIC-7" : "See-file.LICENSE");
15234  }
15235  else if (INFILE(_LT_SEE_LICENSE_8)) {
15236  INTERESTING(lDebug ? "Gen-LIC-8" : "See-file.LICENSE");
15237  }
15238  else if (INFILE(_LT_SEE_LICENSE_9)) {
15239  INTERESTING(lDebug ? "Gen-LIC-9" : "See-file.LICENSE");
15240  }
15241  else if (INFILE(_LT_SEE_LICENSE_10)) {
15242  INTERESTING(lDebug ? "Gen-LIC-10" : "See-file.LICENSE");
15243  }
15244  else if (INFILE(_LT_SEE_LICENSE_LAST1)) {
15245  INTERESTING(lDebug ? "Gen-LIC-L1" : "See-file.LICENSE");
15246  }
15247  else if (INFILE(_LT_SEE_LICENSE_LAST2)) {
15248  INTERESTING(lDebug ? "Gen-LIC-L2" : "See-file.LICENSE");
15249  }
15250  else if (INFILE(_LT_SEE_README_1)) {
15251  INTERESTING(lDebug ? "Gen-RDM-1" : "See-file.README");
15252  }
15253  else if (INFILE(_LT_SEE_README_2)) {
15254  INTERESTING(lDebug ? "Gen-RDM-2" : "See-file.README");
15255  }
15256  else if (INFILE(_LT_SEE_README_3)) {
15257  INTERESTING(lDebug ? "Gen-RDM-3" : "See-file.README");
15258  }
15259  else if (INFILE(_LT_SEE_README_4)) {
15260  INTERESTING(lDebug ? "Gen-RDM-4" : "See-file.README");
15261  }
15262  else if (INFILE(_LT_SEE_README_5)) {
15263  INTERESTING(lDebug ? "Gen-RDM-5" : "See-file.README");
15264  }
15265  else if (INFILE(_LT_SEE_README_6)) {
15266  INTERESTING(lDebug ? "Gen-RDM-6" : "See-file.README");
15267  }
15268  else if (INFILE(_LT_SEE_README_7)) {
15269  INTERESTING(lDebug ? "Gen-RDM-7" : "See-file.README");
15270  }
15271  else if (INFILE(_LT_SEE_README_LAST1)) {
15272  INTERESTING(lDebug ? "Gen-RDM-L1" : "See-file.README");
15273  }
15274  else if (INFILE(_LT_SEE_README_LAST2)) {
15275  INTERESTING(lDebug ? "Gen-RDM-L2" : "See-file.README");
15276  }
15277  else if (INFILE(_LT_SEE_OTHER_1)) {
15278  INTERESTING(lDebug ? "Gen-OTH-1" : "See-doc.OTHER");
15279  }
15280  else if (INFILE(_LT_SEE_OTHER_2)) {
15281  INTERESTING(lDebug ? "Gen-OTH-2" : "See-doc.OTHER");
15282  }
15283  else if (INFILE(_LT_SEE_OTHER_3)) {
15284  INTERESTING(lDebug ? "Gen-OTH-3" : "See-doc.OTHER");
15285  }
15286  else if (INFILE(_LT_SEE_OTHER_4)) {
15287  INTERESTING(lDebug ? "Gen-OTH-4" : "See-doc.OTHER");
15288  }
15289  else if (INFILE(_LT_SEE_OTHER_5)) {
15290  INTERESTING(lDebug ? "Gen-OTH-5" : "See-doc.OTHER");
15291  }
15292  else if (INFILE(_LT_SEE_OTHER_6)) {
15293  INTERESTING(lDebug ? "Gen-OTH-6" : "See-doc.OTHER");
15294  }
15295  else if (INFILE(_LT_SEE_OTHER_7)) {
15296  INTERESTING(lDebug ? "Gen-OTH-7" : "See-doc.OTHER");
15297  }
15298  else if (INFILE(_LT_SEE_OTHER_8)) {
15299  INTERESTING(lDebug ? "Gen-OTH-8" : "See-doc.OTHER");
15300  }
15301  else if (INFILE(_LT_SEE_OTHER_9)) {
15302  INTERESTING(lDebug ? "Gen-OTH-9" : "See-doc.OTHER");
15303  }
15304  else if (INFILE(_LT_SEE_OTHER_10)) {
15305  INTERESTING(lDebug ? "Gen-OTH-10" : "See-doc.OTHER");
15306  }
15307  else if (INFILE(_LT_SEE_OTHER_11)) {
15308  INTERESTING(lDebug ? "Gen-OTH-11" : "See-doc.OTHER");
15309  }
15310  else if (INFILE(_LT_SEE_OTHER_12)) {
15311  INTERESTING(lDebug ? "Gen-OTH-12" : "See-doc.OTHER");
15312  }
15313  else if (INFILE(_LT_SEE_OTHER_13)) {
15314  INTERESTING(lDebug ? "Gen-OTH-13" : "See-doc.OTHER");
15315  }
15316  else if (INFILE(_LT_SEE_OTHER_14)) {
15317  INTERESTING(lDebug ? "Gen-OTH-14" : "See-doc.OTHER");
15318  }
15319  else if (INFILE(_LT_SEE_OTHER_15)) {
15320  INTERESTING(lDebug ? "Gen-OTH-15" : "See-doc.OTHER");
15321  }
15322  else if (INFILE(_LT_SEE_OTHER_LAST1)) {
15323  INTERESTING(lDebug ? "Gen-OTH-L1" : "See-doc.OTHER");
15324  }
15325  else if (INFILE(_LT_SEE_OTHER_LAST2)) {
15326  INTERESTING(lDebug ? "Gen-OTH-L2" : "See-doc.OTHER");
15327  }
15328  else if (INFILE(_LT_SEE_OTHER_LAST3)) {
15329  INTERESTING(lDebug ? "Gen-OTH-L3" : "See-doc.OTHER");
15330  }
15331  else if (INFILE(_LT_SEE_OUTPUT_1)) {
15332  INTERESTING(lDebug ? "Gen-EXC-1" : "GNU-style.interactive");
15333  }
15334  return;
15335 #endif /* OLD_VERSION */
15336 }
15337 
15338 
15339 int checkPublicDomain(char *filetext, int size, int score, int kwbm,
15340  int isML, int isPS)
15341 {
15342  int ret;
15343 
15344 #ifdef PROC_TRACE
15345  traceFunc("== checkPublicDomain(%p, %d, %d, 0x%x, %d, %d)\n", filetext,
15346  size, score, kwbm, isML, isPS);
15347 #endif /* PROC_TRACE */
15348 
15349  if (pd >= 0) { /* already tried? */
15350  return(pd);
15351  }
15352  ret = 0; /* default answer is "no" */
15353  if (INFILE(_LT_PUBDOM_CC)) {
15354  INTERESTING(lDebug ? "Pubdom(CC)" : "CC-PDDC");
15355  ret = 1;
15356  } else if (INFILE(_LT_PUBDOM_ODC)) {
15357  INTERESTING(lDebug ? "Pubdom(ODC)" : LS_PD_CLM);
15358  ret = 1;
15359  } else if (INFILE(_LT_PUBDOM_PDD)) {
15360  INTERESTING(lDebug ? "Pubdom(PDD)" : LS_PD_CLM);
15361  ret = 1;
15362  } else if (INFILE(_LT_PUBDOM_USE)) {
15363  INTERESTING(lDebug ? "Pubdom(use)" : LS_PD_CLM);
15364  ret = 1;
15365  } else if (HASTEXT(_LT_PUBDOM_NOTclaim, REG_EXTENDED)) {
15366  INTERESTING(LS_NOT_PD);
15367  ret = 1;
15368  } else if (INFILE(_CR_PUBDOM)) {
15369  if (INFILE(_LT_PUBDOMNOTcpyrt)) {
15370  INTERESTING(LS_PD_CLM);
15371  } else {
15372  INTERESTING(LS_PD_CPRT);
15373  }
15374  ret = 1;
15375  } else if (INFILE(_CR_NONE)) {
15376  INTERESTING(lDebug ? "Pubdom(no-CR)" : LS_PD_CLM);
15377  ret = 1;
15378  } else if (INFILE(_LT_UNLIN) || URL_INFILE(_URL_UNLINref) || URL_INFILE(_URL_UNLIN)) {
15379  INTERESTING("Unlicense");
15380  ret = 1;
15381  } else if (INFILE(_LT_PUBDOM_1)) {
15382  INTERESTING(lDebug ? "Pubdom(1)" : LS_PD_CLM);
15383  ret = 1;
15384  } else if (INFILE(_LT_PUBDOM_2) && NOT_INFILE(_PHR_PUBLIC_FUNCT) && NOT_INFILE(_LT_NOTPUBDOM_1)) {
15385  INTERESTING(lDebug ? "Pubdom(2)" : LS_PD_CLM);
15386  ret = 1;
15387  /* "publicly available" is not a public domain dedication */
15388 #ifdef REMOVED_AS_TOO_BROAD
15389  } else if (INFILE(_LT_PUBDOM_4)) {
15390  INTERESTING(lDebug ? "Pubdom(4)" : LS_PD_CLM);
15391  ret = 1;
15392  } else if (INFILE(_LT_PUBDOM_5)) {
15393  INTERESTING(lDebug ? "Pubdom(5)" : LS_PD_CLM);
15394  ret = 1;
15395  } else if (INFILE(_LT_PUBDOM_6)) {
15396  INTERESTING(lDebug ? "No-more-copyright" : LS_PD_CLM);
15397  ret = 1;
15398 #endif // done removing too broad signatures
15399  } else if (INFILE(_LT_PUBDOM_7)) {
15400  INTERESTING(lDebug ? "Pubdom(7)" : LS_PD_CLM);
15401  ret = 1;
15402  } else if (INFILE(_LT_PUBDOM_8)) {
15403  INTERESTING(lDebug ? "Pubdom(8)" : LS_PD_CLM);
15404  ret = 1;
15405  } else if (INFILE(_LT_PUBDOM_9)) {
15406  INTERESTING(lDebug ? "Pubdom(9)" : LS_PD_CLM);
15407  ret = 1;
15408  } else if (INFILE(_LT_PUBDOM_10)) {
15409  if (INFILE(_LT_blessing)) {
15410  INTERESTING(lDebug ? "Pubdom(10)" : "blessing");
15411  }
15412  else {
15413  INTERESTING(lDebug ? "Pubdom(10)" : LS_PD_CLM);
15414  }
15415  ret = 1;
15416  } else if (INFILE(_URL_PUBDOM)) {
15417  INTERESTING(lDebug ? "Pubdom(URL)" : LS_PD_CLM);
15418  ret = 1;
15419  } else if (HASKW(kwbm, _KW_public_domain) && score <= 3) {
15420  INTERESTING(LS_PD_ONLY);
15421  ret = 1;
15422  }
15423  return(ret);
15424 }
15425 
15426 
15434 void checkCornerCases(char *filetext, int size, int score,
15435  int kwbm, int isML, int isPS, int nw, int force)
15436 {
15437 
15438 #ifdef PROC_TRACE
15439  traceFunc("== checkCornerCases(%p, %d, %d, %d, %d, %d, %d, %d)\n",
15440  filetext, size, score, kwbm, isML, isPS, nw, force);
15441 #endif /* PROC_TRACE */
15442 
15443  if (crCheck++) { /* only need to check this once */
15444  return;
15445  }
15446  if (INFILE(_LT_NOTATT_NOTBSD)) {
15447  LOWINTEREST("non-ATT-BSD");
15448  }
15449 
15450  /*
15451  * FINAL cases: (close to giving up) -- lowest-importance items
15452  */
15459  /*
15460  if (!(*licStr)) {
15461  if (HASTEXT(_TEXT_TRADEMARK, 0)) {
15462  LOWINTEREST(LS_TDMKONLY);
15463  }
15464  }
15465  */
15466  if (!(*licStr)) {
15467  /*
15468  * We may have matched something but ultimately determined there's nothing
15469  * significant or of any interest, so empty the list of any matches we may
15470  * have observed to this point.
15471  */
15472  listClear(&whereList, NO); /* force 'nothing to report' */
15473  }
15474  return;
15475 }
15476 
15477 int match3(int base, char *buf, int score, int save, int isML, int isPS)
15478 {
15479  int i;
15480  int j;
15481  char *cp;
15482  /* */
15483 #ifdef PROC_TRACE
15484 #ifdef PROC_TRACE_SWITCH
15485  if (gl.ptswitch)
15486 #endif /* PROC_TRACE_SWITCH */
15487  printf("== match3(%d, %p, %d, %d, %d, %d)\n", base, buf, score, save,
15488  isML, isPS);
15489 #else /* not PROC_TRACE */
15490 #ifdef UNKNOWN_CHECK_DEBUG
15491  printf("== match3(%d, %p, %d, %d, %d, %d)\n", base, buf, score, save,
15492  isML, isPS);
15493 #endif /* UNKNOWN_CHECK_DEBUG */
15494 #endif /* not PROC_TRACE */
15495  /* */
15496  for (i = 1; i <= 3; i++) {
15497  if (dbgIdxGrep(base+i, buf, (save && lDiags)) == 0) {
15498 #ifdef UNKNOWN_CHECK_DEBUG
15499  printf("match3: FAILED regex (%d)!\n", base+i);
15500 #endif /* UNKNOWN_CHECK_DEBUG */
15501  return(0);
15502  }
15503  }
15504 #ifdef UNKNOWN_CHECK_DEBUG
15505  printf("match3: Success (%s)!\n",
15506  (save ? "buffer-for-real" : "file-initial-check"));
15507 #endif /* UNKNOWN_CHECK_DEBUG */
15508  /*
15509  * Some "possible licenses" are technical descriptions that share some words
15510  * that typically appear in licenses (distribution, terms, permission(s)).
15511  *****
15512  * If we're checking a paragraph (e.g., "save" is non-zero), see if there are
15513  * other engineering-development-technical terms in the paragraph that tend
15514  * to NOT be present in licenses...
15515  */
15516  if (save) {
15517  for (j = i = 0, cp = buf; *cp; i++, cp++) {
15518  if (*cp & 0200) {
15519  j++;
15520  }
15521  }
15522 #ifdef UNKNOWN_CHECK_DEBUG
15523  printf("DEEBUG: %d bytes, %d 8-bit\n", i, j);
15524 #endif /* UNKNOWN_CHECK_DEBUG */
15525  if (j >= (i/2)) {
15526  if (lDiags) {
15527  printf("... no, >= 50 percent 8-bit characters\n");
15528  }
15529  return(0);
15530  }
15531  /*
15532  We need to allocate space for a doctored-up version of the candidate
15533  unknown-license paragraph, but it's ONLY used in this function. E.g.,
15534  make darn sure we free it up before exiting this function...
15535  */
15536  cp = copyString(buf, MTAG_TEXTPARA);
15537  doctorBuffer(cp, isML, isPS, NO);
15538  /*
15539  If we detected a no-warraty statement earlier, "checknw" is != 0.
15540  Look for a no-warrany statement in this candidate paragraph.
15541  If we find it, report failure for the paragraph and remember
15542  finding the no--warranty.
15543  */
15544  if (checknw && !idxGrep(checknw, cp, REG_ICASE|REG_EXTENDED)) {
15545  if (lDiags) {
15546  printf("... no, warranty regex %d\n", checknw);
15547  }
15548  checknw = 0;
15549  memFree(cp, MTAG_TEXTPARA);
15550  return(0);
15551  }
15552  /*
15553  False-positive-check: GNU/FSF template (often see in ".po"
15554  and ".c" files
15555 
15556  "This file is distributed under the same license as the
15557  package PACKAGE"
15558  */
15559  if (dbgIdxGrep(_LT_BOGUSTMPL, cp, lDiags)) {
15560  if (lDiags) {
15561  printf("... no, FSF-GNU template\n");
15562  }
15563  memFree(cp, MTAG_TEXTPARA);
15564  return(0);
15565  }
15566  /*
15567  * False-positive-check: GNU GPL preamble statements; these have been
15568  * "sprinkled" throughout files seen before, so check ALL of them.
15569  */
15570  if (dbgIdxGrep(_PHR_GNU_FREEDOM, cp, lDiags) ||
15571  dbgIdxGrep(_PHR_GNU_COPYING, cp, lDiags) ||
15572  dbgIdxGrep(_PHR_GNU_PROTECT, cp, lDiags)) {
15573  if (lDiags) {
15574  printf("... no, GNU-GPL preamble\n");
15575  }
15576  memFree(cp, MTAG_TEXTPARA);
15577  return(0);
15578  }
15579  if (lDiags) {
15580  printf("... candidate paragraph analysis:\n");
15581  }
15582  for (i = j = 0; i < NKEYWORDS; i++) {
15583  if (idxGrep_recordPositionDoctored(i + _KW_first, cp, REG_EXTENDED | REG_ICASE)) {
15584  if (lDiags) {
15585  printf("%s", j ? ", " : "KEYWORDS: ");
15586  printf("%s", _REGEX(i+_KW_first));
15587  }
15588  j++;
15589  }
15590  }
15591  if (lDiags) {
15592  if (j) {
15593  printf("\n");
15594  }
15595  printf("SCORES: para %d, file %d == %05.2f%% ", j,
15596  score, 100.0 * (float) j / (float) score);
15597  }
15598  /*
15599  Here, we guess that an UnclassifiedLicense exists in a paragraph
15600  when:
15601  + a paragraph has a keyword-score of at least 3 -OR-
15602  + ... a keyword-score of 2 *AND* is >= 50% of the file's
15603  total score
15604 
15605  It's likely we'll see a few false-positives with a
15606  keyword-score of 2 but there are cases where this works.
15607  We can filter out the 2-scores we see
15608  with the FILTER checks below...
15609  */
15610  if (j == 0) { /* no license-like keywords */
15611  if (lDiags) {
15612  printf("(ZERO legal keywords)\n");
15613  }
15614  memFree(cp, MTAG_TEXTPARA);
15615  return(0);
15616  }
15617  if (j >= 3 || (j == 2 && j*2 >= score)) {
15618  if (j >= 3 && lDiags) {
15619  printf("(LIKELY: para-score >= 2)\n");
15620  }
15621  else if (lDiags) {
15622  printf("(MAYBE: local percentage)\n");
15623  }
15624  }
15625  else {
15626  if (lDiags) {
15627  printf("(NOT LIKELY a license)\n");
15628 #if 0
15629 #endif
15630  printf("[FAILED]\n%s\n[/FAILED]\n", buf);
15631  }
15632  memFree(cp, MTAG_TEXTPARA);
15633  return(0);
15634  }
15635  /*
15636  Sure, there ARE paragraphs with these words that do NOT constitute a
15637  real license. Look for key words and phrases of them HERE. This list
15638  of filters will likely grow over time.
15639  */
15640  for (i = 0; i < NFILTER; i++) {
15641  if (dbgIdxGrep(_FILTER_first+i, buf, lDiags)) {
15642  if (lDiags) {
15643  printf("!! NO-LIC: filter %d\n", ++i);
15644  }
15645  memFree(cp, MTAG_TEXTPARA);
15646  return(0);
15647  }
15648  }
15649  if (cur.licPara == NULL_STR) {
15650  saveLicenseParagraph(buf, isML, isPS, YES);
15651  }
15652  memFree(cp, MTAG_TEXTPARA);
15653  }
15654 #ifdef UNKNOWN_CHECK_DEBUG
15655  else {
15656  printf("match3: Initial-check only (save == %d)\n", save);
15657  }
15658 #endif /* UNKNOWN_CHECK_DEBUG */
15659  return(1);
15660 }
15661 
15662 void saveLicenseParagraph(char *mtext, int isML, int isPS, int entireBuf)
15663 {
15664  char *cp;
15665  char *start;
15666  int index=0;
15667  int len;
15668  start = copyString(mtext, MTAG_TEXTPARA);
15669  if(!start)
15670  {
15671  LOG_FATAL("called saveLicenseParagraph without text")
15672  Bail(-__LINE__);
15673  }
15674 #ifdef PROC_TRACE
15675 #ifdef PROC_TRACE_SWITCH
15676  if (gl.ptswitch)
15677 #endif /* PROC_TRACE_SWITCH */
15678  printf("== saveLicenseParagraph(%p, %d, %d, %d)\n", mtext, isML, isPS, entireBuf);
15679 #endif /* PROC_TRACE */
15680  /* */
15681  if (entireBuf) {
15682  cur.licPara = copyString(mtext, MTAG_TEXTPARA);
15683  } else {
15684  if (cur.regm.rm_so < 50) {
15685  len = cur.regm.rm_eo + 80;
15686  } else {
15687  len = cur.regm.rm_eo + 130 - cur.regm.rm_so;
15688  index = cur.regm.rm_so - 50;
15689  }
15690  cur.licPara = memAlloc(len + 9, MTAG_TEXTPARA);
15691  (void) strcpy(cur.licPara, "... ");
15692  (void) strncpy(cur.licPara + 4, start + index, len);
15693  (void) strcpy(cur.licPara + len + 4, " ...");
15694  memFree(start, MTAG_TEXTPARA);
15695  }
15696 
15697  /*
15698  * Convert double-line-feed chars ("\r" and "\n" combos) to a single "\n"
15699  */
15700  for (cp = cur.licPara; *cp; cp++) {
15701  if ((*cp == '\n' || *cp == '\r') &&
15702  (*(cp+1) == '\r' || *(cp+1) == '\n')) {
15703  *cp = ' ';
15704  *(cp+1) = '\n';
15705  }
15706  }
15707  if (lDiags) {
15708  printf("[PERHAPS] (%p)\n%s\n[/PERHAPS]\n", cur.licPara, cur.licPara);
15709  }
15710  return;
15711 }
15712 
15721 void spdxReference(char *filetext, int size, int isML, int isPS)
15722 {
15723  if (INFILE(_SPDX_Glide)) {
15724  INTERESTING("Glide");
15725  }
15726  if (INFILE(_SPDX_Abstyles)) {
15727  INTERESTING("Abstyles");
15728  }
15729  if (INFILE(_SPDX_AFL_11)) {
15730  INTERESTING("AFL-1.1");
15731  }
15732  if (INFILE(_SPDX_AFL_12)) {
15733  INTERESTING("AFL-1.2");
15734  }
15735  if (INFILE(_SPDX_AFL_20)) {
15736  INTERESTING("AFL-2.0");
15737  }
15738  if (INFILE(_SPDX_AFL_21)) {
15739  INTERESTING("AFL-2.1");
15740  }
15741  if (INFILE(_SPDX_AFL_30)) {
15742  INTERESTING("AFL-3.0");
15743  }
15744  if (INFILE(_SPDX_AMPAS)) {
15745  INTERESTING("AMPAS");
15746  }
15747  if (INFILE(_SPDX_APL_10)) {
15748  INTERESTING("APL-1.0");
15749  }
15750  if (INFILE(_SPDX_Adobe_Glyph)) {
15751  INTERESTING("Adobe-Glyph");
15752  }
15753  if (INFILE(_SPDX_APAFML)) {
15754  INTERESTING("APAFML");
15755  }
15756  if (INFILE(_SPDX_Adobe_2006)) {
15757  INTERESTING("Adobe-2006");
15758  }
15759  if (INFILE(_SPDX_Afmparse)) {
15760  INTERESTING("Afmparse");
15761  }
15762  if (INFILE(_SPDX_Aladdin)) {
15763  INTERESTING("Aladdin");
15764  }
15765  if (INFILE(_SPDX_ADSL)) {
15766  INTERESTING("ADSL");
15767  }
15768  if (INFILE(_SPDX_AMDPLPA)) {
15769  INTERESTING("AMDPLPA");
15770  }
15771  if (INFILE(_SPDX_ANTLR_PD)) {
15772  INTERESTING("ANTLR-PD");
15773  }
15774  if (INFILE(_SPDX_AML)) {
15775  INTERESTING("AML");
15776  }
15777  if (INFILE(_SPDX_APSL_10)) {
15778  INTERESTING("APSL-1.0");
15779  }
15780  if (INFILE(_SPDX_APSL_11)) {
15781  INTERESTING("APSL-1.1");
15782  }
15783  if (INFILE(_SPDX_APSL_12)) {
15784  INTERESTING("APSL-1.2");
15785  }
15786  if (INFILE(_SPDX_APSL_20)) {
15787  INTERESTING("APSL-2.0");
15788  }
15789  if (INFILE(_SPDX_Artistic_10_Perl)) {
15790  INTERESTING("Artistic-1.0-Perl");
15791  }
15792  else if (INFILE(_SPDX_Artistic_10_cl8)) {
15793  INTERESTING("Artistic-1.0-cl8");
15794  }
15795  else if (INFILE(_SPDX_Artistic_10)) {
15796  INTERESTING("Artistic-1.0");
15797  }
15798  if (INFILE(_SPDX_Artistic_20)) {
15799  INTERESTING("Artistic-2.0");
15800  }
15801  if (INFILE(_SPDX_AAL)) {
15802  INTERESTING("AAL");
15803  }
15804  if (INFILE(_SPDX_Bahyph)) {
15805  INTERESTING("Bahyph");
15806  }
15807  if (INFILE(_SPDX_Baekmuk)) {
15808  INTERESTING("Baekmuk");
15809  }
15810  if (INFILE(_SPDX_Barr)) {
15811  INTERESTING("Barr");
15812  }
15813  if (INFILE(_SPDX_Beerware)) {
15814  INTERESTING("Beerware");
15815  }
15816  if (INFILE(_SPDX_BitTorrent_10)) {
15817  INTERESTING("BitTorrent-1.0");
15818  }
15819  else if (INFILE(_SPDX_BitTorrent_11)) {
15820  INTERESTING("BitTorrent-1.1");
15821  }
15822  if (INFILE(_SPDX_blessing)) {
15823  INTERESTING("blessing");
15824  }
15825  if (INFILE(_SPDX_BlueOak_100)) {
15826  INTERESTING("BlueOak-1.0.0");
15827  }
15828  if (INFILE(_SPDX_BSL_10)) {
15829  INTERESTING("BSL-1.0");
15830  }
15831  if (INFILE(_SPDX_Borceux)) {
15832  INTERESTING("Borceux");
15833  }
15834  if (INFILE(_SPDX_0BSD)) {
15835  INTERESTING("0BSD");
15836  }
15837  if (INFILE(_SPDX_bzip2_105)) {
15838  INTERESTING("bzip2-1.0.5");
15839  }
15840  else if (INFILE(_SPDX_bzip2_106)) {
15841  INTERESTING("bzip2-1.0.6");
15842  }
15843  if (INFILE(_SPDX_Caldera)) {
15844  INTERESTING("Caldera");
15845  }
15846  if (INFILE(_SPDX_CC_PDDC)) {
15847  INTERESTING("CC-PDDC");
15848  }
15849  if (INFILE(_SPDX_CERN_OHL_P_20)) {
15850  INTERESTING("CERN-OHL-P-2.0");
15851  }
15852  else if (INFILE(_SPDX_CERN_OHL_S_20)) {
15853  INTERESTING("CERN-OHL-S-2.0");
15854  }
15855  else if (INFILE(_SPDX_CERN_OHL_W_20)) {
15856  INTERESTING("CERN-OHL-W-2.0");
15857  }
15858  else if (INFILE(_SPDX_CERN_OHL_12)) {
15859  INTERESTING("CERN-OHL-1.2");
15860  }
15861  else if (INFILE(_SPDX_CERN_OHL_11)) {
15862  INTERESTING("CERN-OHL-1.1");
15863  }
15864  if (INFILE(_SPDX_ClArtistic)) {
15865  INTERESTING("ClArtistic");
15866  }
15867  if (INFILE(_SPDX_CNRI_Jython)) {
15868  INTERESTING("CNRI-Jython");
15869  }
15870  if (INFILE(_SPDX_CPOL_102)) {
15871  INTERESTING("CPOL-1.02");
15872  }
15873  if (INFILE(_SPDX_CPAL_10)) {
15874  INTERESTING("CPAL-1.0");
15875  }
15876  if (INFILE(_SPDX_CPL_10)) {
15877  INTERESTING("CPL-1.0");
15878  }
15879  if (INFILE(_SPDX_CAL_10_Combined_Work_Exception)) {
15880  INTERESTING("CAL-1.0-Combined-Work-Exception");
15881  }
15882  else if (INFILE(_SPDX_CAL_10)) {
15883  INTERESTING("CAL-1.0");
15884  }
15885  if (INFILE(_SPDX_CATOSL_11)) {
15886  INTERESTING("CATOSL-1.1");
15887  }
15888  if (INFILE(_SPDX_Condor_11)) {
15889  INTERESTING("Condor-1.1");
15890  }
15891  if (INFILE(_SPDX_CC_BY_10)) {
15892  INTERESTING("CC-BY-1.0");
15893  }
15894  else if (INFILE(_SPDX_CC_BY_20)) {
15895  INTERESTING("CC-BY-2.0");
15896  }
15897  else if (INFILE(_SPDX_CC_BY_25)) {
15898  INTERESTING("CC-BY-2.5");
15899  }
15900  else if (INFILE(_SPDX_CC_BY_30_AT)) {
15901  INTERESTING("CC-BY-3.0-AT");
15902  }
15903  else if (INFILE(_SPDX_CC_BY_30)) {
15904  INTERESTING("CC-BY-3.0");
15905  }
15906  else if (INFILE(_SPDX_CC_BY_40)) {
15907  INTERESTING("CC-BY-4.0");
15908  }
15909  if (INFILE(_SPDX_CC_BY_ND_10)) {
15910  INTERESTING("CC-BY-ND-1.0");
15911  }
15912  else if (INFILE(_SPDX_CC_BY_ND_20)) {
15913  INTERESTING("CC-BY-ND-2.0");
15914  }
15915  else if (INFILE(_SPDX_CC_BY_ND_25)) {
15916  INTERESTING("CC-BY-ND-2.5");
15917  }
15918  else if (INFILE(_SPDX_CC_BY_ND_30)) {
15919  INTERESTING("CC-BY-ND-3.0");
15920  }
15921  else if (INFILE(_SPDX_CC_BY_ND_40)) {
15922  INTERESTING("CC-BY-ND-4.0");
15923  }
15924  if (INFILE(_SPDX_CC_BY_NC_10)) {
15925  INTERESTING("CC-BY-NC-1.0");
15926  }
15927  else if (INFILE(_SPDX_CC_BY_NC_20)) {
15928  INTERESTING("CC-BY-NC-2.0");
15929  }
15930  else if (INFILE(_SPDX_CC_BY_NC_25)) {
15931  INTERESTING("CC-BY-NC-2.5");
15932  }
15933  else if (INFILE(_SPDX_CC_BY_NC_30)) {
15934  INTERESTING("CC-BY-NC-3.0");
15935  }
15936  else if (INFILE(_SPDX_CC_BY_NC_40)) {
15937  INTERESTING("CC-BY-NC-4.0");
15938  }
15939  if (INFILE(_SPDX_CC_BY_NC_ND_10)) {
15940  INTERESTING("CC-BY-NC-ND-1.0");
15941  }
15942  else if (INFILE(_SPDX_CC_BY_NC_ND_20)) {
15943  INTERESTING("CC-BY-NC-ND-2.0");
15944  }
15945  else if (INFILE(_SPDX_CC_BY_NC_ND_25)) {
15946  INTERESTING("CC-BY-NC-ND-2.5");
15947  }
15948  else if (INFILE(_SPDX_CC_BY_NC_ND_30_IGO)) {
15949  INTERESTING("CC-BY-NC-ND-3.0-IGO");
15950  }
15951  else if (INFILE(_SPDX_CC_BY_NC_ND_30)) {
15952  INTERESTING("CC-BY-NC-ND-3.0");
15953  }
15954  else if (INFILE(_SPDX_CC_BY_NC_ND_40)) {
15955  INTERESTING("CC-BY-NC-ND-4.0");
15956  }
15957  if (INFILE(_SPDX_CC_BY_NC_SA_10)) {
15958  INTERESTING("CC-BY-NC-SA-1.0");
15959  }
15960  else if (INFILE(_SPDX_CC_BY_NC_SA_20)) {
15961  INTERESTING("CC-BY-NC-SA-2.0");
15962  }
15963  else if (INFILE(_SPDX_CC_BY_NC_SA_25)) {
15964  INTERESTING("CC-BY-NC-SA-2.5");
15965  }
15966  else if (INFILE(_SPDX_CC_BY_NC_SA_30)) {
15967  INTERESTING("CC-BY-NC-SA-3.0");
15968  }
15969  else if (INFILE(_SPDX_CC_BY_NC_SA_40)) {
15970  INTERESTING("CC-BY-NC-SA-4.0");
15971  }
15972  if (INFILE(_SPDX_CC_BY_SA_10)) {
15973  INTERESTING("CC-BY-SA-1.0");
15974  }
15975  else if (INFILE(_SPDX_CC_BY_SA_20)) {
15976  INTERESTING("CC-BY-SA-2.0");
15977  }
15978  else if (INFILE(_SPDX_CC_BY_SA_25)) {
15979  INTERESTING("CC-BY-SA-2.5");
15980  }
15981  else if (INFILE(_SPDX_CC_BY_SA_30_AT)) {
15982  INTERESTING("CC-BY-SA-3.0-AT");
15983  }
15984  else if (INFILE(_SPDX_CC_BY_SA_30)) {
15985  INTERESTING("CC-BY-SA-3.0");
15986  }
15987  else if (INFILE(_SPDX_CC_BY_SA_40)) {
15988  INTERESTING("CC-BY-SA-4.0");
15989  }
15990  if (INFILE(_SPDX_CDLA_Permissive_10)) {
15991  INTERESTING("CDLA-Permissive-1.0");
15992  }
15993  if (INFILE(_SPDX_CDLA_Sharing_10)) {
15994  INTERESTING("CDLA-Sharing-1.0");
15995  }
15996  if (INFILE(_SPDX_Crossword)) {
15997  INTERESTING("Crossword");
15998  }
15999  if (INFILE(_SPDX_CrystalStacker)) {
16000  INTERESTING("CrystalStacker");
16001  }
16002  if (INFILE(_SPDX_CUA_OPL_10)) {
16003  INTERESTING("CUA-OPL-1.0");
16004  }
16005  if (INFILE(_SPDX_Cube)) {
16006  INTERESTING("Cube");
16007  }
16008  if (INFILE(_SPDX_curl)) {
16009  INTERESTING("curl");
16010  }
16011  if (INFILE(_SPDX_D_FSL_10)) {
16012  INTERESTING("D-FSL-1.0");
16013  }
16014  if (INFILE(_SPDX_diffmark)) {
16015  INTERESTING("diffmark");
16016  }
16017  if (INFILE(_SPDX_WTFPL)) {
16018  INTERESTING("WTFPL");
16019  }
16020  if (HASTEXT(_SPDX_DOC, REG_EXTENDED) || HASTEXT(_PHR_DOC, REG_EXTENDED)) {
16021  INTERESTING("DOC");
16022  }
16023  if (INFILE(_SPDX_Dotseqn)) {
16024  INTERESTING("Dotseqn");
16025  }
16026  if (INFILE(_SPDX_DSDP)) {
16027  INTERESTING("DSDP");
16028  }
16029  if (INFILE(_SPDX_dvipdfm)) {
16030  INTERESTING("dvipdfm");
16031  }
16032  if (INFILE(_SPDX_EPL_10)) {
16033  INTERESTING("EPL-1.0");
16034  }
16035  else if (INFILE(_SPDX_EPL_20)) {
16036  INTERESTING("EPL-2.0");
16037  }
16038  if (INFILE(_SPDX_ECL_10)) {
16039  INTERESTING("ECL-1.0");
16040  }
16041  if (INFILE(_SPDX_ECL_20)) {
16042  INTERESTING("ECL-2.0");
16043  }
16044  if (INFILE(_SPDX_eGenix)) {
16045  INTERESTING("eGenix");
16046  }
16047  if (INFILE(_SPDX_EFL_10)) {
16048  INTERESTING("EFL-1.0");
16049  }
16050  if (INFILE(_SPDX_EFL_20)) {
16051  INTERESTING("EFL-2.0");
16052  }
16053  if (INFILE(_SPDX_Entessa)) {
16054  INTERESTING("Entessa");
16055  }
16056  if (INFILE(_SPDX_EPICS)) {
16057  INTERESTING("EPICS");
16058  }
16059  if (INFILE(_SPDX_ErlPL_11)) {
16060  INTERESTING("ErlPL-1.1");
16061  }
16062  if (INFILE(_SPDX_etalab_20)) {
16063  INTERESTING("etalab-2.0");
16064  }
16065  if (INFILE(_SPDX_EUDatagrid)) {
16066  INTERESTING("EUDatagrid");
16067  }
16068  if (INFILE(_SPDX_EUPL_10)) {
16069  INTERESTING("EUPL-1.0");
16070  }
16071  else if (INFILE(_SPDX_EUPL_11)) {
16072  INTERESTING("EUPL-1.1");
16073  }
16074  else if (INFILE(_SPDX_EUPL_12)) {
16075  INTERESTING("EUPL-1.2");
16076  }
16077  if (INFILE(_SPDX_Eurosym)) {
16078  INTERESTING("Eurosym");
16079  }
16080  if (HASTEXT(_SPDX_Fair, REG_EXTENDED) || HASTEXT(_PHR_Fair, REG_EXTENDED)) {
16081  INTERESTING("Fair");
16082  }
16083  if (INFILE(_SPDX_Frameworx_10)) {
16084  INTERESTING("Frameworx-1.0");
16085  }
16086  if (INFILE(_SPDX_FreeImage)) {
16087  INTERESTING("FreeImage");
16088  }
16089  if (INFILE(_SPDX_FSFAP)) {
16090  INTERESTING("FSFAP");
16091  }
16092  if (INFILE(_SPDX_FSFULLR)) {
16093  INTERESTING("FSFULLR");
16094  }
16095  else if (INFILE(_SPDX_FSFUL)) {
16096  INTERESTING("FSFUL");
16097  }
16098  if (INFILE(_SPDX_Giftware)) {
16099  INTERESTING("Giftware");
16100  }
16101  if (INFILE(_SPDX_GL2PS)) {
16102  INTERESTING("GL2PS");
16103  }
16104  if (INFILE(_SPDX_Glulxe)) {
16105  INTERESTING("Glulxe");
16106  }
16107  if (INFILE(_SPDX_GFDL_11_invariants_or_later)) {
16108  INTERESTING("GFDL-1.1-invariants-or-later");
16109  }
16110  else if (INFILE(_SPDX_GFDL_11_no_invariants_or_later)) {
16111  INTERESTING("GFDL-1.1-no-invariants-or-later");
16112  }
16113  else if (INFILE(_SPDX_GFDL_11_invariants_only)) {
16114  INTERESTING("GFDL-1.1-invariants-only");
16115  }
16116  else if (INFILE(_SPDX_GFDL_11_no_invariants_only)) {
16117  INTERESTING("GFDL-1.1-no-invariants-only");
16118  }
16119  else if (INFILE(_SPDX_GFDL_11_or_later)
16120  || HASTEXT(_SPDX_GFDL_11plus, REG_EXTENDED)
16121  || HASTEXT(_PHR_GFDL_11plus, REG_EXTENDED))
16122  {
16123  INTERESTING("GFDL-1.1-or-later");
16124  }
16125  else if (INFILE(_SPDX_GFDL_11)) {
16126  INTERESTING("GFDL-1.1-only");
16127  }
16128  else if (INFILE(_SPDX_GFDL_12_invariants_or_later)) {
16129  INTERESTING("GFDL-1.2-invariants-or-later");
16130  }
16131  else if (INFILE(_SPDX_GFDL_12_no_invariants_or_later)) {
16132  INTERESTING("GFDL-1.2-no-invariants-or-later");
16133  }
16134  else if (INFILE(_SPDX_GFDL_12_invariants_only)) {
16135  INTERESTING("GFDL-1.2-invariants-only");
16136  }
16137  else if (INFILE(_SPDX_GFDL_12_no_invariants_only)) {
16138  INTERESTING("GFDL-1.2-no-invariants-only");
16139  }
16140  else if (INFILE(_SPDX_GFDL_12_or_later)
16141  || HASTEXT(_SPDX_GFDL_12plus, REG_EXTENDED)
16142  || HASTEXT(_PHR_GFDL_12plus, REG_EXTENDED))
16143  {
16144  INTERESTING("GFDL-1.2-or-later");
16145  }
16146  else if (INFILE(_SPDX_GFDL_12)) {
16147  INTERESTING("GFDL-1.2-only");
16148  }
16149  else if (INFILE(_SPDX_GFDL_13_invariants_or_later)) {
16150  INTERESTING("GFDL-1.3-invariants-or-later");
16151  }
16152  else if (INFILE(_SPDX_GFDL_13_no_invariants_or_later)) {
16153  INTERESTING("GFDL-1.3-no-invariants-or-later");
16154  }
16155  else if (INFILE(_SPDX_GFDL_13_invariants_only)) {
16156  INTERESTING("GFDL-1.3-invariants-only");
16157  }
16158  else if (INFILE(_SPDX_GFDL_13_no_invariants_only)) {
16159  INTERESTING("GFDL-1.3-no-invariants-only");
16160  }
16161  else if (INFILE(_SPDX_GFDL_13_or_later)
16162  || HASTEXT(_SPDX_GFDL_13plus, REG_EXTENDED)
16163  || HASTEXT(_PHR_GFDL_13plus, REG_EXTENDED))
16164  {
16165  INTERESTING("GFDL-1.3-or-later");
16166  }
16167  else if (INFILE(_SPDX_GFDL_13)) {
16168  INTERESTING("GFDL-1.3-only");
16169  }
16170  if (INFILE(_SPDX_GLWTPL) || INFILE(_SPDX_GLWTPL_text)) {
16171  INTERESTING("GLWTPL");
16172  }
16173  if (INFILE(_SPDX_gnuplot)) {
16174  INTERESTING("gnuplot");
16175  }
16176  if (INFILE(_SPDX_gSOAP_13b)) {
16177  INTERESTING("gSOAP-1.3b");
16178  }
16179  if (INFILE(_SPDX_Gutmann)) {
16180  INTERESTING("Gutmann");
16181  }
16182  if (INFILE(_SPDX_HaskellReport)) {
16183  INTERESTING("HaskellReport");
16184  }
16185  if (INFILE(_SPDX_Hippocratic_21)) {
16186  INTERESTING("Hippocratic-2.1");
16187  }
16188  if (INFILE(_SPDX_HPND_sell_variant)) {
16189  INTERESTING("HPND-sell-variant");
16190  }
16191  else if (INFILE(_SPDX_HPND)) {
16192  INTERESTING("HPND");
16193  }
16194  if (INFILE(_SPDX_IBM_pibs)) {
16195  INTERESTING("IBM-pibs");
16196  }
16197  if (INFILE(_SPDX_IPL_10)) {
16198  INTERESTING("IPL-1.0");
16199  }
16200  if (INFILE(_SPDX_ImageMagick)) {
16201  INTERESTING("ImageMagick");
16202  }
16203  if (INFILE(_SPDX_iMatix)) {
16204  INTERESTING("iMatix");
16205  }
16206  if (INFILE(_SPDX_Imlib2)) {
16207  INTERESTING("Imlib2");
16208  }
16209  if (INFILE(_SPDX_IJG)) {
16210  INTERESTING("IJG");
16211  }
16212  if (INFILE(_SPDX_Info_ZIP)) {
16213  INTERESTING("Info-ZIP");
16214  }
16215  if (INFILE(_SPDX_Interbase_10)) {
16216  INTERESTING("Interbase-1.0");
16217  }
16218  if (INFILE(_SPDX_IPA)) {
16219  INTERESTING("IPA");
16220  }
16221  if (INFILE(_SPDX_ISC)) {
16222  INTERESTING("ISC");
16223  }
16224  if (INFILE(_SPDX_JasPer_20)) {
16225  INTERESTING("JasPer-2.0");
16226  }
16227  if (INFILE(_SPDX_JPNIC)) {
16228  INTERESTING("JPNIC");
16229  }
16230  if (INFILE(_SPDX_JSON)) {
16231  INTERESTING("JSON");
16232  }
16233  if (INFILE(_SPDX_Latex2e)) {
16234  INTERESTING("Latex2e");
16235  }
16236  if (INFILE(_SPDX_Leptonica)) {
16237  INTERESTING("Leptonica");
16238  }
16239  if (INFILE(_SPDX_LGPLLR)) {
16240  INTERESTING("LGPLLR");
16241  }
16242  if (INFILE(_SPDX_libpng_20)) {
16243  INTERESTING("libpng-2.0");
16244  }
16245  else if (INFILE(_SPDX_Libpng)) {
16246  INTERESTING("Libpng");
16247  }
16248  if (INFILE(_SPDX_libselinux_10)) {
16249  INTERESTING("libselinux-1.0");
16250  }
16251  if (INFILE(_SPDX_libtiff)) {
16252  INTERESTING("libtiff");
16253  }
16254  if (INFILE(_SPDX_LAL_12)) {
16255  INTERESTING("LAL-1.2");
16256  }
16257  if (INFILE(_SPDX_LAL_13) || INFILE(_SPDX_LAL_13_text)) {
16258  INTERESTING("LAL-1.3");
16259  }
16260  if (INFILE(_SPDX_LiLiQ_P_11)) {
16261  INTERESTING("LiLiQ-P-1.1");
16262  }
16263  if (INFILE(_SPDX_LiLiQ_Rplus_11)) {
16264  INTERESTING("LiLiQ-Rplus-1.1");
16265  }
16266  if (INFILE(_SPDX_LiLiQ_R_11)) {
16267  INTERESTING("LiLiQ-R-1.1");
16268  }
16269  if (INFILE(_SPDX_Linux_OpenIB)) {
16270  INTERESTING("Linux-OpenIB");
16271  }
16272  if (INFILE(_SPDX_LPL_102)) {
16273  INTERESTING("LPL-1.02");
16274  }
16275  else if (INFILE(_SPDX_LPL_10)) {
16276  INTERESTING("LPL-1.0");
16277  }
16278  if (INFILE(_SPDX_LPPL_10)) {
16279  INTERESTING("LPPL-1.0");
16280  }
16281  if (INFILE(_SPDX_LPPL_11)) {
16282  INTERESTING("LPPL-1.1");
16283  }
16284  if (INFILE(_SPDX_LPPL_12)) {
16285  INTERESTING("LPPL-1.2");
16286  }
16287  if (INFILE(_SPDX_LPPL_13a)) {
16288  INTERESTING("LPPL-1.3a");
16289  }
16290  if (INFILE(_SPDX_LPPL_13c)) {
16291  INTERESTING("LPPL-1.3c");
16292  }
16293  if (INFILE(_SPDX_MakeIndex)) {
16294  INTERESTING("MakeIndex");
16295  }
16296  if (INFILE(_SPDX_MTLL)) {
16297  INTERESTING("MTLL");
16298  }
16299  if (INFILE(_SPDX_MS_PL)) {
16300  INTERESTING("MS-PL");
16301  }
16302  if (INFILE(_SPDX_MS_RL)) {
16303  INTERESTING("MS-RL");
16304  }
16305  if (INFILE(_SPDX_MirOS)) {
16306  INTERESTING("MirOS");
16307  }
16308  if (INFILE(_SPDX_MITNFA)) {
16309  INTERESTING("MITNFA");
16310  }
16311  if (!lmem[_fREAL] && INFILE(_SPDX_Motosoto)) {
16312  INTERESTING("Motosoto");
16313  }
16314  if (INFILE(_SPDX_mpich2)) {
16315  INTERESTING("mpich2");
16316  }
16317  if (INFILE(_SPDX_MulanPSL_20)) {
16318  INTERESTING("MulanPSL-2.0");
16319  }
16320  else if (INFILE(_SPDX_MulanPSL_10)) {
16321  INTERESTING("MulanPSL-1.0");
16322  }
16323  if (INFILE(_SPDX_Multics)) {
16324  INTERESTING("Multics");
16325  }
16326  if (INFILE(_SPDX_Mup)) {
16327  INTERESTING("Mup");
16328  }
16329  if (INFILE(_SPDX_NASA_13)) {
16330  INTERESTING("NASA-1.3");
16331  }
16332  if (INFILE(_SPDX_Naumen)) {
16333  INTERESTING("Naumen");
16334  }
16335  if (INFILE(_SPDX_NBPL_10)) {
16336  INTERESTING("NBPL-1.0");
16337  }
16338  if (INFILE(_SPDX_NCGL_UK_20)) {
16339  INTERESTING("NCGL-UK-2.0");
16340  }
16341  if (INFILE(_SPDX_Net_SNMP)) {
16342  INTERESTING("Net-SNMP");
16343  }
16344  if (INFILE(_SPDX_NetCDF)) {
16345  INTERESTING("NetCDF");
16346  }
16347  if (INFILE(_SPDX_NGPL)) {
16348  INTERESTING("NGPL");
16349  }
16350  if (INFILE(_SPDX_NIST_PD_fallback)) {
16351  INTERESTING("NIST-PD-fallback");
16352  }
16353  else if (INFILE(_SPDX_NIST_PD)) {
16354  INTERESTING("NIST-PD");
16355  }
16356  if (INFILE(_SPDX_NOSL)) {
16357  INTERESTING("NOSL");
16358  }
16359  if (INFILE(_SPDX_NPL_10)) {
16360  INTERESTING("NPL-1.0");
16361  }
16362  if (INFILE(_SPDX_NPL_11)) {
16363  INTERESTING("NPL-1.1");
16364  }
16365  if (INFILE(_SPDX_Newsletr)) {
16366  INTERESTING("Newsletr");
16367  }
16368  if (INFILE(_SPDX_NLPL)) {
16369  INTERESTING("NLPL");
16370  }
16371  if (INFILE(_SPDX_Nokia) && NOT_INFILE(_LT_OPENSSL_NOKIA)) {
16372  INTERESTING("Nokia");
16373  }
16374  if (INFILE(_SPDX_NPOSL_30)) {
16375  INTERESTING("NPOSL-3.0");
16376  }
16377  if (INFILE(_SPDX_NLOD_10) || INFILE(_SPDX_NLOD_10_text)) {
16378  INTERESTING("NLOD-1.0");
16379  }
16380  if (INFILE(_SPDX_Noweb)) {
16381  INTERESTING("Noweb");
16382  }
16383  if (INFILE(_SPDX_NRL)) {
16384  INTERESTING("NRL");
16385  }
16386  if (INFILE(_SPDX_NTP_0)) {
16387  INTERESTING("NTP-0");
16388  }
16389  else if (INFILE(_SPDX_NTP)) {
16390  INTERESTING("NTP");
16391  }
16392  if (INFILE(_SPDX_Nunit)) {
16393  INTERESTING("Nunit");
16394  }
16395  if (INFILE(_SPDX_O_UDA_10)) {
16396  INTERESTING("O-UDA-1.0");
16397  }
16398  if (INFILE(_SPDX_OCLC_20)) {
16399  INTERESTING("OCLC-2.0");
16400  }
16401  if (INFILE(_SPDX_ODbL_10)) {
16402  INTERESTING("ODbL-1.0");
16403  }
16404  if (INFILE(_SPDX_OGC_10)) {
16405  INTERESTING("OGC-1.0");
16406  }
16407  if (INFILE(_SPDX_PDDL_10)) {
16408  INTERESTING("PDDL-1.0");
16409  }
16410  if (INFILE(_SPDX_OCCT_PL)) {
16411  INTERESTING("OCCT-PL");
16412  }
16413  if (INFILE(_SPDX_ODC_By_10)) {
16414  INTERESTING("ODC-By-1.0");
16415  }
16416  if (INFILE(_SPDX_OGL_Canada_20) || INFILE(_SPDX_OGL_Canada_20_text)) {
16417  INTERESTING("OGL-Canada-2.0");
16418  }
16419  if (INFILE(_SPDX_OGL_UK_10)) {
16420  INTERESTING("OGL-UK-1.0");
16421  }
16422  else if (INFILE(_SPDX_OGL_UK_20)) {
16423  INTERESTING("OGL-UK-2.0");
16424  }
16425  else if (INFILE(_SPDX_OGL_UK_30)) {
16426  INTERESTING("OGL-UK-3.0");
16427  }
16428  if (INFILE(_SPDX_OGTSL)) {
16429  INTERESTING("OGTSL");
16430  }
16431  if (INFILE(_SPDX_OLDAP_11)) {
16432  INTERESTING("OLDAP-1.1");
16433  }
16434  else if (INFILE(_SPDX_OLDAP_12)) {
16435  INTERESTING("OLDAP-1.2");
16436  }
16437  else if (INFILE(_SPDX_OLDAP_13)) {
16438  INTERESTING("OLDAP-1.3");
16439  }
16440  else if (INFILE(_SPDX_OLDAP_14)) {
16441  INTERESTING("OLDAP-1.4");
16442  }
16443  else if (INFILE(_SPDX_OLDAP_201)) {
16444  INTERESTING("OLDAP-2.0.1");
16445  }
16446  else if (INFILE(_SPDX_OLDAP_20)) {
16447  INTERESTING("OLDAP-2.0");
16448  }
16449  else if (INFILE(_SPDX_OLDAP_21)) {
16450  INTERESTING("OLDAP-2.1");
16451  }
16452  else if (INFILE(_SPDX_OLDAP_221)) {
16453  INTERESTING("OLDAP-2.2.1");
16454  }
16455  else if (INFILE(_SPDX_OLDAP_222)) {
16456  INTERESTING("OLDAP-2.2.2");
16457  }
16458  else if (INFILE(_SPDX_OLDAP_22)) {
16459  INTERESTING("OLDAP-2.2");
16460  }
16461  else if (INFILE(_SPDX_OLDAP_23)) {
16462  INTERESTING("OLDAP-2.3");
16463  }
16464  else if (INFILE(_SPDX_OLDAP_24)) {
16465  INTERESTING("OLDAP-2.4");
16466  }
16467  else if (INFILE(_SPDX_OLDAP_25)) {
16468  INTERESTING("OLDAP-2.5");
16469  }
16470  else if (INFILE(_SPDX_OLDAP_26)) {
16471  INTERESTING("OLDAP-2.6");
16472  }
16473  else if (INFILE(_SPDX_OLDAP_27)) {
16474  INTERESTING("OLDAP-2.7");
16475  }
16476  else if (INFILE(_SPDX_OLDAP_28)) {
16477  INTERESTING("OLDAP-2.8");
16478  }
16479  if (INFILE(_SPDX_OML)) {
16480  INTERESTING("OML");
16481  }
16482  if (INFILE(_SPDX_OPL_10)) {
16483  INTERESTING("OPL-1.0");
16484  }
16485  if (INFILE(_SPDX_OSL_10)) {
16486  INTERESTING("OSL-1.0");
16487  }
16488  if (INFILE(_SPDX_OSL_11)) {
16489  INTERESTING("OSL-1.1");
16490  }
16491  if (INFILE(_SPDX_OSL_20)) {
16492  INTERESTING("OSL-2.0");
16493  }
16494  if (INFILE(_SPDX_OSL_21)) {
16495  INTERESTING("OSL-2.1");
16496  }
16497  if (INFILE(_SPDX_OSL_30)) {
16498  INTERESTING("OSL-3.0");
16499  }
16500  if (INFILE(_SPDX_OSET_PL_21)) {
16501  INTERESTING("OSET-PL-2.1");
16502  }
16503  if (INFILE(_SPDX_Parity_700)) {
16504  INTERESTING("Parity-7.0.0");
16505  }
16506  else if (INFILE(_SPDX_Parity_600) || INFILE(_SPDX_Parity_600_text)) {
16507  INTERESTING("Parity-6.0.0");
16508  }
16509  if (INFILE(_SPDX_PHP_301)) {
16510  INTERESTING("PHP-3.01");
16511  }
16512  else if (INFILE(_SPDX_PHP_30)) {
16513  INTERESTING("PHP-3.0");
16514  }
16515  if (INFILE(_SPDX_Plexus)) {
16516  INTERESTING("Plexus");
16517  }
16518  if (INFILE(_SPDX_PolyForm_Noncommercial_100)) {
16519  INTERESTING("PolyForm-Noncommercial-1.0.0");
16520  }
16521  else if (INFILE(_SPDX_PolyForm_Small_Business_100)) {
16522  INTERESTING("PolyForm-Small-Business-1.0.0");
16523  }
16524  if (INFILE(_SPDX_PostgreSQL)) {
16525  INTERESTING("PostgreSQL");
16526  }
16527  if (INFILE(_SPDX_PSF_20)) {
16528  INTERESTING("PSF-2.0");
16529  }
16530  if (INFILE(_SPDX_psfrag)) {
16531  INTERESTING("psfrag");
16532  }
16533  if (INFILE(_SPDX_psutils)) {
16534  INTERESTING("psutils");
16535  }
16536  if (INFILE(_SPDX_Python_20)) {
16537  INTERESTING("Python-2.0");
16538  }
16539  if (INFILE(_SPDX_QPL_10)) {
16540  INTERESTING("QPL-1.0");
16541  }
16542  if (INFILE(_SPDX_Qhull)) {
16543  INTERESTING("Qhull");
16544  }
16545  if (INFILE(_SPDX_Rdisc)) {
16546  INTERESTING("Rdisc");
16547  }
16548  if (INFILE(_SPDX_RPSL_10)) {
16549  INTERESTING("RPSL-1.0");
16550  }
16551  if (INFILE(_SPDX_RPL_11)) {
16552  INTERESTING("RPL-1.1");
16553  }
16554  if (INFILE(_SPDX_RPL_15)) {
16555  INTERESTING("RPL-1.5");
16556  }
16557  if (INFILE(_SPDX_RHeCos_11)) {
16558  INTERESTING("RHeCos-1.1");
16559  }
16560  if (INFILE(_SPDX_RSCPL)) {
16561  INTERESTING("RSCPL");
16562  }
16563  if (INFILE(_SPDX_RSA_MD)) {
16564  INTERESTING("RSA-MD");
16565  }
16566  if (INFILE(_SPDX_Ruby)) {
16567  INTERESTING("Ruby");
16568  }
16569  if (INFILE(_SPDX_SAX_PD)) {
16570  INTERESTING("SAX-PD");
16571  }
16572  if (INFILE(_SPDX_Saxpath)) {
16573  INTERESTING("Saxpath");
16574  }
16575  if (INFILE(_SPDX_SHL_051)) {
16576  INTERESTING("SHL-0.51");
16577  }
16578  else if (INFILE(_SPDX_SHL_05)) {
16579  INTERESTING("SHL-0.5");
16580  }
16581  if (INFILE(_SPDX_SCEA)) {
16582  INTERESTING("SCEA");
16583  }
16584  if (INFILE(_SPDX_SWL)) {
16585  INTERESTING("SWL");
16586  }
16587  if (INFILE(_SPDX_SMPPL)) {
16588  INTERESTING("SMPPL");
16589  }
16590  if (INFILE(_SPDX_Sendmail_823)) {
16591  INTERESTING("Sendmail-8.23");
16592  }
16593  else if (INFILE(_SPDX_Sendmail)) {
16594  INTERESTING("Sendmail");
16595  }
16596  if (INFILE(_SPDX_SGI_B_10)) {
16597  INTERESTING("SGI-B-1.0");
16598  }
16599  if (INFILE(_SPDX_SGI_B_11)) {
16600  INTERESTING("SGI-B-1.1");
16601  }
16602  if (INFILE(_SPDX_SGI_B_20)) {
16603  INTERESTING("SGI-B-2.0");
16604  }
16605  if (INFILE(_SPDX_SimPL_20)) {
16606  INTERESTING("SimPL-2.0");
16607  }
16608  if (INFILE(_SPDX_Sleepycat)) {
16609  INTERESTING("Sleepycat");
16610  }
16611  if (INFILE(_SPDX_SNIA)) {
16612  INTERESTING("SNIA");
16613  }
16614  if (INFILE(_SPDX_Spencer_86)) {
16615  INTERESTING("Spencer-86");
16616  }
16617  if (INFILE(_SPDX_Spencer_94)) {
16618  INTERESTING("Spencer-94");
16619  }
16620  if (INFILE(_SPDX_Spencer_99)) {
16621  INTERESTING("Spencer-99");
16622  }
16623  if (INFILE(_SPDX_SMLNJ)) {
16624  INTERESTING("SMLNJ");
16625  }
16626  if (INFILE(_SPDX_SSH_OpenSSH)) {
16627  INTERESTING("SSH-OpenSSH");
16628  }
16629  if (INFILE(_SPDX_SSH_short)) {
16630  INTERESTING("SSH-short");
16631  }
16632  if (INFILE(_SPDX_SSPL_10)) {
16633  INTERESTING("SSPL-1.0");
16634  }
16635  if (INFILE(_SPDX_SugarCRM_113)) {
16636  INTERESTING("SugarCRM-1.1.3");
16637  }
16638  if (INFILE(_SPDX_SISSL_12)) {
16639  INTERESTING("SISSL-1.2");
16640  }
16641  else if (!lmem[_fREAL] && INFILE(_SPDX_SISSL)) {
16642  INTERESTING("SISSL");
16643  }
16644  if (INFILE(_SPDX_SPL_10)) {
16645  INTERESTING("SPL-1.0");
16646  }
16647  if (INFILE(_SPDX_Watcom_10)) {
16648  INTERESTING("Watcom-1.0");
16649  }
16650  if (INFILE(_SPDX_TAPR_OHL_10)) {
16651  INTERESTING("TAPR-OHL-1.0");
16652  }
16653  if (INFILE(_SPDX_TCP_wrappers)) {
16654  INTERESTING("TCP-wrappers");
16655  }
16656  if (INFILE(_SPDX_Unlicense)) {
16657  INTERESTING("Unlicense");
16658  }
16659  if (INFILE(_SPDX_TMate)) {
16660  INTERESTING("TMate");
16661  }
16662  if (INFILE(_SPDX_TORQUE_11)) {
16663  INTERESTING("TORQUE-1.1");
16664  }
16665  if (INFILE(_SPDX_TOSL)) {
16666  INTERESTING("TOSL");
16667  }
16668  if (INFILE(_SPDX_TU_Berlin_10)) {
16669  INTERESTING("TU-Berlin-1.0");
16670  }
16671  else if (INFILE(_SPDX_TU_Berlin_20)) {
16672  INTERESTING("TU-Berlin-2.0");
16673  }
16674  if (INFILE(_SPDX_UCL_10)) {
16675  INTERESTING("UCL-1.0");
16676  }
16677  if (INFILE(_SPDX_Unicode_DFS_2015)) {
16678  INTERESTING("Unicode-DFS-2015");
16679  }
16680  if (INFILE(_SPDX_Unicode_DFS_2016)) {
16681  INTERESTING("Unicode-DFS-2016");
16682  }
16683  if (INFILE(_SPDX_Unicode_TOU)) {
16684  INTERESTING("Unicode-TOU");
16685  }
16686  if (INFILE(_SPDX_UPL_10)) {
16687  INTERESTING("UPL-1.0");
16688  }
16689  if (INFILE(_SPDX_NCSA)) {
16690  INTERESTING("NCSA");
16691  }
16692  if (INFILE(_SPDX_Vim)) {
16693  INTERESTING("Vim");
16694  }
16695  if (INFILE(_SPDX_VOSTROM)) {
16696  INTERESTING("VOSTROM");
16697  }
16698  if (INFILE(_SPDX_VSL_10)) {
16699  INTERESTING("VSL-1.0");
16700  }
16701  if (INFILE(_SPDX_W3C_20150513)) {
16702  INTERESTING("W3C-20150513");
16703  }
16704  else if (INFILE(_SPDX_W3C_19980720)) {
16705  INTERESTING("W3C-19980720");
16706  }
16707  else if (INFILE(_SPDX_W3C)) {
16708  INTERESTING("W3C");
16709  }
16710  if (INFILE(_SPDX_Wsuipa)) {
16711  INTERESTING("Wsuipa");
16712  }
16713  if (!lmem[_fREAL] && INFILE(_SPDX_Xnet)) {
16714  INTERESTING("Xnet");
16715  }
16716  if (INFILE(_SPDX_X11)) {
16717  INTERESTING("X11");
16718  }
16719  if (INFILE(_SPDX_Xerox)) {
16720  INTERESTING("Xerox");
16721  }
16722  if (INFILE(_SPDX_XFree86_11)) {
16723  INTERESTING("XFree86-1.1");
16724  }
16725  if (INFILE(_SPDX_xinetd)) {
16726  INTERESTING("xinetd");
16727  }
16728  if (INFILE(_SPDX_xpp)) {
16729  INTERESTING("xpp");
16730  }
16731  if (INFILE(_SPDX_XSkat)) {
16732  INTERESTING("XSkat");
16733  }
16734  if (INFILE(_SPDX_YPL_10)) {
16735  INTERESTING("YPL-1.0");
16736  }
16737  if (INFILE(_SPDX_YPL_11)) {
16738  INTERESTING("YPL-1.1");
16739  }
16740  if (INFILE(_SPDX_Zed)) {
16741  INTERESTING("Zed");
16742  }
16743  if (INFILE(_SPDX_Zend_20)) {
16744  INTERESTING("Zend-2.0");
16745  }
16746  if (INFILE(_SPDX_Zimbra_13)) {
16747  INTERESTING("Zimbra-1.3");
16748  }
16749  if (INFILE(_SPDX_Zimbra_14)) {
16750  INTERESTING("Zimbra-1.4");
16751  }
16752  if (INFILE(_SPDX_TTWL)) {
16753  INTERESTING("TTWL");
16754  }
16755  if (INFILE(_SPDX_COIL_10)) {
16756  INTERESTING("COIL-1.0");
16757  }
16758  if (INFILE(_SPDX_HIDAPI)) {
16759  INTERESTING("HIDAPI");
16760  }
16761  if (INFILE(_SPDX_ulem)) {
16762  INTERESTING("ulem");
16763  }
16764  if (INFILE(_SPDX_UnixCrypt)) {
16765  INTERESTING("UnixCrypt");
16766  }
16767  if (INFILE(_SPDX_fwlw)) {
16768  INTERESTING("fwlw");
16769  }
16770  if (INFILE(_SPDX_McPhee_slideshow)) {
16771  INTERESTING("McPhee-slideshow");
16772  }
16773  if (INFILE(_SPDX_MIPS)) {
16774  INTERESTING("MIPS");
16775  }
16776  if (INFILE(_SPDX_MPEG_SSG)) {
16777  INTERESTING("MPEG-SSG");
16778  }
16779  if (INFILE(_SPDX_NLOD_20)) {
16780  INTERESTING("NLOD-2.0");
16781  }
16782  if (INFILE(_SPDX_LPD_document)) {
16783  INTERESTING("LPD-document");
16784  }
16785  if (INFILE(_SPDX_SchemeReport)) {
16786  INTERESTING("SchemeReport");
16787  }
16788  if (INFILE(_SPDX_softSurfer)) {
16789  INTERESTING("softSurfer");
16790  }
16791  if (INFILE(_SPDX_swrule)) {
16792  INTERESTING("swrule");
16793  }
16794  if (INFILE(_SPDX_threeparttable)) {
16795  INTERESTING("threeparttable");
16796  }
16797  if (INFILE(_SPDX_Widget_Workshop)) {
16798  INTERESTING("Widget-Workshop");
16799  }
16800  if (INFILE(_SPDX_Zeeff)) {
16801  INTERESTING("Zeeff");
16802  }
16803  if (INFILE(_SPDX_DEC_3_Clause)) {
16804  INTERESTING("DEC-3-Clause");
16805  }
16806  if (INFILE(_SPDX_Kastrup)) {
16807  INTERESTING("Kastrup");
16808  }
16809  if (INFILE(_SPDX_DL_DE_BY_20)) {
16810  INTERESTING("DL-DE-BY-2.0");
16811  }
16812  if (INFILE(_SPDX_DL_DE_ZERO_20)) {
16813  INTERESTING("DL-DE-ZERO-2.0");
16814  }
16815  if (INFILE(_SPDX_Lucida_Bitmap_Fonts)) {
16816  INTERESTING("Lucida-Bitmap-Fonts");
16817  }
16818  if (INFILE(_SPDX_ISO_permission)) {
16819  INTERESTING("ISO-permission");
16820  }
16821  if (INFILE(_SPDX_NYSL_0_9982)) {
16822  INTERESTING("NYSL-0.9982");
16823  }
16824  if (INFILE(_SPDX_LicenseRef_musl_exception)) {
16825  INTERESTING("musl-exception");
16826  }
16827  return;
16828 }
16829 
16834 void copyleftExceptions(char *filetext, int size, int isML, int isPS)
16835 {
16836  if (INFILE(_SPDX_389_exception)) {
16837  INTERESTING("389-exception");
16838  }
16839  if (INFILE(_SPDX_Autoconf_exception_20)) {
16840  INTERESTING("Autoconf-exception-2.0");
16841  }
16842  if (INFILE(_SPDX_Autoconf_exception_30)) {
16843  INTERESTING("Autoconf-exception-3.0");
16844  }
16845  if (INFILE(_SPDX_Bison_exception_22)) {
16846  INTERESTING("Bison-exception-2.2");
16847  }
16848  if (INFILE(_SPDX_Bootloader_exception)) {
16849  INTERESTING("Bootloader-exception");
16850  }
16851  if (INFILE(_SPDX_Classpath_exception_20)) {
16852  INTERESTING("Classpath-exception-2.0");
16853  }
16854  if (INFILE(_SPDX_CLISP_exception_20)) {
16855  INTERESTING("CLISP-exception-2.0");
16856  }
16857  if (INFILE(_SPDX_DigiRule_FOSS_exception)) {
16858  INTERESTING("DigiRule-FOSS-exception");
16859  }
16860  if (INFILE(_SPDX_eCos_exception_20)) {
16861  INTERESTING("eCos-exception-2.0");
16862  }
16863  if (INFILE(_SPDX_Fawkes_Runtime_exception)) {
16864  INTERESTING("Fawkes-Runtime-exception");
16865  }
16866  if (INFILE(_SPDX_FLTK_exception)) {
16867  INTERESTING("FLTK-exception");
16868  }
16869  if (INFILE(_SPDX_Font_exception_20)) {
16870  INTERESTING("Font-exception-2.0");
16871  }
16872  if (INFILE(_SPDX_freertos_exception_20)) {
16873  INTERESTING("freertos-exception-2.0");
16874  }
16875  if (INFILE(_SPDX_GCC_exception_20)) {
16876  INTERESTING("GCC-exception-2.0");
16877  }
16878  if (INFILE(_SPDX_GCC_exception_31)) {
16879  INTERESTING("GCC-exception-3.1");
16880  }
16881  if (INFILE(_SPDX_gnu_javamail_exception)) {
16882  INTERESTING("gnu-javamail-exception");
16883  }
16884  if (INFILE(_SPDX_i2p_gpl_java_exception)) {
16885  INTERESTING("i2p-gpl-java-exception");
16886  }
16887  if (INFILE(_SPDX_Libtool_exception)) {
16888  INTERESTING("Libtool-exception");
16889  }
16890  if (INFILE(_SPDX_Linux_syscall_note)) {
16891  INTERESTING("Linux-syscall-note");
16892  }
16893  if (INFILE(_SPDX_LLVM_exception)) {
16894  INTERESTING("LLVM-exception");
16895  }
16896  if (INFILE(_SPDX_LZMA_exception)) {
16897  INTERESTING("LZMA-exception");
16898  }
16899  if (INFILE(_SPDX_mif_exception)) {
16900  INTERESTING("mif-exception");
16901  }
16902  if (INFILE(_SPDX_Nokia_Qt_exception_11)) {
16903  INTERESTING("Nokia-Qt-exception-1.1");
16904  }
16905  if (INFILE(_SPDX_OCCT_exception_10)) {
16906  INTERESTING("OCCT-exception-1.0");
16907  }
16908  if (INFILE(_SPDX_OpenJDK_assembly_exception_10)) {
16909  INTERESTING("OpenJDK-assembly-exception-1.0");
16910  }
16911  if (INFILE(_SPDX_openvpn_openssl_exception)) {
16912  INTERESTING("openvpn-openssl-exception");
16913  }
16914  if (INFILE(_SPDX_Qwt_exception_10)) {
16915  INTERESTING("Qwt-exception-1.0");
16916  }
16917  if (INFILE(_SPDX_u_boot_exception_20)) {
16918  INTERESTING("u-boot-exception-2.0");
16919  }
16920  if (INFILE(_SPDX_WxWindows_exception_31)) {
16921  INTERESTING("WxWindows-exception-3.1");
16922  }
16923  /*
16924  * Find exception phrases. There are similar phrases
16925  * in exception clauses. Therefore 'else if' structure
16926  * has to be used to get correct detections.
16927  */
16928  if (INFILE(_LT_389_exception)) {
16929  INTERESTING("389-exception");
16930  }
16931  else if (INFILE(_LT_ASN1SCC_exception) || INFILE(_LT_ASN1SCC_exception_2)) {
16932  INTERESTING("ASN1SCC-exception");
16933  }
16934  else if (INFILE(_LT_Autoconf_exception_20)) {
16935  INTERESTING("Autoconf-exception-2.0");
16936  }
16937  else if (INFILE(_LT_GPL_EXCEPT_5) && INFILE(_LT_Autoconf_exception_30)) {
16938  INTERESTING("Autoconf-exception-3.0");
16939  }
16940  else if (INFILE(_PHR_Autoconf_exception_30)) {
16941  INTERESTING("Autoconf-exception-3.0");
16942  }
16943  else if (INFILE(_LT_Autoconf_exception_3)) {
16944  INTERESTING("Autoconf-exception");
16945  }
16946  else if (INFILE(_LT_Bison_exception_22)) {
16947  INTERESTING("Bison-exception-2.2");
16948  }
16949  else if (INFILE(_LT_Bison_exception_1) || INFILE(_LT_Bison_exception_2)) {
16950  INTERESTING("Bison-exception");
16951  }
16952  else if (INFILE(_LT_Bootloader_exception)) {
16953  INTERESTING("Bootloader-exception");
16954  }
16955  /* Contains similar text to classpath-exception */
16956  else if (INFILE(_LT_OpenJDK_assembly_exception_10_1) || HASTEXT(_LT_OpenJDK_assembly_exception_10_2, 0)) {
16957  INTERESTING("OpenJDK-assembly-exception-1.0");
16958  }
16959  else if (INFILE(_LT_GPL_EXCEPT_6)) {
16960  if (INFILE(_LT_mif_exception)) {
16961  INTERESTING("Fawkes-Runtime-exception");
16962  }
16963  else {
16964  INTERESTING("Classpath-exception-2.0");
16965  }
16966  }
16967  else if (INFILE(_LT_classpath_exception_1)) {
16968  INTERESTING("Classpath-exception-2.0");
16969  }
16970  else if (HASTEXT(_LT_CLISP_exception_20_1, 0) && INFILE(_LT_CLISP_exception_20_2)) {
16971  INTERESTING("CLISP-exception-2.0");
16972  }
16973  else if (HASTEXT(_TITLE_DigiRule_FOSS_exception, 0) || INFILE(_LT_DigiRule_FOSS_exception)) {
16974  INTERESTING("DigiRule-FOSS-exception");
16975  }
16976  else if (INFILE(_LT_eCos_exception) && INFILE(_LT_GPL_EXCEPT_7)) {
16977  INTERESTING("eCos-exception-2.0");
16978  }
16979  else if (HASTEXT(_LT_FLTK_exception, 0)) {
16980  INTERESTING("FLTK-exception");
16981  }
16982  else if (HASTEXT(_TEXT_FONT, REG_EXTENDED) || INFILE(_LT_FONT_EXCEPTION_20)) {
16983  INTERESTING("Font-exception-2.0");
16984  }
16985  else if (HASTEXT(_LT_freertos_exception_20, 0)) {
16986  INTERESTING("freertos-exception-2.0");
16987  }
16988  else if (INFILE(_LT_freertos_exception_1) || INFILE(_LT_freertos_exception_2)) {
16989  INTERESTING("freertos-exception");
16990  }
16991  else if (INFILE(_LT_GCC_exception_31_1) || INFILE(_LT_GCC_exception_31_2)) {
16992  INTERESTING("GCC-exception-3.1");
16993  }
16994  else if (INFILE(_LT_GCC_exception_20)) {
16995  INTERESTING("GCC-exception-2.0");
16996  }
16997  /* This wording is very similar to GCC_exception_20 */
16998  else if (INFILE(_LT_linking_exception_1)) {
16999  INTERESTING("linking-exception");
17000  }
17001  else if (HASTEXT(_TEXT_GCC, REG_EXTENDED)) {
17002  INTERESTING("GCC-exception");
17003  }
17004  else if (INFILE(_LT_gnu_javamail_exception_1) || INFILE(_LT_gnu_javamail_exception_2)) {
17005  INTERESTING("gnu-javamail-exception");
17006  }
17007  else if (INFILE(_LT_i2p_gpl_java_exception)) {
17008  INTERESTING("i2p-gpl-java-exception");
17009  }
17010  else if (INFILE(_LT_GPL_EXCEPT_1) || INFILE(_LT_GPL_EXCEPT_2)) {
17011  if (HASTEXT(_LT_Libtool_exception, 0)) {
17012  INTERESTING("Libtool-exception");
17013  }
17014  if (HASTEXT(_LT_Autoconf_exception_2, REG_EXTENDED) || INFILE(_LT_Autoconf_exception_1)) {
17015  INTERESTING("Autoconf-exception");
17016  }
17017  }
17018  else if (INFILE(_LT_Linux_syscall_note)) {
17019  INTERESTING("Linux-syscall-note");
17020  }
17021  else if (HASTEXT(_LT_LLVM_exception_1, 0) || HASTEXT(_LT_LLVM_exception_2, 0)) {
17022  INTERESTING("LLVM-exception");
17023  }
17024  else if (INFILE(_LT_LZMA_exception)) {
17025  INTERESTING("LZMA-exception");
17026  }
17027  else if (INFILE(_LT_mif_exception)) {
17028  INTERESTING("mif-exception");
17029  }
17030  else if (HASTEXT(_LT_OCCT_exception_10_1, REG_EXTENDED) || INFILE(_LT_OCCT_exception_10_2)) {
17031  INTERESTING("OCCT-exception-1.0");
17032  }
17033  else if (INFILE(_LT_openvpn_openssl_exception)) {
17034  INTERESTING("openvpn-openssl-exception");
17035  }
17036  else if (HASTEXT(_TITLE_QT_GPL_EXCEPTION_10, 0)) {
17037  INTERESTING("Qt-GPL-exception-1.0");
17038  }
17039  else if (HASTEXT(_LT_QT_GPL_EXCEPTION_10_1, 0) && INFILE(_LT_QT_GPL_EXCEPTION_10_2)) {
17040  INTERESTING("Qt-GPL-exception-1.0");
17041  }
17042  else if (HASTEXT(_LT_QT_GPL_EXCEPTION, 0) && HASTEXT(_LT_QT_GPL_EXCEPTION_10_3, 0)) {
17043  INTERESTING("Qt-GPL-exception-1.0");
17044  }
17045  else if (INFILE(_TITLE_Nokia_Qt_LGPL_exception_11)) {
17046  INTERESTING("Nokia-Qt-exception-1.1");
17047  }
17048  else if (INFILE(_TITLE_QT_LGPL_EXCEPTION_11)) {
17049  INTERESTING("Qt-LGPL-exception-1.1");
17050  }
17051  else if (INFILE(_LT_Qwt_exception_10_1)) {
17052  INTERESTING("Qwt-exception-1.0");
17053  }
17054  else if (HASTEXT(_LT_Qwt_exception_10_2, 0)) {
17055  INTERESTING("Qwt-exception-1.0");
17056  }
17057  else if (INFILE(_LT_WxWindows_exception_31)) {
17058  INTERESTING("WxWindows-exception-3.1");
17059  }
17060  /*
17061  * Full license text includes reference to LGPL-2.0-only
17062  * exception clause.
17063  */
17064  else if (INFILE(_PHR_WXWINDOWS_31)) {
17065  INTERESTING("WxWindows-exception-3.1");
17066  INTERESTING("LGPL-2.0-or-later");
17067  }
17068  /*
17069  * This is a vague reference to WxWindows license without
17070  * an exception reference.
17071  */
17072  else if (INFILE(_PHR_WXWINDOWS)) {
17073  INTERESTING("WxWindows");
17074  }
17075  else if (HASTEXT(_LT_u_boot_exception_20, REG_EXTENDED)) {
17076  INTERESTING("u-boot-exception-2.0");
17077  }
17078  else if (HASTEXT(_LT_GPL_EXCEPT_Trolltech, REG_EXTENDED)) {
17079  INTERESTING("trolltech-exception");
17080  }
17081  else if (INFILE(_LT_OpenSSL_exception_1) || INFILE(_LT_OpenSSL_exception_2)) {
17082  INTERESTING("OpenSSL-exception");
17083  }
17084  else if (INFILE(_LT_GPL_UPX_EXCEPT) && !HASTEXT(_LT_IGNORE_CLAUSE, REG_EXTENDED)) {
17085  INTERESTING("UPX-exception");
17086  }
17087  else if (INFILE(_URL_mysql_floss_exception) || HASTEXT(_TITLE_mysql_floss_exception, 0)) {
17088  INTERESTING(lDebug ? "mysql-floss-exception(URL)" : "mysql-floss-exception");
17089  }
17090  else if (INFILE(_TITLE_Oracle_foss_exception) || INFILE(_LT_Oracle_foss_exception)) {
17091  INTERESTING("Oracle-foss-exception");
17092  }
17093  else if (INFILE(_LT_linking_exception_2) || (INFILE(_LT_linking_exception_3) && INFILE(_LT_GPL_EXCEPT_7))) {
17094  INTERESTING("linking-exception");
17095  }
17096  else if (HASTEXT(_TITLE_universal_foss_exception_10, 0)
17097  || URL_INFILE(_URL_universal_foss_exception_10)
17098  || INFILE(_LT_universal_foss_exception_10)) {
17099  INTERESTING("universal-foss-exception-1.0");
17100  }
17101  else if (INFILE(_LT_GPL_EXCEPT_1)) {
17102  INTERESTING(lDebug ? "GPL-except-1" : "GPL-exception");
17103  }
17104  else if (INFILE(_LT_GPL_EXCEPT_2)) {
17105  INTERESTING(lDebug ? "GPL-except-2" : "GPL-exception");
17106  }
17107  else if (INFILE(_LT_GPL_EXCEPT_3)) {
17108  INTERESTING(lDebug ? "GPL-except-3" : "GPL-exception");
17109  }
17110  else if (INFILE(_LT_GPL_EXCEPT_4)) {
17111  INTERESTING(lDebug ? "GPL-except-4" : "GPL-exception");
17112  }
17113  else if (INFILE(_LT_GPL_EXCEPT_7)) {
17114  INTERESTING("linking-exception");
17115  }
17116  else if (INFILE(_LT_GPL_SWI_PROLOG_EXCEPT)) {
17117  INTERESTING(lDebug ? "GPL-swi-prolog" : "GPL-exception");
17118  }
17119 
17120  return;
17121 }
17122 
17123 #ifdef LTSR_DEBUG
17124 #define LT_TARGET 1299 /* set to -1 OR the string# to track */
17125 void showLTCache(char *msg)
17126 {
17127  int i = 0;
17128  int nCached = 0;
17129  int nMatch = 0;
17130 
17131  printf("%s\n", msg);
17132  if (LT_TARGET >= 0) {
17133  printf("... tracking string #%d\n", LT_TARGET);
17134  }
17135  while (i < NFOOTPRINTS) {
17136  if (ltsr[i] < LTSR_SMASK) {
17137  printf(i == LT_TARGET ? "x" : ".");
17138  } else if (ltsr[i] == LTSR_YES) {
17139  printf("%%");
17140  nMatch++;
17141  nCached++;
17142  } else {
17143  printf(i == LT_TARGET ? "0" : ":");
17144  nCached++;
17145  }
17146  if ((++i % 75) == 0) {
17147  printf("|%04d\n", i);
17148  }
17149  }
17150  printf("\nLTSR-matches: %d, Cached: %d\n", nMatch, nCached);
17151  return;
17152 }
17153 #endif /* LTSR_DEBUG */
17154 
17155 #ifdef DOCTOR_DEBUG
17156 /*
17157  Debugging
17158  */
17159 void dumpMatch(char *text, char *label)
17160 {
17161  char *x = text + cur.regm.rm_so;
17162  char *cp = text + cur.regm.rm_eo;
17163 
17164  if (label) {
17165  printf("%s ", label);
17166  }
17167  printf("@ %d [", cur.regm.rm_so);
17168  for (; x < cp; x++) {
17169  if (!isEOL(*x)) {
17170  printf("%c", *x);
17171  }
17172  }
17173  printf("]\n");
17174 
17175  return;
17176 }
17177 
17178 #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:12668
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:14767
char * pythonVersion(char *, int, int, int)
Check for python versions.
Definition: parse.c:13025
char * gfdlVersion(char *, int, int, int)
Check for GFDL versions.
Definition: parse.c:13389
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:15434
#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:13743
#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:13944
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:12641
static char * gplVersion(char *, int, int, int)
Check for GPL versions.
Definition: parse.c:13564
char * lpplVersion(char *, int, int, int)
Check for LPPL versions.
Definition: parse.c:13200
#define HASTEXT(x, fl)
Calls idxGrep_recordIndex()
Definition: parse.c:201
char * oslVersion(char *, int, int, int)
Check for OSL versions.
Definition: parse.c:13120
void checkFileReferences(char *, int, int, int, int, int)
Generic license-phrases referring to other files or running commands.
Definition: parse.c:15102
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:14715
#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:14955
void locateRegex(char *, item_t *, int, int, int, int)
Locate a regex in a given file.
Definition: parse.c:14434
#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:13160
int famOPENLDAP(char *, int, int, int)
Utility function to search for OpenLDAP licenses. So many different footprints are used by OpenLDAP,...
Definition: parse.c:14853
char * lgplVersion(char *, int, int, int)
Check for LGPL versions.
Definition: parse.c:13455
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:13080
void spdxReference(char *, int, int, int)
Definition: parse.c:15721
void copyleftExceptions(char *, int, int, int)
Definition: parse.c:16834
char * ccVersion(char *, int, int, int)
Check for CC_BY-X versions.
Definition: parse.c:13774
char * agplVersion(char *, int, int, int)
Check for AGPL versions.
Definition: parse.c:13306
char * mplNplVersion(char *, int, int, int)
Check for MPL|NPL versions.
Definition: parse.c:12857
#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:12975
#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