1999-11-16 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* acconfig.h, config.h.win32.in, configure.in: Renamed
GLIB_SIZEOF_PTHREAD_T to GLIB_SIZEOF_SYSTEM_THREAD to reflect
changed meaning.
* configure.in: Cope with systems, that have a pthread_t type,
that is not a pointer. Hint from Karl Nelson
<kenelson@ece.ucdavis.edu>. Define GLIB_SIZEOF_SYSTEM_THREAD to 4
for Solaris. Cope with systems, that have no default mutex
initialize, like obviously most DCE systems.
* glib.h, gthread.c: Changed the prototype of thread_create and
thread_self to return the system thread into provided memory
instead of a return value. This is necessary, as HPUX has a
pthread_t, that is bigger than the biggest integral type there.
* gthread.c: system_thread is no longer a pointer, but an memory
area of size GLIB_SIZEOF_SYSTEM_THREAD. Changed the
zeroinitialization and the tests for zeroness accordingly.
Tue Oct 12 12:16:12 1999 Tim Janik <timj@gtk.org>
* gmessages.c (g_printf_string_upper_bound): completly new implementation
for printf string upper bounds calculation.
we handle all glibc 2.1 format specifiers now, except for positional
parameters (%nn$...) and wide char strings, plus some obscure upper
case variants of the standard conversions. this fixes a lot of
bugs in the old code, i.e.
- NULL format strings
- floats with exponents >+24
- %G
- precision specifications in general
- negative field widths
- %p for SIZEOF_VOID_P > 4 platforms
we now issue warnigns in places where the old code would have
caused buffer overruns anyways. warnings are suppressed when invoked
from glogv(), to avoid infinite recursions if someone passes a log
message that comes with really obscure format specifications.
Tue Oct 12 11:49:00 1999 Tim Janik <timj@gtk.org>
* gstrfuncs.c: nuked old g_printf_string_upper_bound() version.
Tue Oct 12 03:34:40 1999 Tim Janik <timj@gtk.org>
* glib.h: added GFloatIEEE754 and GDoubleIEEE754 unions to access sign,
mantissa and exponent of IEEE floats and doubles (required by the new
version of g_printf_string_upper_bound). the unions are endian specific,
we handle G_LITTLE_ENDIAN and G_BIG_ENDIAN as of currently. ieee floats
and doubles are supported (used for storage) by at least intel, ppc and
sparc, reference:
http://twister.ou.edu/workshop.docs/common-tools/numerical_comp_guide/ncg_math.doc.html
Mon Oct 11 18:01:49 1999 Tim Janik <timj@gtk.org>
* configure.in: added additional checks to figure sizes of size_t,
ptrdiff_t and intmax_t (required by g_printf_string_upper_bound).
Sun Aug 15 02:47:14 1999 Tim Janik <timj@gtk.org>
* glib.h (g_trash_stack_pop): eliminate memset() call, since string.h
has not neccessarily been included prior to glib.h.
Mon Aug 2 21:03:10 1999 Tim Janik <timj@gtk.org>
* configure.in: added --enable-msg-prefix option.
* gmessages.c (g_log_default_handler): feature "prg_name (pid:%u): "
if --enable-msg-prefix was selected (use "(process:%u): " if
g_get_prgname () returns NULL, along the lines of g_on_error_query).
1999-07-01 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in, acconfig.h, gutils.c: Added a g_memmove
replacement for platforms without memmove, where bcopy can't
handle overlapping copies and the corresponding checks, which is
taken form the PERL Configure routine.
* glib.h: Updated the commentary about g_memmove to be right and
more GLib-like.
* configure.in: Removed test for rand_r, as it isn't used anymore.
1999-06-17 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in, acglib.m4, acconfig.h, glib.h, gthread.c:
Completed the thread support in GLib. Thread creation,
prioritizing threads, yielding, joining threads as well as
reader/writer locks and recursive mutexes are now in place. Please
test heavily on your platform. It is so far tested on
Linux/i386/pthreads, Solaris/Sparc/pthreads and
Solaris/Sparc/solaristhreads.
* gtimer.c, glib.h: Implement g_usleep (gulong microseconds) for
thread safe sleeping. (sleep() is not MT-safe at all!)
* gutils.c: Avoid compiler warning.
* tests/Makefile.am, tests/thread-test.c: New program to test some
aspects of the thread implementation.
* gthread.c, Makefile.am: Renamed from gmutex.c to reflect the
change of content.
* configure.in: Purged all appearances of nspr.
* gthread/gthread-posix.c, gthread-solaris.c: Added the native
implementations for the GLib's extended thread support.
* gthread/gthread-nspr.c: Removed for good. NSPR is nothing we
would want to build upon.
* gthread/gthread.c: Renamed to gthread-impl.c to avoid
confusion with ../gthread.c (Formerly known as the file called
gmutex.c)
* gthread/testgthread.c: Removed. The new and much extended
tests are in ../tests/thread-test.c.
* gthread/Makefile.am: Changed to reflect the changes above.
Sat May 8 01:52:29 CDT 1999 Shawn T. Amundson <amundson@gtk.org>
* configure.in
gerror.c
gmain.c
gstrfuncs.c
gutils.c
ltconfig
ltmain.sh
gmodule/Makefile.am
gmodule/gmodule.c
gmodule/gmoduleconf.h.in
gmodule/gmodule-beos.c
gthread/Makefile.am: Port to BeOS by myself and Richard Offer.
1999-03-17 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in: Added missing values for G_MAXU(SHORT|INT|LONG) on
platforms with only /usr/include/values.h.
* acconfig.h: Removed unnecessary macros.
* glibconfig.h.win32, config.h.win32: Moved G_THREADS_IMPL_POSIX
from config.h.win32 to glibconfig.h.win32. Taken from glib 1.2
branch.
* configure.in: Also accept _Pctime_r instead of ctime_r, while
seraching for the right `_REENTRANT' flag. This is for Digital
UNIX 4.0d. Taken from glib 1.2 branch.
Wed Mar 17 01:46:28 1999 Tim Janik <timj@gtk.org>
* merges from glib-1-2:
Sun Mar 14 17:50:35 1999 Tim Janik <timj@gtk.org>
* gmem.c (g_mem_chunk_*): changed a bunch of g_assert() statements
to g_return_if_fail().
(g_mem_profile):
(g_mem_chunk_print):
(g_mem_chunk_info): removed some extraneous "\n"s at the end of the log
messages.
* gtimer.c (g_timer_*): changed a bunch of g_assert() statements
to g_return_if_fail().
* grel.c (g_*): changed a bunch of g_assert() statements to
g_return_if_fail() and added some extra ones to check relation != NULL.
Tue Mar 9 23:25:50 1999 Tim Janik <timj@gtk.org>
* configure.in: check for working realloc (NULL,).
* gmem.c (g_realloc): use malloc() for initial allocation on systems
where realloc(NULL,) will not work (this is the case on SunOS, reported
by Tom Geiger).
Mon Mar 8 07:42:08 1999 Tim Janik <timj@gtk.org>
* ghook.c (g_hook_unref): when !hook_list->is_setup, wrap the
flag around the call to g_hook_free() to avoid spurious
warnings (happens during destruction phase).
1999-03-02 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gmem.c: Fixed a stupid cut'n'paste error of mine. Thanks to
Friedrich Dominicus <Friedrich.Dominicus@inka.de>
1999-02-08 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* configure.in, acconfig.h: Changed the test for getpwuid_r to
exclude those systems (i.e. IRIX), that set ENOSYS after the call.
Test, if pthread_getspecific is posix like or something different,
as on PCThreads.
* gthread/gthread-posix.c (g_private_get_posix_impl): Use the
HAVE_PTHREAD_GETSPECIFIC_POSIX macro to determine, which signature
to use for pthread_getspecific.
1999-01-20 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* gutils.c (g_get_any_init): Use getpwuid_r with the right
signature, if available.
* configure.in, acconfig.h: Test for existance of getpwuid_r and
its signature.
Tue Jan 19 00:44:24 1999 Josh MacDonald <jmacd@axis.hip.berkeley.edu>
* gstrfuncs.c (g_strsignal): The "extern char* sys_siglist"
declaration breaks systems with different declarations, like
mine (FreeBSD). So, I added a configuration variable to decide
whether the declaration is neccesary. Change also appears on
line 275 of configure.in.
* 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.
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/.
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.
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.
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.
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.
Mon Aug 24 02:08:56 1998 Tim Janik <timj@gtk.org>
* glib.h:
* gstring.c:
* gstrfuncs.c:
(g_vsprintf): removed this function which was not publically
exported in glib.h. to export it, it should have been named
differently in the first place, since its semantics differ from
vsprintf(). apart from that, it was a possible cause for
problems since it worked on a previously allocated memory area and
was used in a lot places of glib. exporting it would have been a
guararant for problems with threaded programs.
(g_printf_string_upper_bound): exported this function to return
a string size, guarranteed to be big enough to hold the fully
expanded format+args string. added 'q', 'L' and 'll' flag handling.
in fact, the newly allocated area is in most cases much bigger than
required.
(g_strdup_vprintf()): new function returning a newly allocated string
containing the contents of *format and associated args (size is
calculated with g_printf_string_upper_bound()).
(g_strdup_printf): new function which wraps g_strdup_vprintf().
* configure.in: check for va_copy() or __va_copy() alternatively.
check whether va_lists can be copyied by value.
* glib.h: provide a definition for G_VA_COPY.
* glib.h:
* gmessages.c:
(g_logv):
(g_vsnprintf):
pass va_lists by value, not by reference, since this causes problems
on platforms that implement va_list as as arrays. internaly, use
G_VA_COPY (new_arg, org_arg); va_end (new_arg); to produce a second
va_list variable, if multiple passes are required. changed all
callers.
* glib.h:
* gerror.h:
renamed g_debug() to g_on_error_query(), cleaned up a bit.
renamed g_stack_trace() to g_on_error_stack_trace() since both
functions cluttered different namespaces.
there is an appropriate comment in glib.h now that explains the
unix and gdb specific dependencies of both functions.
removed g_attach_process().
g_on_error_stack_trace() should probably be handled with caution,
i've seem several different linux versions (2.0.x) become unstable
after invokation of this function.
Tue Aug 4 15:17:54 1998 Tim Janik <timj@gtk.org>
* configure.in: version bump to 1.1.1, binary age 1, interface age 0.
* NEWS: updates.
* README: updates.
* INSTALL: updates and fixes.
* COPYING: include the GNU LGPL, rather than shipping an empty file.
* AUTHORS: listed original authors here, and added people who made
significant improvements to glib.
* glib.h:
* gutils.c: implement g_get_current_dir() which returns a newly
allocated string, instead of a g_getcwd() variant that operates
on a static buffer.
export glib_interface_age and glib_binary_age.
as a convenience, macro definitions have been added for
g_node_insert_data, g_node_insert_data_before, g_node_append_data and
g_node_prepend_data.
* testglib.c: minor cleanups, print current dir.