2005-08-08 Matthias Clasen <mclasen@redhat.com>
* tests/convert-test.c: Enable the endianness test.
* glib/gconvert.c: Make the caching of iconv descriptors
optional.
* configure.in: Add an --enable-iconv-cache option, and
default to disabling iconv caching on new enough glibc.
Somebody with access to Solaris systems will need to test
if opening/closing of iconv descriptors is enough of
a performance problem to warrant the caching on that
platform. Note that the caching is causing correctness
problems in some corner cases, thus turning it off
is desirable unless it has severe performance implications.
2005-08-02 Matthias Clasen <mclasen@redhat.com>
* glib/gconvert.c (g_convert_with_iconv): Don't go in an
infinite loop if the input text ends in an incomplete multibyte
character. (#312402, Sebastian Bacher)
2005-04-27 Tor Lillqvist <tml@novell.com>
* glib/gconvert.c (open_converter, g_convert_with_iconv): Don't
call g_set_error() unless the GError pointer is non-NULL. This
avoids infinite recursion problems in certain rare situations on
Windows, when g_locale_from_utf8() is called from
_glib_get_locale_dir() after the change below. It's the
_glib_gettext() calls to translate error messages that are
parameters to g_set_error() that cause the recursion, not
g_set_error() itself.
* glib/gwin32.c (g_win32_locale_filename_from_utf8): New
function. Converts a filename to the system codepage, and if a
straight conversion isn't possible (because the filename contains
characters not in the system codepage), try looking up the
filename (which should refer to an existing file for this to
succeed) with short (8.3) pathname components.
* glib/gutils.c (_glib_get_locale_dir): No need to cache the
result, this function is normally called only once. Return the
path to the locale directory in system codepage, not UTF-8. The
path is passed to bindtextdomain(), which doesn't use UTF-8 file
names. Use g_win32_locale_filename_from_utf8(). (#301772)
Don't do run-time lookup of message catalog directory on
Cygwin. Cygwin is supposed to look and feel like Unix, and on Unix
we use paths fixed at configure time.
2005-03-13 Matthias Clasen <mclasen@redhat.com>
Make PLT-reduction work with gcc4, and don't include
everything in galias.h:
* glib/glib.symbols: Group symbols by header and source file.
* glib/makegalias.pl: Protect definitions by the same
preprocessor symbols used to guard the headers. Move
the alias declarations to a separate file which is
produced when calling makegalias.pl -def
* glib/Makefile.am (galiasdef.c): Add a rule to generate this
file.
* glib/*.c: Include galias.h after the other GLib headers,
include galiasdef.c at the bottom.
2004-12-12 Tor Lillqvist <tml@iki.fi>
* glib/glib.symbols
* glib/gconvert.[ch]: Implement Windows DLL ABI stability also for
g_filename_{to,from}_uri().
2004-11-04 Tor Lillqvist <tml@iki.fi>
* glib/gconvert.c (g_filename_display_name): Document that the
result is guaranteed to be non-NULL.
* glib/gfileutils.c (get_contents_stdio, get_contents_regfile,
get_contents_posix, get_contents_win32, g_file_open_tmp,
g_file_read_link): Use g_filename_display_name() for error
messages.
(g_mkstemp): Document that the template should be in the GLib file
name encoding.
(g_file_open_tmp): Ditto. Also document that the actual name
returned is also in the GLib file name encoding.
2004-11-02 Matthias Clasen <mclasen@redhat.com>
* glib/gconvert.c (g_filename_display_name): New function to
convert a filename to a UTF-8 string for display purposes.
(g_get_filename_charsets): New function to return the
encodings which are tried when converting a filename to
UTF-8.
2004-10-27 Matthias Clasen <mclasen@redhat.com>
Introduce the idea of a filename encoding, which is
*literally* the filename encoding on Unix. On windows,
use the Unicode name converted to UTF-8. (#156325,
Tor Lillqvist, Owen Taylor)
* glib/gdir.[hc]:
* glib/gconvert.[hc]:
* glib/gfileutils.[hc]:
* glib/gutils.[hc]:
* glib/giowin32.c: On Windows, keep old ABI versions
of GLib pathname api for DLL ABI stability. Use different
names for the new-style UTF-8 versions. Hide this through
a #define.
* glib/gstdio.[hc]: New files containing wrappers for
POSIX pathname api.
* glib/glib.symbols: Add new symbols.
* glib/makegalias.pl: Drop Win32 specific .def syntax,
include gstdio.h
2004-10-22 Matthias Clasen <mclasen@redhat.com>
* tests/uri-test.c (run_uri_list_tests): Add some
uri list tests.c.
* glib/gconvert.h:
* glib/gconvert.c (g_uri_list_extract_uris): New function to
split a text/uri-list data into individual uris and strip comments.
2004-08-02 Matthias Clasen <mclasen@redhat.com>
* glib/gmacros.h: Add a G_GNUC_INTERNAL macro to mark function
declarations as internal and avoid PLT indirections for
them. (#145465, Arjan van de Ven)
* glib/gunicodeprivate.h:
* glib/gthreadinit.h:
* glib/gmessages.h:
* glib/gdebug.h:
* glib/gconvert.c: Use G_GNUC_INTERNAL for _g_charset_get_aliases(),
_g_debug_init(), _g_log_fallback_handler(), _g_mem_thread_init(),
_g_messages_thread_init(), _g_convert_thread_init(),
_g_rand_thread_init(), _g_main_thread_init(), _g_atomic_thread_init(),
_g_mem_thread_private_init(), _g_messages_thread_private_init(),
_g_utf8_normalize_wc() and _g_unichar_combining_class().
* glib/gatomic.c: Include gthreadinit.h here to see the declaration
for _g_atomic_thread_init().
2004-07-30 Matthias Clasen <mclasen@redhat.com>
* glib/gconvert.c (g_unescape_uri_string): Don't validate
for UTF-8 here. (#148420, Robert Ögren)
* tests/uri-test.c (run_roundtrip_tests): Add tests for
roundtrip compatibility. Going from filename to uri and
back should always give you the same filename back.
2004-06-07 Federico Mena Quintero <federico@ximian.com>
Fixes#140532.
* glib/gconvert.c (is_asciialphanum): Renamed from
is_escalphanum(); ensures that this is an ASCII character.
(is_asciiescalpha): Renamed from is_escalpha().
(hostname_validate): Use the two functions above.
(g_filename_to_uri): Don't convert the filename to UTF-8.
(g_filename_from_uri): Don't convert the filename from UTF-8.
Wed May 5 23:35:44 2004 Matthias Clasen <maclas@gmx.de>
* glib/gconvert.c (g_filename_from_uri): Quote the file
scheme to mark it as untranslatable. String change.
(#133144, Danilo Segan)
2004-04-23 Matthias Clasen <mclasen@redhat.com>
* glib/gconvert.c (open_converter): Don't call g_strerror() here,
since it can lead to infinite recursion. (#139133, Piotr Klaban)
2003-12-13 Hans Breuer <hans@breuer.org>
* glib/gconvert.c : get_filename_charset() needs to
return false for filenames not encoded in utf-8,
which is always true on win32
* glibconfig.h.win32.in : (u)int64 modifier isn't the
gcc 'll' but always the msvcrt one 'I64'
* glib/glib.def : updated
2003-11-07 Mark McLoughlin <mark@skynet.ie>
* glib/gconvert.c: (get_filename_charset): re-work to
retain a copy of the cached charset rather than the
actual return value from g_get_charset (which may
change). Also, re-initialize the cache if it does
change. See bug #126454.
Thu Nov 6 00:04:46 2003 Matthias Clasen <maclas@gmx.de>
* glib/gconvert.c (get_filename_charset): Replacement for
have_broken_filenames() which consults the environment variable
G_FILENAME_ENCODINGS in addition to G_BROKEN_FILENAMES.
* glib/gconvert.c (g_filename_from_utf8):
* glib/gconvert.c (g_filename_to_utf8):
* glib/gconvert.c (_g_convert_thread_init): Use
get_filename_charset() instead of have_broken_filenames().
2003-10-24 Tor Lillqvist <tml@iki.fi>
* configure.in: Force shared library (DLL) only on Windows.
(I don't think that is controversial?) Remove unnecessary
AC_LIBTOOL_WIN32_DLL. Don't use -D_REENTRANT on
Win32, it is not used by mingw or MSVC headers.
* config.h.win32.in
* glibconfig.h.win32.in: Match what configure produces.
* glib/gconvert.c
* glib/gutils.c: Mark a couple of functions and variables that
aren't public as static.
* glib/gnulib/g-gnulib.h: Undef HAVE_SNPRINTF before (re)defining
it potentially differently, to silence compiler.
* glib/glib.def: Add some missing entries.
* tests/gobject/Makefile.am (LDADD): Reorder, put libgobject after
libtestgobject.
* tests/gobject/ifaceproperties.c (main): NULL-terminate arg list
to g_object_set() and _get().
2003-08-12 Tor Lillqvist <tml@iki.fi>
* glib/gconvert.c (g_locale_from_utf8): Drop the Win32-specific
implementation. It used WideCharToMultiByte(), which is broken as
it stores unconvertable characters as fallback characters
(question marks) in the destination string without being able to
tell how much of the conversion succeeded. Using g_convert() like
on Unix is better and simpler. (#117872)
(g_locale_to_utf8): No need for the Win32-specific implementation
here, either.
(have_broken_filenames): Define as TRUE on Win32.
(g_filename_to_utf8, g_filename_from_utf8): Drop Win32 ifdefs. As
have_broken_filenames() now is defined TRUE on Win32, works as
before.
2003-03-30 Matthias Clasen <maclas@gmx.de>
* glib/gconvert.c (UnsafeCharacterSet): Get rid of
UNSAFE_DOS_PATH.
(acceptable): Align with RFC2396. (#59653)
* tests/uri-test.c: Adjust to the changes above.
2003-02-14 Sebastian Wilhelmi <seppi@seppi.de>
Fixes for #101264 and #99372:
* glib/gconvert.h, glib/gmain.c, glib/gmem.c, glib/gmessages.c,
glib/grand.c: Include gthreadinit.h and rename the thread
initialization functions a bit and let them start with _, so that
later we can stop exporting them.
* glib/gmem.c, glib/gmessages.c: Move the g_private_new() calls to
new functions. They have to be called after setting
g_threads_got_initialized to TRUE (see #101264).
* glib/gthread.c: Include gthreadinit.h. Renamed g_mutex_init() to
g_thread_init_glib(). Call the thread initialization functions
(which are not allowed to call g_private_new), then set
g_threads_got_initialized to TRUE, then call the other thread
initialization functions (which must not call anything but
g_private_new()).
* glib/gthreadinit.h: New private header to cleanly declare all
thread initialization functions.
* gthread/gthread-impl.c: Include gthreadinit.h. In
g_thread_init() just call g_thread_init_glib(), which in turn calls the
other functions (see #99372).
* glib/Makefile.am: Added gthreadinit.h.
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.
Thu Jul 25 19:52:41 2002 Owen Taylor <otaylor@redhat.com>
* glib/guniprop.c (real_tolower): Handle the
end of the string properly when max_len is set.
(#88545, Morten Welinder.) Rename the next_t
variable to next_type to make cc-mode happy.
* glib/gconvert.c (g_iconv_open): Fix missing
label from previous commit.
Thu Jul 25 17:57:07 2002 Owen Taylor <otaylor@redhat.com>
* glib/gconvert.c (g_iconv_open): Document the
(GIConv)-1 return value on failure. (#87559,
Jarek Dukat)
* glib/gconvert.c (g_iconv_open): Fix potential
problems with the assumption that (GIConv)(iconv_t)-1
is the same as (GIConv)-1.
Tue Jun 11 17:03:39 2002 Owen Taylor <otaylor@redhat.com>
* tests/patterntest.c (test_compilation)
* glib/gmem.c (profiler_try_realloc): A couple
of 64-bit printf format fix from George Lebl.
* glib/gconvert.c (open_converter): Fix gsize/gint
mixup for g_iconv() arguments.
Wed Mar 20 18:20:21 2002 Owen Taylor <otaylor@redhat.com>
* glib/gconvert.c (open_converter): Try to work around segfaults
on Solaris if NULL is passed for outbuf... supposedly gchar
*outbuf = NULL... &outbuf works. (#74336, Lauri Alanko)
2002-03-12 Alexander Larsson <alla@lysator.liu.se>
* glib/gconvert.c:
Cache getenv("G_BROKEN_FILENAMES") in have_broken_filenames() and
use instead. Add g_convert_init() that calls have_broken_filenames()
* gthread/gthread-impl.c:
Have g_thread_init call g_convert_init.
Fri Mar 8 10:20:46 2002 Owen Taylor <otaylor@redhat.com>
* NEWS: Final updates for 2.0.0
* glib/gstrfuncs.c: Convert the results of strerror()
and strsignal() to UTF-8.
* glib/gconvert.c glib/gdir.c glib/giochannel.c glib/giounix.c
glib/giowin32.c: Use g_strerror(), not strerror().
Mon Feb 25 23:01:53 2002 Owen Taylor <otaylor@redhat.com>
* configure.in acconfig.h config.h.win32.in
glib/gconvert.c: Check for iconv_* in -liconv
as well as libiconv_* in -liconv since AIX ships
the system iconv in a separate library.
Patch from Miroslaw Dobrzanski-Neumann (#72569)
Sun Feb 17 11:37:06 2002 Owen Taylor <otaylor@redhat.com>
* 1.3.14
* glib/glibintl.h: Error out of config.h wasn't included
rather than including it, since config.h must be the
first thing included.
* glib/gconvert.c glib/gmarkup.c glib/gshell.c glib/gspawn.c
glib/gunibreak.c glib/gunidecomp.c glib/guniprop.c:
Include config.h as the first thing. (#71704, Morten
Welinder)
* glib/gconvert.h: Make hostname parameter const char *.
* glib/gconvert.c: (g_unescape_uri_string): Added a new
"ASCII must not be escaped" feature, and some missing error
checking.
(is_escalphanum): New.
(is_escalpha): New.
(hostname_validate): New.
(g_filename_from_uri): Don't allow hostnames to include
escaped ASCII, validate hostnames with the new
hostname_validate.
(g_filename_to_uri): Validate hostnames with the new
hostname_validate.
* tests/uri-test.c: Updated tests to reflect the hostname
validation changes above.
* glib/gdate.c: (g_date_fill_parse_tokens): Remove the
<ctype.h> include and do isdigit -> g_ascii_isdigit.
2002-01-21 Jeffrey Stedfast <fejj@ximian.com>
* glib/gconvert.c (open_converter): Rewritten to cache iconv
conversion descriptors. On at least some Unix systems like
Solaris, iconv_open() must dlopen the necessary charset modules in
order to setup the descriptor. This can take a major toll on
performace if you are constantly opening and closing conversion
descriptors for the same charset conversions over and over.
(g_convert_with_fallback): Use close_converter() rather than
g_iconv_close() since open_converter() now caches iconv
descriptors.
2002-01-23 Tor Lillqvist <tml@iki.fi>
* glib/gconvert.c: (strdup_len): Not used on Windows, don't even
compile it then.
(acceptable): Improve comments for the _acceptable_ table: put
each ASCII char above the hex number for it.
(g_escape_file_uri): On Windows, turn backslashes in the file name
into plain ("forward") slashes.
(g_filename_from_uri): On Windows, don't return the hostname
"localhost", because we can not be 100% sure it will be recognized
in all cases anyway, so simpler to turn it into a null
hostname.
Change slashes in the filename into backslashes, as that is the
more canonical separator.
Recognize drive letters (either followed by a colon or a vertical
bar, as used by some browsers), and if the filename part starts
with a such, don't include any (back)slash.
Don't drop any extra leading slash in the filename on Unix.
(g_filename_to_uri): On Windows, if the hostname is "localhost",
don't use it, for consistency with g_filename_from_uri().
tests/uri-test.c: Change accordingly, so that all tests pass on
Windows. Unix, too, I hope, though I couldn't check that now.
(main): Unset the G_BROKEN_FILENAMES environment variable on Unix,
as some tests require that filenames are in UTF-8. Is unsetenv()
portable?
These changes should fix bugs #59387, #59652, #59657 and #59658.