-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathREADME.txt
269 lines (198 loc) · 11.5 KB
/
README.txt
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
libmba
A library of generic C modules
http://www.ioplex.com/~miallen/libmba/
Fri Apr 29 01:21:04 EDT 2005
libmba-0.9.1 released
Forgot ./ in front of mktool in Makefile and tcase/Makefile need -lutil. I
also fixed a typo and removed the mailing list links from the webpage.
Thu Apr 28 04:12:31 EDT 2005
libmba-0.9.0 released
Portability has been improved greatly. The library has been compiled and
tested (albeit not extensively) on OSF1, HP-UX, Linux, Mac OS X, and
FreeBSD with gcc, DECC, and aC++.
The bitset(3m) module macros have been converted to functions so that using
expressions as arguments (e.g. i++) does not result in undefined behavior.
Some semantics have also changed (e.g. return values are different).
A debug module has been added that provides some useful backtrace oriented
functions but it is not documented because it is specific GNUC on i386.
The linkedlist_insert_sorted function has been modified to support a
context parameter that is passed as-is to the supplied cmp_fn defined in
hashmap(3m). The <ident>compare_fn</ident> type has been removed.
The msgno(3m) module has been significantly reworked. The MSG, MNO, and MNF
macros have been renamed to MMSG, MMNO, and MMNF respectively to reduce
namespace collisions. There is no longer a dependance on variadic macros.
The code is now highly portable. The MSGNO macro is no longer used -- msgno
is now enabled at all times.
A path_name function has been added to the path(3m) module.
Some parameters of shellout(3m) function have been changed from unsigned
char to char.
The CSV module will now exclude carriage returns preceeding newlines in
elements.
A variety of bugfixes have been applied.
A SUBA_PTR_SIZE macro has been added to the suba(3m) module that evaluates
to the size of the cell backing the suba allocated object.
The SEM_UNDO flag has been been replaced with O_UNDO to avoid possible
collision with other O_* bits.
A varray_index function has been added.
Sat Aug 28 00:42:30 EDT 2004
libmba-0.8.10 released
Two minor bugs have been fixed in the csv module and the eval(3m) module
has been modified to support a user supplied context parameter. Also a
WIN32 build issue has been fixed -- libmba builds cleanly in Windows again
(debug options by default).
The bitset_find_first function will set errno to ENOENT if the target bit
is not found. The associated documentation has also been updated.
Some issues regarding the initialization of svsem semaphores have been
fixed. The module should now properly handle the initialization race
outlined in Stevens' UNPv2 in addition to the scenario where a semaphore is
removed during initialization.
Fri May 21 18:22:20 EDT 2004
libmba-0.8.9 released
The sho_loop function now acceptes a pattern vector and timeout like
sho_expect. The cfg module has been modified to more closely support Java
Properties escape sequences for spaces and Unicode characters.
Sat May 8 19:05:59 EDT 2004
libmba-0.8.8 released
The diff module has been added and the path module is now documented.
Wed Mar 10 02:01:51 EST 2004
libmba-0.8.5 released
The hashmap_remove function did not work as advertised and could cause
other functions to subsequently work improperly. The CSV functions now use
a flag instead of the trim parameter to permit controlling how quotes are
interpreted. To preserve the previous behavior it will now be necessary to
specify CSV_QUOTES. The domnode module has been deprecated. Libmba no
longer depends on Expat. Other modules are being considered for removal as
well. Previously the svcond_wait function could return without returning
reaquiring the lock if a signal was received. This bahavior has been
changed so that the function will return if a signal is recieved but will
not return without relocking the specified semaphore if the signal is
EINTR. This will likely need further adjustement but it satisfies my
current use cases.
Sat Jan 3 02:28:14 EST 2004
libmba-0.8.0 released
Three have been significant additions and changes. There are seven new
modules; allocator, suba, bitset, hashmap has been reimplemented, svsem,
svcond, and time. Many constructors now accept the specification of an
allocator. Many constructors and deconstructors have changed. Many ADTs can
be initialized from memory provided by the user and many function pointer
parameters have changed. There are "clean" functions (not completely
implemented yet) designed for use with the allocator's reclaim_fn.
Wed Oct 15 04:39:40 EDT 2003
libmba-0.7.0 released
Microsoft Windows support has been improved. The Win32 debug build now
properly creates DLLs with PDB information for listing source code after a
memory fault. The standard __cplusplus macro guards have been added. Macros
for prefixing __declspec(dllexport) directives have been added in favor of
an explicit DEF file. These changes have been performed during the
development of a non-trial MFC application so this release should work
smoothly in a Win32 or MFC environment. The text module appears to work as
advertised although a few adjustments have been made.
The csv module has been converted to support the text module text handling.
The multibyte function is now csv_row_parse_str, the wide character
function is csv_row_parse_wcs, and the csv_row_parse function is now a
macro that accepts tchar parameters. The prototypes of these functions have
also been changed to accept the specification of the separator that is used
(e.g. '\t' rather than ',').
A new eval module has been added that will "calculate" the value of an
expression such as '(5 + 3) * N', '(10+10-((10*10/11)|(10&10)))^0xFF78',
etc.
The msgno functions have been adjusted to perform better in environments
where variadic macros are not supported (e.g. MSVC).
Mon Aug 25 15:02:44 EDT 2003
libmba-0.6.15 released
There have been significant and pervasive changes however to emphasize that
all of these changes are binary compatible I have not incremented the major
version number. All code that uses the published interfaces of libmba
should work without modification.
The most significant change is the addition of src/mba/text.h which
contains many macros that abstract wide and multi-byte string functions.
Depending on whether or not USE_WCHAR is defined the string functions
defined in text.h will accept wide or multi-byte strings. This will permit
programs to run using wide character or local dependent multibyte text
behavior. Some of the libmba modules such as cfg have been converted to
support both wide and local dependent multi-byte text using the new tchar
typedef. Do not be alarmed that these prototypes have changed. Because this
typedef is defined as either unsigned char or wchar_t you can continue to
use these modules without using tchar at all. If however you choose to take
advantage of this new I18N functionality please read the following document
for important information:
http://www.ioplex.com/~miallen/libmba/dl/docs/ref/text_details.html
The test suite has been cleaned up considerably. Just run make followed by
the generated tmba program in the tcase directory to run all tests.
The build process has been formalized further. The code is now compiled
using -D_XOPEN_SOURCE=500 meaning SUSv2/UNIX98 but most of the code does
not require this standards level. In fact #ifdefs have been added to
consider lesser environments although they have not been thoroughly tested.
Finally, a path module has been introduced. Currently this module contains
one function; path_canon which canonicalizes a pathname. The state machine
design is very safe when given the full range of possible inputs (see
tcase/tests/data/PathCanonExamples.data).
Sat May 17 16:30:37 EDT 2003
Multiple bugs have been fixed in the csv module.
Mon May 5 23:44:43 EDT 2003
There have been siginificant bugs fixed and changes.
The iterate and next functions of the linkedlist, cfg (now documented),
hashmap, pool, stack, and varray modules now accept an iter_t object
defined in new mba/iterator.h header to hold the state of an iteration.
These modules now permit multiple iterators per object and are fully
reentrant.
The library has been profiled with ccmalloc. Several memory leaks have been
detected and repaired. The shellout module was not freeing the struct sho *
in sho_close. The linkedlist_insert_sorted function (now documented) did
not free a struct entry * if it was the first element and the replaced
parameter was specified. The cfg_store function did not close the file
pointer it opened. The cfg_del function did not delete the struct cfg *.
The linkedlist_remove_last function did not free the struct node * if the
list contained only one element.
The linkedlist_get function has been optimized for forward-sequential
access (an O(1) operation now whereas previously it was O(log N)). It may
also be faster for non-sequential access altough it will likely be slightly
slower for reverse-sequential access. A small cache of 2 elements is used
to save pointers recently accessed elements. The cache is adjustable with a
change to the source but 2 elements is probably optimal because it covers
the case of two nested iterators.
The linkedlist_insert_sorted function has been reviewed and documented as
an official part of the linkedlist interface. As mentioned previously a
memory leak in that function was found and fixed.
Tue Apr 29 16:08:21 EDT 2003
A csv module has been added. This module properly parses the CSV format in
that it can handle quoted elementes, quotes within quoted elements, and
commas and quotes withing quotes. It should be able to handle anything
exported by Excel or Gnumeric (but don't quote me on that :-)
Tue Apr 1 19:18:39 EST 2003
The varray module did not zero out the array pointing to allocated memory
chunks. This could lead to dereferencing an invalid pointer. The bug is
fixed in this release.
Sat Mar 22 04:51:01 EST 2003
libmba-0.5.0 released
This release introduces the varray module which is a "variable array" that
dynamically allocates storage in increasingly larger chunks are elements of
an index are accessed. The documentation has also been improved.
Fri Dec 20 00:30:32 EST 2002
libmba-0.4.7 released
A pool module has been added for reusing objects that are costly to create
like large buffers, database connections, etc.
Sat Nov 23 01:16:43 EST 2002
libmba-0.4.6 released
A symbol was left out of the MSVC .def file and a mailing list has been
established for questions, suggestions, and patches.
Sat Nov 16 17:53:42 EST 2002
libmba-0.4.5 released
A cfg module for loading and storing properties files has been added,
portability has been improved, and the web page, API reference, and man
pages are now generated with the CStyleX package. There have also been
numerous other small adjustments to the code.
--
INSTALLATION
Edit the 'prefix' line in the Makefile and run:
# make install
If you only require a select module, some can be
extracted from the package without too much work.
On other platforms it may only be necessary to adjust src/defines.h. With
everything turned off in defines.h the code is ANSI although natrually all
possible combinations have not been tested.
>>IMPORTANT<<
The msgno module is disabled by default. To activate it, define the MSGNO
macro before including the msgno.h header or set it with a -DMSGNO compiler
flag.
See README.win32 regarding Windows installation.