-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHISTORY.TXT
More file actions
1687 lines (1571 loc) · 83.9 KB
/
HISTORY.TXT
File metadata and controls
1687 lines (1571 loc) · 83.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*!\page PPL7History PPL7 History
PPL7 - HISTORY
Version 7.0.2
- ID3Tag can read tags from WAVE-files (.wav)
Version 7.0.1 vom 27.10.2019 (Repo-Tag: REL_7_0_1)
- Fixed overflow exception in ID3Tag::copyAiffToNewFile
- Fixed overflow exception in IdentAIFF
- Added method TCPSocket::isBlocking
- Bugfix in TCPSocket::sslStart: a call to this function does
not change blocking mode to non-blocking anymore. It keeps
the previous mode.
- random.cpp: removed deprecated keyword "register" (C++17)
- AssocArray::getPrevious returns "false" as expected and does not throw
OutOfBoundException anymore, when end of AssocArray is reached
- Increased test coverage for AssocArray
- Added compare operator to Variant
- Added more operators for AssocArray
- fixed "-no-pie" compiler warnings
- Reverse iteration over AssocArray now requires a ReverseIterator
- refactored AssocArray to use std::map instead of own AVLTreeAlgorithm.
As a side effect, this change had a huge performance improvement on
setting, getting and deleting values. The unittest addAndDeleteWordlist
now takes 794ms instead of 1432ms on my workstation.
- SSLContext: dropped support for deprecated SSL and TLS versions.
Only the methods "TLS", "TLSclient" and "TLSserver" are supported.
The actual protocol version used will be negotiated to the highest
version mutually supported by the client and the server.
- SSLContext: added fallback to SSLv23_method when TLS_method is
not available
- Digest: removed ECDSA from available hash algorithms
- Bugfix in MemFile::seek
- Added JSON-Parser and -Writer
- String: added method useadr
- removed MHash class and dependencies on mhash library.
Please use the Digest-Class as replacement.
- added ID3Tag::PictureType
- fixed bug in Drawable::blendPixel
- added compare operators to class grafix::Point
- migrated PythonHelper from ppl6 and added unit tests for Perl- and
PythonHelper. Fixed escaping of backslash.
- Fixed ID of datatype DateTime
- Removed old AssocArray code
- AssocArray: added export and import of WideString
- AssocArray: added export and import of Array
- Array operators == and != are now defined as const
- changed behaviour of String::isNumeric
- WikiParser: various methods do not get a return value anymore
- SocketMessage: defined some functions as const
- WikiParser: fixed some OutOfBoundsExceptions
- AssocArray: added comfort getter-functions, which return a
default value instead of throwing an exception, when key is
not found or of different data type.
- AssocArray: getArray now returns an Array instead of AssocArray!
Use new method getAssocArray, if you want an AssocArray!
- use libidn2 instead of libidn if available
- AssocArray: TypeConversionExceptions in getter-Methods with more
details
- ID3Tag can read and write popularity meters
- Updated googletest detection in configure
- introduced preprocessor define "PPL_QT_STRING_UTF8". If set before
including ppl7.h or ppl7-types.h, string conversions between ppl7::String
and Qt's QString will be based on Utf8 and not local 8 bit encoding
- String class: added constructor with ByteArrayPtr as input
- Crypto: introduced Encrypt and Decrypt class based on OpenSSL
- removed support for libmcrypt, removed class MCrypt
- added CXXFLAGS
Version 7.0.0 vom 29.07.2018 (Repo-Tag: REL_7_0_0)
- Complete Rewrite, based on Version 6.4.7
- Unittests with Google Test framework
Version 6.4.21
- IdentAudioFile unterstützt nun Wave-Dateien
- CTCPSocket::SSL_Stop: Return-Wert von SSL_shutdown wird jetzt
korrekt interpretiert. Es wird kein shutdown mehr auf den Socket
gemacht, da dies bei einer Abgebrochenden Verbindung zu einer
Blockade führen kann.
- CCurl: Neue Methode "getCurlHandle" liefert das interne Handle
der libcurl zurück
- CSSL: Unterstützung für TLS 1.1, TLS 1.2 und DTLS 1, sowie
der Komfortmethode "TLS", die alle TLS-Versionen unterstützt,
aber kein SSLv2 oder SSLv3.
- Memory-Leak in MkDate behoben
- Memory-Leak in CDateTime::get behoben
- Memory-Leak in FileExists behoben
- Bugfix im configure: SQLITE_LIBS und SQLITE_CFLAGS werden nur gesetzt,
wenn sqlite auch gefunden wurde
- NASM-Erkennung unter MSYS 2.0 i686 gefixt
- Fixed: Deadlock in CThreadPool::Stop behoben
- LPSTR wird nicht mehr verwendet
Version 6.4.20 vom 13.07.2014 (SVN-Tag: REL_6_4_20)
- Funktion GetGlobalEncoding hinzugefügt
- CID3Tag beachtet nun die globale Einstellung für die Kodierung
der Strings
- CID3Tag speichert Text-Tags nun grundsätzlich in UTF-16LE
- Neue Funktionen: XmlEscape und XMLUnEscape
- Neue Klasse: PythonHelper
- Address-Parameter der HexDump-Funktionen ist nun als "const void *"
deklariert
- CID3Tag: Fehler beim Schreiben von Tags in AIFF-Files behoben
- Überflüssige .svn-Ordner aus der Distribution entfernt
- Unterstützung von AudioCD-s und CDDB mittels der neuen Klassen
AudioCD und CDDB
- Configure-Erkennung für nasm, png und jpeg verbessert
Version 6.4.19 vom 16.02.2014 (SVN-Tag: REL_6_4_19)
- CBinary hat Malloc- und Calloc-Funktion bekommen,
Save wurde umbenannt in Savef, Load in Loadf. Neue Save- und Load-
funktionen, die "const CString &" als einzigen Parameter erwarten
- CID3Tag kann ID3-Tags aus AIFF-Dateien lesen und schreiben
- UnitTests für CID3Tag-Funktionen erstellt
- MemoryHeap-Klasse sammt Unit-Tests aus PPL7 importiert
- Algorithmus "List" sammt Unit-Tests aus PPL7 importiert
- CDir wurde refakturiert: "Get" Funktionen geben jetzt
"const CDirEntry*" statt "CDirEntry*" zurück, Sortierfunktionen
aus PPL7 importiert, als Sortieralgorithmus wird nun std::multimap
statt der eigenen AVL-Methoden verwendet. Dies fixt ein Problem
bei der Sortierung, wenn identische Schlüssel mehrfach auftauchen
(z.B. gleiche Timestamps oder Dateigrößen). Zusätzlich kann nun
auch nach ATime, CTime, MTime und Dateigröße sortiert werden.
- CDirEntry: "Is..."-Funktionen sind nun als "const" deklariert
- Valgrind: Mismatched free() / delete / delete [] in
ppl6::CID3Tag::RemovePicture gefixt
- CID3Frame Destruktor verändert die Framekette nicht mehr, dafür ist
allein CID3Tag zuständig
- CID3Tag: Fehler in der Berechnung der Framegröße bei Textframes
mit ISO-8859-1 oder UTF-8 Kodierung behoben. (Valgrind Fehler: Invalid
read/write of size 1)
- IdentAudioFile: Neue Funktion zum Ermitteln des Audioformats einer
Datei, sowie deren Kennzahlen, wie Frequenz, Kanäle, Samples, und Länge.
Die Daten werden im ebenfalls neuen Objekt "AudioInfo" abgelegt.
Die Funktion soll IdentMPEG ablösen und neben MP3 auch andere Formate
unterstützen. Gegenwärtig wird MP3 und AIFF unterstützt.
- CFile::RenameFile löscht unter Windows die Zieldatei vor dem Rename.
Die C-Funktion "rename" bzw. "_wrename" verhält sich unter Windows
anders als unter Unix.
- CFile::Exists verwendet nun "stat" bzw. unter Windows "_wstat" um
ein konsistentes Verhalten zu bekommen. Bisher wurde versucht die
Datei zu öffnen, was unter Unix auch auf Verzeichnisse funktioniert,
unter Windows aber nicht.
- Win32: Problem mit CFile::mmap behoben
- CID3Tag: Bugfix beim Update eines vorhandenen Tags unter Windows
Version 6.4.18 vom 04.02.2014 (SVN-Tag: REL_6_4_18)
- CID3Tag: Neue Funktion zum Auslesen von PRIV-Frames (PrivateData)
- CID3Tag unterstützt TXXX-Tag mit EnergyLevel
- CID3Tag liefert Anzahl Frames zurück mit CID3Tag::FrameCount()
- Webserver: Funktionen queueResponse und queueBasicAuthFailedResponse haben
keinen Rückgabewert mehr und werfen eine Exception im Fehlerfall
- Webserver: Fehlerbehandlung in answer_to_connection implementiert
- CConfig: Spaces am Anfang und Ende von Werten werden nicht mehr abge-
schnitten
- Bugfix: Die LTrim-Funktionen der beiden String-Klassen CString und
CWString haben beim Verschieben des Strings ein Byte über das Ende des
internen Buffers hinausgelesen.
- CTCPSocket::Read: Fehlercode EINTR wird wie EAGAIN behandelt und
ignoriert, bzw. ein Retry initiiert
- Funktion IdentMPEG kann besser mit fehlerhaften MP3-dateien umgehen
- CFile::CopyFile funktioniert nun. Bisher wurde das neue File nicht
angelegt und das alte gelöscht :-( => Unittests angelegt
- Statische Funktionen von CFile refakturiert: statt "const char*"
wird nun "const CString &" erwartet, ausser dort, wo ein Formatstring
übergeben wird. Funktionen mit Formatstring haben ein "f" am Ende des
Funktionsnamens erhalten
- File-Funktionen unter Windows: Es werden jetzt Non-US-ASCII-Zeichen
im Dateinamen unterstützt.
- CFile::Truncate wird nun auch unter Windows unterstützt
- Bugfix: Absturz unter Windows durch unbehandelte Exception im Destruktor
der CLog-Klasse behoben. Seit Version 6.4.15 wird Syslog unter Unix
unterstützt. Der Destruktor hat die Funktion zum Schließen von Syslog
aber auch unter Windows aufgerufen und die dabei entstehende Exception
nicht abgefangen.
- Funktion CString MD5(const void *data, size_t size) implementiert
- Unittests für statische Funktionen aus CFile implementiert
- CID3Tag::GetGenre liefert einen bereits geparsten String zurück, der den
Namen des Genres enthält. Bisher wurde der Inhalt des Tags TCON ungefiltert
zurückgegeben
- CFile::Popen(const char *command, const char *mode, ...) umbenannt in
Popenf
- OpenTemp akzeptiert nurnoch einen Parameter vom Typ CString, die bisherige
Funktion mit Formatstring und variabler Anzahl Parameter heisst jetzt
OpenTempf
- CFile::Size führt zunächst ein fflush aus, damit möglicherweise noch im
Puffer befindliche Daten geschrieben werden.
- CFileObject::SetFilename(const char *filename, ...) umbenannt in
SetFilenamef
- CFile::Seek, Fseek, Ftell, Size und Lof haben keine Funktion mehr,
bzw. geben 0 zurück, wenn die geöffnete Datei eine Pipe ist.
- Diverse Compiler-Warnings mit gcc 4.6.x gefixt
- CDir: Bugfix im Konstruktor behebt möglichen Absturz durch nicht
rechtzeitig initialisierte Variable.
- Unittests für CDir implementiert
Version 6.4.17 vom 03.11.2013 (SVN-Tag: REL_6_4_17)
- Cppl6Core ist nicht mehr von CDebug/CLog abgeleitet
- CArray::Explode: Performance wurde drastisch verbessert
- CArray: Neue Funktion "Reserve", zum Vorallokieren von Speicher
- CArray: Neuer Konstruktor mit Explode-Funktion
- Bugfix in CAssocArray::CreateFromConfig: Bei Angabe von "dotrim=false"
wurde am Ende doch getrimmt
- Testsuite um Tests für CAssocArray-Klasse ergänzt (Backport von PPL7)
- Bugfix: CleanupThreadData hat zwar das Datenobjekt gelöscht, nicht aber
den Pointer darauf innerhalb der posix threads
- PPLExit ruft nun CleanupThreadData auf
- CleanupThreadData ist nun auch für Windows implementiert
- Makefile: pplgenresource verwendet nun das lokale config-ppl6-Skript
und die lokale Bibliothek
- configure: libshout kann jetzt mit --without-libshout abgeschaltet
werden
- ppl6-unixconfig.h enthält nurnoch die Typdefinitionen, aber nicht mehr die
ganzen HAVE_xzy Direktiven
- Datentyp "mode_t" wird in ppl.h nicht mehr verwendet
- CTCPSocket::Bind: Hostname und Port werden nun gespeichert und können mit
den neuen Funktionen "getHostname" und "getPort" abgefragt werden.
- Webserver::start: Exception "CouldNotStartDaemon" hat jetzt zusätzliche
Informationen über den aufgetretenen Fehler
- Webserver: Neue Funktionen: getHostname, getPort
- configure: Erkennung für libmicrohttpd verbessert
- configure: Erkennung für curl-config verbessert
- ppl6-config: Option "--features" unterstützt nun optionale Angabe der
gewünschten Features. Ist ein Feature nicht eingebunden, wird eine
ERROR-Meldung ausgegeben und der Returncode ist ungleich 0
- Bugfix in MySQL::Query: Ein Fehlerfall beim Speichern des Query-Results
wurde zwar festgestellt, aber kein passender Fehlercode gesetzt.
- Freetype-Font-Rendering verbessert, das Hinting funktioniert jetzt besser
(Code aus ppl7 übernommen)
- Makefile sollte nun abbrechen, wenn beim "make install" ein Fehler auftritt
- Statische Funktionen in CFile umbenannt und erweitert: Exists, TouchFile,
DeleteFile und FileAttr akzeptieren nurnoch einen Parameter mit dem Datei-
namen und keinen Formatstring mehr (zu fehleranfällig). Die neuen
Funktionen Existsf, TouchFilef, DeleteFilef und FileAttrf übernehmen die
alte Funktionalität und erwarten einen Formatstring.
- Bugfix: fehlendes Semikolon in EscapeHTMLTags und UnescapeHTMLTags beim
Tag "&" ergänzt
- Bugfix: "Conditional jump or move depends on uninitialised value" in
MkTime behoben.
- Bugfix: Race Condition in CAssocArray::Copy behoben
- CMutex wirft jetzt eine Exception im Konstruktor, wenn kein Speicher für die
internen Variablen allokiert werden konnte. Daher konnten in den Member-
Functions einige Prüfungen wegoptimiert werden.
- Fehler bei der Initialisierung von MySQL behoben. Neue statische Funktion
zum Initialisieren der MySQL-Bibliothek.
- mögliche Race Condition Pool::CheckPool behoben
- bzero durch memset ersetzt, da bzero in POSIX.1-2008 entfernt wurde
- CID3Tag unterstützt TKEY
- CID3Tag::SetTextFrame unterstützt optionalen dritten Parameter zur Angabe
des gewünschten Encodings
Version 6.4.16 vom 19.05.2013 (SVN-Tag: REL_6_4_16)
- Bugfix: Fehlende "IFDEF"'s zur Prüfung der Syslog-Unterstützung in CLog
ergänzt (behebt Compiler-Fehler unter MinGW)
- Bugfix: "Invalid read of size 1" in ppl6::CLog::Printf behoben
- Bugfix: Memory-Leak in CSSL::~CSSL() gefixt
- Bugfix: Diverse Memory-Leaks in CWString::Setf und CWString::Sprintf
behoben
- Neue Funktion: CleanupThreadData. Diese muss aufgerufen werden, bevor
ein Thread, der nicht mittles der PPL-Funktionen gestartet wurde,
beendet wird.
- Bugfix: Memory-Leak in der Restschnittstelle behoben
- Bugfix: Memory-Leak im Zusammenhang mit MySQL gefixt
- Überflüssige Variablen in Trim-Funktionen der Klasse CWString entfernt
- Bugfix: Fehler in CString::RTrim behoben, durch den zu wenig Zeichen am
Ende des Strings abgeschnitten wurden (Backport von PPL7)
- Bugfix: Fehler in CWString::RTrim behoben, durch den zu wenig Zeichen am
Ende des Strings abgeschnitten wurden (Backport von PPL7)
- Bugfix: Memory Leak und "silly malloc" in CString::PregMatch und
CWString::PregMatch behoben
- Testsuite um Tests für CString-Klasse ergänzt (Backport von PPL7)
- Testsuite um Tests für CWString-Klasse ergänzt (Backport von PPL7)
- CWString hat Konstruktor für std::wstring bekommen und Operator für
std::ostream
- Bugfix in CString::IsNumeric und CWString::IsNumeric
- CWString: Vergleichsoperatoren für CWString und einige weitere Operatoren
und Funktionen sind jetzt als "const" deklariert
- Bugfix in CWString::Chomp: Es konnten zu viele Zeichen abgeschnitten werden
- CWString::Concat führte zu "Conditional jump or move depends on
uninitialised value"
- Bugfix in CWString::Delete: Falscher Returnwert wurde zurückgegeben, wenn
Zeichen am Ende des Strings abgeschnitten wurden.
- Bugfix in CString::Shr und CWString::Shr: Zeichen am Ende des Strings
wurden nicht abgeschnitten, String konnte länger werden, als der Original-
string
- CWString: Operator bool() entfernt, da dieser nicht funktioniert
- CString: Zusätzliche Set- und SetChar-Funktionen
- CString: Funktionen IsTrue und IsFalse eingeführt
Achtung: Mögliches Kompatibilitätsproblem:
- Änderung in CWString::Set: Bei Verwendung eines char *, std::string oder
CString als Input, wird der optionale zweite Parameter nicht mehr als
Bytes, sondern als Zeichen interpretiert! Dieses Verhalten war bereits
so, wenn keine Iconv-Library installiert war, und somit ein Fallback auf
die Funktion mbstowcs erfolgte.
Version 6.4.15 vom 30.04.2013 (SVN-Tag: REL_6_4_15)
- CLog-Klasse unterstützt nun Syslog
Version 6.4.14 vom 21.03.2013 (CVS-Tag: REL_6_4_14)
- Bugfix beim Einlesen von ID3-Tag-Covern mit UTF-16-Encoding
- Bugfix: Potentieller Memory-Leak in CTCPSocket::WaitForMessage gefixt
- Bugfix: Fehler im Aufbau der verketteten Liste der Klasse CSSL behoben
- Change: CSSL verwendet malloc und free statt CHeap
- Bugfix: CTCPSocket: Beim Disconnect oder Shutdown wurde kein SSL_Stop
aufgerufen. Dadurch konnte der SSL-Stack durcheinander kommen.
Version 6.4.13 vom 27.07.2012 (CVS-Tag: REL_6_4_13)
- Kleinere Kompatibilitätsprobleme unter Windows behoben
- Fehler in Postgres-DB-Anbindung behoben, wodurch mit FetchArray
oder FetchFields mehr Zeilen gelesen wurden, als im
Result vorhanden war
- DB-Connect mit Postgres-Datenbank unterstützt jetzt Parameter
"searchpath" zum Setzen des Suchpfades.
- CString unterstützt Ausgabe als Stream
- Erkennung der FreeTDS-Library für Sybase erneuert
- CDateTime Genauigkeit auf Mikrosekunden erhöht
- Format des Integer-Wertes von CDateTime::longInt hat sich geändert
und ist inkompatibel zu vorher.
- Testsuite mit Unittests für CDateTime erstellt (Verwendung von
Google-Test)
- Bugfix in CString::PregReplace
Version 6.4.12 vom 04.04.2012 (CVS-Tag: REL_6_4_12)
- Datenbank: Strings werden nun in Hochkommata statt Anführungszeichen
gesetzt
- Datenbank: Datentypen werden in Abhängigkeit ihres Types und der
Datenbank escaped und gequoted. Neue Funktion Database::getQuoted
- Datenbank: Mutexe aus den Datenbanken entfernt. Die Anwendung ist
dafür verantwortlich parallelen Zugriff zu verhindern.
- Backport von PPL7: CDir::homePath und CDir::tempPath
- Funktion ppl6::db::GetSupportedDatabases hinzugefügt
- Unterstützung für Datenbank SQLite3 (experimentell)
Version 6.4.11 vom 19.02.2012 (CVS-Tag: REL_6_4_11)
- Bugfix in PNG-Laderoutine
- Kritischer Bugfix in Sybase::Ping: Result wurde nicht freigegeben, wodurch
nachfolgende Operationen blockiert und die Verbindung somit
unbrauchbar wurde
- Neue Klasse: PerlHelper
- CDateTime verarbeitet nun auch "null" oder das Datum "0000-00-00".
Beides wird als "0" interpretiert.
- CDateTime hat neue Funktionen zum Abfragen der Kalenderwoche:
week() und weekISO8601()
- Neue Funktion CString::setInitialBuffersize
- Fehlende Funktion CString::Capacity implementiert
- CFile::Open mit Formatstring wurde umbenannt in CFile::Openf
- CFont unterstützt Parameter für Rotation
- Font-Format 6 eingeführt (Backport aus PPL7)
- Bugfix: Array::Explode auf einen leeren String führt jetzt nicht mehr
dazu, dass ein leeres Element hinzugefügt wird
Version 6.4.10 vom 10.11.2011 (CVS-Tag: REL_6_4_10)
- CCurl-Klasse: Signals werden nun standardmäßig deaktiviert,
da Anwendungen mit mehreren Threads sonst in Probleme laufen.
Mit der neuen Funktion CCurl::EnableSignals können die Signals
explizit wieder aktiviert werden.
Version 6.4.9 vom 30.10.2011 (CVS-Tag: REL_6_4_9)
- Kompatibilitätsprobleme mit OpenSSL 1.x.x behoben
- Funktion StartThread, um einen Thread ohne Verwendung der
Klasse CThread zu starten
- Webserver-Klasse, die auf libmicrohttpd aufsetzt
Version 6.4.8 vom 27.07.2011 (CVS-Tag: REL_6_4_8)
- Datenbankklassen: Neue Funktion "databaseType"
- Bugfix in Compression-Klasse: bei Verwendung des V2-Prefix
wurde beim Komprimieren statt Länge der unkomprimierten Daten
die Länge der komprimierten Daten geschrieben
- Bugfix in Datenbank-Connect-Funktion. Fehlerhaften "ifdef" für
Postgres korrigiert
- Bugfix in Postgres-Escape-Funktion. Das letzte Zeichen des
Strings wird nun nicht mehr abgeschnitten.
Version 6.4.7 vom 25.05.2011 (CVS-Tag: REL_6_4_7)
- CDateTime holt sich nun die Millisekunden via "gettimeofday",
sofern die Funktion vorhanden ist. Bei der Ausgabe mit
"get" wird nun der Platzhalter "%*" unterstützt, der durch die
Millisekunden ersetzt wird.
- Überarbeitung und Vereinfachung der Exception-Klasse
- Neue Klasse: CIcecast zum Streamen von MP3 oder OGG Dateien
an einen Icecast Server
- Update der Dokumentation auf Doxygen 1.7.3
- CAssocArray unterstützt nun CDateTime und kann CWString Im- und
Exportieren (es erfolgt eine Konvertierung nach UTF-8)
Version 6.4.6 vom 17.03.2011 (CVS-Tag: REL_6_4_6)
- CAssocArray hat Copy-Konstruktor und Zuweisungsoperator für CArray
erhalten.
- CDateTime vollständig dokumentiert
- CDir verwendet nun unter Windows die Wide-Character-Funktionen
zum Einlesen eines Verzeichnisses. Dadurch sollte es jetzt keine
Probleme mehr mit Nicht-US-ASCII-Zeichen im Dateinamen geben.
- Bugfix in CWikiParser: Bei der Darstellung von Sourcecode fehlt
das schließende "</div>".
- CTree hat neue const-Funktionen zum Rückwärtsdurchwandern des
Baums mittels CTreeWalker
- CAssocArray hat neue const-Funktionen zum Durchwandern des
Baums mittels CTreeWalker
- CCurl: Neue Funktionen: SetMaximumPersistantConnects, Reset
- CArray hat neue Funktionen: MakeUnique und fromArgs
- configure: Erkennung von Postgres überarbeitet
Version 6.4.5 vom 28.11.2010 (CVS-Tag: REL_6_4_5)
- Bugfix in Sybase::Query: Bei einem Fehlerhaften Query wurde das
Result-Set nicht gelöscht
- Bugfix in Sybase::SetResultBufferGrowSize: Es fehlte ein #IFDEF,
wodurch das Kompilieren unmöglich war, wenn keine Sybase- oder
FreeTDS-Libs installiert waren
- Funktion PregMatch ist nun als eigenständige Funktion ausserhalb
der String-Klasse vorhanden
- CWString: Neue Funktion CWString::ReplaceLetterList
- CBinary hat jetzt eine "ToHex"-Export-Funktion, die seinen Inhalt
als String mit Hexwerten zurückgibt. Mit "FromHex" kann ein
Hex-String wieder importiert werden.
- CMemoryReference hat ebenfalls "toHex"-Funktion erhalten,
CMemory die Funktion "fromHex"
- CMHash Bugfix: CMHash::GetResult hat die Klasse nicht korrekt
reinitialisiert, so dass ein erneuter Aufruf falsche Werte
zurückgegeben hat.
- Bugfix SybaseResult::FetchResultSet. Es wurde nicht geprüft,
ob überhaupt ein Result vorhanden ist.
Version 6.4.4 vom 01.11.2010 (CVS-Tag: REL_6_4_4)
- CDateTime::diffSeconds: Ermittelt die Differenz zweier CDateTime
Werte in Sekunden
- CDateTime::compareSeconds: Vergleicht zwei CDateTime-Werte auf
Sekundenbasis anhand einer definierbaren Toleranz
- CArray hat nun Sort-Funktion zum Sortieren der Werte
- CArray hat nun Implode-Funktion, um das Array in einen String zu
konvertieren
- Bugfix Postgres.cpp läßt sich wieder kompilieren
- Sybase-Datenbankklasse überarbeitet. Sie verwendet jetzt eine
eigene optimierte Result-Klasse und nicht mehr GenericResult.
Queries mit einem großen Result-Set können nun iterativ mit
FetchArray oder FetchFields durchlaufen werden, ohne dass zunächst
das komplette Result-Set in den Speicher geladen werden muss.
Version 6.4.3 vom 16.10.2010 (CVS-Tag: REL_6_4_3)
- Update auf Doxygen 1.7.x, Anpassungen am Layout
- Alte Datenbank-Klassen entfernt
- Bugfix in CGenericList: Die Liste kann nun auch Rückwärts
durchlaufen werden. Zuvor wurde dabei immer nur das erste Element der
Liste zurückgegeben.
- Bugfix in der Berechnung der Anzahl Frames bei einer MP3-Datei mit
variabler Bitrate
- Bugfix in CID3Tag: Framegröße bei ID3v2-Tags Version 2.3 wird nun korrekt
interpretiert.
- Bugfix CString::IsNumeric: Komma, Punkt und Minus wurden falsch interpretiert
- Bugfix db::Sybase::Escape: Es wird nun ein korrekter Returnwert zurückgegeben
- db::Database::Save: Funktion akzeptiert jetzt einen sechsten optionalen
Parameter, über den man die Variablen-Typen angeben kann.
- db::Database: Transaktionen können nun verschachtelt werden
Version 6.4.2 vom 19.08.2010 (CVS-Tag: REL_6_4_2)
- ppl6::db::Sybase::GetInsertID funktioniert nun
- ppl6::CString: Zusätzliche PregMatch-Funktion, die als "const" deklariert
ist
Version 6.4.1 vom 27.07.2010 (CVS-Tag: REL_6_4_1)
- configure prüft nun, ob "_FILE_OFFSET_BITS" definiert werden muss, um
grosse Dateien verwenden zu können
- configure prüft nun optional, ob die Library mpg123 installiert ist
- configure: Überprüfung von libmp3lame wurde in eigene Datei ausgelagert.
Zusätzlich wird nun geprüft, ob lame die neue hip_decode-Funktion
unterstützt.
- CMP3Decode fungiert nun als Basisklasse für verschiedene Dekoder, kann jedoch
nach wie vor genauso benutzt werden, wie bisher. Optional kann mit der Funktion
CMP3Decode::Init angegeben werden, welcher Dekoder benutzt werden soll. Wird dies
nicht gemacht, wird standardmäßig nun Mad oder mpg123 verwendet, jenachdem
was installiert ist.
- Neue MP3-Dekoder auf Basis der mpg123 Bibliothek
- Bugfix in CWString::Set. Die Funktion konnte nicht kompiliert werden,
wenn keine libiconv vorhanden war.
- pplgenresource kennt jetzt Parameter "compression" in der Konfigurations-
datei
- Grafikfunktion Blt verwendet nun optimierte Copy-Funktion unter
Verwendung von MMX, SSE und dem L1-Cache der CPU
- Bugfix in den Vergleichs-Operatoren und -Funktionen der String-Klassen.
Es wurde bisher nicht berücksichtigt, dass zwei leere Strings auch dann
identisch sind, wenn die Buffer noch nicht allokiert sind. Im Gegenteil,
es wurde sogar explizit geprüft, ob einer der beiden Buffer auf NULL zeigt,
und in dessen Abhängigkeit ein bestimmer Returncode gegeben (z.B. +2 oder
-2). Das Verhalten wurde jetzt so geändert, dass bei einem NULL-Pointer
ein leerer String angenommen wird und der Vergleich mit dem anderen String
auf jeden Fall durchgeführt wird.
- CString: Vergleichsoperatoren für CString hinzugefügt
- CWString: Vergleichsoperatoren mit "const char*" und "CWString*" entfernt.
In beiden Fällen wird der Kompiler jetzt eine automatische Typ-
konvertierung zu CWString durchführen.
- CDateTime: Neue Klasse zum Speichern von Datum und Uhrzeit
- CVar hat keinen virtuellen Destruktor mehr. Alle davon abgeleiteten Klassen
benötigen dadurch weniger Speicher. Es muss nun aber static_cast statt
dynamic_cast verwendet werden, wenn zwischen den Datentypen gecastet wird.
- Exceptions überarbeitet: Es gibt jetzt nurnoch eine Exception-Klasse
Version 6.4.0 vom 30.03.2010 (CVS-Tag: REL_6_4_0)
- Copyrights auf 2010 aktualisiert
- Bugfix in der 64-Bit-Version der Font-Assembler-Routinen
- MkRFC822Date wurde überarbeitet und liefert nun gemäß RFC 822 die
englischen Bezeichnungen für Tag und Monat zurück. Ausserdem wurden einige
veraltete Funktions-Alternativen entfernt.
- GetHostByName wurde geändert. Ursprünglich hat die Funktion intern einen
einzelnen Aufruf der Systemfunktion getaddrinfo gemacht. In neueren libc
Bibliotheken scheint sich jedoch das Verhalten geändert zu haben. Hier
werden AAAA-Records nur dann zurückgegeben, wenn auf dem lokalen host
auch eine globales IPv6-Interface konfiguriert ist. Zu beobachten auf
Ubuntu 9.10 nach Einspielen der Updates am 13.01.2009. Die Funktion wurde
daher geändert und ruft getaddrinfo nun zweimal auf, einmal für IPv4/INET
und einmal für IPv6/INET6.
- nasm wird jetzt auch auf 64-Bit FreeBSD-Systemen gefunden
- CArray: Aufruf von Add(CArray &a) wurde geändert in Add(const CArray &a)
- Memory-Leak in CFileObject::Load behoben
- CVar und alle davon abgeleiteten Klassen: Callback-Funktionalität entfernt.
Dadurch ist die Klasse bei Änderungen am Datenwert nicht nur schneller,
sondern der Speicherbedarf auch um 8 Byte (32-Bit-Prozessoren) bzw. 16 Byte
(64-Bit Prozessoren) kleiner.
- CResolver: Neue Klasse für Nameserver-Abfragen auf Basis der ldns-Library
von nlnetlabs.nl (http://www.nlnetlabs.nl/projects/ldns/) (Ist noch in
Arbeit!)
- CString:
- Neue Funktion InstrCase
- Parameter zu Instr und StrCmp sind nun als const deklariert
- Calc unterstützt nun Potenzen (^) und erwartet eine Referenz anstelle
eines Pointers als zweiten Parameter. Ausserdem wird als Dezimal-
Trennzeichen nun auch Komma akzeptiert
- CSocketMessage hat nun Copy-Funktion und Copy-Konstruktor
- CAVLTree hat neue Funktion "Remove", die ein Element nur aus dem Baum
entfernt, aber nicht dessen Speicher löscht
- CMutex::Wait und CMutex::Signal funktionieren nun auch unter Windows
- CAssocArray: Reset, GetFirst und GetNext akzeptieren nun ein CTreeWalker
Objekt und sind als const deklariert
- CAssocArray: List und Count sind nun als const deklariert
- CLog: Array-Parameter bei PrintArray-Funktionen ist jetzt als const
deklariert
- CTCPSocket: Funktionen IsWriteable, IsReadable, WaitForIncomingData und
WaitForOutgoingData sind jetzt auch für Windows implementiert.
- CAVLTree: Einige Funktionen sind nun als "const" deklariert
- CAVLTree: Kritischen Fehler in der Funktion "Clear" behoben, der
zu Segmentation Fault und Memory-Leaks führen konnte.
- CLog: Es wird nun immer _vor_ der Verarbeitung der Daten geprüft, ob
sie auszugeben sind und nicht erst später. Das führt insbesondere beim
Loggen von grossen CAssocArrays oder Hexdumps, die nicht ausgegeben
werden müssen, zu drastischen Performance-Verbesserungen
- db::CPool: Bugfix in Funktion "Get". Parameter "wait" wurde nicht beachtet,
Funktion lief in einer Endlosschleife, wenn das Pool-Limit erreicht war.
- FreeTDS: configure prüft nun, ob Compiler -lrt benötigt
- Fehler in CLog::CheckRotate behoben
- Komplett-Überarbeitung der Grafik-Funktionen im neuen Namespace ppl6::grafix.
Alle Zeichenfunktionen basieren jetzt auf der Basisklasse CDrawable, die
auch ohne Initialisierung der Grafik-Engine benutzt werden kann. Die
Überarbeitung ist noch nicht abgeschlossen.
Neue Klassen der Grafik-Engine:
- Point
- Point3D
- Size
- Rect
- RGBFormat (ist jetzt keine Enumeration mehr!)
- Color
- AdapterCaps
- AdapterIdentifier
- AdapterMode
- GFXEngine (Basisklasse für alle Grafik-Engines)
- GFXEngineSoftware
- GFXEngineDX9
- GFXEngineSDL
- CDrawable
- CImage
- CImageList
Überarbeitete Klassen:
- CSurface
- CGrafix
- CSprite
- CFont
- CFilter (und alle davon abgeleiteten Klassen)
- CFontFile
- CFontEngine (und alle davon abgeleiteten Klassen)
Version 6.3.3 vom 12.02.2010 (CVS-Tag: REL_6_3_3, Branch: RELENG_6_3)
- Visual C++ 2008 Kompatibilität wiederhergestellt
- Doppelte Funktionen in functions.cpp und strings.cpp eliminiert
- Neue Klassen zum Verwalten eines einzelnen Speicherblocks:
- CMemory
- CMemoryReference
- Addition von CString und CWString funktioniert nun besser
- Bugfix in CFile::MMap: File-Offset wird jetzt intern immer auf
eine Seitengröße abgerundet, die über sysconf(_SC_PAGE_SIZE)
ermittelt wird.
Version 6.3.2 vom 04.12.2009 (CVS-Tag: REL_6_3_2)
- Bugfix in ppl6::db::Database::GetEscaped
- Bugfix in CString::PregReplace: Beim Ersetzen durch einen per RegEx
kopierten Strings wurde der falsche Textbuffer verwendet, wodurch nur
der erste Match korrekt ersetzt wurde.
- CString:IsNumeric Bugfix
- Neue Funktionen: FromBase64, ToBase64, EscapeHTMLTags
- Die Datenbank-Funktionen "ExecArray..." löschen nun das Ergebnisarray, bevor
es mit dem Ergebnis gefüllt wird
- Neue String-Funktionen:
CString Trim(const CString &str);
CString Trim(const char *str);
CString UCase(const CString &str);
CString UCase(const char *str);
CString LCase(const CString &str);
CString LCase(const char *str);
CWString Trim(const CWString &str);
CWString UCase(const CWString &str);
CWString LCase(const CWString &str);
int StrCmp(const CString &s1, const CString &s2);
int StrCmp(const CWString &s1, const CWString &s2);
int StrCaseCmp(const CString &s1, const CString &s2);
int StrCaseCmp(const CWString &s1, const CWString &s2);
int Instr (const CString &string, const CString &such, size_t start=0);
int InstrCase (const CString &string, const CString &such, size_t start=0);
int Instr (const CWString &string, const CWString &such, size_t start=0);
int InstrCase (const CWString &string, const CWString &such, size_t start=0);
CString Left(const CString &str, size_t num);
CString Right(const CString &str, size_t num);
CString Mid(const CString &str, size_t start, size_t num=(size_t)-1);
CString SubStr(const CString &str, size_t start, size_t num=(size_t)-1);
CWString Left(const CWString &str, size_t num);
CWString Right(const CWString &str, size_t num);
CWString Mid(const CWString &str, size_t start, size_t num=(size_t)-1);
CWString SubStr(const CWString &str, size_t start, size_t num=(size_t)-1);
CString MD5(const CString &str);
CString MD5(const CWString &str);
CString MD5(const CBinary &bin);
- Kleinere Bugfixes nach statischer Code-Analyse mit cppcheck und rats
- Neue Time-Funktionen:
- CString Long2Date(const char *format, int value)
- CString MkDate(const char *format, ppluint64 sec)
Version 6.3.1 vom 25.10.2009 (CVS-Tag: REL_6_3_1)
- ppl6::db::MySQL::FieldType: Die MySQL-Datentypen wurden nun mit #ifdef's
versehen, damit auch ältere MySQL-Versionen funktionieren
- ppl6.m4 hat jetzt ein Macro zum Prüfen, ob ein bestimmtes Feature in die Library
einkompiliert wurde: AX_PPL6_FEATURE
- ppl6-config hat neues Flag zum Auslesen der einkompilierten Fearures:
--features
- ppl6::db::MySQL: Der Default für den zu verwendenden Zeichensatz bei der
Kommunikation mit dem Server wurde von UTF-8 auf Latin1 geändert, da auch
MySQL defaultmäßig Latin1 verwendet, wenn bei der Tabellenerstellung nicht
explizit ein anderer Zeichensatz angegeben wurde. Der gewünschte Zeichensatz
kann nun als Connect-Parameter "charset" angegeben werden.
- Bugfix in ppl6::db::MySQL: Die letzte Insert-Id wird nun bei Exec
an der richtigen Stelle im Programmcode abgefragt, wodruch GetLastInsertID
nun nicht mehr 0 zurückgibt.
- CTCPSocket wurde vollständig dokumentiert
- CTCPSocket: Der Konstruktor mit dem void-Pointer wurde entfernt, da dieser
eh nur intern aufgerufen wurde
- CTCPSocket::Listen hat nun einen optionalen Parameter, der das Intervall
definiert, in dem auf einen Stop-Wunsch geprüft wird. Ausserdem wird nun
"select" verwendet, um auf eingehende Connects zu prüfen. Dadurch reagiert
Listen schneller auf eingehende Verbindungen.
- CTCPSocket::ReceiveConnect erwartet nun "const char*" als zweiten Parameter
und nicht mehr "char*".
- Funktion CTCPSocket::Poll entfernt
- Funktion CTCPSocket::SetWriteTimeout hinzugefügt
- CTCPSocket::SSL_Connect umbenannt in SSL_Start
- CSSL: In LoadTrustedCAfromFile und LoadTrustedCAfromPath wird nun am Ende die
OpenSSL-Fehlerqueue gelöscht, da auch bei erfolgreichem Laden Fehler auftreten
können (bereits bekannte Zertifikate werden nochmal geladen), die später
zu Problemen führen können.
- CSSL: Die Enumeration "SSL_METHOD" ist nun Bestandteil der Klasse CSSL
und nicht mehr in einem eigenen Namespace
- GetMicroSeconds wurde umbenannt in GetMilliSeconds, da die Funktion
Millisekunden zurückliefert und keine Mikrosekunden.
- Der Datentyp "ARRAY_RESULT" ist nun kein "void *" mehr, sondern ein Pointer
auf eine Struktur. Dadurch werden Codestellen, an denen noch GetArray(CString *)
statt GetArray(CString &) aufgerufen wird nun als Fehler erkannt und nicht
mehr vom Compiler als GetArray(ARRAY_RESULT) interpretiert.
- CID3Tag wurde überarbeitet:
- Alle String-Tags werden nun mit einem 0-Byte terminiert, wie
es die Spezifikation vorschreibt.
- Statt UTF-8 werden alle Strings nun in UTF-16 geschrieben
- SetComment wurde nun (hoffentlich) korrekt implementiert
- CString: Preg-Funktionen machen nun Fallback auf Singlebyte-Zeichen, wenn
der zu durchsuchende String ungültiges UTF-8 enthält
- strcasestr gibt nun "const char*" statt "char*" zurück
- CArray hat nun Copy-Funktionen
- CMHash::Hash kann nun auch mit einem String als Algorithmus aufgerufen
werden
- CReadMail: Mehrere Fehler behoben, unter anderem einen in GetTranscodedBody,
der dazu führte, dass die Funktion NULL zurückgegeben hat.
- Weitere Parameter von Member-Funktionen sind nun als "const" deklariert
- CMHash::GetResult löscht nun den Ergebnisparameter vorher
- CSendMail: Verbindung mit dem Mailserver wird nun ordnungsgemäß mit
QUIT beendet.
Version 6.3.0 vom 25.08.2009 (CVS-Tag: REL_6_3_0)
- Änderung der Parametertypen: Fast sämtliche Pointer-Parameter
wurden durch Referenzen ersetzt und sind jetzt - sofern sie nicht
verändert werden, als "const" deklariert. Auch sämtliche Member-
Funktionen, deren Aufruf keine internen Daten der Klasse veränderen,
sind nun als "const" deklariert.
Durch die umfangreichen Änderungen entstehen Inkompatibilitäten
zu früheren Versionen, so dass Anwendungen angepasst werden müssen!
Betroffen sind folgende Klassen:
- CString
- CWString
- CBinary
- CTok
- CFile
- CMemFile
- CHostsAllow
- CArray
- CAssocArray
- CCurl
- CSendMail
- CReadMail
- CHostsAllow
- CLang
- CIconv
- CLog
- CDebug
- CSocketMessage
- CSocket
- CUDPSocket
- Cppl6Core
- Neuer generischer AVL-Baum: CAVLTree. Dieser hat die Vergleichsfunktionen
in der Klasse selbst und nicht mehr in den Knoten. Auch die Verwaltung der
Knoten wird durch die AVL-Klasse übernommen, wodurch die Knoten nicht
mehr von CTreeItem abgeleitet werden müssen, sondern Pointer auf beliebige
Datenstrukturen sein können.
- File-Klassen wurden komplett überarbeitet. CFile ist nun nicht
mehr Basisklasse, sondern wird von der neuen Klasse CFileObject
abgeleitet. CMemFile wird nun ebenfalls von CFileObject abgeleitet.
Diese Änderung macht es erforderlich alle Funktionen, die als
Parameter ein "CFile&" oder "CFile*" erwarten, zu überprüfen, ob nun
nicht ein CFileObject erforderlich ist.
- CFile::Map verwendet nun mmap, sofern verfügbar
- File-Klassen wurden vollständig dokumentiert
- Die Funktion ReadFile ist weggefallen, stattdessen kann CFile::LoadFile
verwendet werden
- CVar hat nun Enumeration "PPLDataType", alle abgeleiteten Klassen
kennen ihren Datentyp. Durch Aufruf der Funktion CVar::DataType()
kann man den Typ herausfinden und so ein beliebiges CVar-Objekt
in das richtige umwandeln.
- Queue-Klasse CQueue überarbeitet, man kann nun beliebige Objekte
anhand ihrer Pointer hineingaben
- Kompatibilitäts typedefs entfernt, somit gibt es keine Klassen mehr,
die mit "Cppl..." anfangen
- CMCrypt: Neue Klasse zum Verschlüsseln und Entschlüsseln von Daten,
basierend auf libmcrypt
- CMHash: Neue Klasse zum Erstellen von Hashes mit verschiedenen
Algorithmen (z.B, MD5 oder SHA-256), basierend auf libmhash
- Konvertierung zwischen CString und CWString erfolgt nun über
Funktionen der libc, wenn Iconv nicht zur Verfügung steht. Dies
setzt jedoch voraus, dass die Strings in CString entweder UTF-8
oder US-ASCII kodiert sind. Iconv ist nun wieder optional.
- Neue statische Funktionen in der Klasse Cppl6Core, mit denen geprüft
werden kann, ob ein bestimmtes Feature einkompiliert wurde.
Cppl6Core::have... (siehe \ref PPL6_Features)
- Neue Funktion "Random", die eine beliebige Anzahl Zufallsdaten
erzeugt und als CBinary-Objekt zurückgibt.
- RenameFile: Funktion prüft nun, ob alter und neuer Dateiname
identisch sind, bevor irgendetwas gemacht wird.
- Klasse CCompression wurde komplett überarbeitet und dokumentiert
- Klasse CDir wurde komplett überarbeitet
- CIconv hat nun statische Funktionen zum Auflisten aller
unterstützen Charsets
- libiconv wird nun zuverlässiger erkannt
- Bugfix in MkDir unter Windows
- Bugfix in CDBWrapper: Einige Funktionen haben als Returnwert den
Fehlercode zurückgegeben statt 0.
- ppl6-config liefert bei Aufruf mit "--cflags" nurnoch die tatsächlich
notwenigen Parameter
- Neue Datenbank-Klassen
Die Datenbank-Klassen wurden komplett überarbeitet und im neuen
Namespace "ppl6::db" reimplementiert. Statt einem Result-Handle, das
bei verschiedenen Funktionen zum Verarbeiten des Ergebnisses immer wieder
als Parameter übergeben werden mußte, wird nun eine Result-Klasse
verwendet. Diese enthält alle zur Verarbeitung des Ergebnisses
erforderlichen Funktionen und muss am Ende nur mit delete gelöscht
werden. Alle Funktionen der neuen Klassen wurden vollständig dokumentiert.
Die alten Klassen im ppl6-Namespace sind weiterhin enthalten, werden
aber in einer zukünftigen Version entfernt.
- Postgres-Datenbank wird mit der neuen Klasse ppl6::db::Postgres
erstmalig in PPL6 unterstützt. Die Klasse CDBPostgres war nie
wirklich implementiert.
- Neue Klasse ppl6::db::GenericResult zum Speichern von Ergebnissen aus
Datenbank-Selects und zum Kopieren von Ergebnissen.
- Das Verzeichnis "docs" und die Doxygen-Dateien sind nun in der
Source-Distribution enthalten. Aus irgendeinem Grund fehlten sie bisher.
- CString und CWString haben neue Funktion "IsNumeric"
- CAssocArray: Bei der Sortierung der Elemente wird nun geprüft,
ob die zwei zu vergleichenden Schlüssel nummerisch sind. Ist dies der Fall,
erfolgt der Vergleich auf nummerischer Basis anstelle des Strings. Bei
Verwendung von "[]" wird daher die Datensatznummer nicht mehr in einen
10-stelligen String verwandelt.
- CSocket-Klasse wurde umbenannt in CTCPSocket
Version 6.2.6 vom 09.06.2009 (CVS-Tag: REL_6_2_6, Branch: RELENG_6_2)
- Funktionen "PokeFloat" und "PeekFloat" hinzugefügt
TODO: Big Endian Implementation
- Neue Funktion "GetID3GenreName"
- Fehler in CTree::Find behoben
- CString und CWString haben neue Funktion UCWords
- IdentMPEG: Fehler in der Erkennung des MPEG-Headers gefixt
- CID3Tag: Es kann nun Version 2.4 gelesen werden
- CID3Tag: Bugfix in Save-Funktion, Framegröße > 127 Byte wird nun
korrekt geschrieben
- CID3Tag: Bugfix beim Dekodieren von Frames (CopyAndDecodeText)
- CTree: Kritische Bug gefixt. Beim Einfügen eines neuen Knotens
wurden die Pointer auf left und right sowie die Balance nicht mit
NULL initialisiert. Dies konnte zu Schutzverletzungen und Endlosschleifen
führen.
- CTree / CTreeItem: Dokumentation korrigiert
- CTreeItem hat nun Funktionen zum Auslesen der Verbindungen zu Parent,
Left und Right
- CQueue: Neue Klasse zum Verwalten von Queues
- Fehler im Configure behoben, der unter Windows mit MinGW dazu
führte, dass Iconv mit einer falschen Byteorder initialisiert
wurde, was wiederum zu Fehlverhalten in CWString führte
- RenameFile prüft nun nach dem "remove", ob die Datei an der alten
Position noch vorhanden ist und löscht sie gegebenenfalls
- Einige Memberfunctions von CString und CBinary sind nun als
"const" deklariert. In der nächsten Release werden weitere folgen.
- CString kann nun auch CBinary importieren, sowie Qt's QVariant
Version 6.2.5 vom 15.05.2009 (CVS-Tag: REL_6_2_5)
- Neue Funktion: CFile::Sync: Dateiänderungen sofort auf die Platte
schreiben
- Dokumentation CApplication
- CID3Tag: Funktionen zum Auslesen der üblichen Tags (Artist, Titel, etc.)
- MkTime-Funktion mit Integer als Parameter
- CConfig: Neue Funktionen
Version 6.2.4 vom 01.03.2009 (CVS-Tag: REL_6_2_4)
- Bugfix: Falsche Reihenfolge der Destruktor-Aufrufe in PPLExit
- Tippfehler in CLog beseitigt
- CArray: Explode-Funktion kann nun leere Zeilen ignorieren (zusätzlicher
Parameter erforderlich)
- DirectX 9 Engine vervollständigt
- Neue Klasse: grafix::CSprite zum Laden und Anzeigen von Sprites
- Das Makefile erfordert nun kein GNU-make mehr, sondern funktioniert
beispielsweise auch mit FreeBSD make
- Bugfix: Segmentation Fault und Endlosschleife beim Lesen von
defekten JPEG-Files behoben
- configure: Erkennung für "nasm"-Assembler hinzugefügt
- Assembler Unterstützung für AMD 64-Bit unter Unix und Windows
- BltColorKey nutzt nun auch Assembler
- Bugfix: BMP-Dateien mit 32-Bit Farbtiefe und Alphakanal werden nun
korrekt geladen
- Neu: Unit-Tests für Grafik-Funktionen
- Bugfix: Die Interpretation der RECT-Struktur war in einigen
Grafik-Funktionen fehlerhaft
- Fonts: Fehlerhafte Datei "liberationsans.fnt5" ersetzt durch
"liberationsans8.fnt5"
- BltDiffuse verwendet nun auch Assembler und ist damit ca. 4 mal schneller!
Die C-Version verwendet nun die Integer-Variante RGBBlend255 statt der
Floatingpoint-Variante RGBBlend und ist damit auch mehr als doppelt so
schnell wie bisher.
- Sybase: Beim Connect kann nun die TDS-Version und Paketgröße angegeben
werden. Außerdem ist es nun möglich direkt auf einen Hostnamen oder
IP-Adresse zu connecten, ohne dass dieser in der Interfaces-Datei
definiert wurde.
- Sybase: Neue Funktionen zur globalen Initialisierung:
- CDBResult: Statt einem Key-Value basierten CAssocArray kann das Ergebnis
einer Zeile nun auch in einem durchnummerierten CArray abgelegt werden
- CDBResult: Neue interne Funktion ToString um einen bliebigen Datentyp
in einen String zu wandeln
- CDBResult: Ber Befehl "Result" unterstützt nun als zweiten Parameter auch
einen Spalten-Index statt einen Namen
- Configure prüft nun den CPU-Typ und aktiviert zusätzliche Compiler-Flags
zur Optimierung.
- CSurface::PutPixel ist nun vom Typ "void" und speichert Koordinaten und
Farbe nicht mehr. Dadurch ist die Funktion schneller. Zusätzlich
läßt sich über einen Auftruf der Funktion CSurface::FastPixel(true)
die Prüfung abschalten, ob der Pixel im erlaubten Zeichenbereich liegt.
Die Anwendung muss sicherstellen, dass dies nicht passiert, da es sonst
zu Schutzverletzungen kommen kann.
- CSendMail::CSendMail verwendet nun gethostname und getdomainname zur
Ermittlung des sendenden Hostnamens statt der Environment-Variable
HOSTNAME, sofern die Funktionen vorhanden sind.
Version 6.2.3 vom 24.11.2008 (CVS-Tag: REL_6_2_3)
- configure stoppt nun nicht mehr, wenn zwingend benötigte Libraries
fehlen, sondern meldet dies erst im Anschluss an die Zusammenfassung
- iconv ist nun zwingend erforderlich, wird indirekt von den Funktionen
LCase und UCase der String-Klasse benötigt
- IsTrue erkennt nun auch "on" und "an" als true
- CLog hat nun Rotate-Funktion
- CLog-Bugfix: Mutex in PrintArraySingleLine wurde zu spät gelocked
- Update auf Doxygen 1.5.7
- Bugfix in CApplication: Destruktor darf nicht PPL_Exit aufrufen,
da dies später automatisch passiert
- Bugfix in sybase.m4 Macro
Version 6.2.2 vom 23.06.2008 (CVS-Tag: REL_6_2_2)
Das "a" in der letzten Version bereitete ein paar Probleme, daher
gibt es kurzfristig nochmal diese Version mit wenig Änderungen:
- configure: changed iconv detection, which now works on FreeBSD
- Bugfix in CSocket::SSL_Connect() bei Verwendung von Timeouts
- Visual Studio 2003 Project-File aktualisiert
Version 6.2.1a vom 15.06.2008 (CVS-Tag: REL_6_2_1)
- Bugfix: Bei der Übersetzung der Socketfehler wurden nun überall
"#ifdef"'s hinzugefügt, da nicht alle Errorcodes auf allen
Betriebsystemen vorhanden sind.
Version 6.2.1 vom 15.06.2008 (CVS-Tag: REL_6_2_1)
- Visual Studio 2008 Projekt-File aktualisiert
- Fehler im configure bzgl. Include-Pfad bei bzip2 behoben
- Korrektur in der iconv-Erkennung. Ein hardgecodeter Pfad (/usr/local/lib)
führte zu Problemen und wurde entfernt.
- Neue Funktion: CBinary::HexDump
- CAssocArray: Verschiedene Funktionen retten nun den aktuellen
Fehlerzustand
- CInt: Operator |= hinzugefügt
- CString: Funktionen StrCmp und StrCaseCmp erwarten als ersten
Parameter nun "const char *" statt "char *"
- Gemeinsame externe Funktionen von CSocket und CUDPSocket wurden
in eigene Datei socket.cpp verschoben
- Grafix: Mit DirectX9-Engine begonnen
- src/grafix6/Errors.cpp wurde in GrafikErrors.cpp umbenannt, das es
unter VS2008 sonst zu Überschneidungen kommt
- CConfig: Leerzeilen werden nicht mehr überlesen
- Windows-Sockets: Übersetzung von Windows-Socket-Fehlermeldungen
- CSocket: Neue Funktionen "IsReadable" und "IsWriteable"
- Bugfix CLog::LogError: Error-Text wurde nicht mehr ins Logfile geschrieben
- configure: lame und libmad werden nun auch unter MinGW gefunden
Version 6.2.0 vom 15.04.2008 (CVS-Tag: REL_6_2_0)
- Lizenz: Die PPL-Library steht nun endlich offiziell unter einer Open
Source Lizenz. Nach reiflicher Überlegung wurde eine BSD-Lizenz ohne
Werbungsklausel ausgewählt. Die Library kann somit ohne Einschränkung
auch in kommerziellen oder "Closed Source" Projekten verwendet
werden. Die Lizenz wurde in allen Quellcode-Dateien eingebaut.
- AVL-Code: Der bisherige AVL-Code basierte auf der libavl, die unter
der GNU General Public Licence steht. Da diese mit der BSD-Lizenz
unvereinbar ist, wurde der Code aus der Version vor 6.0.19 wieder
übernommen. Der damalige Fehler in der Löschfunktion wurde gefunden
- Doku: Copyright und Credits aufgenommen
- Die alte Grafik-Engine wurde entfernt, das Inlcude-File der neuen
Engine wurde von "ppl6-grafix6.h" in "ppl6-grafix.h" umbenannt.
- Weitere veraltete Dateien entfernt.
- Bugfix CReadMail: Leere Headerzeilen werden ignoriert
- Weitere Funktions-Prüfungen im Configure
- CAssocArray Verwendet nun CTree anstelle von CAVLTree.
- Funktionen CAssocArray::Get...Sorted wurden entfernt, Funktionen wie "GetNext..."
und "GetPrevious..." liefern die Elemente nun immer sortiert zurück.
- Klasse CAVLTree wurde entfernt
- CDir verwendet nun CTree statt CAVLTree
- CHeap: Speicher wird automatisch freigegeben. Wenn mehr als ein Block
komplett unbenutzt ist, wird der erste behalten und alle weiteren
freigegeben
- CString verwendet nun CHeap für den Speicher der Klasse
- CWString verwendet nun CHeap für den Speicher der Klasse
- CString: Der initiale Buffer für Strings wurde von 128 auf 64 Byte
verkleinert
- Cppl6Core: Der Heap-Speicher für CAssocArray, CString und CWString wird
nun durch Cppl6Core verwaltet
- CAssocArray: Klasse wurde vollständig dokumentiert und ein paar kleinere
Verbesserungen vorgenommen.
- Bugfix CConfig: Beim Einlesen der kompletten Sektionen wurden führende Leerzeichen
entfernt, obwohl diese für CConfig::GetSection erhalten bleiben sollten
- pplgenresource: In der Konfigurationsdatei kann man nun eine Sektion
"prefix" und "suffix" definieren. Der Inhalt von "prefix" wird der Resourcen-
Header-Datei vorangestellt, "suffix" wird angehangen. Ideal für Copyright-
Vermerke.
Version 6.1.4 vom 31.03.2008 (CVS-Tag: REL_6_1_4)
- Dokumentation korrigiert: Scheinbar hab ich vergessen die neuste Version
der Doxygen-Konfigurationsdatei einzuchecken, wodurch die Doku nicht so
generiert wurde, wie es sollte
- Fehlernde Kompatibilitäts-typedefs nachgetragen:
- CpplSSL
- CppLCompression
- Neue Funktion: CBinary::ToFile
- Neue Funktionen in CMemFile:
- ppluint32 Gets(CString *buffer, int maxlinelength=1024);
- CString *Gets(int maxlinelength=1024);
- void Puts (CString *str);
- Bugfix: In CDBWrapper::Save wurde intern ein Return-Code falsch
interpretiert und der Update String wurde falsch zusammengebaut. Scheinbar
hab ich "Save" zuvor noch niemals mit "Update" aufgerufen...
Version 6.1.3 vom 29.03.2008 (CVS-Tag: REL_6_1_3)
- Win32-Bugfix: ppl6::DeleteFile wurde nicht gefunden, da Windows
"DeleteFile" umdefiniert. In CpplFile.cpp wurde daher ein "#undef"
hinzugefügt.
- configure: Minimum-Version für SDL auf 1.2.10 hochgesetzt, darunter schlägt
das Kompilieren fehl.
- gcc 4.2.x fixes: Ab gcc 4.2.0 ist die Umwandlung einer String-Konstante
in einen "char*" nicht mehr erlaubt und führt zu einer Warnung:
"warning: deprecated conversion from string constant to 'char*'"