2000-10-30 Tor Lillqvist <tml@iki.fi>
* configure.in: Check for mkstemp.
* gutils.c (g_mkstemp): New function. If HAVE_MKSTEMP, just call
it, otherwise use code lifted from glibc.
* gutils.h: Declare it.
* glib.def: Here, too.
2000-10-30 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gcache.h, gcache.c, ghash.h, ghash.c, grel.c, grel.h, gtypes.h:
Introduced new function type GEqualFunc to return TRUE for equal
params. This is now used instead of GCompareFunc (which should
work akin to strcmp) here. This kind of fixes Bug #14412. Note
that technically GCompareFunc and GEqualFunc are still the same
types, as gint == gboolean.
* ghash.h, gutils.c: g_int_equal and g_direct_equal now return
gboolean to be really become GEqualFunc.
* gscanner.c, testglib.c, tests/hash-test.c: Some tiny changes to
follow the above change.
2000-10-24 Havoc Pennington <hp@pobox.com>
* gmarkup.h, gmarkup.c: New module to parse a simple
markup language
* Makefile.am: add gmarkup.h, gmarkup.c
* tests/Makefile.am: add markup-test
* gstring.h (g_string_new_len): new function to create a string
with a length
(g_string_new): avoid a gratuitous realloc
2000-10-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gstrfuncs.c (g_strsplit): When the string is ended by a
delimiter, return an extra empty string just like for a delimiter
at the start of the string. This makes the function behave more
consitent and also fixes Bug #15026.
Tue Oct 24 22:09:14 2000 Tim Janik <timj@gtk.org>
* glib-object.h: added newly added gobject/ headers.
* gmesage.c: print g_message() output to stderr instead of stdout.
Wed Oct 25 20:27:02 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_free_instance): for the moment, freeing object
structures will fill their memory portion with 0xAA. there's a
FIXME there, remove this line at a later point.
Tue Oct 24 23:10:26 2000 Tim Janik <timj@gtk.org>
* glib-genmarshal.1:
* glib-genmarshal.c: added publically installed marshaller generator.
* gtype.h: added G_TYPE_INSTANCE_GET_INTERFACE() to retrive a certain
interface VTable from instances.
Mon Oct 23 08:28:15 2000 Tim Janik <timj@gtk.org>
* gobject.[hc]: new functions for closure maintenance:
(g_object_watch_closure): maintain validity of the object and
the closure for objects that are used as data part of a closure.
(g_cclosure_new_object): convenience function to create C closures
that have an object as data argument.
(g_closure_new_object): convenience function to create closures
that have an object as data argument.
* gclosure.[hc]: implementation of GClosure mechanism.
a closure is basically an encapsulation of a callback function
and its environment. ideally, most places supporting callback
functions will simply take a GClosure* pointer and thus unify
callback environments wrg destroy notification etc.
GClosure provides destroy notifiers for arbitrary data pointers,
reference counting, invalidation notification (it can be invalidated
which is merely a deactivate state) and a marshallinbg abstraction.
GCClosure is also provided in these files, they present a specialized
GClosure implementation for C language callbacks.
* genum.c: macro cleanups.
* gboxed.[hc]: new files, for boxed type abstraction.
(g_boxed_copy): copy a boxed structure
(g_boxed_free): free a boxed structure
(g_value_set_boxed):
(g_value_get_boxed): standard GValue functions for boxed types
(g_boxed_type_register_static): convenience function for easy
introduction of new G_TYPE_BOXED derivatives.
* gparam.[hc]: introduced g_param_type_register_static(), a short hand
for creation of new GParamSpec derived types.
* gtype.[hc]: many fixes, introduced ability to flag individual
type nodes as ABSTRACT upon registration, added value_peek_pointer()
to the value table to peek at GValue contents as a pointer for types
that support this. fixed up GValue checks.
* gvalue.[hc]: added g_value_fits_pointer() and g_value_get_as_pointer()
to peek at the value contents as pointer.
* *.[hc]: adaptions to type macro fixes and changes in the type
registration API.
* many const corrections over the place.
Sat Oct 21 02:49:56 2000 Tim Janik <timj@gtk.org>
* gtype.c (g_type_conforms_to): this function basically behaves like
and is_a check, except that it _additionally_ features interfaces
for instantiatable types. enforce this in the second branch as well
(`type' conforms_to `type') even if `type' is not an interface type.
Fri Oct 20 15:31:04 2000 Tim Janik <timj@gtk.org>
* gvaluetypes.[hc]: added G_TYPE_POINTER implementation from jrb.
* gtype.[hc]:
* gobject.c:
* gvaluetypes.c: added GTypeValueTable.value_peek_pointer and
suitable implementations of this for G_TYPE_STRING, G_TYPE_OBJECT
and G_TYPE_POINTER.
Mon Aug 21 04:13:37 2000 Tim Janik <timj@gtk.org>
* gbsearcharray.[hc]: long standing needed generic implementation
of a binary searchable, sorted and dynamically sized array.
2000-10-19 Tor Lillqvist <tml@iki.fi>
* makefile.msc.in: Pass -DGSPAWN_HELPER when building it. Link
with user32.lib.
* gspawn-win32.c
* gfileutils.c: Make them compile with picky MSVC.
* gwin32.h: New file. Move Win32-only stuff that isn't related to
GIOChannels here from giochannel.h.
* Makefile.am: Add it here.
* giochannel.h: Move stuff to gwin32.h.
* glib.h: On Win32, include gwin32.h.
2000-10-16 Tor Lillqvist <tml@iki.fi>
* giowin32.c (reader_thread): Some more debugging output.
(g_io_channel_win32_poll): Remove unused vars.
* gfileutils.c: Changes for Win32, with no unistd.h and no
S_ISLNK().
* gspawn-win32.c: Implementation of the g_spwan_* functions for
Win32. Due to the general non-Unixness of Win32, much of the
functionality that is relatively clean to implement on Unix, is
hard to do on Win32. We must use a separate helper program to
change directory, close extra file descriptors, redirect the std
ones, as needed, and only then start the child process. No child
process pid can be returned, unfortunately. Or if we used
CreateProcess directly, it probably could. (Now we use the spawnv*
functions from msvcrt.)
* glib.def: Add new entry points.
* glib.def
* giowin32.c: Remove g_io_channel_win32_wait_for_condition(),
g_io_channel_win32_poll() subsumes it.
* gbacktrace.h: G_BREAKPOINT for MSVC (on the ix86).
* gwin32.c (g_win32_getlocale): Use "sp" for
LANG_CROATIAN+SUBLANG_SERBIAN_LATIN.
* makefile.{mingw,msc}.in (glib_OBJECTS): Add new files.
Add gspawn-win32-helper.exe rule.
* tests/makefile.{mingw,msc}.in (TESTS): Add shell-test and
spawn-test.
* tests/spawn-test.c: (run_tests): On Win32, don't try to run
/bin/sh, but ipconfig (no special significance in choosing that,
just a program that outputs something to stdout).
gmodule:
* Makefile.am (BUILT_EXTRA_DIST): New variable.
(dist-hook): Handle $(BUILT_EXTRA_DIST).
gobject:
* Makefile.am (BUILT_EXTRA_DIST): New variable.
(dist-hook): Handle $(BUILT_EXTRA_DIST).
(*): Remove traces of @STRIP_{BEGIN,END}@.
gthread:
* Makefile.am (BUILT_EXTRA_DIST): New variable.
(dist-hook): Handle $(BUILT_EXTRA_DIST).
docs/reference:
'make distcheck' fixes.
* glib/Makefile.am (EXTRA_DIST): Add $(DOC_MODULE)-decl.txt.
(html): Run 'gtkdoc-fixxref' in $(srcdir).
(dist-check-gtkdoc): Add missing quote.
(dist-hook): Copy in dependency order, so that none of the
makerules are fired in a tarball build.
* gobject/Makefile.am: Likewise.
toplevel:
Remove need for acconfig.h, and misc. cleanups.
* acglib.m4 (GLIB_SIZEOF): Add 'autoheader' comment to
AC_DEFINE_UNQUOTED.
(GLIB_BYTE_CONTENTS): Likewise.
* configure.in: Add 'autoheader' comments to all AC_DEFINE(...)
and AC_DEFINE_UNQUOTED(...) lines.
Replace AC_MSG_CHECKING/AC_CACHE_VAL with AC_CACHE_CHECK.
(AM_PROG_LIBTOOL): Move after AC_PROG_CC.
* acconfig.h: Empty out.
* Makefile.am (BUILT_EXTRA_DIST): New variable. List 'dist'able
files that are created in the builddir.
(dist-hook): Handle those files.
(libglib_1_3_la_SOURCES): Remove @ALLOCA@. @ALLOCA@ should only
be used in an _LDADD or _LIBADD, since it expands (if necessary)
to 'alloca.o'.
* tests/Makefile.am (BUILT_EXTRA_DIST): New variable.
(dist-hook): Handle $(BUILT_EXTRA_DIST).
2000-10-13 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* grand.c: Added inline documentation.
* docs/refernce/glib/glib-sections.txt: Added misc items.
* docs/refernce/glib/tmpl/random_numbers.sgml: Documentation for
the random number generator.
2000-10-13 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gtypes.h, gnode.h, gutils.h: Readded GFreeFunc,
g_node_insert_after and g_find_program_in_path resp., which
mysteriously disappeared during the glib.h dissection.
2000-10-12 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: define GLIB_HAVE_ALLOCA_H instead of including
alloca.h in glibconfig.h, GLIB_HAVE_ALLOCA_H is used in glib.h.
* configure.in (GLIB_MAJOR_VERSION): Use GLIB_DIVERT_BEFORE_HELP
instead of AC_DIVERT_PUSH(),AC_DIVERT_POP.
(AC_CHECK_HEADERS): Remove redundant AC_DEFINE(HAVE_...).
(REALLOC_0_WORKS): Move AC_DEFINE outside AC_CACHE_VAL.
(dlopen): Quote nested AC_CHECK_... calls.
* acglib.m4 (GLIB_TR_SH, GLIB_TR_CPP): Utility macros copied from
beta autoconf 2.50.
(GLIB_DIVERT_BEFORE_HELP): New macro that works both with autoconf
2.13 and beta autoconf 2.50.
(GLIB_SIZEOF, GLIB_BYTECONTENTS): Use GLIB_TR_*.
2000-10-09 Havoc Pennington <hp@redhat.com>
* Makefile.am, tests/Makefile.am: Add new files.
* tests/spawn-test.c, tests/shell-test.c: new tests for
the shell/spawn stuff
* gutils.c (g_find_program_in_path): convert a relative
program name into an absolute pathname to an existing
executable
* gspawn.h, gspawn.c: New fork/exec API
* gshell.h, gshell.c: Shell-related utilities, at the moment
simply routines to parse argv and quote/unquote strings
* guniprop.c (g_unichar_isspace): Return TRUE for the
ASCII space characters isspace() returns TRUE for.
* gfileutils.c (g_file_get_contents): Convenience function
to slurp entire file into a string and return it. Partially
written by Joel Becker.
(g_file_test): file test function
2000-10-06 Tor Lillqvist <tml@iki.fi>
* tests/gio-test.c (main): Fix the Win32-only code to use current
API, g_io_channel_win32_make_pollfd() and g_io_channel_win32_poll().
2000-10-06 Tor Lillqvist <tml@iki.fi>
* makefile.msc.in: Revamp to be like makefile.mingw.in, make
the MSVC build actually work again.
* gmodule/makefile.msc.in
* gobject/makefile.msc.in
* gthread/makefile.msc.in: New files, like their mingw counterparts.
* gmodule/Makefile.am
* gobject/Makefile.am
* gthread/Makefile.am: Make and distribute them.
* */makefile.mingw.in: Allow override of GLib version number from
the build/win32/module.defs file.
* glib.def: Add new entry point.
Fixes from Hans Breuer:
* glib.h (struct DIR): Keep the last readdir result cached inside
the DIR struct, to enable several DIRs being open simultaneously.
* gwin32.c (g_win32_readdir): Use the above instead of static.
* giowin32.c (g_io_channel_win32_make_pollfd): Insert cast to keep
MSVC happy.
2000-10-05 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* glib.h: Changed alloca stuff a bit: when we have a working
alloca.h, we're not messing with alloca any further. Should fix a
bug reported by Bernd Demian <wega@csc-dd.de>.
2000-09-30 Martin Baulig <baulig@suse.de>
* configure.in (HAVE_THREADS): New automake conditional.
* Makefile.am (SUBDIRS): Only compile the gthread subdirectory if we
actually have threads.
2000-09-29 Jonathan Blandford <jrb@redhat.com>
* gnode.c (g_node_insert_after): Added function to keep symetry
with g_node_insert_before.
2000-09-29 Jonathan Blandford <jrb@redhat.com>
* glib/tmpl/trees-nary.sgml: Add g_node_insert_after().
2000-09-30 Martin Baulig <baulig@suse.de>
* configure.in (HAVE_THREADS): New automake conditional.
* Makefile.am (SUBDIRS): Only compile the gthread subdirectory if we
actually have threads.
2000-09-29 Martin Baulig <baulig@suse.de>
* Makefile.am (pkgconfigdir): Set this to `$(libexecdir)/pkgconfig';
this is the directory where pkg-config actually looks.
* *.pc.in: Made the pkg-config scripts actually work.
2000-09-29 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in, glib.h: Added errorcheck mutexes. These are
activated through the preprocessor symbol
G_ERRORCHECK_MUTEXES. Need to add an extra word to StaticMutex in
order to achieve this. g_(static_)mutex_* functions instrument the
mutex operations with mutex name and location, when compiled with
-DG_ERRORCHECK_MUTEXES. g_thread_init activates the errorcheck
mutexes, when compiled with -DG_ERRORCHECK_MUTEXES.
* gthread/gthread-impl.c: Added errorcheck mutexes. New
exported function
g_thread_init_with_errorcheck_mutexes, which is called instead of
g_thread_init, when compiled with -DG_ERRORCHECK_MUTEXES. New
static functions
g_mutex_(new|lock|trylock|unlock|free)_errorcheck_impl to
implement errorcheck mutexes.
* gthread/gthread-posix.impl.c, gthread/gthread-solaris-impl.c:
Define the size of a mutex.
2000-09-28 Havoc Pennington <hp@pobox.com>
* glib.h (GThreadPriority): fix indentation
(GConvertError): generic error is conventionally called
_FAILED rather than _OTHER, at least at the moment,
according to GError docs in docs/reference.
* gconvert.c: s/_OTHER/_FAILED/
2000-09-28 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Adjusted the test for an unimplemented
getpwuid_r. Info from Michael Pruett. This is just a forward
merge from glib-1-2.
2000-09-28 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Moved determination of G_THREAD_FLAGS before
G_THREAD_LIBS. Check for UnixWare systems and set the right cflags
and libs there (it needs -Kthread for the native compiler and
-pthread for gcc). Thanks to Boyd Lynn Gerber <gerberb@zenez.com>
for the info.
* configure.in: Fail immediately, when no thread library is found,
instead of continuing searching for rt libs etc. Changed almost
all occurances of $enable_threads to $have_threads, as that's,
what we want.
* tests/threadpool-test.c: Define vars inside the guard to avoid
warnings.
2000-09-28 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in, tests/type-test.c: Some platforms support 64 bit
'long long', but you can not printf or scanf them. In that case,
don't define G_G{UINT|INT}64_FORMAT. Changed the type-test program
to reflect that.
2000-09-28 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gutils.c (g_get_current_dir): max_len can't be initialized
statically as it might call a function. So do it at first call.
2000-09-21 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: The last released automake (1.4) still requires
AM_PROG_LIBTOOL instead of AC_PROG_LIBTOOL, so use that for the
time being.
2000-09-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* acconfig.h, configure.in, gutils.c: Test for the existence of
getcwd, and use it only when found.
* glib.h: Only use the gcc-variable-macro-argument-extension for
gcc >= 2.4. Both patches from Jonas Oberg <jonas@gnu.org>.
Sun Sep 17 2000 Elliot Lee <sopwith@redhat.com>
* glib.h configure.in: Define g_alloca() as an alloca-that-works-anywhere.
* gconvert.c: Fix warnings which could have caused problems on 64-bit platforms.
Sun Sep 10 12:37:40 2000 Owen Taylor <otaylor@redhat.com>
* glib.h gconvert.c (g_convert): Havoc Pennington's implementation
of convenient character set conversion using iconv, with
the addition of GError. We probably need a fallback that
just does conversions between, say UTF-8,16,32 and ISO-8859-1
for targets without iconv at all.
Also add g_convert_with_fallback() to take care of conversions
where we accept some loss going to the target encoding.
Mon Aug 21 03:57:46 2000 Tim Janik <timj@gtk.org>
* glib.h (G_BREAKPOINT): for non-i386 and non-alpha, or non gcc,
implement BREAKPOINT() as raise (5 /* SIGTRAP */);
* glib.h: provide user-definable switch G_IMPLEMENT_INLINES,
to turn on compilation of inline function implementations provided
in header files with extern linkage.
wrap inline function implementations into ifdef __G_UTILS_C__, so we
really only compile them for gutils.c and not also into arbitrary user
code that wants to make use of G_IMPLEMENT_INLINES.
adjusted comment apropriately.
* gutils.c: to turn on compilation of inline functions, provide
#define G_IMPLEMENT_INLINES 1 and #define __G_UTILS_C__.
2000-09-06 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* glib.h, gtimer.c, tests/thread-test.c:
s/G_MICROSEC/G_USEC_PER_SEC/
* gthread/gthread-posix.c, gthread/gthread-solaris.c:
s/G_MICROSEC/G_USEC_PER_SEC/ and s/G_NANOSEC/G_NSEC_PER_SEC/
2000-09-01 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gstring.c (g_string_free): Use g_return_val_if_fail instead of
g_return_if_fail, as the function now is supposed to return
something.
2000-09-01 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* glib.h: Include gerror.h before it is used for some g_thread_*
functions.
* gthread.c, gthreadpool.c, glib.h: Enable error reporting for
thread creation, namly for g_thread_create, g_thread_pool_new,
g_thread_pool_push and g_thread_pool_set_max_threads.
* tests/thread-test.c, tests/threadpool-test.c: Adapted
accordingly.
* gthread-posix.c (g_thread_create_posix_impl): Use GError to
report errors.
2000-09-01 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gerror.c, gerror.h (g_propagte_error): Added function
g_propagte_error to hand over local errors to the calling
function.
2000-08-31 Tor Lillqvist <tml@iki.fi>
* glib.h
* glib.def
* giowin32.c (g_io_channel_win32_make_pollfd): New function, to
make a GPollFD from a GIOChannel. Creates the events and starts
the reader thread if necessary.
2000-08-27 Tor Lillqvist <tml@iki.fi>
Hmm, the parameter to g_io_channel_win32_poll() should be
a GPollFD array, not GIOChannel. That way the caller can know which
channels cause the callback.
2000-08-27 Tor Lillqvist <tml@iki.fi>
* giowin32.c (g_io_channel_win32_poll): New function, otherwise
like g_io_channel_win32_wait_for_condition(), but accept several
GIOChannels.
(g_io_channel_win32_wait_for_condition): Call
g_io_channel_win32_poll().
* glib.h: Declare g_io_channel_win32_poll().
* gwin32.c (g_win32_error_message): Don't believe return value
from FormatMessage.
2000-08-25 Elliot Lee <sopwith@redhat.com>
* glib.h, gunicode.h, gmodule/gmodule.h:
Mark the following functions G_GNUC_CONST (to allow
betteroptimization) because their results are a function of only their parameters:
g_int_hash, g_int_equal, g_direct_hash, g_direct_equal, g_quark_to_string,
g_date_is_leap_year, g_date_days_in_month, g_date_monday_weeks_in_year,
g_date_sunday_weeks_in_year, g_spaced_primes_closest, g_unichar_is*,
g_unichar_to*, g_unichar_*digit_value, g_unichar_type
Mon Aug 21 14:46:23 2000 Owen Taylor <otaylor@redhat.com>
* tests/gio-test.c: Fix a couple of trivial bugs that
were causing warnings.
Mon Aug 21 14:39:36 2000 Owen Taylor <otaylor@redhat.com>
* glib.h: Use C99 varargs macros where possible
(check __STDC_VERSION__), otherwise, on gcc, use an alternate
form of gcc varargs which is more likely
to be supported going forward. (Based on some code
from Raja Harinath)
* glib.h:
* garray.c: (g_array_free), (g_ptr_array_free),
(g_byte_array_free): Return the data left behind.
* gstring.c: (g_string_free): Return the data left behind.
Changed the free calls that leave data behind so they
return a pointer to the left-behind data, NULL if told not
to leave anything behind. This makes these calls easier
to use correctly, without any incompatible API change for
callers that don't know about the return value. Of course,
it would be even clearer if the free calls weren't dual-purpose
in the first place.
2000-08-12 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Some indentation and spacing fixes. Add some more
logging.
(g_io_win32_add_watch): New function, with common code from
g_io_win32_fd_add_watch and g_io_win32_sock_add_watch. Don't start
more than one reader thread for a GIOChannel. We should obviously
have just one reader thread reading a file descriptor or socket.
2000-08-07 Tor Lillqvist <tml@iki.fi>
* tests/gio-test.c (shutdown_source): New function, that calls
g_source_remove(). Check return value of g_source_remove(), and
decrement running subprocess counter only if g_source_remove()
actually did remove the source.
(recv_message): Call shutdown_source() on EOF condition. Return
FALSE on G_IO_HUP and G_IO_ERR condition. Fix printf format typo.
Sun Aug 6 20:06:02 2000 Tim Janik <timj@gtk.org>
* gmessages.c (g_log_domain_check_free): keep *last updated while
running through the domain list, so we don't screw up the removal,
patch provided by Gady Kozma <gadykozma@hotmail.com>.
Sun Aug 6 20:03:41 2000 Tim Janik <timj@gtk.org>
* gmessages.c (g_log_remove_handler): keep *last updated while running
through the handler list, so we don't screw up the removal.
Sun Jul 30 16:54:13 2000 Owen Taylor <otaylor@redhat.com>
* gunicode.h: Fix stray character
* gutf8.c (g_unichar_to_utf8): Allow outbuf to be NULL, in
which case we just compute the length.
2000-07-31 Tor Lillqvist <tml@iki.fi>
* giowin32.c (buffer_read): The code didn't compile (must
have been sleepy when committing). "return" instead of "break"
(g_io_win32_fd_add_watch): Cannot check if the file descriptor is
readable by calling ReadFile to read zero bytes. ReadFile blocks
on NT even if trying to read nothing at all. So, don't check if
file descriptor is readable; assume this function isn't called
otherwise.
Sun Jul 30 10:44:16 2000 Tim Janik <timj@gtk.org>
* gmain.c (g_get_current_time): fix tor's recent changes which
got rid of a required variable in the non-windows path.
2000-07-30 Tor Lillqvist <tml@iki.fi>
* giowin32.c: Compile in the debugging code all the time, but only
output debug messages if told so. Add (unadvertised) function to
turn on/off debug messages for a channel.
(buffer_read): Don't loop. It is expected behaviour to return a
short read occasionally, for instance when reading from
pipes. It's the calling code that should loop if it *knows* how
much the writer has written.
* tests/gio-test.c: Correct the program's name in the output.
(recv_message): Loop calling g_io_channel_read() (in a new
function read_all()) until we have all the bytes we want (that we
know the writer has written/will write).
2000-07-30 Tor Lillqvist <tml@iki.fi>
Finally, a new and improved IO Channel and condition watch
implementation for Win32. Based on code provided by Craig Setera.
When watching file descriptors, for which there is no select()
like functionality on Win32 that would work on all Win32 platforms
for all types of file descriptors (including anonymous pipes), we
start a new thread that blocks while trying to read from the file
descriptor. When the read returns, a Win32 Event is signalled that
the polling routine eventually notices. Meanwhile, the data being
read is stored in a circular buffer, from where the IO channel's
read() method picks it up.
If the buffer fills up the reading thread has to wait for space
becoming available. For this another Win32 Event is used. The IO
Channel's read() method signals this when it has read some data
out of the buffer.
The separate reader thread(s), and the circular buffer(s) with
associated events mean lots of possibilities for fun parallellism
errors. But it seems to work OK, i.e. GIMP runs.
* gmain.c: Small changes to the Win32 polling function.
(g_main_win32_get_poll_func): New function. Perhaps it would be a
good idea to provide this on all platforms.
* giowin32.c: The bulk of the new implementation.
(g_io_channel_win32_wait_for_condition): New function. To be used
where on Unix one does a select() on the channel's fd, like
libgimp's gimp_extension_process(). Could be provided on all
platforms.
* glib.h: Update documentation for IO Channels on Win32. Remove
the declarations for the as of now obsolete old functions related
to IO Channels for pipes with "wakeup" messages.
* glib.def: Some new functions.
* tests/gio-test.c: New file, to test GIOChannel and main loop.
* tests/Makefile.am
* tests/makefile.mingw.in: Add it.
Wed Jul 26 12:59:31 2000 Tim Janik <timj@gtk.org>
* *.[hc]: applied patch from Andreas Persenius <ndap@swipnet.se> that
updates the license headers to the GNU Lesser General Public License,
as well as updating the copyright year to 2000.
Wed Jul 26 05:47:48 2000 Tim Janik <timj@gtk.org>
* configure.in:
* testglib.c:
* gstrfuncs.c:
* glib.h: added g_strlcat() and g_strlcpy() wrappers, supplied by
David Wheeler <dwheeler@ida.org>:
* glib.h, gstrfuncs.c: added g_strlcpy and g_strlcat to support
safe manipulation of fixed-length string buffers.
These functions were originally developed by Todd Miller to simplify
development of security-related programs, and
are available on many (but not all) Unix-like systems,
including OpenBSD, FreeBSD, and Solaris. See
ftp://ftp.openbsd.org/pub/OpenBSD/src/lib/libc/string/strlcpy.3
and http://www.openbsd.org/security.html.
If there's a strlcpy/strlcat on the system, it's called, otherwise
an implementation is provided.
* testglib.c: Added tests for g_strlcpy, g_strlcat.
Wed Jul 26 05:03:24 2000 Tim Janik <timj@gtk.org>
* acglib.m4 (GLIB_SIZEOF): include <stdlib.h> and <stddef.h> if
STDC_HEADERS is defined.
* glib.h:
* glibconfig.h: define gsize and gssize in terms of GLIB_SIZEOF_SIZE_T
* glib.h (g_return_if_reached): applied darin's fix for copy'n
paste error in the macro implementation.
2000-07-22 Tor Lillqvist <tml@iki.fi>
* build-dll: Fix resource handling, the resource file got left out
from the DLL after all... Remove the WIN32APIHEADERS, not needed
with current windres.
* glib.def: Add new functions.
2000-07-20 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gutils.c, glib.h: Mark the functions g_basename and g_dirname
deprecated. They will issue an warning once, when compiled with
G_ENABLE_DEBUG, but continue to work as before. Instead the
functions g_path_get_basename and g_path_get_dirname should be
used, which BOTH return newly allocated memory, that has to freed
by g_free. The new g_path_get_basename now strips trailing slashes
from the path. This fixes#5097. For discussion see
http://mail.gnome.org/pipermail/gtk-devel-list/2000-April/003139.html
* gwin32.c, testglib.c, tests/dirname-test.c: Use the new
functions instead of the old ones.
* gmodule/libgplugin_a.c, gmodule/testgmodule.c: Use
g_path_get_basename instead of the deprecated g_basename.
2000-07-20 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* ghash.c, gscanner.c, glib.h: Mark the functions
g_hash_table_freeze, g_hash_table_thaw and thus
g_scanner_freeze_symbol_table and g_scanner_thaw_symbol_table
deprecated. They will issue an warning once, when compiled with
G_ENABLE_DEBUG. This fixes Bug #3883. For discussion see
http://mail.gnome.org/pipermail/gtk-devel-list/2000-April/003139.html
2000-07-19 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in, glib.h: glibconfig.h and glib.h now include files
outside of the extern "C" block. Makes some C++ compiler
happy. Reported by Denis Vakatov <vakatov@peony.nlm.nih.gov>.
* gmodule/gmodule.h: include glib.h before doing extern "C".
Makes some C++ compiler happy. Reported by Denis Vakatov
<vakatov@peony.nlm.nih.gov>.
Sat Jul 15 22:44:22 2000 Owen Taylor <otaylor@redhat.com>
* configure.in: Add build/Makefile and
build/win32/Makefile to AC_OUTPUT() so things build
again.
Sat Jul 15 09:11:46 2000 Tim Janik <timj@gtk.org>
* gstrfuncs.c (g_strncasecmp): fixed an off by 0 error (yeah,
the function went off when the while (n--) loop failed due to
n==0 ;), reported by Jean-Louis HAMEL <jlhamel@club-internet.fr>.
2000-07-15 Tor Lillqvist <tml@iki.fi>
* Makefile.am (SUBDIRS): Include the "build" module in GLib, too,
to make it more self-contained. If your CVS client doesn't
automatically get it, do a cvs get build in glib.
* */makefile.mingw.in: Include make.mingw from build in the glib
source directory.
Fri Jul 14 12:22:49 2000 Owen Taylor <otaylor@redhat.com>
* configure.in Makefile.am glib-config.m4 glib.m4: Move
glib-config to glib-config-2.0 move glib.m4 to
glib-2.0.m4
* Makefile.am gobject/Makefile.am gmodule/Makefile.am
gthread/Makefile.am tests/Makefile.am: Change
library names to libglib-1.3.la, etc, so that we
can distinguish glib-1.2 and glib-2.0 on the linkline.
* Makefile.am gobject/Makefile.am gmodule/Makefile.am:
Move include files into /usr/include/glib-2.0.
Thu Jul 6 18:54:49 2000 Owen Taylor <otaylor@redhat.com>
* docs/Makefile.am (EXTRA_DIST): Remove info files
from the build.
2000-07-14 Tor Lillqvist <tml@iki.fi>
* glib.def: Add g_error functions.
* makefile.mingw.in: Add gbacktrace.o.
* gbacktrace.c: No need to include <process.h>.
2000-07-12 Havoc Pennington <hp@redhat.com>
* glib.h: #include <gerror.h>
* Makefile.am (include_HEADERS): Add gerror.h
(libglib_la_SOURCES): Add gbacktrace.c
* gbacktrace.c: Move g_on_error_query() in here (moved on the
server, so history is preserved)
* gerror.h: GError interface
* gerror.c: GError implementation replaces stuff that's now in
gbacktrace.c
Sun Jul 9 21:21:46 2000 Owen Taylor <otaylor@redhat.com>
* genums.[ch]: Move string.h include into the .c file
instead of where it was in the .h file by mistake.
Sun Jul 9 21:20:45 2000 Owen Taylor <otaylor@redhat.com>
* gunicode.h: Include stddef.h instead of stdlib.h
2000-07-08 Tor Lillqvist <tml@iki.fi>
* glib.h (GLIB_VAR): Rename the GUTILS_C_VAR macro to GLIB_VAR.
* gunicode.h: Mark the g_utf8_skip array with GLIB_VAR.
* glib.def: Add two missing entry points.