Sun Jan 17 17:15:59 1999 Tim Janik <timj@gtk.org>
* gtree.c (g_tree_traverse): removed assertment about rtree->root being
NULL, so this function can be applied to unpopulated trees as well, fix
provided by Simon Kagedal <sika8225@csd.uu.se>.
Sun Jan 17 16:14:03 1999 Tim Janik <timj@gtk.org>
* glib.h (g_error): if !defined (G_LOG_DOMAIN) define G_LOG_DOMAIN as
((gchar*) 0) instead of ((void*) 0) to silence egcs C++ mode, reported
by Seth Alves <alves@hungry.com>.
Sun Jan 17 14:13:52 1999 Tim Janik <timj@gtk.org>
* glib.h: added a define G_HOOK_DEFERRED_DESTROY, to substitute a noop
GHookList.hook_destroy function.
* ghook.c (g_hook_destroy_link): don't really call hook_destroy if it
is G_HOOK_DEFERRED_DESTROY. for the case where we invoke hook->destroy()
we now clean up the hook completely afterwards, i.e. data, func and
destroy are immediately set to NULL and hook_free can't play with that
values anymore.
* gmain.c (g_source_add): set hook_destroy to G_HOOK_DEFERRED_DESTROY,
instead of using an ugly _noop() hack, this is to avoid an uneccessary
function invokation. set hook_free to g_source_destroy_func, this way
we always invoke the destroy notifiers for user_data and source_data
after execution of dispatch(). thus, g_source_destroy_func() will always
be called within the main_loop lock (this wasn't really assured
before), and can release and reaquire the look around destroy notifier
invokation.
Sun Jan 17 05:12:17 1999 Tim Janik <timj@gtk.org>
* configure.in: incremented version number to 1.1.13, bin age 0,
interface age 0.
* glib.h: added hook_destroy member to struct _GHookList.
* ghook.c (g_hook_destroy_link): if the hook_list defines a hook_destroy
function, use that to marshal hook destruction notifiers.
* gmain.c: removed g_source_free_func and added g_source_destroy_func,
which marshalls the user_data and source_data destructors of sources
outside of the main_loop lock.
removed GIdleData struct since its single member callback can be passed
as source_data directly.
added a gboolean return value to all g_source_remove* functions,
indicating whether the source could be removed, because these functions
don't issue warnings upon unseccessful removals themselves. this way at
least the caller gets a chance to warn upon failing removals.
(g_main_iterate): set in_check_or_prepare around calls to check() or
prepare().
(g_main_pending): simply return FALSE if called from within check() or
prepare().
(g_main_iteration): issue a warning if called from within check() or
prepare() and bail out with FALSE.
(g_main_run): likewise.
(g_source_remove_by_funcs_user_data): new function to remove sources by
user data and function table.
(g_idle_remove_by_data): new function to really remove idles only, since
g_source_remove_by_user_data would remove timeouts or other sources as
well.
* README.win32: More text.
* config.h.win32 glibconfig.h.win32: Update to match the
corresponding generated files on Unix.
* makefile.msc: Update with new source files, and gthread
library. Use the compiler flag -MD instead of using -D_DLL and
"/nodefaultlib:libc msvcrt.lib" in the link phase.
* glib.def: Include new functions, drop removed ones.
* glib.h: Add comments about main loop and polling on Win32. (In
general, it's only for the GIMP's use.) Add Win32 IO Channel
functions. Remove the obsoleted old IO Channel stuff (which was
in #if 0 already).
* giowin32.c: New file.
* gmain.c: Include config.h, conditionalize <sys/time.h>
inclusion. Add g_poll implementation for Win32 (only for the
GIMP's needs for now, it's hard or even impossible to be as clean
and generic as on Unix). Implement g_get_current_time on Win32. If
threads aren't supported, don't try to wake up main thread's
loop. On Win32, use a semaphore and not a pipe to wake up the main
loop.
* gmessages.c: On Win32, allocate a console window if the standard
output handle is invalid before writing to stdout, and reopen stdout
to that console window.
* giochannel.c: Conditionalize unistd.h inclusion. Some indentation
cleanup.
* gstrfuncs.c: Include <signal.h>.
* gutils.c: On Win32, also check the HOMEDRIVE and HOMEPATH
environment variables.
* gmodule-dl.c gmodule-dld.c: In
_g_module_build_path, don't add the "lib" prefix and
".so" or ".sl" suffix if already there.
* gmodule-win32.c: Likewise for the ".dll" suffix.
* gthread-posix.c: Conditionalize <sys/time.h> inclusion.
* glib.h: don't use inline for !__GNUC__ case with g_warning,
g_error, and g_message wrappers since some compilers throw
away arguments in this case
-Yosh
1999-01-11 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Find right thread system on DG/UX. Thanks to Marc
J. Fraioli <fraioli@dg-rtp.dg.com> for hint. Finally removed the
stuff for -fstack-check, that didnt work anyway.
1999-01-11 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Test for localtime_r only after including the
right MT enabling CFLAGS (i.e. -D_REENTRANT on most systems).
* gdate.c (g_date_set_time): Emit warning, if no localtime_r
function is available on thread enabled systems. Define ptm only,
if really needed, and assert on it.
* testglib.c:
Make all aux functions static.
* tests/Makefile.am, tests/dirname-test.c, tests/type-test.c:
New tests dirname-test and type-test, from testglib.
* configure.in:
Add checks for vasprintf, localtime_r.
* gdate.c (g_date_set_time):
Use localtime if localtime_r is not available.
* gstrfuncs.c (g_strdup_vprintf):
Use glibc vasprintf if possible; it's a bit faster than using
GLib routines, and makes output code a bit smaller.
* acconfig.h:
Remove HAVE_VSNPRINTF and HAVE_VPRINTF. autoheader picks these
up automatically and puts them in config.h.in.
Thu Jan 7 15:14:08 1999 Owen Taylor <otaylor@redhat.com>
* gmain.c (g_source_free_func): Call the source-specific
free function when the hook is freed not when it
is destroyed; this fixes a bug where a timeout destroyed
from itself would access already freed data.
1999-01-07 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gutils.c (g_get_any_init): Here we must replace getpwuid by
getpwuid_r, but as I do not know how for now, I just made a FIXME
note ;-)
* gdate.c (g_date_set_time): localtime --> localtime_r to make it
thread safe.
* configure.in: We do not need to check for broken solaris mutex
intitializer any longer. Provide a macro to show the used thread
implementation. Not nice, but this is needed until thread support
is completed here inside glib.
* gthread/testgthread.c: conditionally compile according to the
G_THREADS_IMPL_??? macros.
(test_private_func): use rand_r instead of rand to make it
thread safe.
Mon Jan 4 20:58:50 1999 Tim Janik <timj@gtk.org>
* gscanner.c: eliminated extraneous "register" qualifiers in variable
declarations.
* gmain.c: #undef events and revents which may have been defined in
sys/poll.h for SVR3,4 compatibility on some AIX systems. fix been
provided by Philippe Defert <Philippe.Defert@cern.ch>.
Mon Jan 4 14:38:11 1999 Tim Janik <timj@gtk.org>
* glib.h: adjusted the g_strdup_a, g_strndup_a and g_strconcat3_a macros
so their arguments get only evaluated once. changed g_strconcat3_a to
have the same semantics as g_strconcat, i.e. if a certain argument is
NULL, the rest of the parameter list is skipped.
* tests/alloca-test.c: removed #if/#endif G_HAVE_ALLOCA, we need to be
able to compile on all systems. added test for g_strconcat() semantics.
* we need a alloca() replacement for !G_HAVE_ALLOCA rsn!
Mon Jan 4 02:58:13 CST 1999 Shawn T. Amundson <amundson@gtk.org>
* Released GLib 1.1.12
* INSTALL:
NEWS:
README:
configure.in:
glib.spec:
docs/glib-config.1: version=1.1.12
* tests/Makefile.am: fixed so it works properly with
builddir and srcdir.
* tests/Makefile.am:
add array-test.c
* tests/array-test.c:
New module, tests array family
* tests/hash-test.c, tests/list-test.c, tests/slist-test.c,
tests/string-test.c, tests/node-test.c:
Clean out cruft left over from testglib.
Sat Jan 2 02:20:59 1999 Tim Janik <timj@gtk.org>
* ghook.c:
(g_hook_list_invoke):
(g_hook_list_invoke_check):
(g_hook_list_marshal_check):
(g_hook_list_marshal): avoid unneccessary extra hook referencing (the
explicit hook referencing became unneccessarry with my changes from
Mon Dec 21 21:48:29 1998).
* gmain.c (g_main_iterate): fixed reference counting leaks with
premature loop aborts.
Fri Jan 1 22:47:44 1999 Tim Janik <timj@gtk.org>
* gscanner.c (g_scanner_unexp_token): handle G_TOKEN_IDENTIFIER_NULL
as G_TOKEN_IDENTIFIER.
* configure.in, glib.h:
Added two new alloca-based function macros, g_strdup_a and
g_strconcat_a. These are stack-based and much faster than
their g_malloc-based counterparts. Kudos to Ulrich Drepper
for help on this one.
* acglib.m4
* configure.in: provide defaults for POLL sysdefs, simple enums
don't work with bitwise logic. Reported by Daniel Skarda
<0rfelyus@atrey.karlin.mff.cuni.cz>
-Yosh
Wed Dec 23 04:18:11 1998 George Lebl <jirka@5z.com>
* gmain.c: (g_get_current_time) don't cast to timeval since
timeval is for some reason not always a struct of longs, weird
Mon Dec 21 21:48:29 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gmain.c: there was a reference count race for hooks during invocation
loops. since all (known) hook loop implementations, do currently start
out with g_hook_first_valid() and iterate with g_hook_next_valid(),
g_hook_first_valid() will now return a referenced hook, and
g_hook_next_valid() will "eat" that, and eventually transfer it to
the next hook. <sigh> unfortunately this requires g_hook_next_valid()
to take the hook_list as additional argument.
* gmain.c (g_main_iterate): adjusted callers of g_hook_next_valid().
Mon Dec 21 03:48:04 1998 Tim Janik <timj@gtk.org>
* gmain.c (g_main_iterate): default initialize source_timeout with -1
so we have a sane timeout value if (*prpare) doesn't set it.
Sat Dec 19 16:56:02 1998 Owen Taylor <otaylor@redhat.com>
* gmain.c (g_main_poll): Allocate space for pollfd's
_after_ adding poll wake-up-pipe record.
* gmain.c (g_main_add_poll): Changed name
of internal function g_main_add_poll_unlocked()
back from the non-sensical g_main_add_unlocking_poll().
Sat Dec 19 06:25:55 1998 Tim Janik <timj@gtk.org>
* glib.m4: fixed a minor bug that would let configures bail out
if the MODULES argument contained newlines.
* acglib.m4: new file to be included by configure.in. it holds
special GLIB_ autoconfiguration macros, eventually some of the
easier ones should be moved into glib.m4, e.g. GLIB_IF_VAR_EQ,
GLIB_STR_CONTAINS or GLIB_ADD_TO_VAR.
1998-12-18 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in (have_threads): Changed the last pthread_cond_init
to pthread_attr_init.
1998-12-18 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* testgthread.c (new_thread): As a joinable thread seems to be the
default on posix, leave the explicit setting out, as it causes
problems on some older platforms.
Fri Dec 18 00:03:17 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gmain.c:
(g_main_is_running): new function to check whether a main loop has been
quitted.
(g_main_new): added a gboolean argument to determine whether the loop
should be considered initially running or not. however, g_main_run ()
will still reset the main loops running state to TRUE upon initial
entrance.
* gmain.c:
(g_main_iterate): documented this function's purpose in 5 steps.
for step 2), flag sources as G_SOURCE_READY even if !dispatch and
check G_SOURCE_READY prior to (*prepare), so we don't call (*prepare)
on them multiple times.
Thu Dec 17 23:43:47 1998 Tim Janik <timj@gtk.org>
* gmain.c (g_main_add_poll): reordered arguments, so GPollFD* comes
first, <sigh> (sorry Snorfle, i should have let you know in the first
place).
(g_main_dispatch): stack G_HOOK_FLAG_IN_CALL flags. call source's
destructor when destroying a source.
1998-12-17 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* garray.c (g_ptr_array_remove_index): Fixed size in g_memmove,
reported by Alexander Larsson <alla@lysator.liu.se>.
* gmem.c: Fixed bug, that made compile fail for -DENABLE_MEM_PROFILE.
Wed Dec 16 22:32:13 CST 1998 Shawn T. Amundson <amundson@gtk.org>
* glib.h:
giounix.c: s/g_main_poll_add/g_main_remove_add/g
s/g_main_poll_remove/g_main_remove_poll/g
s/g_main_poll_add_unlocking/g_main_add_unlocking_poll/g
(from Tim Janik)
* gthread-posix.c: use g_free in mutex_free (from Tim Janik)
Thu Dec 17 04:10:49 1998 Tim Janik <timj@gtk.org>
* glib.h (G_LOCK_DECLARE_*): if !G_THREADS_ENABLED, eat the
trailing semicolon with a bogus function declaration, instead
of with a bogus variable declarations, so we avoid unused
variable warnings.
1998-12-16 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* docs/glib-config.1: Updated to reflect the existence of gthread.
* gmain.c (g_main_poll_add_unlocking): Changed
g_main_poll_add_unlocked to g_main_poll_add_unlocking to match
semantic, (indeed, main_loop must be locked, when calling this
function). Removed the unlocking from the end of that function, as
that is not right. Made a 'HOLDS' comment above the function.
Wed Dec 16 03:16:58 1998 Tim Janik <timj@gtk.org>
* configure.in: version bump to 1.1.8, binary age 0, interface age 0.
* glib.h: changed g_lock() to G_LOCK(), g_unlock() to G_UNLOCK() and
g_trylock() to G_TRYLOCK(), since these are macros that expand to
nothing with --disable-threads.
changed G_LOCK_DEFINE() to G_LOCK_DECLARE() and introduced
G_LOCK_DECLARE_STATIC() to achive the results of static G_LOCK_DECLARE().
changed semantics of g_thread_supported to g_thread_supported() so it
can be used as a function like g_module_supported(). the actuall
definition is still a macro that expands into a variable for
performance reasons though.
various indentation and coding style cleanups.
* configure.in: added --enable-threads that defaults to yes.
* gmutex.c: changed tests g_thread_supported to g_thread_supported (),
changed variable settings of g_thread_supported
to g_threads_got_initialized.
garray.c:
gcache.c:
gdataset.c:
gdate.c:
ghash.c:
glist.c:
gmain.c:
gnode.c:
gslist.c:
gstring.c:
gtree.c:
gutils.c:
changed s/g_lock/G_LOCK/, s/g_unlock/G_UNLOCK/,
s/static G_LOCK_DEFINE/G_LOCK_DECLARE_STATIC/.
Tue Dec 15 17:17:46 1998 Owen Taylor <otaylor@redhat.com>
* glib.h giounix.c giochannel.c: Use an "inheritance"
scheme for IO channel memory allocation.h
1998-12-15 Havoc Pennington <hp@pobox.com>
* gdate.c (g_date_prepare_to_parse): Solaris has a broken strftime
that produced garbage output for the test date I was using to
set up the parser. So use a different date that Solaris seems
to like.
1998-12-15 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Dont complain, if --without-threads or
--with-threads=none is supplied; Test for pthread_attr_init
instead of pthread_cond_init, if threads seems to be supported by
standard glib. (CFLAGS): Use G_THREAD_CFLAGS for compiling of glib
as well.
* glib.h, gmutex.c: Changed private to private_key to avoid
problems when compiling with under C++.
Tue Dec 15 10:40:09 1998 Owen Taylor <otaylor@redhat.com>
* gnode.c glist.c gslist.c: Make sure all
calls to g_node_validate_allocator are within
current_allocator lock, so we have consistency
on that point. (Should not really matter,
but this way we match the comments)
* glist.c (g_list_free_1): Removed some lines
that should never have been committed. (For
debugging)
branch. See the ChangeLog for details of the changes.
In brief overview:
- The set of threading functions can be set
- A default implementation is provided in -lgthread
- All static data structures are locked using these
functions if g_thread_init() is called.
Sat Dec 12 19:08:59 1998 Tim Janik <timj@gtk.org>
* configure.in: always define G_HAVE_INLINE if __cplusplus is
defined, reported by Wan-Teh Chang <wtc@netscape.com>.
Thu Dec 10 21:49:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
* Released GLib 1.1.7
* INSTALL:
NEWS:
README:
configure.in:
glib.spec:
docs/glib-config.1: Increased version to 1.1.7
1998-12-02 Havoc Pennington <hp@pobox.com>
* gdate.c (g_date_set_month): If Julian is valid, we have to
update the dmy representation before setting the components
of it.
(g_date_set_day): Same.
(g_date_set_year): Same.
1998-12-02 Havoc Pennington <hp@pobox.com>
* testgdate.c, testgdateparser.c: Two new files. This is kind of
ugly code, but I want to go ahead and make the tests available.
It isn't contaminating any other code. :-) Since one of these
is interactive and the other takes a while to run, I've kept
them separate from testglib for now.
* Makefile.am: Build gdate test programs.
someone does the necessary updates.
Sat Nov 28 12:53:47 1998 Owen Taylor <otaylor@redhat.com>
* Makefile.am configure.in acconfig.h giochannel.c
glib.h glist.c gmain.c gutils.c:
- Revised GIOChannel to provide a generic virtual-function
based interface.
- Added unix fd-based GIOChannel's
- Added generic main-loop abstraction
- Added timeouts and idle functions using main-loop abstraction.
1998-12-02 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* glib.h:
* gdate.c: changed `gpointer struct_tm_p' parameter of
g_date_to_struct_tm back to `struct tm *tm' and forward declared
`struct tm' in glib.h; yes, this is nice, we still need not
include time.h.
Wed Dec 2 02:10:59 1998 Tim Janik <timj@gtk.org>
* gdate.c: s/time_t/GTime/ and s/g_print/g_message/
include time.h.
* glib.h: removed #include <time.h>, changed time_t paramter of
g_date_set_time() to time_t, changed struct tm parameter of
g_date_to_struct_tm to `gpointer struct_tm_p'. yes, this is not
nice, but including time.h actually breaks a bunch of code.
this breaks something let me know and I will fix it.
1998-11-30 Havoc Pennington <hp@pobox.com>
* gdate.c: New file, implements calendrical calculations.
* glib.h: Added declarations for GDate module.
Mon Nov 30 07:12:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
* ghook.c: added g_hook_list_marshal_check() to eventually destroy
hooks after they got marshalled.
Thu Nov 26 01:36:20 1998 Tim Janik <timj@gtk.org>
* glib.h:
* ghash.c: reverted the g_hash_table_set_key_freefunc() addition,
since it's to specialized and needs to be resolved in a generic
fashion.
Tue Nov 24 18:57:59 PST 1998 Manish Singh <yosh@gimp.org>
* applied glib-tml-981120-0, change log appended below.
* glibconfig.h.win32: passthrough 64-bit constants unchanged, VC++
infers them
Fri Nov 20 22:26:43 1998 Tor Lillqvist <tml@iki.fi>
* glib.h: Moved MSC pragmas from glib.h to glibconfig.h.win32.
peer_offset field in WIN32 part of GIOChannel removed, need_wakeups
added. Added "extern" to __declspec(dllimport).
* gutils.c: Initialise need_wakeups.
* glibconfig.h.win32: Pragmas moved here. Define G_GINT64_CONSTANT.
* gmodule/gmodule.def: Added g_module_build_path.
* gscanner.c: (g_scanner_cur_value) Move initailisation of v
to before its use.
* glib.def: Added g_(s)list_sort.
* makefile.msc: A few more comments.
-Yosh
Tue Nov 24 14:05:47 EST 1998 Michael K. Johnson <johnsonm@redhat.com>
* glib.h: added GFreeFunc and g_hash_table_set_key_freefunc()
prototype.
* ghash.c: added g_hash_table_set_key_freefunc() implementation.
Modified the prototypes of the functions g_hash_node_destroy() and
g_hash_nodes_destroy(), and changed the functions that call them
to match the new definitions.
This changes no external interfaces, and should create no binary
or source incompatibilities. It does add a member to the
GHashTable structure.
Tue Nov 24 09:40:00 1998 Tim Janik <timj@gtk.org>
* glib.h: removed the GListAllocator type and its g_*_allocator_*()
function variants (which weren't working anyways) in favour of a
generic GAllocator type. new functions:
g_allocator_new, g_allocator_free, g_slist_push_allocator,
g_slist_pop_allocator, g_list_push_allocator, g_list_pop_allocator,
g_node_push_allocator and g_node_pop_allocator.
* gstring.c: removed bogus slist allocator code.
* gtree.c: maintain own list of free tree nodes and don't waste
GSLists for that, removed bogus slist allocator code.
* glist.c: use GAllocators for node allocation.
* gslist.c: use GAllocators for node allocation.
* gnode.c: use GAllocators for node allocation.
* gdataset.c: cleanups wrt automatic initialization.
Mon Nov 23 10:03:58 1998 Owen Taylor <otaylor@gtk.org>
* glib.h garray.[ch]: added g_array_insert_vals() to
insert elements at an arbitrary index, and
g_array_insert_val() macro.
Sun Nov 22 17:07:03 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gslist.c: new function g_slist_copy() to duplicate a list with all its
data pointers.
* glist.c: new function g_list_copy.
Sat Nov 21 14:57:39 CST 1998 Shawn T. Amundson <amundson@gtk.org>
* INSTALL:
NEWS:
README:
configure.in:
glib.spec: Updated to version 1.1.5
* Released GLib 1.1.5
Mon Nov 16 07:48:06 1998 Tim Janik <timj@gtk.org>
* glib.h (g_bit_nth_msf): fixed off-by-one error, so we don't waste
a loop iteration if (-1) was passed, reported by Andreas Bombe
<andreas.bombe@munich.netsurf.de>.
Fri Nov 13 15:17:34 1998 Owen Taylor <otaylor@redhat.com>
* glist.c gslist.c glib.h: Added g_list_sort() and
g_slist_sort() to merge sort GLists and GSLists.
Submitted by Sven Over <sven.over@ob.kamp.net>
over a year ago!
* testglib.c: Test the new sort functions.
INCLUDES is the right way to add to CFLAGS, not DEFS.
Also there are bugs with '+=' in makefiles.
Got rid of DEFS line by moving G_LOG_DOMAIN setting into INCLUDES.
Removed redundant -I from INCLUDES.
This fixes an annoying bug where autoconf's DEFS, which includes
the important -DHAVE_CONFIG_H, was lost. (due to += weirdness)
Wed Nov 11 18:11:24 EST 1998 Gregory McLean <gregm@comstar.net>
* docs/*.sgml : Batch of new documentation that should be easier
to maintain and extend. Plus generate whatever sort of doc file
you would like. I didn't change the Makefile stuff as I'm not sure
what default doc type people want. Oh and this is all DocBook format.
Enjoy!
* configure.in: use __extension__ for long long on gcc >= 2.8 and
egcs, and provide a G_GINT64_CONSTANT wrapper so -ansi -pedantic
compiles clean.
* glib.h: make the endian x86 asm __const__ so the compiler can do
better optimizations. Also remove the cc clobber, these shouldn't
be changing condition codes. Ditch some redundant casts. Add an
optimization for 64-bit endian conversions in x86. Use constant
wrapper for the generic method.
* testglib.c: use constant wrappers for 64-bit constants
-Yosh
1998-11-04 Phil Schwan <pschwan@cmu.edu>
* configure.in: Added 'strncasecmp' to the list of functions to be
searched for.
* glib.h: Added a prototype for 'g_strncasecmp'
* strfuncs.c: (g_strncasecmp) new function modeled closely after
'g_strcasecmp'
1998-11-03 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* glib.h:
* garray.h:
(g_array_remove_index): new function for removing an entry from an
array while preserving the order
(g_array_remove_index_fast): new function for removing an entry
from an array. the order might be distorted
(g_ptr_array_remove_index_fast, g_ptr_array_remove_fast): new
functions; working similiar to the above. (they have the semantic
of the old g_ptr_array_remove[_index] functions)
(g_ptr_array_remove_index, g_ptr_array_remove): new semantic. now
the order of the elements in the array is not changed
(g_byte_array_remove_index, g_byte_array_remove_index_fast): new
functions; byte_array wrapper for g_array_remove_index[_fast]
* glib.h
* configure.in: endian macros defined using the glibconfig.h mechanism now
* ghook.c: casts for GHookFunc and GHookCheckFunc to avoid warnings
-Yosh
* applied glib-tml-981101-1 patch from Tor Lillqvist (ChangeLog
entry appended below)
* testglib.c
* gstrfuncs.c
* glib.h: use G_HAVE_GINT64, since HAVE_GINT64 is gone
* gmessages.c
* gscanner.c: #include <config.h> in here too, for HAVE_UNISTD_H
-Yosh
* Makefile.am (glibconfig.h): New rule.
(stamp-gc-h): New rule. Generate `glibconfig.h'.
* configure.in (AM_CONFIG_HEADER): It is now `config.h'.
(HAVE_BROKEN_WCTYPE): On Solaris, look for iswalnum in -lw before
concluding "broken wctype".
(glibconfig.h): Use AC_OUTPUT_COMMANDS to put generation code into
config.status.
* glib.h: Remove a lot of tests and defines. All these have been
moved to `configure.in (glibconfig.h)'.
* gerror.c: Include <config.h>.
* gmem.c: Likewise.
* gstrfuncs.c: Likewise.
* gutils.c: Likewise.
This could cause some short term instability.
Sat Oct 31 05:08:26 1998 Tim Janik <timj@gtk.org>
* glib.h: removed old G_ENUM(), G_FLAGS(), G_NV() and G_SV() macros.
added macros G_STRUCT_OFFSET(), G_STRUCT_MEMBER_P() and
G_STRUCT_MEMBER() for handling structure fields through their offsets.
(struct _GHookList): added a hook_free function member, that can be used
to free additional fields in derived hook structures.
g_hook_free(): if hook_list->hook_free != NULL, call this function prior
to freeing the hook. (this functionality should have been there in the
first place, it just got forgotten as an implementation detail).
Tue Oct 27 07:25:53 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gscanner.c:
(g_scanner_sync_file_offset): new function for file input.
rewind the filedescriptor to the current buffer position and blow
the file read ahead buffer. usefull for third party uses of our
filedescriptor, which hooks onto the current scanning position.
(this became neccessary with the implementation of buffered
reads).
(g_scanner_input_file):
(g_scanner_input_text): automatically blow the read ahead buffer.
(g_scanner_get_char): blow the read ahead buffer when the end of
input is reached, i.e. a '\000' char is read.
* glib.h: reimplemented the endian stuff, using inline asm for x86.
#define g_htonl and friends.
* testglib.c: new tests for the endian stuff
* configure.in: care for AIX in gmodule linker flags test (from Joel Becker
<jlbec@raleigh.ibm.com>). Check $host_os for linux instead of existance of
/usr/include/linux
* gutils.c: buh-bye evil warning. Thou hast been #ifdef'd out of thine
existance!
-Yosh
Tue Oct 27 03:00:50 1998 Tim Janik <timj@gtk.org>
* glib.h: removed dummy structure definitions for struct _GCache,
_GTree, _GTimer, _GMemChunk, _GListAllocator and _GStringChunk.
* gutils.c: implement glib's inline functions _after_ all include
statements have been processed.
removed Tor's MAXPATHLEN check since there already was one supplied
further down in this file.
(LibMain): special cased the #ifdef __LCC__ case for NATIVE_WIN32,
since lcc maybe used on other platforms as well. why in hell is this
stuff required?
(g_get_any_init): for windows, if the user name is supplied, use it as
realname also.
in general, if there is no homedir specified, use the tmpdir that
we already figured.
* gtimer.c (g_timer_elapsed): changed a g_assert() statement to
g_return_if_fail().
* applied glib-tml-981020-0.patch for WIN32 portability, added some
comments and g_return_if_fail() statements, minor indentation fixes.
ChangeLog entry from Tor Lillqvist is appended.
* glib.h (struct dirent): use lower case structure members.
* glib.h:
* makefile.lcc:
* makefile.msc:
s/COMPILING_GLIB/GLIB_COMPILATION/
1998-10-20: Tor Lillqvist <tml@iki.fi>
* README.win32 glib.def gmodule.def
* glibconfig.h.win32 gmodule/gmoduleconf.h.win32:
New files for the Windows port. The .def files list exported
symbols for the Microsoft linker and compatibles.
* configure.in:
Added checks for some platform-dependent headers: pwd.h sys/param.h
sys/select.h sys/time.h sys/times.h unistd.h, and the function lstat.
* gerror.c:
Conditionalized inclusion of system-dependent headers. Changes
for Windows: no gdb to do a stack trace. Just call abort().
* glib.h:
Changes for Windows:
Added macros G_DIR_SEPARATOR, G_DIR_SEPARATOR_S for
platform-dependent file name syntax elements. Added macros
G_SEARCHPATH_SEPARATOR, G_SEARCHPATH_SEPARATOR_S for
platform-dependent search path syntax conventions.
Added pragmas for Microsoft C to make it more pedantic.
Marked GLib's global variables for export from DLL.
Added the function g_strescape that escapes backslashes.
Added functions g_path_is_absolute and g_path_skip_root to
handle platform-dependent file name syntax.
Added the function g_getenv that expands environment variables
that contain references to other environment variables, as is
typical on Windows NT.
Added the GIOChannel structure which is used to encapsulate the
IPC mechanism used by the GIMP's plug-ins, and possibly other
things later. On Unix a GIOChannel encapsulates just a file
descriptor. On Windows it contains a file handle from _pipe() and a
few other things related to the implementation of gdk_input_add
and GIMP plug-in communication. Subject to change.
Removed duplicate declarations of the version variables.
For the Microsoft compiler, declare own implementation of
ftruncate and the <dirent.h> functions.
* gmem.c:
Define a symbolic name for the profiling table size.
* gmessages.c:
Conditionalized inclusion of unistd.h. On Windows, output using
stdio to stdout.
* gscanner.c:
Conditionalized inclusion of unistd.h. Added changes for
Microsoft C. Added CR to the skipped character set. Added small
workaround for MSC compiler bug in g_scanner_cur_value.
* gstrfuncs.c:
Added the function g_strescape, which escapes the backslash
character. Needed especially when printing Windows filenames.
* gtimer.c:
Conditionalized inclusion of unistd.h and sys/time.h. Added
implementations for Windows.
* gutils.c:
Conditionalized inclusion of platform-dependent headers. Use
the platform-independent file name syntax macros.
Conditionalize code on platform-dependent features. Added the
functions g_path_is_absolute g_path_skip_root and g_getenv.
Added the GIOChannel-related functions. Added
compiler-dependent Unix compatibility functions for Windows.
* makefile.lcc makefile.msc:
New files. Compiler-specific makefiles for LCC-Win32 and
Microsoft C. Only Microsoft C is actually supported currently.
* testglib.c:
Added pathname check cases for Windows. Added workaround for
bug in the Microsoft runtime library. Improved some tests a bit.
Tue Oct 27 04:00:11 1998 Tim Janik <timj@gtk.org>
* testgmodule.c (main): changed the #ifdef WIN32 test to NATIVE_WIN32,
this needs to be more constistent throughout the code, do we go for
NATIVE_WIN32 or WIN32?
* gmodule.c (LibMain): special cased the #ifdef __LCC__ case for
NATIVE_WIN32, since lcc maybe used on other platforms as well.
* libgplugin_a.c (LibMain):
* libgplugin_b.c (LibMain):
likewise. not sure i like this special requirement for lcc in here.
* gmodule-dl.c (_g_module_build_path):
feature empty "" directories and prepend the module name with "lib".
* gmodule-dld.c (_g_module_build_path):
* gmodule-win32.c (_g_module_build_path):
feature empty "" directories.
* we need some more magic in the _g_module_build_path variants
so we don't append/prepend lib and .so, .sl or .dll for those names
that already contain it.
* applied patch from Tor Lillqvist for g_module_build_path() and
windows support.
1998-10-20: Tor Lillqvist <tml@iki.fi>
* gmodule/gmodule-win32.c:
New file.
* gmodule/gmodule.c gmodule/gmodule.h:
Added the funcion g_module_build_path that builds the path to
a module file, decorating the name according to the system's
conventions. Added the Windows implementation.
* gmodule/libgplugin_a.c gmodule/libgplugin_b.c:
Added LibMain for LCC-Win32.
* gmodule/testgmodule.c:
Handle Windows dll names.
Sun Oct 25 01:24:01 CST 1998 Shawn T. Amundson <amundson@gtk.org>
* Released GLib 1.1.4
* docs/Makefile.am:
* docs/.cvsignore
* docs/glib-config.1:
* docs/glib.texi: Moved docs from gtk and created glib-config.1
from gtk-config.1 in gtk
* configure.in:
* Makefile.am:
* sanity_check: added in docs directory, change rule 'release'
to 'snapshot' and created a new 'release' rule for doing the
distribution. Added in a 'sanity' rule.
* NEWS:
* README:
* INSTALL: Updated for the release
Sun Oct 25 07:30:10 1998 Tim Janik <timj@gtk.org>
* gscanner.c:
(g_scanner_peek_next_char):
(g_scanner_get_char): no more characters are available if read() returns
anything less than 1, not only on 0 return.
* glib.h:
* gstrfuncs.c: final API cleanup of string arrays to suit sopwith's
argument order requirements.
(g_strsplit): renamed from g_str_array_split().
(g_strjoinv): renamed from g_str_array_joinv(), string array is
now passed as last parameter. removed `const' qualifier from string
array pointer (again).
(g_strjoin): new function from sopwith to concatenate strings with
an additional seperator.
(g_strfreev): renamed from g_str_array_free.
Wed Oct 21 19:22:58 1998 Tim Janik <timj@gtk.org>
* configure.in (G_MODULE_HAVE_DLERROR): reverted part of the changes
from Sebastian Wilhelmi (1998-10-20). don't specify a specific loading
behaviour (i.e. RTLD_NOW) when we are not sure whether it is supplied.
changed the return value from (!f2 && f1) to (!f2 || f1) so we default
to not needing an underscore. reverted the extra plugin.c building,
because .lo files are not ELF libraries, this can't work. This needs
further investigation on Solaris...
Wed Oct 21 19:58:27 1998 Tim Janik <timj@gtk.org>
* gmodule.c (g_module_symbol): fixed a string pointer bug that could
cause garbage error messages from g_module_symbol() for systems that
NEED_USCORE.
Wed Oct 21 17:03:05 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gstrfuncs.c: API cleanups of the new g_str* functions for consistency
with the existing naming scheme for g_str* functions. grouped the g_str*
functions that will return a newly allocated string seperatedly. all of
the in_place arguments were skipped, the caller is supposed to pass a
g_strdup()ed string if he wants to retrive a new copy. indentation and
coding style fixups. added some g_return_if_fail() statements.
string array functions are prefixed with g_str_array_.
(g_strdelimit): return the modified string like all other g_str*
functions, that operate in place.
(g_strchug): renamed from g_str_chug(), removed in_place argument.
(g_strchomp): renamed from g_str_chomp(), removed in_place argument.
(g_strstrip): renamed from g_str_strip(), removed in_place argument.
(g_str_array_join): renamed from g_strconcatv(), since it actually
operates on a string array and has totaly different semantics from
g_strconcat(). check for separator != NULL, don't segfault if the first
string is NULL. removed the `const' from the string array that's passed,
so users can operate on gchar** string arrays.
(g_str_array_split): renamed from g_str_split() because we actually
produce a string array. reimplemented this function for efficiency.
removed macro aliases g_str_joinv and g_str_join.
1998-10-20 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: made the check for needed underscore in module's
func-names work on solaris. (G_MODULE_NEED_USCORE must be set
outside AC_CACHE_VAL, dlopen(0,0) refused to work on solaris).
Thu Oct 8 06:47:27 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gdataset.c: removed functions g_dataset_id_set_destroy and
g_datalist_id_set_destroy and macros g_dataset_set_destroy and
g_datalist_set_destroy.
added new functions g_dataset_id_remove_no_notify and
g_datalist_id_remove_no_notify plus associated macros
g_dataset_remove_no_notify and g_datalist_remove_no_notify, which
will remove a certain data portion without invokation of its destroy
notifier, this should only be used in very controled circumstances.
Wed Oct 7 05:31:24 1998 Tim Janik <timj@gtk.org>
* glib.h:
removed the #pragma } statement after extern "C" {. use
(c-set-offset 'inextern-lang 0) to fixup emacs cc-mode indentation.
* glib.h:
* ghook.c: API and code cleanups. changed the G_HOOK_ACTIVE and
G_HOOK_IN_CALL enum vals to G_HOOK_FLAG_ACTIVE and G_HOOK_FLAG_IN_CALL.
changed the G_HOOK_IS_ACTIVE() and G_HOOK_IS_IN_CALL() macros to
G_HOOK_ACTIVE() and G_HOOK_IN_CALL().
fixed the g_hook_find* functions, so they iterate over non-active
hooks as well.
(g_hook_first_valid):
(g_hook_next_valid): added an extra argument gboolean may_be_in_call,
which indicates whether G_HOOK_IN_CALL() hooks are considered valid
or not. these two functions are meant as iterators for the hook list
invocation, so they need to a) provide functionality to implement
may_recurse bahaviour and b) only walk active hooks.
Tue Oct 6 14:29:47 1998 Tim Janik <timj@gtk.org>
* gmem.c (g_malloc0): fixed memory offsett when ENABLE_MEM_CHECK is
defined and ENABLE_MEM_PROFILE is not (patch from Martin Pool
<mbp@wistful.humbug.org.au>).
Sat Oct 3 01:18:10 1998 Tim Janik <timj@gtk.org>
* glib.h:
* ghook.c:
(g_hook_list_invoke):
(g_hook_list_invoke):
(g_hook_list_marshal): properly handle the first valid hook to call,
it maybe IN_CALL already.
(g_hook_list_marshal): minor name change.
Fri Oct 2 23:21:21 1998 Tim Janik <timj@gtk.org>
* glib.h:
* ghook.c: renamed GHook.id to GHook.hook_id so we don't get troubles
with ObjC which reserves "id" as a keyword (Raja R Harinath
<harinath@cs.umn.edu>).
Fri Sep 25 00:04:37 1998 Tim Janik <timj@gtk.org>
* configure.in: version bump to 1.1.4, binary age 0, interface age 0.
* glib.h (struct _GScanner): dumped peeked_char and text_len in favour
of *text_end and *buffer for buffered read()s.
* gscanner.c: changed peeking and retrival of next character so we
have buffered reads. fixed minor bug with number parsing error
reporting. made some static!!! variables local ones (why did we use
static temporary variables in the lowlevel tokenization code anyways?).
Mon Sep 21 02:22:12 1998 Tim Janik <timj@gtk.org>
* NEWS file update for upcoming release of GLib + GModule
version 1.1.3, binary age 0, interface age 0. (GModule uses
the same version numbers as GLib.)
* glib.h: swap the inclusion of of float.h and limits.h to work
around a egcs 1.1 oddity on Solaris 2.5.1 (fix provided by
Per Abrahamsen <abraham@dina.kvl.dk>).
* glib.h:
* gscanner.c: renamed the GValue union to GTokenValue, this should
not affect source compatibility in most cases.
* ghash.c: added some g_return_if_fail() statements. make
g_hash_table_lookup_node() an inline function so we save an extra
function invokation on lookups.
Mon Sep 21 01:54:48 1998 Tim Janik <timj@gtk.org>
* gmodule.h:
* gmodule.c: renamed old _de_init functionality to _unload.
modules are now expected to export:
G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module);
and
G_MODULE_EXPORT void g_module_unload (GModule *module);
returning a string other than NULL from g_module_check_init() will
prevent the module from being loaded. a call to g_module_make_resident()
from g_module_unload() will prevent the module from being unloaded and
still make it resident.
nothing will break.
* glib.h: New function g_hash_table_foreach_remove is similar to
g_hash_table_foreach, but the callback's return value indicates
whether to remove the element (if TRUE) or not (if FALSE).
Fri Sep 18 18:46:14 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gdataset.c: make the datalists a safe type (not using a generic
gpointer) by expecting a GData* argument in the g_datalist functions.
provide g_dataset_foreach() and g_datalist_foreach() functions that
allow a GDataForeachFunc function to walk the data lists.
(g_dataset_destroy_internal): made this function truely reentrant (i.e.
can be called from within destroy notifiers as well).
the *_foreach functions are _not_ reentrant (unless all the other
dataset and datalist functions).
Thu Sep 17 06:36:25 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gdataset.c: implemented g_datalist_* along the lines of g_dataset,
but operates on an opaque gpointer *datalist; pointer, e.g. for the
implementation of GtkObject named data.
we cache a certain portion of the already freed data entries now, to
gain a slight performance improve with data reallocation.
Thu Sep 17 06:34:22 1998 Tim Janik <timj@gtk.org>
* gmodule.h:
* gmodule.c: implemented g_module_make_resident() which can be
used to make modules resident.
fixed a buglet about the optional "g_module_de_init" function in
modules, which could get invoked twice on very obscure occasions.
Tue Sep 15 14:57:30 1998 Owen Taylor <otaylor@redhat.com>
* Makefile.am glib-config.in l*: Update to libtool-1.2b,
change library versioning scheme to drop LT_RELEASE
from the -l line, while keeping it in the soname.
Fri Sep 11 02:11:46 1998 Tim Janik <timj@gtk.org>
* glib.h: explicitely include the prototypes for inline functions
to cure gcc warnings for -Wmissing-prototypes.
Tue Sep 8 05:04:06 1998 Tim Janik <timj@gtk.org>
* glib.h: abandon the use of ATEXIT(), we keep the fallback
macros for backwards compatibility. people ought to use g_atexit().
* gutils.c (g_atexit): new function to take over the implementation
of ATEXIT. this function is guarranteed to succeed, similar to
g_malloc().
Mon Sep 7 07:53:21 1998 Tim Janik <timj@gtk.org>
* configure.in: check for all three inline keywords individually.
* glib.h: inlining hassle. for compilers that don't allow the `inline'
keyword, mostly because of strict ANSI C compliance or dumbness, we try
to fall back to either `__inline__' or `__inline'.
we define G_CAN_INLINE, if the compiler seems to be actually *capable*
to do function inlining, in which case inline function bodys do make
sense. we also define G_INLINE_FUNC to properly export the function
prototypes if no inlinig can be performed. we special case most of the
stuff, so inline functions can have a normal implementation by defining
G_INLINE_FUNC to extern and G_CAN_INLINE to 1.
* ltconfig: (compiler PIC flag test): special case linux for non
aout systems to honour lcc's position independant code (cases
"linux*aout)" and "linux*)" got added). (this needs to go into
libtool which does an advanced test, checking for __LCC__).
* autogen.sh: take $CC=lcc into account by invoking automake with
--include-deps so lcc isn't scared by gcc's auto-dependancy
generation code. care about $ACLOCAL_FLAGS. optionally feature
autoheader.
* minor fixups in other places to cure some of lcc's warnings.
Sat Sep 5 04:40:02 1998 Tim Janik <timj@gtk.org>
* glib.h:
(g_chunk_new0): use g_mem_chunk_alloc0() to allocate the memchunk,
so the correct size of the memchunk is allocated with 0's and not
a memory portion of the size of the desired type.
* gmem.c: new function g_mem_chunk_alloc0() which will initialize
a memory area allocated with g_mem_chunk_alloc() with 0's.