Im Code sind mir ein paar Kleinigkeiten aufgefallen, die vielleicht berichtigt werden sollten:
Keine Ahnung, wer von den sieben Kontributoren in GitHub nun der Haupt-Maintainer ist: TomJoad, schau dir das doch bitte mal an und entscheide, ob der Patch in die offizielle Codebasis übernommen werden soll. Hier eine Übersicht der wichtigsten Änderungen:
- Der README-Link sollte nicht eingecheckt sein, weil er jedes Mal neu erzeugt und bei make clean zudem gelöscht wird.
- In cSearchExt ist search ein Array, sodass dessen "Pointer" nicht nicht NULL sein kann. Aus diesem Grund wirft der Compiler unschöne Warnungen aus.
- Weil ich keine Warnungen beim Kompilieren haben möchte, habe ich die Compiler-Warnung von Zeile 105 in blacklist.c per #pragma GCC diagnostic selektiv abgeschaltet.
- Dito in md5.c, nur dass hier sizeof(chEach) – ähnlich wie in den Zeilen davor – durch die entsprechende Konstante ersetzt wurde.
- Statt strncpy sollte man besser das im VDR implementierte strn0cpy verwenden, welches ein terminierendes NUL-Zeichen bei einem Pufferüberlauf erzwingt.
- Beim Anlegen eines Suchtimers aus einer Vorlage wird skipRunningEvents nicht übernommen.
- Beim Schreiben der Suchtimer-Konfiguration werden Sonderzeichen in contentsFilter zwar in tmp_contentsFilter ersetzt, dieser String aber irrtümlich nicht gespeichert.
- Weil der Vergleich des Untertitels vom Vergleich des Titels unabhängig ist, sollte er die gleiche Einrückungstiefe wie der Titel haben.
- Bei Berechnung der prozentualen Zeitspanne in services.c ist eine Division durch null nicht ausgeschlossen.
Noch ein paar Gedanken zum Schluss:
- Unschön ist, dass bei der Expansion von Strings zum Speichern der Konfiguration einzelne Zeichen durch 8- bzw. 9-stellige "Makros" ersetzt werden, sodass die originalen Strings beim Speichern eventuell abgeschnitten werden könnten. C++11 als Minimalstandard vorausgesetzt, ließe sich das vielleicht auch dadurch lösen, dass für die reservierten Zeichen anstelle der Makros beim Speichern UTF8-Sonderzeichen genutzt würden, die eh keiner verwendet. Und die Konversion der Konfigurationsdateien beim ersten Einlesen nach der Umstellung sollte kein großes Problem sein.
- Da reguläre Ausrücke seit C++11 von der Standard-Bibliothek unterstützt werden, stellt sich die Frage, ob man die Suche mit regulären Ausdrücken nicht vielleicht auf diese umstellen sollte. Damit hätte man auch keine Kompatibilitätsprobleme zwischen den drei alternativen Regex-Bibliotheken mehr.
Sagt Bescheid, wenn ich euch bei solchen Arbeiten helfen kann.