summaryrefslogtreecommitdiff
path: root/doc/changelog.txt
blob: ffe75c11e55ae5722bd1b212b383ffc8d7bb7cce (plain)
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

v3.25 (2020-05-14)
==================
Fixes:
* string: fix out-of-bounds access when calling HX_strlcpy(x,y,0)
Changes:
* string: HX_split4 renamed to HX_split_inplace
* string: HX_split5 renamed to HX_split_fixed
* defs.h: removed partially implementation of FIELD_SIZEOF
* defs.h: removed custom offsetof definition; you will need to include
  <stddef.h> or <cstddef> now.


v3.24 (2018-10-17)
==================
Fixes:
- defs: avoid compiler warning when using HX_list_for_each when used in C++
- opt: synchronize HXOPT_AUTOHELP C behavior to C++ mode


v3.23 (2018-08-28)
==================
Enhancements:
- opt: the option parser now recognizes long option abbreviations
- io: use modern readdir rather than readdir_r


v3.22 (2014-08-25)
==================
Enhancements:
- string: add the HXQUOTE_SQLBQUOTE quoting variant


v3.21 (2014-06-02)
==================
Enhancements:
- HXformat_add() now supports HXTYPE_MCSTR objects (with and without
  HXTYPE_IMMED)
- libxml_helper: New xml_getnsprop() function that gets the value of a
  property (element attribute) by namespace prefix


v3.20 (2014-04-18)
==================
Enhancements:
- resolve some link errors when built with Solaris ld


v3.19 (2014-02-21)
==================
Enhancements:
- string: add the HXQUOTE_SQLSQUOTE quoting variant
Internal changes:
- format: rework function calling code to support extending with functions


v3.18 (2014-03-01)
==================
Enhancements:
- string: add the HX_stpltrim function
Fixes:
- Make HX_strltrim move the correct number of bytes
Changes:
- remove wxCFF from wx_helper.hpp


v3.17 (2013-11-16)
==================
Enhancements:
- defs: add HX_SIZET_FMT and HX_LONGLONG_FMT
- support for Win64
Fixes:
- compile warnings on mingw were addressed


v3.16 (2013-09-29)
==================
Enhancements:
- format: remove 256-char format key length limit
Fixes:
- compile errors on mingw were addressed


