* tower.c: Cache repeated lookups of a single tower element. This
[pspp-builds.git] / src / libpspp / ChangeLog
1 2007-06-03  Ben Pfaff  <blp@gnu.org>
2
3         * tower.c: Cache repeated lookups of a single tower element.  This
4         turns such lookups into O(1) operations without harming the big-O
5         of other operations.
6
7         * tower.h (struct tower): Add members for caching.
8
9         * range-set.c (range_set_clone): New function.
10
11         * array.c (insert_range): New function.
12         (insert_element): New function.
13         (move_range): New function.
14
15 2007-04-25  Ben Pfaff  <blp@gnu.org>
16
17         * model-checker.c: Don't use type sighandler_t, which is a GNU
18         extension.  Reported by "Daniel E WILLIAMS"
19         <Daniel.E.Williams@state.or.us>.
20
21 2007-04-25 John Darrington <john@darrington.wattle.id.au>
22
23         * i18n.c: Fixed bug converting long strings
24
25 2007-04-22  Ben Pfaff  <blp@gnu.org>
26
27         Patch #5884.
28         
29         * ll.h (ll_for_each_reverse): New macro.
30         (ll_for_each_reverse_continue): New macro.
31         (ll_for_each_reverse_safe): New macro.
32         (ll_for_each_safe_reverse_continue): New macro.
33         (ll_for_each_reverse_preremove): New macro.
34         (ll_for_each_reverse_postremove): New macro.
35         (ll_remove__): Removed (dead code).
36         (ll_tail__): New macro.
37         (ll_prev__): New macro.
38
39 2007-04-22  Ben Pfaff  <blp@gnu.org>
40
41         Implement model checker for testing purposes.
42
43         Patch #5873.
44         
45         * automake.mk (src_libpspp_libpspp_a_SOURCES): Add
46         model-checker.[ch].  Alphabetize.
47
48         * model-checker.c: New file.
49
50         * model-checker.h: New file.
51
52 2007-04-03  Ben Pfaff  <blp@gnu.org>
53
54         Apply patches #5828, #5837, #5841, #5843.
55
56         * abt.c (insert_relative): New function.
57         (abt_insert_after): New function.
58         (abt_insert_before): New function.
59
60         * range-map.c: New file.
61
62         * range-map.h: New file.
63
64         * range-set.c: New file.
65
66         * range-set.h: New file.
67
68         * tower.c: New file.
69
70         * tower.h: New file.
71
72 2007-04-01  Ben Pfaff  <blp@gnu.org>
73
74         * bt.c: Need #include <limits.h>.  Thanks to "John McCabe-Dansted"
75         <gmatht@gmail.com> for pointing this out.
76
77 2007-03-31  Ben Pfaff  <blp@gnu.org>
78
79         Patch #5827.
80
81         * automake.mk (src_libpspp_libpspp_a_SOURCES): Add bt.c.
82
83         * bt.h: New file.
84
85         * bt.c: New file.
86
87 2007-03-30  Ben Pfaff  <blp@gnu.org>
88
89         Patch #5829.
90
91         * automake.mk (src_libpspp_libpspp_a_SOURCES): Add deque.c.
92
93         * deque.h: Completely rewrote.  Adapted client to new interface.
94
95         * deque.c: New file.
96
97 2007-03-25  Ben Pfaff  <blp@gnu.org>
98
99         * automake.mk (src_libpspp_libpspp_a_SOURCES): Add
100         sparse-array.[ch].
101
102         * pool.c (pool_zalloc): New function.
103         (pool_calloc): New function.
104
105         * sparse-array.c: New file.
106
107         * sparse-array.h: New file.
108
109 Mon Mar  5 20:55:49 CET 2007 John Darrington <john@darrington.wattle.id.au>
110
111         * i18n.c: Cast second argument of iconv using ICONV_CONST
112
113 2007-02-22  Ben Pfaff  <blp@gnu.org>
114
115         * string.h: Don't include vsnprintf.h any more, because gnulib has
116         now absorbed it into string.h.
117
118 Thu Feb 22 12:25:52 CET 2007 John Darrington <john@darrington.wattle.id.au>
119
120         * syntax-gen.h syntax-gen.c: New files.
121
122 Sun Feb 18 11:21:41 2007  Ben Pfaff  <blp@gnu.org>
123
124         * alloc.h: Remove useless parentheses in #if "defined" operator.
125
126         * misc.h: Ditto.
127
128 Tue Feb  6 20:00:13 2007  Ben Pfaff  <blp@gnu.org>
129
130         * misc.h [!HAVE_ISINF] (isinf): Define only if isinf is not
131         defined as a macro, because mingw seems to have the macro without
132         the function.
133         [!HAVE_ISNAN] (isnan): Ditto, for symmetry only.
134         [!AHVE_FINITE] (finite): Ditto, for symmetry only.
135
136 Tue Feb  6 19:58:46 2007  Ben Pfaff  <blp@gnu.org>
137
138         * compiler.h (PRINTF_FORMAT): Use __printf__ instead of printf to
139         avoid problem with "#define printf libintl_printf" that libintl is
140         fond of doing.
141         (SCANF_FORMAT): Ditto, for symmetry only.
142
143 Tue Feb  6 19:47:10 2007  Ben Pfaff  <blp@gnu.org>
144
145         * float-format.h: [FPREP_IEEE754] [WORDS_BIGENDIAN] Add missing
146         comma.
147
148 Wed Jan 24 21:13:32 2007  Ben Pfaff  <blp@gnu.org>
149
150         * abt.c: New file.
151
152         * abt.h: New file.
153
154         * automake.mk: Add abt.c, abt.h to sources.
155
156 Sun Jan 14 21:44:18 2007  Ben Pfaff  <blp@gnu.org>
157
158         * automake.mk: Add deque.h to sources.
159         
160         * deque.h: New file.
161
162 Wed Jan 10 06:49:38 2007  Ben Pfaff  <blp@gnu.org>
163
164         * automake.mk: Add heap.c, heap.h to sources.
165
166         * heap.c: New file.
167
168         * heap.h: New file.
169
170 Sun Dec 10 13:54:03 2006  Ben Pfaff  <blp@gnu.org>
171
172         * str.c (ss_tokenize): Skip the first delimiter character
173         following the token.  Otherwise, changing delimiters from token to
174         token can't have a sensible effect, because we'll get the previous
175         delimiter as part of the next token.
176         (ss_match_string): New function.
177
178 Sat Dec  9 18:48:55 2006  Ben Pfaff  <blp@gnu.org>
179
180         * misc.h (macro range): Removed, as it was unused.
181
182 Sat Dec  9 07:19:01 WST 2006 John Darrington <john@darrington.wattle.id.au>
183
184         * array.c: Removed gratuitous #include
185
186 Thu Dec  7 20:33:23 WST 2006 John Darrington <john@darrington.wattle.id.au>
187
188         * getl.c getl.h : Changed signature of create function to take a 
189         string indicating the initial include path.
190
191 Sun Dec  3 11:36:10 2006  Ben Pfaff  <blp@gnu.org>
192
193         * str.h (SS_LITERAL_INITIALIZER): Cast the string literal to "char
194         *".  This normally does nothing but when GCC's -Wwrite-strings is
195         used it fixes a warning that otherwise can't be avoided.
196
197 Sun Dec  3 11:35:35 2006  Ben Pfaff  <blp@gnu.org>
198
199         * str.c (ss_alloc_substring_pool): New function.
200         (ss_alloc_uninit_pool) New function.
201
202 Sun Dec  3 11:28:06 2006  Ben Pfaff  <blp@gnu.org>
203
204         * getl.h: (enum getl_syntax) New enumeration to distinguish
205         between "batch" and "interactive" in a clearer way than a bool.
206         (struct getl_interface) Add an arg to "read" to return the
207         intended syntax mode.  Add an arg to "filter" to specify the
208         syntax mode of the line to filter.
209
210         * getl.c (do_read_line): Instead of returning the syntax type of
211         the line read based on whether the source itself is interactive,
212         return it based on whether the line itself should be treated as
213         having batch or interactive syntax.  Also, adapt interface to the
214         new interfaces of lex_init() and getl_interface.
215
216 Wed Nov 29 19:35:44 WST 2006 John Darrington <john@darrington.wattle.id.au>
217
218         * getl.c getl.h: New files. Created interface from base of 
219         language/line-buffer.[ch]
220
221         * msg-locator.c msg-locator.h: New files. Moved from
222         language/line-buffer.[ch]
223
224 Fri Nov 24 17:27:00 2006  Ben Pfaff  <blp@gnu.org>
225
226         * misc.h: (min) Removed.  All references updated to use MIN, from
227         minmax.h provided by gnulib.
228         (max) Ditto (for MAX).
229
230 Sun Nov 19 09:22:26 2006  Ben Pfaff  <blp@gnu.org>
231
232         * str.c (ss_get_long): New function.
233         (ss_compare_case) Ditto.
234         (ss_equals) Ditto.
235         (ss_equals_case) Ditto.
236
237 Tue Oct 31 19:28:19 2006  Ben Pfaff  <blp@gnu.org>
238
239         * str.h: [!HAVE_STRCHR] Drop compatibility code, because now we
240         assume a C89 compliant library.  (Gnulib makes this assumption so
241         we might as well too.)
242         [!HAVE_STRRCHR] Ditto.
243
244 Thu Oct 26 20:19:50 2006  Ben Pfaff  <blp@gnu.org>
245
246         * automake.mk: Add the new files.
247
248         * legacy-encoding.c: New file.
249
250         * legacy-encoding.h: New file.
251
252         * float-format.c: New file.
253
254         * float-format.h: New file.
255
256         * integer-format.c: New file.
257
258         * integer-format.h: New file.
259
260 Sun Oct 15 09:49:50 WST 2006 John Darrington <john@darrington.wattle.id.au>
261
262         * hash.c hash.h: Added hsh_create_pool, a hash which uses a pool
263         for its memory allocation.
264
265 Mon Jul 31 15:49:46 2006  Ben Pfaff  <blp@gnu.org>
266
267         * compiler.h: (macro CONST_FUNCTION) New macro.
268         (macro PURE_FUNCTION) New macro.
269
270 Sun Jul 16 21:07:35 2006  Ben Pfaff  <blp@gnu.org>
271
272         * message.c: (static int messages_disabled) New variable.
273         (msg_emit) Don't emit the message if messages are disabled.
274         (msg_disable) New function.
275         (msg_enable) New function.
276
277         * str.c: (free_string) New function.
278         (ds_register_pool) New function.
279         (ds_unregister_pool) New function.
280         (ds_set_length) New function.
281
282 Mon Jul 10 17:26:58 WST 2006 John Darrington <john@darrington.wattle.id.au>
283
284         * llx.c: #included compiler.h and removed explicit preprocessor cruft.
285
286 Fri Jul  7 20:01:26 2006  Ben Pfaff  <blp@gnu.org>
287
288         * automake.mk: (src_libpspp_libpspp_a_SOURCES) Add assertion.h.
289         
290         * assertion.h: New file.  Replaced usage of assert(0) and abort()
291         with NOT_REACHED() from this file throughout the source tree.
292
293         * message.c: (request_bug_report_and_abort) Revise message printed
294         to include request to include lines above the message, which
295         should include an assertion failure message in many cases.
296         (msg_assert_fail) Removed.
297
298         * message.h: (assert) Removed.
299         (request_bug_report_and_abort) Mark NO_RETURN.
300
301 Mon Jul  3 09:36:42 WST 2006 John Darrington <john@darrington.wattle.id.au>
302
303         * i18n.c: Made character conversion tolerant of failure to create the 
304         necessary iconv structs.
305
306 Sat Jul  1 15:32:54 2006  Ben Pfaff  <blp@gnu.org>
307
308         * automake.mk: (src_libpspp_libpspp_a_SOURCES) Add new files.
309
310         * ll.c: New file.
311
312         * ll.h: New file.
313
314         * llx.c: New file.
315
316         * llx.h: New file.
317
318 Sun Jun 25 22:35:28 2006  Ben Pfaff  <blp@gnu.org>
319
320         Optimize rehashing: we know that none of the entries in the hash
321         table are equal, so we need not compare them to each other during
322         rehashing.
323         
324         * hash.c: (locate_empty_entry) New function.
325         (rehash) Use locate_empty_entry() instead of
326         locate_matching_entry().
327
328 Fri Jun  9 14:03:29 2006  Ben Pfaff  <blp@gnu.org>
329
330         Reform string library.
331         
332         * str.c (ss_empty): New function.  Replaces some uses of ls_init()
333         or ls_null().
334         (ss_cstr) New function.  Replaces some uses of ls_init().
335         (ss_buffer) New function.  Replaces some uses of ls_init().
336         (ss_substr) New function.
337         (ss_head) New function.
338         (ss_tail) New function.
339         (ss_alloc_substring) New function.  Replaces use of ls_create().
340         (ss_alloc_uninit) New function.
341         (ss_dealloc) New function.  Replaces use of ls_destroy().
342         (ss_truncate) New function.
343         (ss_rtrim) New function.
344         (ss_ltrim) New function.
345         (ss_trim) New function.
346         (ss_chomp) New function.
347         (ss_separate) New function.
348         (ss_tokenize) New function.
349         (ss_advance) New function.
350         (ds_create) Renamed ds_init_cstr().  Updated all callers.
351         (ss_match_char) New function.
352         (ss_get_char) New function.
353         (ss_get_until) New function.
354         (ss_get_chars) New function.
355         (ss_is_empty) New function.
356         (ss_length) New function.  Replaces ls_length().
357         (ss_data) New function.  Replaces many uses of ls_c_str().
358         (ss_end) New function.  Replaces ls_end().
359         (ss_at) New function.
360         (ss_first) New function.
361         (ss_last) New function.
362         (ss_span) New function.
363         (ss_cspan) New function.
364         (ss_compare) New function.
365         (ss_pointer_to_position) New function.
366         (ss_xstrdup) New function.
367         (ds_init) Renamed ds_init_empty().  All callers updated.
368         (ds_init_string) New function.
369         (ds_init_substring) Changed interface to take a struct substring.
370         Updated all callers.
371         (ds_init_cstr) New function.  Replaces ds_create().  All callers
372         updated.
373         (ds_assign_substring) Changed interface to take a struct
374         substring.  Updated all callers.
375         (ds_assign_buffer) Removed.  Changed all callers to use
376         ds_assign_substring().
377         (ds_assign_c_str) Renamed ds_assign_cstr().  All callers updated.
378         (ds_ss) New function.
379         (ds_substr) New function.
380         (ds_head) New function.
381         (ds_tail) New function.
382         (ds_rtrim) New function.  Replaces ds_rtrim_spaces().  All callers
383         updated.
384         (ds_ltrim) New function.  Replaces ds_ltrim_spaces().  All callers
385         updated.
386         (ds_trim) New function.  Replaces ds_trim_spaces().  All callers
387         updated.
388         (ds_rtrim_spaces) Removed.
389         (ds_ltrim_spaces) Removed.
390         (ds_trim_spaces) Removed.
391         (ds_separate) Changed interface to use substrings.  All callers
392         updated.
393         (ds_tokenize) Changed interface to use substrings.  All callers
394         updated.
395         (ds_c_str) Renamed ds_cstr().  All callers updated.
396         (ds_span) Changed interface to use substring for SKIP_SET and
397         dropped OFS.  All callers updated.
398         (ds_cspan) Changed interface to use substring for STOP_SET and
399         dropped OFS.  All callers updated.
400         (ds_find_char) New function.
401         (ds_compare) New function.
402         (ds_pointer_to_position) New function.
403         (ds_xstrdup) New function.  Replaced all users of
404         xstrdup(ds_c_str(s)) by a call to this function.
405         (ds_gets) Renamed ds_read_line().  All callers updated.
406         (ds_get_config_line) Renamed ds_read_config_line().  All callers
407         updated.
408         (ds_puts) Renamed ds_put_cstr().  All callers updated.
409         (ds_put_substring) New function.  Replaces ds_concat().  All
410         callers updated.
411         (ds_concat) Removed.
412         (ds_append_uninit) Renamed ds_put_uninit().  All callers updated.
413         (ds_printf) Renamed ds_put_format().  All callers updated.
414         (ds_vprintf) Renamed ds_put_vformat().  All callers updated.
415         (ds_putc) Renamed ds_put_char().  All callers updated.
416         (ds_putc_multiple) Renamed ds_put_char_multiple().  All callers
417         updated.
418         (ls_create) Removed.  Replaced by ss_alloc_substring().
419         (ls_create_buffer) Removed.  Replaced by ss_alloc_substring().
420         (ls_init) Removed.  Replaced by ss_buffer().
421         (ls_shallow_copy) Removed.  Just use assignment.
422         (ls_destroy) Removed.  Replaced by ss_dealloc().
423         (ls_null) Removed.
424         (ls_null_p) Removed.
425         (ls_empty_p) Removed.  Replaced by ss_is_empty().
426         (ls_c_str) Removed.
427         (ls_end) Removed.  Replaced by ss_end().
428
429         * str.h (struct fixed_string): Renamed struct substring, updated
430         all users.
431         (CC_SPACES) New macro.
432         (CC_DIGITS) Ditto.
433         (CC_XDIGITS) Ditto.
434         (CC_LETTERS) Ditto.
435         (CC_ALNUM) Ditto.
436         (SS_EMPTY_INITIALIZER) Ditto.
437         (SS_LITERAL_INITIALIZER) Ditto.
438         (struct string) Removed string, length members.  Add substring
439         member.
440         (DS_INITIALIZER) Rename DS_EMPTY_INITIALIZER.
441
442 Tue May 30 19:45:12 WST 2006 John Darrington <john@darrington.wattle.id.au>
443
444         * i18n.c i18n.h: New files.
445
446 Tue May 16 06:50:35 2006  Ben Pfaff  <blp@gnu.org>
447
448         * automake.mk (src/libpspp/version.c): Removed groff_font_path,
449         which is no longer used.
450
451         * message.c (request_bug_report_and_abort): Don't print
452         groff_font_path, which no longer exists.
453
454         * version.h (locale_dir): Removed groff_font_path.
455
456 Sun May 14 22:06:53 2006  Ben Pfaff  <blp@gnu.org>
457
458         * str.c (spprintf): Moved definition of spprintf() here, from
459         str.h.
460
461         * str.h: (nsprintf) Removed.  Changed all users to use sprintf()
462         instead.
463         (nvsprintf) Removed.  Changed all users to use vsprintf() instead.
464
465 Sun May 14 20:52:20 2006  Ben Pfaff  <blp@gnu.org>
466
467         * str.c (ds_init): Remove `capacity' argument and just initialize
468         the string to a capacity of zero.  Updated all callers.
469
470 Tue May  9 09:56:57 2006  Ben Pfaff  <blp@gnu.org>
471
472         * va_copy.h: Removed.  Now use va_copy() provided by gnulib
473         instead.
474
475         * automake.mk: (src_libpspp_libpspp_a_SOURCES) Removed va_copy.h.
476
477 Sun May  7 18:17:32 2006  Ben Pfaff  <blp@gnu.org>
478
479         * pool.c (pool_vasprintf): New function.
480         (pool_asprintf) New function.
481
482 Sun May  7 17:09:54 2006  Ben Pfaff  <blp@gnu.org>
483
484         * compiler.h: (macro WARN_UNUSED_RESULT) New macro.
485
486 Sun May  7 14:32:25 2006  Ben Pfaff  <blp@gnu.org>
487
488         * va_copy.h: New header.
489
490         * str.c: Use header instead of inlining va_copy() macro
491         implementation.
492
493 Sun May  7 10:06:29 WST 2006 John Darrington <john@darrington.wattle.id.au>
494
495         * array.c array.h: Constness of sort.
496
497 Thu May  4 18:01:37 WST 2006 John Darrington <john@darrington.wattle.id.au>
498
499         * message.c message.h: Added functions to create and copy a msg.
500
501 Tue May  2 15:41:50 2006  Ben Pfaff  <blp@gnu.org>
502
503         * str.c (ds_append_uninit): No need to add 1 to arg passed to
504         ds_extend(), because the argument does not include space for a
505         null terminator.  Also, fix warning.
506
507 Tue Apr 25 11:07:19 2006  Ben Pfaff  <blp@gnu.org>
508
509         Finish reforming error message support.  In this phase, move
510         message.c into libpspp.
511         
512         * message.c: Move here from src/.  Also remove a few unneeded
513         headers.
514
515         * automake.mk (src_libpspp_libpspp_a_SOURCES): Add message.c. 
516
517 Tue Apr 25 10:54:44 2006  Ben Pfaff  <blp@gnu.org>
518
519         Continue reforming error message support.  In this phase, drop
520         actual message printing from core code, substituting a callback,
521         and add the callback to each UI.  Also, move verbose_msg() into
522         its own module.
523
524         * automake.mk (src_libpspp_libpspp_a_SOURCES): Added
525         verbose-msg.c, verbose-msg.h.
526
527         * verbose-msg.c: New file.
528
529         * verbose-msg.h: New file.
530
531 Mon Apr 24 17:26:47 2006  Ben Pfaff  <blp@gnu.org>
532
533         Continue reforming error message support.  In this phase, rename
534         all the message functions and types to start with "msg", except
535         for the ones that will be moving to other modules anyway.
536
537         All references to the identifiers below were updated likewise.
538         
539         * message.h: (enum file_locator) Renamed `enum msg_locator'.
540         (struct error) Renamed `struct msg'.
541         (err_assert_fail) Renamed msg_assert_fail().
542
543 Sun Apr 23 22:07:06 2006  Ben Pfaff  <blp@gnu.org>
544
545         Continue reforming error message support.  In this phase, get rid
546         of message "titles" and put the message text in `struct error'.
547         Now `struct error' encapsulates a message more properly.
548         
549         * message.h: (struct error) Remove `title' member.  Add `text'
550         member.
551         
552 Sun Apr 16 20:43:35 2006  Ben Pfaff  <blp@gnu.org>
553
554         Continue reforming error message support.  In this phase, we
555         divide the classification of messages along "category" and
556         "severity" axes.
557
558         * message.h: (enum msg_class) Named this set of enumerations.
559         (enum msg_category) New enum: MSG_GENERAL, MSG_SYNTAX, MSG_DATA.
560         (enum msg_severity) New enum: MSG_ERROR, MSG_WARNING, MSG_NOTE.
561         (msg_class_to_category) New inline function.
562         (msg_class_to_severity) New inline function.
563         (msg_class_from_category_and_severity) New inline function.
564         (struct error) Removed `class' member, added `category',
565         `severity'.  Updated all users of this struct to use the new
566         members.
567
568 Sun Apr 16 20:33:19 2006  Ben Pfaff  <blp@gnu.org>
569
570         * str.c (ds_vprintf): Don't try to write into the string if it is
571         null.
572
573 Sun Apr 16 18:52:41 2006  Ben Pfaff  <blp@gnu.org>
574
575         GNU standards require "file name" instead of "filename" in
576         documentation.  It's nice for our code to follow the convention
577         too.
578         
579         * message.h: (struct file_locator) Rename filename member to
580         file_name.  Updated all references.
581
582 Sun Apr 16 16:05:43 2006  Ben Pfaff  <blp@gnu.org>
583
584         Continue reforming error message support.  In this phase, we get
585         rid of VM() and the other msg() support for "verbosity", replacing
586         it by a new function verbose_msg().
587
588         * message.h: (enum ERR_CLASS_COUNT) Renamed ERR_CLASS_CNT.
589         (enum ERR_CLASS_MASK) Removed.
590         (enum ERR_VERBOSITY_SHIFT) Removed.
591         (enum ERR_VERBOSITY_MASK) Removed.
592         (macro VM) Removed.
593
594 Sun Apr 16 11:48:07 2006  Ben Pfaff  <blp@gnu.org>
595
596         Start reforming error message support.  In this phase, we get rid
597         of "installation errors" and change all uses of msg() in the
598         output drivers to uses of error() or error_at_line().
599
600         * message.h: Remove IE, IS enums.
601
602 Mon Apr  3 11:10:21 2006  Ben Pfaff  <blp@gnu.org>
603
604         * str.c: (ds_separate) Change interface for cleanliness and
605         consistency with ds_tokenize(), and rewrite to shorten and
606         simplify.  Updated all callers.
607         (ds_tokenize) New function.
608
609 Fri Mar 31 10:38:46 2006  Ben Pfaff  <blp@gnu.org>
610
611         Add freaderror() analogous to fwriteerror() in gnulib.
612
613         * freaderror.c: New file.
614
615         * freaderror.h: New file.
616
617 Thu Mar 30 16:15:37 2006  Ben Pfaff  <blp@gnu.org>
618
619         * str.c: (ds_create) Adjust capacity selection.
620         (ds_init) Use MAX macro for clarity.
621         (ds_create_substr) Rewrote.
622         (ds_replace) Renamed ds_assign_c_str(), reimplemented.  Changed
623         all callers to use a ds_assign_*() function.
624         (ds_init_substring) New function.
625         (ds_assign_string) New function.
626         (ds_assign_substring) New function.
627         (ds_assign_buffer) New function.
628         (ds_assign_c_str) New function.
629         (ds_truncate) Rewrote for clarity.
630         (ds_rpad) Reimplement in terms of ds_putc_multiple().
631         (ds_ltrim_spaces) Reimplement.
632         (ds_trim_spaces) New function.
633         (ds_separate) New function.
634         (ds_c_str) Make tolerant of null pointer, allowing static
635         initialization of strings.
636         (ds_find) Rename ds_span(), change interface.
637         (ds_n_find) Rename ds_cspan(), change interface.
638         (ds_at) New function.
639         (ds_first) Reimplement in terms of ds_at().
640         (remove_comment) New function.
641         (ds_get_config_line) Reimplement in terms of other functions.
642         Change type of LINE_NUMBER parameter.  Updated all callers.
643         (ds_vprintf) Modify for clarity.
644         (ds_putc) Better to be safe than sorry.
645         (ds_putc_multiple) New function.
646
647         * str.h: (struct string) Reorder members.
648         (macro DS_INITIALIZER) New macro that can be used to initialize a
649         string (as empty).
650         (ds_c_str) Remove inline version.
651
652 Tue Mar 28 13:49:11 WST 2006 John Darrington <john@darrington.wattle.id.au>
653
654         * str.[ch]: New functions ds_create_substr, ds_find, ds_n_find, 
655         ds_ltrim_spaces
656
657 Sat Mar  4 12:59:01 2006  Ben Pfaff  <blp@gnu.org>
658
659         * compiler.h: New file.
660
661 Sat Mar  4 11:55:16 2006  Ben Pfaff  <blp@gnu.org>
662
663         * str.h: Now assume that sprintf() returns the correct value.
664         Always implement spprintf as a static inline function.  Change
665         nsprintf, nvsprintf to simple macros that call sprintf, vsprintf.
666
667         * str.c: Remove spprintf, nsprintf, nvsprintf conditional
668         definitions.
669
670 Thu Mar  2 08:40:33 WST 2006 John Darrington <john@darrington.wattle.id.au>
671         
672         * Moved files from src directory