1 Portable Windows Library Modification History
2 =============================================
6 Complete Mac OS X (using Darwin 1.2) port.
10 More bullet proofing of PER decoder, could crash if given garbage data
13 Fixed problem in ASN parser with BER encoding of ASN with optional
16 Fixed missing immediate expiry date on string and file HTTP Service
17 classes HTTP resources.
19 Added macro to do server side includes of signed or unsigned chunks of
20 HTML in HTTP Service classes.
22 Added flag to globally ignore HTML signatures in HTTP Service classes
23 (useful for develeopment).
25 Improved the HTTP form management classes.
27 Added RFC822 aware channel class for doing internet mail via existing
28 POP3 and SMTP classes, includes content transfer encoding and automatic
31 Fixed crash if used PBase64::ProcessEncoding() with zero length.
33 Fixed bug in base64 encoder, overwriting memory buffer.
35 Added certificate and private key classes to OpenSSL interface.
37 Fixed problem with propagation of the error text through to indirect
40 Fixed compiler ambiguities in PTimeInterval constructor.
42 Added static function to create a new thread class and automatically
43 run a function on another class in the context of that thread.
45 Added function to change auto delete flag on a thread.
47 Added assert when get nested mutex.
49 Fixed problem with PSemaphore::WillBlock actually locking semaphore.
51 Fixed bug un Linux version where HTML macros didn't work correctly in
52 PHTTPService applications.
54 Improved PString sprintf functions so no longer limited to 1000 characters.
56 Fixed bug in unix version where subsequent config file opening uses first
59 Changed PConfig to allow writing of config files whilst config file is open.
61 Changed unix config file code to allow writing of config files whilst
64 Fixed problem in unix thrading where thread that uses PThread::Current()
65 in destructor crashes.
67 Various fixes for Motif and Qt build.
69 Various fixes for BeOS build.
71 Various fixes for BSD build.
76 Added ability to change the persistent connection parameters (timeout
77 etc) in HTTP server class.
79 Fixed bug in HTTP form updating SELECT fields from registry.
81 Fixed OpenSSL support so can operate as a server channel.
83 SSL channel changes, added error functions, removed need to have
84 openssl include directory in app.
86 Added mechanism by which a service can get at new HTTP connections,
89 Fixed resize of multi-line edit box windows, again.
91 Fixed problem with no control value update if press "Enter" to close dialog.
93 Added ability to have multiple lines with the same key in PConfig.
95 Removed assert for empty key name so can set registry default key for
98 Removed PAssert with registry access denied error, changed to PTRACE.
100 Fixed subtle difference between Unix and Win32 section names (ignore
101 trailing backslash) in PConfig files.
103 Fixed silly mistake in runtime_malloc() function, should return a
106 Improved multithreaded reliability of the timers under stress.
108 Fixed problem with no new lines in trace output to stderr.
110 Added Windows 2000 to operating system reporting.
112 Fixed problem with bothnoshared target in makefile
117 AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at).
119 Start of Nucleus++ port.
121 Fixed bug in setting current value of options in select form fields.
123 Added ability to get at the PTraceStream without timestamps etc,
124 use UINT_MAX trace level.
126 Added more guards for NULL PStrings in PConfigArg handling.
128 Removed some warnings on compiling colour icons in PWRC.
130 Fixed problems in decompile of .ICO file with multiple icons in PWRC.
132 Added ability to append resources to existing file in PWRC.
134 Fixed bug that causes crash when gettng cursor/selection position in
137 Added flags for controlling file sharing.
139 Added start of video I/O abstraction classes.
141 Added runtime_malloc() function for cases where memory check code must
144 Fixed bug when PWaveFormat is assigned to itself.
146 Fixed shutdown issues with buffers in use in PSoundChannel.
148 Fixed potential race condition in OSS initialise (Unix sound).
150 Fixed BSD compatibility for OSS sound usage.
155 Added PConfigArgs class so can save program arguments to config files.
157 Removed static global ojects that require construction as they cause
158 phantom memory leaks when using the GNU compiler.
160 Added microseconds to string output of PTime.
162 Added strcasecmp macro, BSDish version of stricmp.
164 Added mutex to PSoundChannel buffer structure to avoid rare but quite
165 possible multi-threading crashes.
167 Added tcp.h to get TCP_NODELAY for setsockopt call to pmachdep.h.
169 Fixed missing default on PTopLevelWindow::Show() function.
171 Fixed support for older FreeBSD (location of sysctrl program).
173 Added variables for standard programs ar and ranlib, plus making the
174 use of ranlib optional according to another variable.
176 Fixed bug in restarting free running timers, would not always happen.
178 Fixed problem with stream output width in PTimeInterval.
180 Fixed uninitialised microseconds on some PTime constructors.
182 Added display of thread name in SystemLog.
184 Fixed problem where lastReadCount was not zeroed if no read occurred
187 Added OSS unix implementation for PlayFile command.
189 Fixed race condition causing asserts in ballon help.
191 Added directory search path argument for external DEF files in
192 MergeSym. This allows correct building of DLLs that use ptlib.dll.
194 Fixed bug for symbols in external DEF file actively removed from
195 merged DEF file in MergeSym.
197 Fixed production error for ValueSet in asn parser.
202 Added option to rename imported module names in ASN parser, allows
203 generated code #include filename matching to what would be generated
204 elsewhere by the applications make system.
206 Added ability to remove optional field in ASN sequence.
208 Added simple static play functions for sound files.
210 Added constructor to do PString conversion to PTimeInterval parsing
211 the string as for stream I/O.
213 Added microseconds field to PTime class.
215 Added parameter so get/setsockopt can have other levels to SOL_SOCKET.
217 Fixed error in check for SIOCGHWADDR define. Caused compile errors on
218 Solaris 2.6 systems (but not 2.5 or 2.7!)
220 Fixed problem with connect() call not timing out according to the
221 readTimeout value of the channel.
223 Removed ptclib/proto directory. Its purpose was lost in time and causes
224 more problems now than it is worth.
226 Added named threads to tracing function.
228 Fixed handling of NULL pointer on current thread in PTRACE output.
230 Fixed infinite recursion on PProcess::Current() = NULL assertion.
232 Added function to determine if PProcess instance has been initialised
233 yet for use by static objects etc.
235 Fixed problem with asserts generating continuous output when input is
236 redirected and especially when EOF is read.
238 Added the ability to get a stack dump on assert on unix systems by
239 calling gdb on the fly.
241 Changes to build system to make GUI selection under Unix systems
244 Changed DEBUG build to always be static libraries, an opt build will
245 use the shared libraries.
247 Add support for OpenBSD.
249 Some BeOS port changes.
251 Some VxWorks port changes, still not complete.
253 Add some Mac OS X port changes, still not complete.
255 Add support for NetBSD.
259 Added new improved random number generator. Mainly due to discovered
260 inadaquacies in the MSVC run time version of rand().
262 Added support for producing shared libraries.
264 Added optimisation to array comparisons if referencing same array.
266 Fixed problem with changing size of referenced objects, reference needed
267 to be broken and wasn't invalidating other references causing crashes.
269 Updated OpenSSL support.
271 Improved FreeBSD support (later versions, OSS sound etc).
273 Fixed some minor BeOS issues.
275 Added support for power PC Linux variant.
277 Fixed ASN PER encoder boundary condition error for constrained integer
278 encoding (values 1, 256 etc).
280 Fixed ASN parsing of multiple IMPORTS and OID's in IMPORTS section.
286 Fixed alignment problem in debug memory check code (especially with
289 Fixed problem in timers startup condition in short duration (< 10 second)
290 timers, timing out immediately.
292 Improved some of the documentation especially the root web page.
297 Made static form of ConvertOSError public scope.
299 Added override of new functions for MSVC memory check code.
301 Added functions to get current trace options and level.
303 Fixed display of decimals in milliseconds when precision other than 3.
305 Fixed problem, assuring millisecond accuracy in timestamp of trace
308 Improved portability of copy from host_info struct to IP address.
310 Created PCustomListBox to allow native Motif code PStringListBox
313 Fixed problem with PSemaphore::Wait consuming 100% CPU under unix.
315 Changed semaphore.h inclusion to be dependent upon P_HAS_SEMAPHORE
318 Added pipe to thread to allow asynchronous abort of socket operations
321 Added define to only include semaphore libraries on Linux platform
323 Changed semantics of OnClose() to be the same as PTitledWindow in Win32.
325 Fixed problems with creating/deleting dialogs from background threads in
328 Fixed possible crash accessing IP addresses from SNMP tables in Win32.
330 Fixed bug in GetErrorText() occasionally returning incorrect empty
333 Fixed bug in SetDimensions() to allow for a window with a menu in Win32.
335 Added missing GetLength function for PComboBoxes in Win32.
340 Fixed error display for sound channels.
342 Added Windows version of PIPSocket::GetInterfaceTable() function.
344 Changed PTRACE so will output to system log in PServiceProcess
347 Fixed name space problem with PSYSTEMLOG() macro.
349 Allowed some Win32 only access to custom wave format in sound channel.
351 Changed PSemaphore to use Posix semaphores.
353 ASN Parser: Optimised CreateObject() switch statements, collapsing
356 ASN Parser: Fixed failure to put "using namespace" in every
362 Fixed usage of inlines in optimised version. Was not inlined.
364 Added ASN compiler #defines for backward support of pre GCC 2.9
367 Added ASN compiler #defines to reduce its memory footprint.
369 Added comparison operation to base ASN classes and compiled ASN
372 Added support for ANY type in ASN parser.
374 Fixed anomaly to always include non-optional extensions in
375 PER encodings of the ASN parser generated code.
377 Fixed ASN PER encoding problems for large integer values.
379 Fixed incorrect encoding of unknown extensions in ASN PER.
381 Fixed incorrect size of ASN PER OID if zero length encoded.
383 Added ability to get the host/port of the the last packet
384 read/written to UDP socket.
386 Added ability to listen to specific interfaces for IP sockets.
388 Added operator>> for PIPSocket::Address class.
390 Fixed problem with creating windows in background threads, not
391 happening until have a message sent.
393 Fixed problem with calling modal dialog from a background thread.
395 Fixed problem with GUI menu item stopping working on calling
398 Changes to aid in breaking I/O locks on thread termination. Still
399 needs more work especially in BSD!
401 Fixed problem with destroying PMutex that is already locked.
403 Fixed termination hang up problem with memory check code under unix
406 Added mutex in memory check detection code.
408 Added missing operator on smart pointer to return the pointer!
409 Cleaned up the smart pointer code (macros).
411 Added concatenation function to "base type" arrays.
413 Added "NoWin" option to prevent display of window in command
414 line commands of "Service Process" applications.
416 Added audio loopback psuedo-device (thanks Philip Edelbrock)
418 Fixed bug in display of PTimeIntervals larger than 24 hours.
420 Added missing unix paths include (esp. for VARRUN in svcproc)
422 Added support for libc5 and libc6 compiles under Linux (libc6
425 Fixed problem with EINTR causing sound channel reads and write
426 to fail, thanks to phil@netroedge.com!
432 Fixed bug when assigning negative number to a cosntrained
435 Fixed bug in encoding/decoding OID greater than 2.39 in PER and
438 Changed PASN_Choice cast operators in ASN generated code so no
439 longer "break" const-ness of object.
441 Fixed bug in encoding sequence of constrained primitive type in
442 ASN generated code, constraint not set.
444 Fixed bug in not emitting namespace use clause in ASN generated code.
446 Added "normalisation" of separate sequence of <base type> to be
447 single class in ASN generated code.
449 Fixed some 64 bit compatibility issues.
451 Fixed being able to cast an unsigned to a PTimeInterval.
453 Improved resolution of PTimer::Tick() to be millisecond accurate.
455 Rewite to compensate for linux OSS sensitivity to ioctl order.
456 Added code to allow full duplex audio.
458 Fixed build problems with not including oss.cxx in library if
461 Fixed bug in PFile::Copy, does not write last chunk of data to
464 Fixed bug when breaking block by closing the PSoundChannel in
467 Fixed bug in PThread::IsSuspended(), returned exactly the
470 Fixed bug in PFilePath::SetType finding dots outside of file
473 Portability issues, especially n BeOS (thanks Yuri!)
479 Fixed bug causing crashes on pass through of unknown extensions in
482 Fixed race condition on indirect channel close, mutex needed in
485 Fixed core dump problem with SIGINT/SIGTERM terminating process.
487 Fixed bug in not returning correct default recorder (waveIn) device
493 Improved tracing yet again. Now has options for adding timestamps,
494 thread ID etc to the trace output as well as the file/line number.
496 Fixed bug in the output code in ASN compiler for string constraints
497 under PER. They were not being set on the correct object causing
498 decode failures (usually via assert).
500 Added PConsoleChannel class to allow access to stdin/stdout/stderr
501 as a PWLib channel. Primarily this is for allow read from stdin to
502 not block the cooperative multithreading.
504 Fixed bug in printing PTimeInterval objects, would leave fll char
505 set to '0'. Also ignored stream width parameter.
511 Added better User Interface to make files.
513 Major ASN Parser enhancements for parameterised types etc.
515 Fixed problems with decoding of extensions (signed/unsigned bug)
518 Fixed date parsing to be forgiving of rubbish at end of date string.
519 Fixed problem with not stopping date parse at end of line.
520 Fixed PTime::GetHour() etc to not crash on time=-1.
522 Fixed ugly little bug in the cooperative multithreading that meant
523 that threads blocked on timers didn't always get rescheduled.
525 Changed channel output flush to remove double Write() call. This caused
526 problems on TCP/IP stuff getting a packet for the first byte and then
527 another pacet for the rest of the buffer.
529 Added retries to DNS lookup if get temporary error.
531 Fixed race condition in doing Select() on closed sockets. Could go
534 Added ability to open file as standard input, output and error streams.
536 Added function to get default audio device.
538 Added initialisers to string containers (list, sorted list and set).
544 Changed build to allow for 64 bit processors (Alpha port).
546 Minor changes to support egcs compiler.
548 Added SIGHUP and SIGWINCH handlers to increase and decrease the log
549 level respectively in a service (daemon) application.
554 Large numbers of changes to support automated documentation system
557 Utilised full grammar parsing for dates.
559 Simultaneous MSVC 6 and MSVC 5 compatibility.
561 Improved trace facility adding trace levels and #define to remove all
564 Various BeOS port modifications.
566 Fixed bug in IP access control lists compatibility with unix
567 hosts.allow and hosts.deny files.
569 Added support for UDP in SOCKS 5 classes.
571 Added [] operator PIPSocket::Address to get the bytes out of an IP
574 Fixed ability to have PMEMORY_CHECK on/off on both debug/release
577 Sound driver interface implementation to Linux OSS specification.
583 Very slack in not producing histories for earlier versions.
585 ------------------------------------------------------------------------------