1 Mon Aug 3 16:02:26 1998 Tim Janik <timj@gtk.org>
4 * gnode.c: change order of gpointer data; field in struct _GNode to
5 be partly binary compatible with GList and GSList.
7 1998-08-03 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
9 * garray.c (g_ptr_array_remove_index): bugfix: index check for
12 Fri Jul 31 22:17:05 1998 Tim Janik <timj@gtk.org>
14 * testglib.c (g_node_test): added a GNode test.
16 Fri Jul 31 09:08:16 1998 Tim Janik <timj@gtk.org>
18 * Makefile.am: compile gnode.c.
21 * gnode.c: added implementation of n-way trees.
23 * gtree.c (g_tree_traverse): added a warning to the switch() statement
24 which says that G_LEVEL_ORDER is not implemented.
26 Mon Jul 27 00:17:30 CDT 1998 Shawn T. Amundson <amundson@gtk.org>
30 Mon Jul 27 01:02:27 1998 Tim Janik <timj@gtk.org>
32 * glib.h: #if 0'ed out the GTime definition, until it is definitively
33 needed. #if 0'ed out the g_getcwd() version, because it is the wrong
36 Sat Jul 25 16:09:00 1998 Mark Crichton <crichton@expert.cc.purdue.edu>
38 * glib.h: gtime changed to g_time. gtime is used in
39 /usr/include/time.h in NetBSD, causing multiple headaches.
40 If this isn't the right way of fixing it.... ;)
42 Thu Jul 23 00:29:14 1998 Tim Janik <timj@gtk.org>
45 * gscanner.c: new functions to make a scanner scope sensitive wrt
47 g_scanner_scope_foreach_symbol, g_scanner_scope_lookup_symbol,
48 g_scanner_scope_remove_symbol, g_scanner_scope_add_symbol and
50 g_scanner_add_symbol, g_scanner_remove_symbol and
51 g_scanner_foreach_symbol are now aliases for scope 0.
53 Mon Jul 20 23:05:34 1998 George Lebl <jirka@5z.com>
55 * glib.h: typo fixed for alphas for gint64
57 Tue Jul 14 09:05:18 1998 Tim Janik <timj@gtk.org>
60 * gutils.c: new fuction g_dirname() which returns a newlly
63 Fri Jul 10 06:33:43 1998 Tim Janik <timj@gtk.org>
66 * gutils.h: added a bunch of utility/wrapper functions:
67 g_basename(), g_getcwd(), g_get_user_name(), g_get_real_name(),
68 g_get_home_dir(), g_get_tmp_dir(), g_get_prgname() and g_set_prgname().
70 * gutils.c: removed all g_str* functions.
71 * gstrfuncs.c: moved the bunch g_str* functions from gutils.c in this
72 place. this file shall never include <unistd.h> to avoid clashes for
73 some of the g_str* functions on some OSes.
75 Fri Jul 10 00:29:03 EEST 1998 Lauri Alanko <nether@gimp.org>
78 * ghash.c: Renamed g_hash_table_lookup_full to
79 g_hash_table_lookup_extended to conform with naming conventions.
81 Tue Jul 7 03:18:58 EEST 1998 Lauri Alanko <nether@gimp.org>
84 * ghash.c: Generic cleanup, added a function:
85 (g_hash_table_lookup_full): Return whether the lookup succeeded,
86 and also retrieve the key and value. This allows one to
87 distinguish between failed lookup and finding a NULL, and also
88 allows one to free a key in the hash.
90 Mon Jul 6 10:12:05 PDT 1998 Manish Singh <yosh@gimp.org>
92 * ltconfig: fix for properly detecting shared lib support on
93 SunPro cc (taken from libtool 1.2.a)
95 Sat Jul 4 13:38:52 PDT 1998 Manish Singh <yosh@gimp.org>
97 * glib.h: added g_array_length
99 Tue Jun 30 11:58:25 1998 Tim Janik <timj@gtk.org>
101 * gscanner.c (g_scanner_unexp_token): take symbol_2_token into
102 account. react on valid/invalid string pairs.
104 Sat Jun 27 21:55:46 PDT 1998 Manish Singh <yosh@gimp.org>
106 * glib.m4: ftp.glib.org -> ftp.gtk.org, since glib.org isn't
109 Fri Jun 19 03:11:02 1998 Tim Janik <timj@gtk.org>
111 * gdataset.c: removed g_dataset_try_key, g_dataset_force_id and
112 g_dataset_retrive_key in favour of GQuarks.
113 a GQuark is an numeric id wich is associated with a certain string.
114 (g_quark_try_string): try to get the quark associated with this string,
115 if the lookup failed return 0.
116 (g_quark_from_string): get the associated quark for a string, if there
117 isn't currently a GQuark associated with this string, then allocate a
118 new quark and return that.
119 (g_quark_from_static_string): like the above function, but the string
120 isn't strdup()ed to save memory.
121 (g_quark_to_string): get the string that is associated with a certain
124 * gdataset.c (g_dataset_id_set_data_full): invoke the destroy function
125 _after_ the new data has been setup.
127 Thu Jun 18 02:35:21 1998 Owen Taylor <otaylor@gtk.org>
129 * glib.h: Changed messages for g_return_[val]_if_fail to
130 be somewhat more clear: assertion "blah" failed.
132 1998-06-18 Federico Mena Quintero <federico@nuclecu.unam.mx>
134 * testglib.c (main): Use GINT_TO_POINTER casts to remove compiler
137 * grel.c: #include <string.h>
139 Fri Jun 12 15:39:06 1998 Tim Janik <timj@gtk.org>
141 * glib.h (GScanner): cleanups of the structure fields (binary
144 Fri Jun 12 00:39:28 1998 Josh MacDonald <jmacd@icw.EECS.Berkeley.EDU>
146 * glib.h: add new hash and equal functions g_int_*. complement
147 g_direct_hash with g_direct_equal.
149 * grel.c: new file, GRelations implement tuples of N-N mappings.
150 A comment in glib.h briefly describes the interface.
152 * ghash.c: new function, g_hash_table_size
154 * glib.h: new typedefs, gsize, gssize, gtime.
156 * garray.c: new functions implementing a simplified GArray. This
157 GPtrArray is an array of gpointers and has functions to add and
158 remove elements, much like java.lang.Vector.
160 * garray.c: new functions for the single-byte special case of
161 GArray. The functions g_byte_array* operate on arrays of bytes.
162 Internally, a GArray is used.
164 * testglib.c: tests for g_ptr_array, g_byte_array, and g_relation...
166 1998-06-11 Federico Mena Quintero <federico@nuclecu.unam.mx>
168 * gdataset.c: #include <string.h>
170 Thu Jun 11 04:15:31 1998 Tim Janik <timj@gtk.org>
173 * gdataset.c: new function g_dataset_retrive_key. adjusted prealloc
174 sizes, to take up less space on initial allocation.
176 1998-06-10 Raja R Harinath <harinath@cs.umn.edu>
178 * acinclude.m4: New file. Contains `libtool.m4' from libtool-1.2,
179 the version from which glib's libtool forked. Needed for people
180 who use post-1.2 alphas of libtool.
181 * configure.in (enable_mem_check, enable_mem_profile): Replace
182 `echo -n' with AC_MSG_CHECKING.
183 (fd_set): Explain test for `fd_set' better.
185 Wed Jun 10 19:29:51 1998 Owen Taylor <otaylor@gtk.org>
187 * Makefile.am glib.m4 configure.in:
189 Moved out from GTK+; added AM_PATH_GLIB macro.
191 Wed Jun 10 12:56:07 1998 Owen Taylor <otaylor@gtk.org>
193 * glib.h: renamed g_const_pointer => gconstpointer
195 Tue Jun 9 17:47:33 1998 Owen Taylor <otaylor@gtk.org>
197 * glib.h: Remove #error - HP/UX.
199 Sat May 23 19:00:01 1998 Owen Taylor <otaylor@gtk.org>
201 gtk-rrh-980412-0.patch (Raja R Harinath <harinath@cs.umn.edu>)
202 gtk-jbuhler-980516-0 (Jeremy Buhler <jbuhler@cs.washington.edu>) ]
204 * glib.h ghash.c gstring.c gdataset.c gutils.c:
205 - Added new typedef g_const_pointer; expunged all incorrect
206 uses of 'const gpointer'.
207 - Fixed up warnings that that created,
208 - Changed GHashFunc and GCompareFunc to take g_const_pointer
209 arguments. (Necessary, but will cause warnings in existing
211 - Added other new const in harmless positions.
213 Mon Jun 8 01:06:47 1998 Tim Janik <timj@gtk.org>
215 * glib.h: added enum-helper macros for code generation.
216 added G_BREAKPOINT().
218 Sat Jun 6 14:09:22 PDT 1998 Manish Singh <yosh@gimp.org>
220 * gmem.c: commented out MEM_PROFILE and MEM_CHECK, causing weird
223 Wed Jun 3 06:19:42 1998 Tim Janik <timj@gtk.org>
225 * glib.h (g_chunk_new0): convenience macro, for allocating small chunks
226 like g_chunk_new() with additional 0 initialization.
228 Mon Jun 1 04:43:27 1998 Tim Janik <timj@gtk.org>
230 * ghash.c (g_hash_table_insert): wrote a comment describing why
231 a hash node's key should not also get replaced when overriding
234 Tue May 26 18:30:06 1998 Tim Janik <timj@gtk.org>
236 * glib.h (g_string_sized_new): new function to controll the preallocated
239 * glib.h (g_strreversed): new function to reverse a string.
241 Mon May 18 22:14:39 1998 Owen Taylor <otaylor@gtk.org>
242 (Yasuhiro SHIRASAKI <joke@awa.tohoku.ac.jp> : gtk-joke-980517-0.patch)
244 * gutils.c: Restored a missing prototype for g_vsprintf.
246 Wed May 20 05:02:26 1998 Tim Janik <timj@gtk.org>
248 * glib.h: conditionally define NULL, FALSE and TRUE.
249 (g_mem_chunk_create): new convenience macro as a short hand for
251 (g_chunk_free): new convenience macro to be consistent with g_chunk_new.
253 Tue, 19 May 1998 09:00:02 +0200 §Paolo Molaro <lupus@debian.org>
255 * gcompletion.c: generic functions for com<TAB>pletion...
257 Sun May 17 10:48:27 1998 Tim Janik <timj@gtk.org>
259 * gscanner.c (g_scanner_unexp_token): provide usefull default
260 specifications for identifier_spec and symbol_spec.
262 * glib.h: new functions g_slist_nth_data and g_list_nth_data to return
263 the data of the nth element in the list.
265 Fri May 15 22:31:49 1998 Tim Janik <timj@gtk.org>
267 * gscanner.c (g_scanner_unexp_token): removed spurious va_end(args)
268 that for some reason didn't produce a compiler wrning on my machine
269 (is va_end undefined for i386?).
271 Fri May 15 12:32:08 1998 rodo <doulik@karlin.mff.cuni.cz>
273 * gscanner.c: replaced some snprintf with g_snprintf
275 Fri May 15 00:56:59 1998 Tim Janik <timj@gtk.org>
277 * glib.h: further support for gcc function attributes: G_GNUC_FORMAT,
278 G_GNUC_NORETURN and G_GNUC_CONST.
280 * gscanner.c (g_scanner_stat_mode): changed stat() to lstat().
281 (g_scanner_msg_handler): "\n" at end of line!
282 (g_scanner_foreach_symbol): new function to iterate over the symbol
283 table (GScanner does value-wrapping).
285 Thu May 14 04:14:12 1998 Tim Janik <timj@gtk.org>
287 * glib.h: typedef gint gboolean;
288 this is needed to provide portability with big-endian platforms (e.g.
289 try sizeof(bool) for c++ on big-endians - it's 4).
290 this is also needed to maintain some_union.d_gint==some_union.d_gboolean.
291 plus, gint to gboolean casts and vice versa need to be possible without
294 Tue May 12 19:22:58 1998 Owen Taylor <otaylor@gtk.org>
296 * glib/glib.h: Added macros G[U]INT_TO_POINTER() and
297 GPOINTER_TO_[U]INT for storing small integers integers
300 * glib/testglib.c: Print sizeof() results
301 as g_print("%ld", (glong)sizeof(foo)), to deal with
302 size_t being long on Alpha's.
304 Tue May 12 16:54:15 1998 Owen Taylor <otaylor@gtk.org>
305 (James A <jamesa@demon.net> : gtk-jamesa-980511-4.patch)
307 * glib.h gstring.c gmessages.c: Added some missing
310 * gutils.c (g_strsignal.c): Added missing return statements.
312 Mon May 11 21:11:54 1998 Owen Taylor <otaylor@gtk.org>
314 * gutils.c gmessages.c: Moved g_error, g_warning, g_message and
315 g_print from gutils.c to new file gmessages.c, to avoid having to
316 include <unistd.h> in gutils.c which was causing problems for the
317 g_strsignal implementation on FreeBSD boxes.
319 Mon May 11 09:53:43 1998 Tim Janik <timj@gtk.org>
321 * configure.in: preserve automake CFLAGS.
323 * Makefile.am: fully rename the created library to libglib-1.1.la.
324 this means we need to change certain portions of the Makefile.am on
325 major/minor version bumps.
327 * ltmain.sh: the -release option is not required anymore.
329 * glib.h: provide G_GNUC_FUNCTION and G_GNUC_PRETTY_FUNCTION to
330 avoid conditionals. unconditionally define NULL, TRUE, FALSE, MAX,
331 MIN, ABS and CLAMP, these macros might be screwed from other headers.
333 Mon May 11 01:44:10 1998 Tim Janik <timj@gtk.org>
335 * gdataset.c: new file, gdatasets implement the object data
336 mechanism from GtkObject. a generic data pointer is associated with
337 a certain location and a key id.
339 Sat May 9 20:08:12 1998 Owen Taylor <otaylor@gtk.org>
341 * glib/gmem.c: Experimentally restore GMemChunk
342 to its primeval state - where mem areas are
343 freed incrementally instead of searching the tree
344 every time a mem area is completely empty. Also,
345 always keep one mem chunk around. (Reduced calls
346 to malloc() a lot, but doesn't really improve
347 performance significiantly)
349 Thu May 7 08:17:28 1998 Tim Janik <timj@gtk.org>
351 * glib.h (G_GNUC_PRINTF):
352 (G_GNUC_SCANF): macros to facilitate the printf/scanf format argument
355 * gstring.c: const corrections, string!=NULL checks at function entry.
356 (g_string_down): new function for tolower(3) conversion.
357 (g_string_up): new function for toupper(3) conversion.
359 * gutils.c: const corrections.
360 (g_strdown): g_string_down() counterpart.
361 (g_strup): g_string_up() counterpart.
363 * gscanner.c (g_scanner_unexp_token):
365 (g_scanner_warn): new functions to let a scanner put out warnings
366 or errors, especially to react on unexpected tokens.
369 (g_slist_index): find out about about the position of a
370 certain data pointer.
371 (g_slist_position): find out about about the position of a
375 (g_list_index): find out about about the position of a
376 certain data pointer.
378 Thu May 7 05:14:19 1998 Tim Janik <timj@gtk.org>
380 * ltmain.sh: added a new commandline flag -postfix similar to -release,
381 but will immediately change the library name.
383 * Makefile.am: specify -postfix and -version-info
385 * configure.in: version bump to 1.1.0. added GLIB_INTERFACE_AGE and
386 GLIB_BINARY_AGE. calculate LT_* variables for libtool.
388 Fri May 1 16:36:08 1998 Owen Taylor <otaylor@gtk.org>
390 * gutils.c: (g_strcasecmp). Check for isupper before
391 taking tolower, and account for macroized tolower.
393 * gutils.c (g_error): Check for recursion.
395 1998-04-27 Elliot Lee <sopwith@cuc.ml.org>
397 * glist.c (g_list_position): New function to find the position of
398 a link in a list - should be the inverse of g_list_nth(), but
399 haven't tested it so poof.
401 Thu Apr 30 21:41:30 1998 Owen Taylor <otaylor@gtk.org>
403 * gstring.c : Check arguments more carefully,
404 (gtk-draco-980423-1.patch; ramsey@rhrk.uni-kl.de)
406 Tue Apr 7 19:36:48 1998 Owen Taylor <owt1@cornell.edu>
408 * gutils.c (g_direct_compare): Removed, because that's what
409 a NULL comparison function means. And it wasn't 64 bit safe.
411 Mon Apr 6 18:43:25 1998 Tim Janik <timj@gtk.org>
413 * gscanner.c (g_scanner_get_token_ll): fixed a bug that caused floats
414 of the format ".xxx" to be parsed as "xxx".
416 Fri Apr 3 20:36:35 1998 Owen Taylor <owt1@cornell.edu>
418 * gutils.c (g_parse_debug_string): Make debug string
419 parsine case-insensitive
421 Fri Apr 3 17:03:18 PST 1998 Manish Singh <yosh@gimp.org>
423 * gstring.c: corrected possible overrun when inserting into
424 GStrings (thanks Elrond)
426 Fri Apr 3 18:05:45 1998 Owen Taylor <owt1@cornell.edu>
428 * testglib.c: Removed literal german from strings
429 to appease SGI compiler.
431 Thu Mar 26 20:47:21 1998 Owen Taylor <owt1@cornell.edu>
433 * configure.in glib glibconfig.h.in: Add test for atexit/on_exit -
434 use on_exit if atexit not found in definition of ATEXIT.
436 Wed Mar 25 15:23:37 1998 Owen Taylor <owt1@cornell.edu>
438 * Makefile.am: Switched glibconfig.h rule from HEADERS
439 to DATA, so that it is not added to DISTFILES
441 Wed Mar 18 22:27:08 PST 1998 Manish Singh <yosh@gimp.org>
443 * garray.c: g_rarray_truncate length done correctly
445 Sun Mar 15 07:13:34 1998 Tim Janik <timj@gimp.org>
447 * gutils.c: changed *_handler variables to be named glib_*_handler,
448 so you can easily access them from gdb.
450 Sat Mar 14 17:47:43 1998 Owen Taylor <owt1@cornell.edu>
452 * Makefile.am: Don't refer to current directory as $(top_builddir)
453 to avoid confusing non-gmakes
455 Sat Mar 14 01:37:35 1998 Owen Taylor <owt1@cornell.edu>
457 * Makefile.am (configincludedir): Moved glibconfig.h to
460 Tue Mar 10 02:03:12 1998 Tim Janik <timj@gimp.org>
462 * gscanner.c (g_scanner_destroy_symbol_table_entry): new function to
463 free symbol table entries upon destruction
464 (gtk-gronlund-980309-0.patch.gz).
466 Mon Mar 9 15:02:21 1998 Tim Janik <timj@gimp.org>
468 * glib.h: changed *_length functions to return guint.
469 changed *_nth functions to take guint as argument.
471 * glist.c: adapted g_list_length and g_list_length.
473 * gslist.c: adapted g_slist_length and g_slist_length.
475 Mon Mar 2 17:51:18 1998 Owen Taylor <owt1@cornell.edu>
477 * glib.h gutils.c : changed g_strcasecmp
478 to take gchar* not guchar*
480 * testglib.c: Remove trailing ; after functions
482 Sun Mar 1 19:04:40 1998 Owen Taylor <owt1@cornell.edu>
484 * glib.h gstring.c: Added g_string_insert[_c]()
485 and g_string_erase().
487 From: Stefan Wille <1wille@vsys1.informatik.uni-hamburg.de>
489 Mon Feb 16 23:05:06 1998 Owen Taylor <owt1@cornell.edu>
491 * glist.c (g_list_insert_sorted): Changed function
492 so elements are always inserted, even if they compare
495 Thu Feb 12 22:48:11 1998 Owen Taylor <owt1@cornell.edu>
497 * gstring.c glib.h: removed deprecated g_string_equal
500 Tue Feb 10 13:04:36 1998 Owen Taylor <owt1@cornell.edu>
502 * configure.in: Add check to see if the C library's
503 iswalnum can actually be used. (Not true for
506 Sat Feb 7 11:48:09 1998 Owen Taylor <owt1@cornell.edu>
508 * gstring.c gutils.c: added some additional consts in
509 appropriate places to remove a warning
511 Sat Feb 7 11:15:54 1998 Owen Taylor <owt1@cornell.edu>
513 * gutils.c: include <ctype.h> for tolower()
515 Fri Jan 30 23:57:17 PST 1998 Manish Singh <yosh@gimp.org>
517 * added and autoconfigured in a new utility function
520 Wed Jan 28 23:53:27 PST 1998 Manish Singh <yosh@gimp.org>
524 * testglib.c: the sort functions compared backwards. Fixed
525 * glib.h: list iterator macros now check for NULL pointers
527 Tue Jan 27 09:46:57 PST 1998 Manish Singh <yosh@gimp.org>
529 * gstring.c: g_string_prepend and g_string_prepend_c had
530 interchanged src and dest parameters for g_memmove. Fixed.
532 Tue Jan 27 01:38:52 PST 1998 Manish Singh <yosh@gimp.org>
534 * gslist.c: fixed a really, really lame error. g_slist_insert
535 didn't hook the data in! Reworked the routine to reflect the
536 functionality of g_list
538 Wed Jan 21 01:13:25 1998 Tim Janik <timj@psynet.net>
540 * Applied patch from (Raja R Harinath <harinath@cs.umn.edu>)
541 to add function g_snprintf.
542 * configure.in (AC_CHECK_FUNCS): Check for vsnprintf.
543 * glib.h: Add prototype for g_snprintf.
544 * glibconfig.h.in: Add HAVE_VSNPRINTF.
545 * gutils.c (g_snprintf): new function.
547 Sat Jan 17 23:52:40 1998 Owen Taylor <owt1@cornell.edu>
549 * gstring.{c,h} gscanner.c:
550 renamed g_string_equal => g_str_equal
551 renamed g_string_hash => g_str_hash
552 And const corrected. Old functions left in for now.
554 Fri Jan 9 20:03:46 1998 Tim Janik <timj@psynet.net>
556 * gutils.c (g_strerror): changed message for EAGAIN from
557 "no more processes" to "try again" since EAGAIN is used with
558 functions else than fork().
560 * gscanner.c (g_scanner_get_token_ll): use strtol() instead of
561 strtoul() to avoid conflicts with solaris.
563 * merged the glib portions from Jan 2 to Jan 7 out of gtk+/ChangeLog
566 Wed Jan 7 02:14:30 PST 1998 Manish Singh <yosh@gimp.org>
571 * testglib.c: Added g_[s]list_insert_sorted function
572 and appropriate tests in testglib
574 Sat Jan 3 20:23:25 1998 Owen Taylor <owt1@cornell.edu>
576 * glib.h: Changed guint32 -> guint for bitfields.
577 (Bitfields must be int or unsigned int?)
579 Fri Jan 2 23:52 PST 1998 Jay Painter <jpaint@serv.net>
583 * glib.h: reverted glibconfig.h and glib.h files back to the
584 way they were before my ugly hack.
586 * gscanner.c: removed inlines from clist and gscanner
588 Tue Dec 23 02:49:51 1997 Tim Janik <timj@psynet.net>
590 * gscanner.c: new file for GScanner: Flexible lexical scanner for
592 * glib_pre2.h: added GScanner includes. added g_strconcat and g_strtod.
593 gutils.c (g_strconcat): new function for string concatenation of NULL
594 terminated parameter list.
595 (g_strtod): new function to perform best string to double conversion
596 with or without consideration of the current locale.
598 Mon Dec 15 19:33:58 1997 Tim Janik <timj@psynet.net>
600 * glist.c: minor optimizations:
601 (g_list_append): `if' optimized for common code path, commented out
602 unneccessary `assert', saved one variable assignment.
603 (g_list_prepend): saved two (conditioned) variable assignment.
604 (g_list_insert): saved one (conditioned) variable assignment,
605 saved one variable assignment.
606 (g_list_remove): `if' optimized for common code path, saved two
607 variable assignments by using `g_list_free_1' (which is even
608 faster) instead of `g_list_free'.
609 (g_list_reverse): saved allocation of one variable, saved one
612 Wed Dec 10 23:27:20 1997 Tim Janik <timj@psynet.net>
616 * glib.h: this file now gets concatenated by makeglib_h from
617 glib_pre1.h and glib_pre2.h to merge in glibconfig.h wich got
618 created by configure (done by Jay Painter).
620 * glib_pre2.h: the g_assert*() and g_return_*_fail() macros
621 are wrapped by G_STMT_START and G_STMT_END now, to avoid conflicts
622 when used within if (...) g_macro(); else ... conditionals.
624 Tue Dec 17 13:14:07 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>
626 * glib.h: Changed 'g_return_if_fail' and 'g_return_val_if_fail' to
627 not call 'g_string' but to simply stringify the
628 expression. Calling 'g_string' causes the expression to be
629 expanded which is undesired.
631 Sun Dec 1 01:30:48 1996 Peter Mattis <pmattis@charnley.HIP.Berkeley.EDU>