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.
Thu Jul 6 15:35:28 2000 Owen Taylor <otaylor@redhat.com>
* Release 1.3.1
* Makefile.am (EXTRA_DIST): Dist fixes.
* configure.in: Moderate the warnings just a little bit.
Mon Jul 3 17:18:19 2000 Owen Taylor <otaylor@redhat.com>
* glib.h: Comment g_get_codeset() out of the header file
temporarily. (Very similar to g_get_charset(), need
to resolve the two.)
Thu Jun 29 15:57:28 2000 Owen Taylor <otaylor@redhat.com>
* NEWS: updated
* Makefile.am: added snapcheck target to go along with snapshot
* gstring.c glib.h (g_string_hash): Add g_string_hash to
go along with g_string_equal.
Tue Jun 27 12:40:23 EDT 2000 David A. Wheeler <dwheeler@dwheeler.com>
* glib.h: Added g_string_equal for comparing GStrings;
changed g_str_equal so it returns gboolean (instead of gint).
* gstring.c: Modified GString implementation to support embedded
ASCII NUL ('\0') characters, and implemented g_string_equal.
* testglib.c tests/string-test.c: Added tests for g_string_equal
and tests for proper handling of embedded ASCII NUL characters.
Fri Jun 23 17:20:26 2000 Tim Janik <timj@gtk.org>
* glib.h: define gstring in terms of gchar*. this typedef reflects
the type name of the primitive G_TYPE_STRING in the gobject module.
Sat Jun 24 23:03:04 2000 Tim Janik <timj@gtk.org>
* gtype.[hc]: provide G_TYPE_CHAR, G_TYPE_UCHAR, G_TYPE_BOOLEAN,
G_TYPE_INT, G_TYPE_UINT, G_TYPE_LONG, G_TYPE_ULONG, G_TYPE_FLOAT,
G_TYPE_DOUBLE and G_TYPE_STRING fundamental types.
added a GTypeValueTable* pointer to GTypeInfo structure for types
to implement GValue handling functions.
GTypeValueTable contains the following members:
value_init(): initialize a GValue structure.
value_free(): free GValue structure contents (optional).
value_copy(): copy one GValue contents to another GValue structure of
collect_type: varargs collection type for the first variable argument
to be collected by collect_value().
collect_value(): variable arguments collection function (optional).
lcopy_type: varargs collection type for the first variable argument
to be location copyied by lcopy_value().
lcopy_value(): variable arguments location copy function (optional).
g_type_value_table_peek(): new function to retrive the GTypeValueTable*
for a type node. ValueTables get inherited from parent types, unless
overridden through the GTypeInfo structure. internally, GTypeValueTable
support means an added overhead of one pointer per static or used
dynamic type node.
g_type_add_class_cache_func(): provide a cache_func/data pair to be
called prior to a type nodes last_unref() function, this can be used
to prevent premature class destruction. multiple installed cache_func()
will be chained upon last_unref() untill one of them returns TRUE.
the cache_func()s have to check the type id passed in to figure whether
they actually wants to cache the class of this type (since any types are
routed through the cache_func() chain).
g_type_remove_class_cache_func(): remove a previously installed
cache_func/data pair. the cache maintained by this function has to be
clear when calling g_type_remove_class_cache_func() to avoid leaks.
g_type_class_unref_uncached(): class unref function for cache_func()
implementations, unreferences a class omitting the cache chain (and
therefore unref->cache->unref->... loops).
* gvaluetypes.[hc]: provide the value setters/getters for the primitive
fundamental types boolean, char, uchar, int, uint, long, ulong, float,
double and string.
* gvalue.[hc]: provide G_TYPE_IS_VALUE() in terms of whether a
GTypeValueTable is provided for this type.
removed g_value_init_default(), g_value_validate(), g_value_defaults(),
g_value_set_default() and g_values_cmp() as these are supplied by the
GParamSpec API now.
moved g_values_exchange() into the "implementation details" section,
since it just provides the underlying functionality for
g_value_convert().
* gvaluecollector.h: renamed the varargs value container from
GParamCValue to GTypeCValue as the value collection methods are
supplied by the type system now.
G_PARAM_COLLECT_VALUE() and G_PARAM_LCOPY_VALUE() got renamed to
G_VALUE_COLLECT() and G_VALUE_LCOPY() and operate without a
GParamSpec structure now.
* genums.h: macros cleanups/fixes.
* genum.c: provide G_TYPE_ENUM and G_TYPE_FLAGS type
and assorted g_value_{s|g}et_{enum|flags}() implementations.
* gobject.[hc]:
provide G_IS_VALUE_OBJECT(), G_TYPE_OBJECT ValueTable methods
and g_value_{s|g}et_object().
* gparam.[hc]: reduced class to value_set_default(),
value_validate() and values_cmp(). also parameters now need to fill
in a GType value_type; field to indicate the GValue type they
are handling. provide g_param_value_set_default(),
g_param_value_defaults(), g_param_value_validate() and
g_param_values_cmp().
* gparamspecs.[hc]: got rid of the g_value_* functions and
the G_IS_VALUE_* macros. adapted param spec implementations
according to the GParamSpecClass changes.
Wed Jun 21 12:09:03 2000 Owen Taylor <otaylor@redhat.com>
* gunicode.h gutf8.c guniprop.c gunidecomp.[ch] gunichartables.h
Makefile.am glib.h: Initial pass at adding unicode support
functions. A few things still need to be implemented, a bit
of cleanup needs to be done, tests need to be added, and
the docs need to be finished, but this should allow replacing
most or all use of libunicode.