2003-01-01 Tor Lillqvist <tml@iki.fi>
* glib/gmessages.c (ensure_stderr_valid): New function, parallel
to ensure_stdout_valid(). #defined as empty on Unix.
(mklevel_prefix): Do use either stderr or stdout on Windows,
too. Otherwise g_warning() messages (that are just warnings, by
definition) will get mixed with proper stdout output. Noticed in
GIMP's gimpconfig-dump.
(strdup_convert, mklevel_prefix, g_printerr): Call
ensure_stderr_valid() before trying to use stderr.
(g_logv): [Win32] Convert message to current codepage before
display with MessageBox().
Wed Dec 18 16:19:08 2002 Manish Singh <yosh@gimp.org>
* glib/gtypes.h: new endian asm for ia64 and x86_64, general
reorg and clean up. New implementation of GUINT16_SWAP_LE_BE_CONSTANT()
that should optimize better. (#101318)
2002-12-17 Tor Lillqvist <tml@iki.fi>
Improvement based on suggestion by Thorsten Maerz:
* glib/giowin32.c (struct _GIOWin32Channel): Don't need thread_handle.
(create_thread): We can close thread handle right away, it isn't
used for anything.
(read_thread, select_thread): Thus, don't close it here.
Fix#57690, partial fix for #57689:
* glib/giowin32.c (g_io_win32_set_flags): Don't set the GError,
instead call g_warning().
(g_io_win32_fd_get_flags_internal): New function, sets the
is_readable, is_writeable and is_seekable flags based on the
actual access modes of the underlying Win32 HANDLE, by trying
Win32 ReadFile() and WriteFile() of zero bytes, and
PeekNamedPipe(). Should work for disk files and pipes. For devices
(consoles) unfortunately not.
(g_io_win32_fd_get_flags): Don't set the
G_IO_FLAG_IS_{READ,WRITE}ABLE flags, g_io_channel_get_flags()
already does. Call g_io_win32_fd_get_flags_internal() to set the
is_* flags.
(g_io_win32_msg_get_flags, g_io_win32_sock_get_flags): Splice the
generic g_io_win32_get_flags() into these specific functions, as
they need to do different things. Not implemented yet, though.
(g_io_channel_win32_new_fd_internal): New function, to avoid
duplicate fstat() calls. Most code from g_io_channel_win32_new_fd()
moved here. Call g_io_win32_fd_get_flags_internal() to set the
is_* flags.
(g_io_channel_win32_new_fd, g_io_channel_unix_new): Call
g_io_channel_win32_new_fd_internal().
(g_io_win32_no_seek): Remove. Don't set is_seekable for those
channel types.
Sat Dec 14 21:24:04 2002 Owen Taylor <otaylor@redhat.com>
* glib/gutils.c (g_get_any_init): HP-UX 10 xshares the
same non-posix getpwuid_r signature as AIX.
(#100756, Kai Poitschke)
Sat Dec 14 21:10:57 2002 Owen Taylor <otaylor@redhat.com>
* glib/gthread.h: Mark the contents of the strucures
in this file /*< private >*/
* glib/gthread.[ch]: Rename the 'write' field of the
structure to 'have_writer' to avoid any possible
conflict with system headers. (#90549, Morten Welinder)
Sat Dec 14 20:11:41 2002 Owen Taylor <otaylor@redhat.com>
* glib/libcharset/{localcharset.[ch] libcharset-glib.patch}
glib/gutf8.c: Break _g_locale_charset() into two pieces
- a fast "raw" piece, and a slow "unalias pieces".
Always call the "raw" piece, and call the unalias bit
if it changes. Use a per-thread cache. (#79529)
* configure.in: Set TRIO_LIBS when building with trio.
* glib-2.0.pc.in (Libs): Add @TRIO_LIBS@.
* glib/trio/Makefile.am (libtrio_la_LIBADD): Use @TRIO_LIBS@.
Thu Dec 12 14:58:55 2002 Manish Singh <yosh@gimp.org>
* configure.in: pull in trio if host printf doesn't have a known
way of printing 64-bit ints.
* glib/gmacros.h: remove extra whitespace at the end
* glib/gscanner.c (g_scanner_unexp_token): use G_GUINT64_FORMAT
instead of hardcoding "%llu"
* tests/testglib.c: remove obsolete conditionals using G_HAVE_GINT64,
we always have it now.
* tests/type-test.c: same as above, and for G_G[U]INT64_FORMAT as
well.
2002-12-11 Tor Lillqvist <tml@iki.fi>
* glib/gtimer.c (g_timer_elapsed): Fix off-by-one error. (#100853)
* glib/gfileutils.c (g_file_test): Bypass extra test for root on
Win32.
* glib/glib.def: Add g_{get,set}_application_name.
2002-12-10 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* glib/grand.c (g_rand_int_range): Improve generation of
pseudo-random integers. (#99720, Morten Welinder <terra@diku.dk>)
* README.in, docs/reference/glib/running.sgml,
docs/reference/glib/tmpl/random_numbers.sgml,
docs/reference/glib/changes.sgml: Added notes about the new
algorithm.
Sun Dec 8 23:36:12 2002 Owen Taylor <otaylor@redhat.com>
* glib/gfileutils.c (g_file_test): Guard against
the POSIX allowed behavior where access (file, X_OK)
succeeds for uid==0 when no executable bits are set.
* glib/gfileutils.c (g_file_test): Add doc notes
about the possibility of race conditions, and the
fact that EXISTS and IS_EXECUTABLE give results
for the real uid not the effective user ID.
(#81854, Morten Welinder.)
Fri Dec 6 14:34:42 2002 Owen Taylor <otaylor@redhat.com>
Avoid literal UTF-8. (Allow it to build with
IRIX cc, #72757, Tomas Ogren)
* tests/patterntest.c (main): Convert literal
iso-8859-1 high bit characters in tests to
string escapes.
* glib/gunichartable.h glib/gen-unicode-tables.pl:
Use hex \xMN escapes rather than literal UTF-8
for casefold tables.
* configure.in: AC_PREREQ(2.53). needed for recent
GLIB_SIZEOF() changes.
* glib/tmpl/strings.sgml:
* glib/tmpl/scanner.sgml:
* glib/tmpl/main.sgml:
* glib/tmpl/macros_misc.sgml:
* glib/tmpl/hash_tables.sgml: Add Since and Deprecation info
for symbols documented in the templates.
* glib/gstrfuncs.c (g_strncasecmp): Break long deprecation
info into two paragraphs.
Thu Dec 5 15:24:14 2002 Owen Taylor <otaylor@redhat.com>
Start of fixes for cross-compilation. Based on
patches from Dimi Shahbaz, Dan Kegel, Johannes Stenzenbach,
Amy Lin. (#58786)
* configure.in: Don't run the Digital-Unix 4 -std1 check
when cross_compiling.
* configure.in: Use AC_TRY_COMPILE() rather than
AC_TRY_RUN() for inline checks. (Daniel Egger)
* configure.in: use AC_CHECK_SIZEOF rather than
GLIB_SIZEOF for size_t. Remove unused checks for
size of ptrdiff_t/intmax_t.
* acglib.m4: Resync GLIB_SIZEOF of to the current
AC_CHECK_SIZEOF, which handles cross-compilation.
* acglib.m4: Remove no longer needed GLIB_SYSDEFS(),
add GLIB_CHECK_VALUE() as a wrapper around the
amazing _AC_COMPUTE_INT() autoconf 2.5x internal.
* configure.in: Redo the POLL* value checks in a
cross-compilation friendly way.
Thu Dec 5 15:28:37 2002 Owen Taylor <otaylor@redhat.com>
* glib/gtimer.c: Include glibconfig.h early so
that we include <windows.h> when needed.
* glib/gstrfuncs.c: Fix typo.
Tue Dec 3 01:05:00 2002 James M. Cape <jcape@ignore-your.tv>
* glib/gunicollate.c (g_utf8_collate, g_utf8_collate_key):
Check for NULL before doing anything.
* glib/gutils.c:
* glib/gtree.c:
* glib/gstring.c:
* glib/gstrfuncs.c:
* glib/giochannel.c: Move some docs inline, and add deprecation
information. To see the list of affected functions, grep for
"Deprecated:".
* glib/tmpl/strings.sgml:
* glib/tmpl/string_utils.sgml:
* glib/tmpl/misc_utils.sgml: Move some docs inline.
* glib/gmessages.h: Use G_LIKELY without surrounding parentheses
in g_assert() and g_return_[val]_if_fail() so that we always trigger
the gcc warning about "assignment used as truth value".
* glib/gmacros.h: Always put parentheses in G_LIKELY and G_UNLIKELY.
2002-11-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
* glib/grand.c, gthread/gthread-impl.c, tests/rand-test.c:
Improved the seeding algorithm. Old behaviour can be achived by
setting envvar G_RANDOM_VERSION to "2.0". (#99262)
* docs/reference/glib/glib-docs.sgml,
docs/reference/glib/Makefile.am: Renamed
docs/reference/glib/changes-2.0.sgml to
docs/reference/glib/changes.sgml and added section for changes
from 2.0 to 2.2 (Also corrected 1.0 to 1.2).
* README.in, docs/reference/glib/running.sgml,
docs/reference/glib/tmpl/random_numbers.sgml,
docs/reference/glib/changes.sgml: Added notes about the new
seeding algorithm.
* glib/gmessages.h (g_assert):
(g_return_if_fail):
(g_return_val_if_fail): Remove the (no longer effective) empty
if-branch.
* glib/gmacros.h: Change the definition of G_LIKELY, so that
g_return_if_fail() and friends still trigger a gcc warning if
the expr is an assignment.
Fri Nov 22 09:39:09 2002 Owen Taylor <otaylor@redhat.com>
* glib/gmacros.h: Remove broken G_HIDDEN_SYMBOL
definition which wasn't supposed to be committed
at all.
Thu Nov 21 16:19:21 2002 Owen Taylor <otaylor@redhat.com>
* glib/ghash.c: Patch from Morten Welinder to
make ghash.c properly obey DISABLE_MEM_POOLS. (#96600)
2002-11-21 Tor Lillqvist <tml@iki.fi>
* {glib,gmodule,gobject,gthread}/makefile.{mingw,msc}.in:
Hardcode 2.0 in the names, as that is what Makefile.am does.
2002-11-21 Tor Lillqvist <tml@iki.fi>
* config.h.win32.in: Update to match what is currently produced by
autotools.
* configure.in: Remove superfluous spaces on two shell variable
assignment lines. Don't define HAVE_GOOD_PRINTF as 0 if we don't
have a good printf, it is tested with #ifdef.
* glib/glib.def: Add new functions.
* glib/Makefile.am: If !HAVE_GOOD_PRINTF, add libtio.la to LIBADD
and DEPENDENCIES.
* glib/glib.rc.in: Hardcode 2.0 in the names, as that is what the
Makefile.am does.
positional parameters: (#79488)
* glib/gstrfuncs.c:
* glib/gspawn-win32.c:
* glib/gscanner.c:
* glib/gconvert.c:
* glib/gbacktrace.c: Use _g_printf wrappers.
* glib/gutils.c (g_vsnprintf): Simplify, since we can assume C99
snprintf semantics now.
* glib/gmessages.c (printf_string_upper_bound): No longer needed,
since we can assume C99 snprintf semantics now.
(g_logv): Simplify.
* acinclude.m4 (AC_FUNC_PRINTF_UNIX98): New macro to check wether
printf supports SUS positional parameters.
* configure.in: New option --enable-included-printf to force
compilation of trio; otherwise trio is compiled if the system
printf misses either C99 snprintf semantics of SUS positional
parameters.
* glib/Makefile.am (SUBDIRS): Conditionally compile trio.
(libglib_2_0_la_SOURCES): Add gprintf.c and gprintfint.h.
(glibsubinclude_HEADERS): Add gprintf.h.
* glib/gprintfint.h: New private wrapping either system printf
or trio printf variants in _g_printf wrappers for use inside glib.
* glib/gprintf.h: New public header declaring g_printf variants.
* glib/gprintf.c: Corresponding implementations.
* glib/trio/*: New directory, containing the trio-1.9 sources.
* glib/tmpl/string_utils.sgml: Add note on including gprintf.h,
move some docs inline.
* glib/glib-sections.txt: Add g_printf, g_vprintf, g_fprintf,
g_vfprintf, g_sprintf, g_vsprintf.
* glib/gmessages.h (g_return_if_fail):
(g_return_val_if_fail): Use G_LIKELY. (#69022)
* glib/gmacros.h (G_LIKELY):
(G_UNLIKELY): New macros for hinting the compiler about the
expected result of expressions. For gcc 3.x, define these
using __builtin_expect. (#69022)
* glib/tmpl/macros_misc.sgml: Document G_LIKELY, G_UNLIKELY.
* glib/glib-sections.txt: Add G_LIKELY, G_UNLIKELY.
Tue Nov 19 14:38:18 2002 Owen Taylor <otaylor@redhat.com>
* glib/gstrfuncs.c (g_ascii_strtoull): Fix
strtull/strtoull type in docs (#99012, Morten
Welinder.) Add copyright information for code
taken from GNU libc.
2002-11-18 Tor Lillqvist <tml@iki.fi>
* glib/gspawn-win32.c (do_spawn_with_pipes): Do handle
G_SPAWN_DO_NOT_REAP_CHILD after all, similarily as on Unix. If the
flag is not set, don't call DuplicateHandle() on the handle
returned by the helper process, and set the "child pid" returned
to the caller to zero. Close the handle to the helper process in
all cases.
* glib/gspawn.c (g_spawn_async_with_pipes): Document Windows
behaviour of G_SPAWN_DO_NOT_REAP_CHILD.
2002-11-18 Tor Lillqvist <tml@iki.fi>
[Win32] Fix the asynchronous g_spawn* to return the process handle
of the started program properly. (Note: not the process id. The
spawn*() functions in the C runtime return the created process's
handle. There doesn't seem to be any way to get the process id of
a child process if you have the handle. But then, the process
handle usually is more useful anyway.)
* glib/gspawn-win32-helper.c (WinMain): If the spawning of the
child process succeeded, and if asynchronous spawn (P_NOWAIT),
write the result handle up to the parent process, waiting to read
it in do_spawn_with_pipes().
* glib/gspawn-win32.c (do_spawn): Use return value from spawning
the helper. If it is -1 the helper wasn't found or couldn't be run
for some reason. Otherwise it is the helper's process handle.
(g_spawn_async_with_pipes): Pass the child_pid parameter on to
do_spawn_with_pipes().
(do_spawn_with_pipes): Take also a child_pid parameter. If
do_spawn() returned -1, fail immediately. Otherwise make the
handle passed to us by the helper process into a handle valid in
this process by calling DuplicateHandle().
2002-11-17 Tor Lillqvist <tml@iki.fi>
* glib/gspawn-win32.c (g_spawn_async_with_pipes): Ignore the
G_SPAWN_DO_NOT_REAP_CHILD flag, can't be meaninfully implemented
on Windows, at least not now. Always pass dont_wait as TRUE to
do_spawn_with_pipes(). The semantics of the dont_wait parameter is
very different from the semantics of the intermediate_child
parameter to fork_exec_with_pipes() in the Unix version. This
fixes a serious bug, g_spawn_async() in fact behaved
synchronously.
(do_spawn_with_pipes, do_spawn): Rename from
fork_exec_with_pipes() and do_exec(), those names were from the
Unix bersion, and misleading.
(close_and_invalidate): Don't try to close invalid fds.
* glib/gspawn.c (g_spawn_async_with_pipes): Add warning about
Windows behaviour. There is no fork(), so the child_setup()
function is in fact called in the parent.
* glib/gspawn-win32-helper.c (WinMain): Insert spaces in argv
debugging output.
* tests/spawn-test-win32-gui.c: New file. Test program to be
linked as a GUI application. Behaves differently depending on how
invoked (by spawn-test).
* tests/spawn-test.c (run_tests): On Win32, run the
spawn-test-win32-gui program, too, in several ways, synchronously
and asynchronously.
* tests/Makefile.am: Corresponding change.
Thu Nov 7 19:32:26 2002 Owen Taylor <otaylor@redhat.com>
* glib/gutils.[ch] (g_set/get_application_name):
Patch from Havoc Pennington to add functions for
setting and getting a human readable application
name.
* configure.in: Up to version 2.1.3, since we'll
need to depend on last addition for GTK+.