v3.15 (2013-03-07)
==================
Enhancements:
- string: add HX_strchr2
- string: add HXQUOTE_URIENC mechanism for HX_strquote
Changes:
- defs: HXsizeof_member becomes FIELD_SIZEOF
  (to match the Linux kernel's macro name)


v3.14.1 (2012-12-31)
====================
Fixes:
- Restore forward-sorting order of ordered maps
  (revert "map: always have needle as second argument")


v3.14 (2012-11-14)
==================
Fixes:
- io: use pathconf(3) to determine dirent size for dir traversal
- rand: avoid division by zero when calling HX_irand with lo==hi
- time: use C++ static_cast syntax for C++ mode
- headers: improve operability with C89 compile mode


v3.13 (2012-07-28)
==================
Enhancements:
- defs: add DEMOTE_TO_PTR
- option: new HXOPT_RQ_ORDER flag, allows unconditional POSIX-style parsing
  (parsing terminates at first non-option encountered)
- option: add HXTYPE_SIZE_T
- time: add functions and macros for arithmetic and handling of timespec
  with support for negative time values
  * time: add HX_TIMESPEC_{EXP,FMT}
  * time: add HX_TIMEVAL_{EXP,FMT}
  * time: add the HX_timespec_isneg function
  * time: add the HX_timespec_neg function
  * time: add the HX_timespec_add function
  * time: add the HX_timespec_mul function
  * time: add the HX_timespec_mulf function
Changes:
- io: remove HX_REALPATH_SYMLINK
- time: rename HX_diff_timespec to HX_timespec_sub (old ABI kept)
- time: rename HX_diff_timeval to HX_timeval_sub (old ABI kept)
- string: make HX_memmem consider the special case of search_length=0
- string: optimize search_length=1 case in HX_memmem
- string: speed up HX_memmem searches for search_length >=2


v3.12.1 (2011-12-15)
====================
Fixes:
- build: make build error-free when using -Wl,--no-undefined
- string: make HX_strdup(NULL) valid again


v3.12 (2010-12-03)
==================
Fixes:
- defs: resolve warning for users of const_cast*() when using -Wextra
- format: error handling for HXformat2_aprintf
- option: do not omit dashes when passthru'ing unknown two-part long opts
- option: do not omit arg following unknown unknown two-part long opts in pthru
- option: do run callback on HXTYPE_BOOL
- option: correct passthrough of squashed unknown short options
- option: do not stop early when printing help/usage
- option: avoid crash when passing an empty argv
- option: avoid crash when passing NULL for struct HXoptcb.arg0
Enhancements:
- build: deactivate type-checking of the *_cast() macros for clang due to a
  compiler bug involving nested structs-in-typeofs
- option: allow argc=NULL on HX_getopt
- option: error handling for HX_getopt
- option: support POSIXLY_CORRECT environment variable
- string: add a HX_strndup function
- string: add a HX_strnlen function
- mc: use an implicit minimum allocated length
Changes:
- format: renamed HXformat2_[afs]printf back to HXformat_[afs]printf
- io: add mode argument to HX_mkdir
- map: avoid 1<<31 in constants
- option: remove struct HXoptcb.arg0
- option: remove struct HXoptcb.match_{ln,sh} by .flags
- option: let HX_getopt return code indicate system failure states
- option: remove struct HXoption.sval (replaced by .uptr)
- string: unline HX_strdup, HX_strlcat, HX_strlcpy, HX_strnlcat


v3.11 (2011-07-25)
==================
Enhancements:
- A LD_PRELOAD-able library libHX_rtcheck.so that adds global state correctness
  checks, was added.
- add a HXQUOTE_BASE64 to HX_strquote
Changes:
- HX_strquote will return NULL for unknown types now instead of just
  returning the input pointer


v3.10.1 (2011-04-06)
====================
Fixes:
- defs: BUILD_BUG_ON_EXPR had erroneously returned 1


v3.10 (2011-04-05)
==================
Fixes:
- build: resolve autoconf-2.68 warnings
- format: do not split arguments in %(lower) and %(upper)
Changes:
- defs: add array type checking in ARRAY_SIZE
- opt: use non-zero sentinel marker
- string: make HX_getl more resilient against errors
Enhancements:
- defs: add BUILD_BUG_ON_EXPR
- format: provide a %(substr) function
- io: add HX_readlink (zero-terminating mc-output readlink)
- io: add HX_realpath (supports relative-path output)


v3.9.1 (2011-01-17)
===================
Fixes:
- libHX/io.h was not copied on `make install`, which has been fixed


v3.9 (2011-01-15)
=================
Fixes:
- Added missing __cplusplus guards to libHX/io.h
- Added missing includes to libHX/string.h
- Use __typeof__ in includes
Changes:
- For filesystem/filehandle-related functions, io.h should now be included
  in userspace programs instead of misc.h
- libHX.so is now built with a symvers map file
Enhancements:
- hxdirstamp: new development helper program for library users
  (Note to distros: should be in libHX-devel; it is only used during builds)
- io: new functions HXio_full{read,write}


v3.8 (2010-12-01)
=================
This was supposed to go into 3.7 but I forgot to merge in time..
Changes:
- hexdump: colorize characters 0x00 thru 0x1F in tty mode


v3.7 (2010-12-01)
=================
Changes:
- libxml_helper: redo xml_newnode to take a parent and value string
- list: unify naming of reverse-direction functions
- misc: HX_zveclen now returns unsigned from (previous: int)
- dir: HXdir functions now work with struct HXdir * instead of void *
Fixes:
- list: avoid potential shadow warning when using HXclist_{shift,pop}
Enhancements:
- doc: add doc/api.txt that lists the minimum required versions for symbols


v3.6 (2010-08-16)
=================
Fixed:
- bitmap: set/clear/test had no effect due to wrong type selection
- bitmap: avoid left-shift larger than type on 64-bit
- string: fixed buffer overflow in HX_split when too few fields were present
  in the input


v3.5 (2010-08-01)
=================
Fixed:
- format2: failure to skip escaped char in "%(echo foo\ bar)" was corrected
- proc: properly check for HXPROC_STDx--HXPROC_STDx_NULL overlap
- strquote: do not cause allocation with invalid format numbers
Enhancements:
- format2: add the %(exec) function
- format2: add the %(shell) function
- format2: security feature for %(exec) and %(shell)
- format2: add the %(snl) function
- string: HX_strquote gained HXQUOTE_LDAPFLT (LDAP search filter) support
- string: HX_strquote gained HXQUOTE_LDAPRDN (LDAP relative DN) support
Changes:
- format1: removed older formatter in favor of format2
- format2: add check for empty key
- format2: function-specific delimiters
- format2: do nest-counting even with normal parentheses
- format2: check for zero-argument function calls
- hashmap: do not needlessy change TID when no reshape was done
- string: HX_basename (the fast variant) now recognizes the root directory
- string: HX_basename now returns the trailing component with slashes
  instead of everything after the last slash (which may have been nothing)


v3.4 (2010-04-03)
=================
Changes:
- add explicit initialize/deinitialize functions HX_init, HX_exit
Enhancements:
- add the HX_memmem function
- add the HXlist_empty function
- documentation updates: HXlist traversal


v3.3 (2010-01-20)
=================
Bug fixes:
- format: fix incorrect copying of non-expanded % strings
- proc: avoid calling close(-1) to not trip up valgrind
- shconfig: fix incorrect parsing of "\'"
- shconfig: fix incorrect processing of "\"\\\0BCD"
- shconfig: be more strict with syntax
Enhancements:
- deque: add HXdeque_genocide2
- format2: new format string (make-style) support
- mc: add HXmc_zvecfree
- shconfig: add HX_shconfig_map to return all entries of a shconfig file
- rand: add HX_drand ('double'-type bounds and return value)
- rand: avoid some function call overhead in HX_irand


v3.2 (2009-10-11)
=================
Enhancements:
- opt: add HXTYPE_MCSTR for storing into hxmc_t *s
- string: add HX_strquote


v3.1 (2009-09-13)
=================
Enhancements:
- added HXbitmap_* functions
Fixes:
- mc: HXmc_strcpy produced a zero-length string when NULL was copied


v3.0.1 (2009-08-31)
===================
Fixes:
- map: avoid underflow in value-based tree comparison


v3.0 (2009-08-27)
=================
Changes:
- automatically skip building testcases if C++ compiler not available
  (reminder: libHX itself does not require a C++ compiler)
- arbtree: HXbtree was removed in favor of the new HXmap
- clist: clist.h moved into list.h
- format: HXformat_* now uses struct HXformat_map,
  so that it does not tie itself to HXbtree
- mc: fix an alignment-induced overallocation
- rand: use faster modulo-based variant for numbers within RAND_MAX range
- rand: use libc rand() almost exclusively, only use /dev/urandom for seed
Enhancements:
- defs: add HXsizeof_member and HXtypeof_member
- map: new map API, with hash-based maps and classic rbtree-based maps
- time: add time delta functions (HX_diff_timeval/HX_diff_timespec)
Fixes:
- format: memory leaks fixes in HXformat


v2.9 (2009-07-11)
=================
Fixes:
- string: fixed number of fields and trailing NULL in HX_split4
Enhancements:
- string: add HX_basename_exact


v2.8 (2009-07-01)
=================
Enhancements:
- HXproc now knows about HXPROC_NULL_*, which can be used to discard I/O
- HXproc: expressly prohibit HXPROC_STD* for HXproc_run_sync


v2.7 (2009-04-08)
=================
Fixes:
- install missing wx_helper.hpp


v2.6 (2009-03-28)
=================
Documentation:
- install documentation
- update project URLs
- add section about Miscellaneous functions
Changes:
- arbtree: add "flat view" operation
- misc: added HX_fls
- misc: make HX_time_compare otime-capable
- add wx_helper.hpp


v2.5 (2009-02-11)
=================
Fixes:
- proc: fix fd setup when the standard channels are already closed


v2.4 (2009-02-05)
=================
Documentation updates. A few internal cleanups, nothing user-visible.


v2.3 (2009-01-13)
=================
Fixes:
- defs: only use __builtin_offsetof with GCC >= 4
- misc: fix time_compare on FreeBSD to actually use mtimespec
- mc: handle HXmc_length(NULL)
- dir: do not cause directory traversal to restart after 2^32 entries


v2.2 (2009-01-01)
=================
Fixes:
- defs/cast: avoid warning between conversion from type[] to type *
- defs/cast: add fallback defs for const_castN()
- arbtree: correctly set errno (to ENOENT) in HXbtree_find and _get
- string: document behavior details of HX_basename

Changes:
- removed old HX_vfsystem

Enhancements:
- defs: add HXSIZEOF_Z*
- defs: add HX_STRINGIFY
- proc: initial code
- string: add HX_split4 function


v2.1 (2008-12-23)
=================
- defs: fix bogus offsetof macro for non-GCC
- defs: add a pair of guarding parentheses in static_cast()
- doc: generate PDF file from LyX document


v2.0 (2008-12-23)
=================
Fixes:
- arbtree: reject illegal flag combinations
- arbtree: correctly set errno in HXbtree_find and HXbtree_get
- arbtree: do not return dangling pointer in HXbtree_del
- defs: add a working offsetof() and containerof() for C++ mode
- defs: use GCC's __builtin_offsetof
- defs: resolve warnings with signed_cast() for char* -> const char* conversions
- dir: HX_rrmdir: do not stop on error
- opt: fix interpretation of strings during conversion to bool
  (all strings that were not empty and not 0 were interpreted as "true",
  and this included the strings "no", "off" and "false", which should
  actually have mapped to, well, "false".)
- rand: use autoconf to detect presence of unix functions
- string: replace HX_strrev implementation by one that does not allocate


New feature: Type-checking casts.
- defs: enable type-checking signed_cast()
- defs: add signed_cast<> for C++ mode
- defs: rewrite static_cast() to not cause -Wshadow warnings when nested
- defs: rewrite const_cast() to do type checking
  (actually, const_cast1(), cosnt_cast2() and const_cast3() were introduced.
  const_cast() is kept to not break program compilation.)


New misc code:
- ctype_helper: initial version
- deque: add struct HXdeque_node->char *sptr as a typed variant for ptr
- mc: add HXmc_setlen()
- opt: HXTYPE_BOOL and HXTYPE_NONE now take int * (instead of unsigned int *)


New arbtree code:
- arbtree: add struct HXbtree_node->char *skey and char *sdata
- arbtree: support arbitrary key/data duplication
- arbtree: add HXbtree_init2


Removals:
- mc: remove HXmc_dup
  [you can use HXmc_meminit(old, HXmc_length(old))]
- string: HX_strmid behavior changed for length=0
  [no more "remaining string", now returns a zero-length string]


v1.28 (2008-11-18)
==================
- add HXTYPE_{U,}INT{8,16,32,64}
- add includedir to cflags (libHX.pc)


v1.27 (2008-12-23)
==================
No functional changes for Linux platforms.

- build: fixed compile errors with i586-mingw32msvc cross compile
- regenerated the Makefile.in files in the tarball with an updated
  version of automake-tranquility so that they are now
  POSIX-compliant and work with BSD make


v1.26 (2008-10-12)
==================
- add HX_hexdump() for debugging within programs
- fix double free in the error path of HX_getopt() when a long option preceded
  a short option of which the latter had problems (i.e. missing argument)
- add actual typechecking to signed_cast()
- add typechecking to static_cast(),
  (but this is normally disabled to avoid compile interruption)


v1.25 (2008-09-07)
==================
- install missing misc.h
- HXmc: pointer was not automatically updated after hmc_trunc()
- HXmc: rename functions and put them into the HX* namespace (API change)
- HXmc: make code resistant to memory allocation failure


v1.23 (2008-09-02)
==================
- code cleanup: misc.h has been split off libHX.h
- add defs.h


v1.22 (2008-07-16)
==================
- need to use lstat() on directory operations such as mkdir and rrmdir
- use RTLD_LAZY when opening dynamic libraries
- add libxml_helper


v1.18 (2008-06-10)
==================
- implement reverse iterating through HXlist
- remove deprecated HXlist_init_head() and HXclist_init_head()
  [replaced by HXlist_init() and HXclist_init()]
- added HX_ffs()


v1.17 (2008-05-08)
==================
- HXlist: added HXlist_for_each_safe, HXlist_for_each_entry_safe
- HXclist: added HXclist_del


v1.15 (2008-04-04)
==================
- HXformat: add %(ifempty) and %(ifnempty) tags
- libHX.h: split into {arbtree,deque,option,string}.h (and libHX.h)
- Add inline-doubly-linked-list data structures


v1.10.2 (2007-12-06)
====================
- [r105]: pass up NULL from memory allocation error
- [r108]: only return success on EEXIST when HXF_KEEP was given
- [r112]: HX_dirname() incorrectly computed the path


v1.10.1 (2007-09-17)
====================
- [r96]: Fix output of line-wrapped help text
- tarball: in libHX 1.10.0 I forgot to provide the configure - sorry
  (but you could regenerate it using ./autogen.sh if you have autotools)